1. Introduction

本文说明了使用gpgpusim做实验需要注意的问题以及做出的修改。

强烈不推荐使用gpgpusim做实验。

如果是改SASS,建议maxas或者asfermi(尽管他们可能会有这样那样的问题,而且使用起来难度不小)。使用模拟器,是被reviewer攻击的常用点,除非你有足够强有力的解释,否则这会成为你论文的掣肘。

使用模拟器发的A,一般工作量会很多。

2. 环境搭建

2.1 编译运行环境

docker里跑gpgpusim

gpgpusim runtime的dockerfile

2.2 修改代码

在docker里创建修改的文件是Host上无权访问和修改,

sudo chown YourUser.YourUser -R ./

修改文件夹或者文件的用户组为你的用户即可。

3. 遇到的问题

3.1 硬件编译限制

如果你开启了ptxplus模式,那么编译的架构只能是sm1.9以下,生成的ptx和ptxplus非常落后。尽管github项目里dev分支甚至给了1080ti的配置文件,但是实际和硬件差距非常大。只能说如果你是在SASS(即gpgpusim里的ptxplus)或者硬件设计层面做东西,大家可以接受这个模拟器。

代码上这部分限制功能在gpgpusim/libcuda/cuda_runtime_api.cc里,可以手动删去那部分的硬件限制代码,但是也只不过是去掉了提示而已。

3.2 cuobjdump_to_ptxplus

gpgpusim有个cuobjdump_to_ptxplus的功能,在代码主分支下是通过调用外部生成的二进制做的,调用的代码在gpgpusim/src/cuda-sim/ptx_loader.cc,里面编译的cuobjdump二进制路径是$GPGPUSIM_ROOT/build/$GPGPUSIM_CONFIG/cuobjdump_to_ptxplus/cuobjdump_to_ptxplus,建议改成cuobjdump_to_ptxplus,然后将单独编译好的cuobjdump_to_ptxplus复制到sim/cuda/bin即你的其他cuda二进制命令的路径。

3.2 ptxas编译参数

如果你开了ptxplus,在从ptx--》fatbin这个过程中,你在makefile里传入的参数是没有用的,并不会传递到ptxas上,所以需要对文件gpgpusim/src/cuda-sim/ptx_loader.cc做的简单修改如下:

snprintf(commandline,1024,"$CUDA_INSTALL_PATH/bin/ptxas %s -v %s --output-file  /dev/null 2> %s",
             extra_flags, fname2, tempfile_ptxinfo);

一行修改为:

// 在这里加上读取ptxas参数
    FILE *ptxas_args_p;
    ptxas_args_p = fopen("ptxas_args.txt", "r");
    const int MAXARGSLEN = 10000;
    char ptx_args[MAXARGSLEN];
    if (ptxas_args_p != NULL) {
        printf("找到了ptxas参数文件\n");
        fgets(ptx_args, MAXARGSLEN, ptxas_args_p);
    } else {
        printf("没有ptxas参数文件\n");
    }
    snprintf(commandline, 1024, "$CUDA_INSTALL_PATH/bin/ptxas %s %s -v %s --output-file  /dev/null 2> %s",
             ptx_args, extra_flags, fname2, tempfile_ptxinfo);

这个修改方法最简单省力,只需要在要执行的项目二进制目录下,写入ptxas参数到ptxas_args.txt文件中。

3.3 WARP_PER_CTA_MAX

如果你修改了config,运行时可能会提示你需要修改WARP_PER_CTA_MAX,这个参数在src/gpgpu-sim/shader.hconst unsigned WARP_PER_CTA_MAX = 64;

3.4 MAX_THREAD_PER_SM

定义在src/absract_hardware_model.h


文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://findhao.net/easycoding/2471.html

Comments