123456789101112131415161718192021222324252627282930313233343536373839 |
- #define EIGEN_USE_THREADS
- #include <string>
- #include "tensor_benchmarks.h"
- #define CREATE_THREAD_POOL(threads) \
- Eigen::ThreadPool pool(threads); \
- Eigen::ThreadPoolDevice device(&pool, threads);
- // Contractions for number of threads ranging from 1 to 32
- // Dimensions are Rows, Cols, Depth
- #define BM_ContractionCPU(D1, D2, D3) \
- static void BM_##Contraction##_##D1##x##D2##x##D3(int iters, int Threads) { \
- StopBenchmarkTiming(); \
- CREATE_THREAD_POOL(Threads); \
- BenchmarkSuite<Eigen::ThreadPoolDevice, float> suite(device, D1, D2, D3); \
- suite.contraction(iters); \
- } \
- BENCHMARK_RANGE(BM_##Contraction##_##D1##x##D2##x##D3, 1, 32);
- // Vector Matrix and Matrix Vector products
- BM_ContractionCPU(1, 2000, 500);
- BM_ContractionCPU(2000, 1, 500);
- // Various skinny matrices
- BM_ContractionCPU(250, 3, 512);
- BM_ContractionCPU(1500, 3, 512);
- BM_ContractionCPU(512, 800, 4);
- BM_ContractionCPU(512, 80, 800);
- BM_ContractionCPU(512, 80, 13522);
- BM_ContractionCPU(1, 80, 13522);
- BM_ContractionCPU(3200, 512, 4);
- BM_ContractionCPU(3200, 512, 80);
- BM_ContractionCPU(3200, 80, 512);
|