下載 GPGPU-Sim 模擬器:
// Old version 不支援 CUDA 5.0、GCC-4.8 及以上版本 git clone https://github.com/gpgpu-sim/gpgpu-sim_distribution.git // New version 支援 CUDA 5.0、GCC-4.8 及以上版本 (不推薦低版本CUDA使用,親測 CUDA4.0、GCC4.4 編譯出錯) git clone -b dev https://github.com/gpgpu-sim/gpgpu-sim_distribution.git
CUDA 環境配置見 Ubuntu16.04 配置 cuda4.0 並編譯 cuda4.0_SDK
然後安裝配置GPGPU-Sim(具體可參考 GPGPU-Sim 配置說明檔案):
sudo chmod -R 777 gpgpu-sim_distribution cd gpgpu-sim_distribution make
進入 gpgpu-sim_distribution 根目錄,下載 ispass2009-benchmarks,並給資料夾內的檔案賦予可執行許可權。
git clone https://github.com/gpgpu-sim/ispass2009-benchmarks.git sudo chmod -R 777 ispass2009-benchmarks/ // 進入ispass2009-benchmarks 根目錄 cd ispass2009-benchmarks
編譯前確保CUDA環境配置正確。然後開啟 Makefile.ispass-2009 檔案在檔案開頭新增:
CUDA_INSTALL_PATH=/usr/local/cuda NVIDIA_COMPUTE_SDK_LOCATION=/[PATH]/NVIDIA_GPU_Computing_SDK
[PATH] 替換為安裝 CUDA 過程中個人自定義的 CUDA SDK 路徑。
比如我的路徑為:
NVIDIA_COMPUTE_SDK_LOCATION=/home/samples/NVIDIA_GPU_Computing_SDK
然後用編輯器開啟 Makefile.ispass-2009 檔案,修改 OPENMPI_BINDIR 路徑:
change export OPENMPI_BINDIR=/usr/lib64/mpi/gcc/openmpi/bin/; to export OPENMPI_BINDIR=/usr/bin/;
儲存並退出。
AES 錯誤修正
進入 AES 目錄下,用編輯器開啟 Makefile 檔案修改 LINKFLAGS。
change LINKFLAGS := -L$(BOOST_LIB) -lboost_filesystem$(BOOST_VER) to LINKFLAGS := -L$(BOOST_LIB) -lboost_filesystem$(BOOST_VER) -lboost_system
DG 錯誤修正
進入 DG 目錄下,用編輯器開啟 Makefile 檔案,找到第54和56行 INCLUDES:
// line 54 change INCLUDES = -Dp_N=$(N) -DNDG3d -DCUDA -I/opt/local/include -I/usr/include/malloc -I$(HDRDIR) -I/opt/mpich/include to INCLUDES = -Dp_N=$(N) -DNDG3d -DCUDA -I/opt/local/include -I/usr/include/malloc -I$(HDRDIR) -I/opt/mpich/include -I/usr/lib/openmpi/include // line 56 change INCLUDES = -Dp_N=$(N) -DNDG3d -DCUDA -I/opt/local/include -I/usr/include/malloc -I$(HDRDIR) to INCLUDES = -Dp_N=$(N) -DNDG3d -DCUDA -I/opt/local/include -I/usr/include/malloc -I$(HDRDIR) -I/usr/lib/openmpi/include
WP 錯誤修正
進入 WP 根目錄,用編輯器開啟 makefile 檔案,分別定位到第75行,第111行,以及第119行(注意:如果你環境配置的 CUDA4.0,只需要修改第75行;如果你環境配置的 CUDA4.2,需要對75行,111行,以及119行全部進行修改)。具體可參見 github 說明。
// line 75 change NVOPT = $(DEVICEEMU_NVCC) $(PROMOTE) $(DEBUGDEBUG) $(DEBUGOUTPUT) \ -DXXX=$(XXX) -DYYY=$(YYY) -DMKX=$(MKX) --host-compilation 'C++' --use_fast_math to NVOPT = $(DEVICEEMU_NVCC) $(PROMOTE) $(DEBUGDEBUG) $(DEBUGOUTPUT) \ -DXXX=$(XXX) -DYYY=$(YYY) -DMKX=$(MKX) --use_fast_math // line 111 change wsm5.cu.o : wsm5.f.cu $(NVCC) $(PHASE) $(NVOPT) wsm5.f.cu $(CC) $(CFLAGS) -o wsm5.cu.o -c wsm5.f.cu.cpp to wsm5.cu.o : wsm5.f.cu $(NVCC) $(PHASE) $(NVOPT) wsm5.f.cu $(CC) $(CFLAGS) -o wsm5.cu.o -c wsm5.f.cu.cpp.ii // line 119 change wsm5_gpu.cu.o : wsm5_gpu.f.cu $(NVCC) $(PHASE) $(NVOPT) wsm5_gpu.f.cu $(CC) $(CFLAGS) -o wsm5_gpu.cu.o -c wsm5_gpu.f.cu.cpp to wsm5_gpu.cu.o : wsm5_gpu.f.cu $(NVCC) $(PHASE) $(NVOPT) wsm5_gpu.f.cu $(CC) $(CFLAGS) -o wsm5_gpu.cu.o -c wsm5_gpu.f.cu.cpp.ii
然後找到 GPGPULINK :
change #GPGPULINK = -L$(CUDAHOME)/lib64/ -lcudart -L$(NVIDIA_COMPUTE_SDK_LOCATION)/C/lib/ -lcutil_x86_64 -lm -lz -ldl -lGL -lstdc++ $(NEWLIBDIR) $(LIB) # /usr/lib64/libstdc++.so.6 to GPGPULINK = -L$(CUDAHOME)/lib64/ -lcudart -L$(NVIDIA_COMPUTE_SDK_LOCATION)/C/lib/ -L$(NVIDIA_COMPUTE_SDK_LOCATION)/C/lib -lm -lz -ldl -lGL -lstdc++ $(NEWLIBDIR) $(LIB) # /usr/lib64/libstdc++.so.6
執行編譯命令:
make -f Makefile.ispass-2009
本作品採用《CC 協議》,轉載必須註明作者和本文連結