blob: f9e57ad47410db15afa76d060b6d604d038a18ff [file] [log] [blame]
Austin Schuh189376f2018-12-20 22:11:15 +11001#define EIGEN_USE_THREADS
2
3#include <string>
4
5#include "tensor_benchmarks.h"
6
7#define CREATE_THREAD_POOL(threads) \
8Eigen::ThreadPool pool(threads); \
9Eigen::ThreadPoolDevice device(&pool, threads);
10
11
12// Contractions for number of threads ranging from 1 to 32
13// Dimensions are Rows, Cols, Depth
14#define BM_ContractionCPU(D1, D2, D3) \
15 static void BM_##Contraction##_##D1##x##D2##x##D3(int iters, int Threads) { \
16 StopBenchmarkTiming(); \
17 CREATE_THREAD_POOL(Threads); \
18 BenchmarkSuite<Eigen::ThreadPoolDevice, float> suite(device, D1, D2, D3); \
19 suite.contraction(iters); \
20 } \
21 BENCHMARK_RANGE(BM_##Contraction##_##D1##x##D2##x##D3, 1, 32);
22
23
24// Vector Matrix and Matrix Vector products
25BM_ContractionCPU(1, 2000, 500);
26BM_ContractionCPU(2000, 1, 500);
27
28// Various skinny matrices
29BM_ContractionCPU(250, 3, 512);
30BM_ContractionCPU(1500, 3, 512);
31
32BM_ContractionCPU(512, 800, 4);
33BM_ContractionCPU(512, 80, 800);
34BM_ContractionCPU(512, 80, 13522);
35BM_ContractionCPU(1, 80, 13522);
36
37BM_ContractionCPU(3200, 512, 4);
38BM_ContractionCPU(3200, 512, 80);
39BM_ContractionCPU(3200, 80, 512);