什么是 SHOC
可扩展异源计算基准套件(SHOC)是一组基准程序,用于测试系统的性能和稳定性。其最初的重点是其最初的重点是包含图形处理器(GPU)和多核和多核处理器的系统,以及 OpenCL(openclspec)编程标准。
它既可用于集群,也可用于单个主机。
OpenCL 是一个开放标准,用于对各种类型的计算设备进行编程。
设备编程的开放标准。OpenCL 规范描述了一种编程语言。
内核的编程语言,以及用于在支持 OpenCL 的设备上运行的应用编程接口 (API),用于将数据传输到此类设备并在其上执行内核。 内核的应用编程接口(API)。
SHOC 可以验证什么?
稳定测试
SpMV
能效
资源竞争
GPU api 比较
如何编译 SHOC
参考文件:https://github.com/vetter/shoc/blob/master/INSTALL.txt
- 拉代码
git clone https://github.com/vetter/shoc.git
. - 进入目录
cd shoc
. - 执行
./configure
来配置编译选项。这里可以指定一些参数来运行:--with-cuda, --with-opencl, --with-mpi
,也可以用./configure --help
查看其他的选项。 - 编译
make -j 88
来执行编译。这里的-j
参数是指定并行编译的线程数,可以根据自己的机器来设置。 - 可选,
make install
来安装 bin 到指定目录。
下面是我的执行命令:
git clone https://github.com/vetter/shoc.git
cd shoc
# ./configure CPPFLAGS="-I/usr/local/cuda/include" CUDA_CPPFLAGS="-gencode=arch=compute_60,code=sm_60" LIBS="-lcuda -lcudart" LFLAGS="-l/usr/local/cuda/lib64" --with-cuda
./configure CPPFLAGS="-I/usr/local/cuda/include" CUDA_CPPFLAGS="" LIBS="-lcuda -lcudart" LFLAGS="-l/usr/local/cuda/lib64" --with-cuda
make -j 88
make install
可能遇到的问题:
https://github.com/vetter/shoc/issues/67
CUDA10.0(不含)之后的版本会出现的问题:编译失败
执行 configure 配置时加入-lcuda -lcudart
参数,指定 cuda 库和 cudart 库。
也可以参考这个教程,shell 已经写好了: https://openbenchmarking.org/innhold/db04416737e558c3510d20be04d2574e63e0a548
如何执行 SHOC
执行:
用perl tools/driver.pl -s 1 -d 0 -cuda
来执行测试。这里的-s
参数是指定测试的规模,就是节点数量,-d
参数是指定测试的设备,-cuda
参数是指定测试的类型。
也可以用./bin/shocdirver -h
结果截图
Read more
- https://blog.csdn.net/babyfacer/article/details/6989093
- https://openbenchmarking.org/test/pts/shoc
- https://on-demand.gputechconf.com/gtc/2010/posters/I05-The-Scalable-HeterOgeneous-Computing-(SHOC)-Benchmark-Suite.pdf
- https://www.jianshu.com/p/9cd6708246c9 (1) shoc/shoc-manual.tex at master · vetter/shoc · GitHub. https://github.com/vetter/shoc/blob/master/doc/shoc-manual.tex (2) Issues · vetter/shoc · GitHub. https://github.com/vetter/shoc/issues (3) SHOC: The Scalable HeterOgeneous Computing Benchmark Suite. https://usermanual.wiki/Document/shocmanual.432449542.pdf