GPGPUSim相关的基准程序

本文主要介绍下面一些基准程序:Rodinia, Polybench, Mars, SHOC, Tango, Parboil
关于基准程序的编译和运行,部分思路和代码参考了gpgpu-bench,然后相关的基准程序的获取参考脚本get_benchmarks


Rodinia

wget http://filedn.com/luEeJVCCazShDlU4ibloXvu/class/rodinia.tar.bz2 
//wget -O rodinia.tar.bz2 http://www.cs.virginia.edu/~kw5na/lava/Rodinia/Packages/Current/rodinia_3.1.tar.bz2
## 下载Rodinia修改后的的makefile: https://download.csdn.net/download/Wang121201/89493888 
tar -xvjf rodinia.tar.bz2
cd rodinia_3.1/ && vim patch_rodinia.sh

添加下面的内容

#!/bin/bash
tar -zxvf ../makefiles.tar.gz

if [ -e Makefile ]; then
        mv Makefile Makefile.old
fi

cp ./makefiles/Makefile ./
MAKEFILES=$(ls ./makefiles)

for makef in ${MAKEFILES[*]}; do
        namef=$(echo "$makef" | sed 's/\./\//g')
        cp ./makefiles/$makef ./cuda/$namef
        echo "$namef"
done

# add CUDA_SAMPLES_PATH
echo "" >> common/make.config
echo "SDK_DIR = /usr/local/cuda/samples/" >> common/make.config

然后执行脚本,编译Rodinia基准程序,可以设置编译的SM,(cuda11好像支持SM60,SM70,SM75,SM80等),

bash patch_rodinia.sh
make -j 64 SM=60
## workload test
cd bin/linux/cuda
## before execute, you should "source setup_environment" and copy configs
ldd backprop
./backprop 1024

Polybench

wget https://github.com/cavazos-lab/PolyBench-ACC/archive/refs/heads/master.zip && unzip master.zip
cd PolyBench-ACC-master
vim ./CUDA/utilities/common.mk
## vim cmd : d5d

修改成下面的内容

#data set size
CFLAGS := -DMINI_DATASET=1
#CFLAGS := -DSMALL_DATASET=1
#CFLAGS := -DSTANDARD_DATASET=1
#CFLAGS := -DLARGE_DATASET=1
#CFLAGS := -DEXTRALARGE_DATASET=1
SM_VERSION ?= -arch=sm_70

all:
        nvcc ${SM_VERSION} -lcudart -O3 ${CUFILES} -I${PATH_TO_UTILS} -o ${EXECUTABLE} ${CFLAGS}

clean:
        rm -f *~ *.exe

创建编译的脚本compile.sh,内容如下

#!/bin/bash

CUDA_BIN_DIR=$(pwd)/bin
if [ -e ${CUDA_BIN_DIR} ]; then
        rm -r ${CUDA_BIN_DIR}
fi

mkdir -p ${CUDA_BIN_DIR}

APP_DIRS=(
        datamining
        linear-algebra/kernels
        linear-algebra/solvers
        stencils
        )

for dir in ${APP_DIRS[*]}; do
        apps=$( ls ./CUDA/$dir )
        for app in ${apps[*]}; do
                (cd ./CUDA/${dir}/${app} &&  make && cp *.exe ${CUDA_BIN_DIR})
        done
done

编译完成后,所有的二进制文件都在./bin目录下

## workload test
cd bin
## before execute, you should "source setup_environment" and copy configs
ldd 2mm
./2mm

Tango

下载源码
wget https://gitlab.com/Tango-DNNbench/Tango/-/archive/master/Tango-master.zip && unzip Tango-master.zip
编辑Makefile文件,编译完成后每个二进制文件分别在其对应的workload的文件夹下。(可以修改源代码读取数据的路径,然后把所有的二进制文件都放在一个目录下)

TANGO_BASE_DIR := $(shell pwd)
CUDA_BIN_DIR := $(TANGO_BASE_DIR)/bin/

