I was searching for a GPU simulator to experiment with CUDA on my laptop, which has no GPU. GPGPU-Sim [1,2] is a cycle-level GPU performance simulator for general purpose computation on GPU. The procedure for installing GPGPU-Sim seemed a little complicated on my MacBook (macOS). Therefore, I proceeded with using docker on my MacBook running an Ubuntu 18.04 docker image and installed CUDA and GPGPU-Sim in it. The procedure for using the GPU simulator with docker to run CUDA programs is listed below.
gcc/g++ version: 7.5.0
Files: [Dockerfile] [script.sh]
gcc/g++ version: 6.5.0
docker run -w /root -it srirajpaul/gpgpu-sim:0.2 /bin/bash
(This command will download and start the docker image containing the CUDA and GPGPU-Sim)
cd test
nvcc --cudart shared vec_add.cu -o vec_add
./vec_add
(Remember that the flag '--cudart shared' is required to load the GPGPU-Sim replacement libraries instead of the actual CUDA ones while executing the CUDA program)
exit
docker start <container-id>
docker attach <container-id>
(The container-id can be obtained using: 'docker container ls -a' )
docker exec -it <container-id> bash -ic 'cd test;sh run.sh'
Note: Tested the GPGPU-Sim installed docker image on Mac OS X, Ubuntu 16.04 and 18.04
Software versions in gpgpu-sim container v0.2:
CUDA version: 10.1gcc/g++ version: 7.5.0
Files: [Dockerfile] [script.sh]
Software versions in gpgpu-sim container v0.1:
CUDA version: 9.1gcc/g++ version: 6.5.0
How to run:
- To run the GPGPU-Sim docker image for the first time (use sudo if permission problems arise):
docker run -w /root -it srirajpaul/gpgpu-sim:0.2 /bin/bash
(This command will download and start the docker image containing the CUDA and GPGPU-Sim)
- To test whether CUDA is working (within the docker container):
cd test
nvcc --cudart shared vec_add.cu -o vec_add
./vec_add
(Remember that the flag '--cudart shared' is required to load the GPGPU-Sim replacement libraries instead of the actual CUDA ones while executing the CUDA program)
- To stop and exit from the docker container:
exit
- To start and run the docker container for the second time onwards:
docker start <container-id>
docker attach <container-id>
(The container-id can be obtained using: 'docker container ls -a' )
- To run directly from the host system, use the exec command:
docker exec -it <container-id> bash -ic 'cd test;sh run.sh'
Note: Tested the GPGPU-Sim installed docker image on Mac OS X, Ubuntu 16.04 and 18.04
[1] Bakhoda, Ali, George L. Yuan, Wilson WL Fung, Henry Wong, and Tor M. Aamodt. "Analyzing CUDA workloads using a detailed GPU simulator." In IEEE International
Symposium on Performance Analysis of Systems and Software (ISPASS), Boston, MA, April 19-21, 2009.
[2] Mahmoud Khairy, Zhesheng Shen, Tor M. Aamodt, Timothy G Rogers. "Accel-Sim: An Extensible Simulation Framework for Validated GPU Modeling." In proceedings of the 47th IEEE/ACM International Symposium on Computer Architecture (ISCA), May 29 - June 3, 2020.