4个版本
0.1.3 | 2022年8月4日 |
---|---|
0.1.2 | 2022年5月24日 |
0.1.1 | 2021年10月30日 |
0.1.0 | 2021年7月6日 |
#336 in 机器学习
每月24次下载
13KB
81 行
[sd]gemm
基准测试
简介
这是一个基于[sd]gemm基准测试的小型应用程序,类似于ACES DGEMM,使用Rust实现。它支持以下BLAS库
- Accelerate(macOS)
- Intel MKL
- OpenBLAS
构建
使用Accelerate(macOS)构建
$ cargo install gemm-benchmark --features accelerate
使用BLIS构建
$ cargo install gemm-benchmark --features blis
使用Intel MKL构建
要使用静态链接的Intel MKL构建基准测试,使用
$ cargo install gemm-benchmark --features intel-mkl
Intel MKL使用AMD Zen CPU的Zen特定[sd]gemm内核。然而,这些内核在许多Zen CPU上的速度比AVX2内核慢。您可以构建基准测试以覆盖Intel CPU检测,使MKL在Zen CPU上使用AVX2内核。这确实需要动态链接,因为不允许修改MKL二进制文件。要启用此覆盖,请使用intel-mkl-amd
功能
$ cargo install gemm-benchmark --features intel-mkl-amd
使用OpenBLAS构建
$ cargo install gemm-benchmark --features openblas
在运行之前设置OPENBLAS_NUM_THREADS=1
基准测试
默认情况下,使用256 x 256矩阵对sgemm
进行基准测试,迭代1,000次,使用1个线程。可以使用命令行标志设置维度(-d
)、迭代次数(-i
)和线程数(-t
)。例如
$ gemm-benchmark -d 1024 -i 2000 -t 4
使用1024 x 1024矩阵运行基准测试,迭代1,000次,使用4个线程。还可以使用--dgemm
选项对dgem,
进行基准测试
$ gemm-benchmark -d 1024 -i 2000 -t 4 --dgemm
示例结果
1到16线程
以下表格显示了使用1到16线程在矩阵大小为768时的各种CPU的GFLOPS。
线程 | M1 Accelerate | M1 Pro Accelerate | M1 Ultra Accelerate | Ryzen 3700X MKL | Ryzen 5900X MKL |
---|---|---|---|---|---|
1 | 1340 | 2061 | 2177 | 134 | 148 |
2 | 1226 | 2583 | 3427 | 262 | 284 |
4 | 1102 | 2685 | 3788 | 513 | 558 |
8 | 1253 | 2381 | 4344 | 924 | 1106 |
12 | 1225 | 2248 | 4261 | 989 | 1555 |
16 | 1217 | 2254 | 4376 | 850 | 1390 |
依赖关系
~5–11MB
~198K SLoC