无GPU情况下对cuda程序进行功能性测试

安装cuda-toolkit, 在没有gpu的情况下,不能安装其中的cuda driver, 不勾选,装cuda toolkit即可。

安装gpgpu-sim程序。gpgpu的仿真程序,目前仅仅支持cuda11。而cuda11最高支持的ubuntu为20.0。但在22.0的ubuntu上下载cuda11,也可以编译。

参看gpgpu README.md编译,过程中报错如下,可去掉invaliad token前后的双引号。

gpgpu-sim_distribution/build/gcc-/cuda-11000/release/cuda-sim/ptx_parser_decode.def:4:13: error: unable to find string literal operator 'operator""invalid' with 'const char [28]', 'long unsigned int' arguments
1304     4 | DEF(YYUNDEF,"YYUNDEF                 /* "invalid token"  */")

另外gpgpu中判断cuda版本的函数get_app_cuda_version也有问题,直接修改成return 11,本地用,不规范但好使。

static int get_app_cuda_version() {
  int app_cuda_version = 0;
  return 11;

gpgpu的核心原理是替换了cudart.so, 原cpu端的程序和gpu device打交道通过这个so完成,替换为gpgpu的so之后,原来跑在device的指令,变成跑在仿真程序指令上。一个简单的端到端示例如下,

# 从nvidia sample拷贝vectorAdd的例子到本地
cp ~/NVIDIA_CUDA-11.0_Samples/0_Simple/vectorAdd/* . 
# 若没有gpu,可以破罐子破摔,将编译的gpgpu中的libcudart.so替换原本的cuda11 so,
# sudo ln -sfT /path/to/gpgpu/build/libcudart.so /usr/local/cuda/
# 手动启动编译命令
nvcc vectorAdd.cu -o app -I/home/zwl/NVIDIA_CUDA-11.0_Samples/common/inc -g --cudart shared
cp gpgpu-sim_distribution/configs/tested-cfgs/SM2_GTX480/gpgpusim.config .
cp gpgpu-sim_distribution/configs/tested-cfgs/SM2_GTX480/gpuwattch_gtx480.xml .
# 运行程序,运行前先设置一下环境
export CUDA_INSTALL_PATH=/usr/local/cuda
source ~/software/gpgpu-sim_distribution/setup_environment debug
./app

posted @ 2024-07-14 22:24  zwlwf  阅读(149)  评论(0编辑  收藏  举报