| // SPDX-FileCopyrightText: The Eigen Authors |
| // SPDX-License-Identifier: MPL-2.0 |
| |
| #include <Eigen/Core> |
| #include <cstdio> |
| |
| using namespace Eigen; |
| using namespace Eigen::internal; |
| |
| int main() { |
| printf("%-8s %-8s %-8s | %-8s %-8s %-8s | %-8s %-8s %-8s | %-8s %-8s %-8s\n", "m", "n", "k", "kc_f", "mc_f", "nc_f", |
| "kc_d", "mc_d", "nc_d", "mr_f", "nr_f", "LhsPr_f"); |
| |
| // Print gebp_traits info |
| { |
| using Traits = gebp_traits<float, float>; |
| printf("Float traits: mr=%d, nr=%d, LhsProgress=%d, RhsProgress=%d, NumberOfRegisters=%d\n", Traits::mr, Traits::nr, |
| Traits::LhsProgress, Traits::RhsProgress, Traits::NumberOfRegisters); |
| } |
| { |
| using Traits = gebp_traits<double, double>; |
| printf("Double traits: mr=%d, nr=%d, LhsProgress=%d, RhsProgress=%d, NumberOfRegisters=%d\n", Traits::mr, |
| Traits::nr, Traits::LhsProgress, Traits::RhsProgress, Traits::NumberOfRegisters); |
| } |
| |
| // Print cache sizes |
| std::ptrdiff_t l1, l2, l3; |
| manage_caching_sizes(GetAction, &l1, &l2, &l3); |
| printf("Cache sizes: L1=%ld, L2=%ld, L3=%ld\n", (long)l1, (long)l2, (long)l3); |
| |
| for (int size : {8, 16, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 384, 448, 512, 768, 1024, 1536, 2048}) { |
| { |
| Index kf = size, mf = size, nf = size; |
| computeProductBlockingSizes<float, float>(kf, mf, nf); |
| Index kd = size, md = size, nd = size; |
| computeProductBlockingSizes<double, double>(kd, md, nd); |
| printf("%-8d %-8d %-8d | %-8ld %-8ld %-8ld | %-8ld %-8ld %-8ld\n", size, size, size, (long)kf, (long)mf, (long)nf, |
| (long)kd, (long)md, (long)nd); |
| } |
| } |
| |
| // Non-square |
| for (auto [m, n, k] : |
| std::initializer_list<std::tuple<int, int, int>>{{64, 64, 1024}, {1024, 64, 64}, {64, 1024, 64}}) { |
| Index kf = k, mf = m, nf = n; |
| computeProductBlockingSizes<float, float>(kf, mf, nf); |
| Index kd = k, md = m, nd = n; |
| computeProductBlockingSizes<double, double>(kd, md, nd); |
| printf("%-8d %-8d %-8d | %-8ld %-8ld %-8ld | %-8ld %-8ld %-8ld\n", m, n, k, (long)kf, (long)mf, (long)nf, (long)kd, |
| (long)md, (long)nd); |
| } |
| |
| return 0; |
| } |