CUDA_DIRS := AlexNet  CifarNet  GRU  LSTM  ResNet  SqueezeNet
SM_VERSION := -arch=sm_70
NVCC_FLAGS := $(SM_VERSION) -lcudart

NVCC = /usr/local/cuda/bin/nvcc

all: CUDA

CUDA:
        cd GPU/AlexNet;         $(NVCC) $(NVCC_FLAGS) alexnet_host.cu -o AN;
        cd GPU/CifarNet;        $(NVCC) $(NVCC_FLAGS) CN_cuda.cu -o CN;
        cd GPU/GRU;             $(NVCC) $(NVCC_FLAGS) gru_host.cu -o GRU;
        cd GPU/LSTM;            $(NVCC) $(NVCC_FLAGS) lstm.cu -o LSTM;
        cd GPU/ResNet;          $(NVCC) $(NVCC_FLAGS) resnet_host.cu -o RN;
        cd GPU/SqueezeNet;      $(NVCC) $(NVCC_FLAGS) SN.cu -o SN;

clean:
        cd GPU/AlexNet;         rm AN;
        cd GPU/CifarNet;        rm CN;
        cd GPU/GRU;             rm GRU;
        cd GPU/LSTM;            rm LSTM;
        cd GPU/ResNet;          rm RN;
        cd GPU/SqueezeNet;      rm SN;
        rm bin/*

SHOC

wget https://github.com/vetter/shoc/archive/refs/heads/master.zip && unzip master.zip
## set the configure parameters
./configure --without-opencl --without-mpi CUDA_CPPFLAGS="-gencode arch=compute_70,code=compute_70 -gencode arch=compute_70,code=sm_70" CPPFLAGS="-I/usr/local/cuda/include" 
echo "CUDA_LIBS += -L/usr/local/cuda/lib64 -lcudart " >> config/common.mk 
# config/find_cuda_libs.sh may not find libcudart
make -j 64 && make install 

## workload test
cd bin/Serial/CUDA/
## before execute, you should "source setup_environment" and copy configs
ldd Reduction
./Reduction -i
./Reduction -n 1 --iterations 1

在这里插入图片描述


parboil

wget http://filedn.com/luEeJVCCazShDlU4ibloXvu/class/pb2.5driver.tgz && \
wget http://filedn.com/luEeJVCCazShDlU4ibloXvu/class/pb2.5benchmarks.tgz && \
wget http://filedn.com/luEeJVCCazShDlU4ibloXvu/class/pb2.5datasets_standard.tgz && \
tar -xvzf pb2.5driver.tgz && \
mv pb2.5*.tgz ./parboil/. && \
(cd parboil && tar -xvzf pb2.5benchmarks.tgz) && \
(cd parboil && tar -xvzf pb2.5datasets_standard.tgz) && \
(cd parboil && chmod u+x parboil && chmod u+x benchmarks/*/tools/compare-output)
## before execute the following command, you should have been executed "source setup_environment"
## and the path to libcudart in gpgpusim has added to env
echo "CUDA_PATH=$(echo $CUDA_INSTALL_PATH)" >> common/Makefile.conf
echo "CUDA_LIB_PATH=$(echo $LD_LIBRARY_PATH)" >> ./common/Makefile.conf

## set the configuration for make
echo "PLATFORM_CUDACFLAGS+=-gencode arch=compute_70,code=compute_70 -gencode arch=compute_70,code=sm_70" >> ./common/platform/cuda.default.mk
echo "PLATFORM_CUDALDFLAGS+=-lcudart" >> ./common/platform/cuda.default.mk
## workload test
./parboil clean sad && ./parboil compile sad cuda
## before execute, you should "source setup_environment" and copy configs
./parboil run sad cuda default

总结:上面编译时设置的sm相关的参数可以根据cuda的版本进行调整,以上的测试都是在ubuntu20和cuda11下进行了测试。
关于其他基准程序后面在逐渐添加和完善吧。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值