編譯 GPGPU-Sim benchmark ispass2009-benchmarks

冰雪封存的記憶發表於2020-01-17

下載 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 協議》,轉載必須註明作者和本文連結

相關文章