安装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
标签:功能性,gpgpu,app,so,cuda,GPU,distribution,sim
From: https://www.cnblogs.com/zwlwf/p/18302131