已修改部分:
- 重新实现矩阵相乘
pytorch-gpgpusim/aten/src/THC/THCBlas.cu
Line 230 in de3ce84
- 原本参数传递顺序有问题,修改成正确形式
pytorch-gpgpusim/aten/src/THC/THCBlas.cu
Line 257 in de3ce84
- 重新实现batch矩阵相乘
存在问题部分(功能是向量和矩阵相乘):
pytorch-gpgpusim/aten/src/THC/THCBlas.cu
Line 107 in de3ce84
注意: 如果遇到类似这种错误,就是THCBlas.cu那块要重新改代码适配,有能力的可以根据我已经修改过的案例就行修改。主要要看THCTensorMathBlas.cu中调用THCBlass.cu中的函数传递参数一不一致,出问题大概率不一致,要修改参数的顺序,一般是两个矩阵传递顺序反了。然后要重新用cuda实现一下矩阵乘法,调用cublas接口大概率还会发生各种问题,并且没法看到内部情况。
- 安装cuda 10.1版本(推荐)和 cuDNN (最高版本v7.6.5)
- 创建Anaconda虚拟环境(python 3.6或2.7)
cd pytorch-gpgpusim
conda create -n gpgpu-sim python=3.6 # 推荐使用3.6
conda activate gpgpu-sim
pip install pyyaml numpy
- 启动编译pytorch-gpgpusim
git -c submodule."third_party/nervanagpu".update=none submodule update --init # 加载子模块
source set_env.sh # 添加路径,这里最好检查一下路径存在且没问题,确保路径一致
python setup.py install
export PYTORCH_BIN=<pytorch directory>/torch/lib/libcaffe2_gpu.so # Anaconda 中libcaffe2_gpu.so的位置
- 安装torchvision
pip install torchvision==0.2.2 # 使用torchvision获取数据建议先提前下载下来再运行(版本较老直接运行可能找不到数据)
- 重新编译gpgpusim
git clone https://github.com/wangeddie67/Chiplet_Heterogeneous_newVersion.git # 如果已经安装过gpgpusim可跳过
cd Chiplet_Heterogeneous_newVersion
source setup_env.sh
cd gpgpu-sim
make -j4
- 验证
ldd $PYTORCH_BIN
若libcudart.so.10.1链接到gpgpu-sim中的libcudart.so.10.1,说明pytorch在执行cuda计算时会使用gpgu-sim。如果没有链接到gpgu-sim,重新执行第5步。
- 测试
cd ./benchmarks
make run-main
- 备注:
由于该pytorch版本较老,直接跑一些较复杂神经网络会触发各种问题(建议不要调用较新的库,极有可能不兼容)