mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-27 07:29:52 +08:00
40 lines
1.4 KiB
C++
40 lines
1.4 KiB
C++
|
#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);
|