MGPUSim is a high-flexibility, high-performance, high-accuracy GPU simulator. It models GPUs that run the AMD GCN3 instruction sets. One main feature of MGPUSim is the support for multi-GPU simulation (you can still use it for single-GPU architecture research).
[mgpusim_home]
.[mgpusim_home]/samples/fir
.go build
. The compiler will generate an executed called fir
(on Linux or Mac OS) or fir.exe
(on Windows) for you../fir -timing --report-all
to run the simulation.metrics.csv
file for high-level metrics output.If a modification to Akita is required, you can clone Akita next to the MGPUSim directory in your system. Then, you can modify the go.mod
file to include the following line.
replace github.com/sarchlab/akita/v3 => ../akita
This line will direct the go compiler to use your local version of Akita rather than the official release of Akita.
AMD APP SDK | DNN Mark | HeteroMark | Polybench | Rodinia | SHOC |
---|---|---|---|---|---|
Bitonic Sort | MaxPooling | AES | ATAX | Needleman-Wunsch | BFS |
Fast Walsh Transform | ReLU | FIR | BICG | FFT | |
Floyd-Warshall | KMeans | SPMV | |||
Matrix Multiplication | PageRank | Stencil2D | |||
Matrix Transpose | |||||
NBody | |||||
Simple Covolution |
You can run a simulation with the --report-all
argument to enable all the performance metrics.
go init [git repo path]/[directory_name]
to initialize the folder as a new go module. For example, if your git repository is hosted at https://github.com/syifan/fancy_project
and your experiment folder is named as exp1
, your module path should be github.com/syifan/fancy_project/exp1
.samples/experiment
to your experiment folder. In the main.go
file, change the benchmark and the problem size to run. Or you can use an argument to select which benchmark to run. The file runner.go
, platform.go
, r9nano.go
, and shaderarray.go
serve as configuration files. So you need to change them according to your need.gofmt
, goimports
, or goreturns
before making your merge request ready. Also, running golangci-lint run
in the root directory will point you out most of the styling errors.If you use MGPUSim in your research, please cite our ISCA '19 paper.
@inproceedings{sun19mgpusim,
author = {Sun, Yifan and Baruah, Trinayan and Mojumder, Saiful A. and Dong, Shi and Gong, Xiang and Treadway, Shane and Bao, Yuhui and Hance, Spencer and McCardwell, Carter and Zhao, Vincent and Barclay, Harrison and Ziabari, Amir Kavyan and Chen, Zhongliang and Ubal, Rafael and Abell\'{a}n, Jos\'{e} L. and Kim, John and Joshi, Ajay and Kaeli, David},
title = {MGPUSim: Enabling Multi-GPU Performance Modeling and Optimization},
year = {2019},
isbn = {9781450366694},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3307650.3322230},
doi = {10.1145/3307650.3322230},
booktitle = {Proceedings of the 46th International Symposium on Computer Architecture},
pages = {197–209},
numpages = {13},
keywords = {simulation, multi-GPU systems, memory management},
location = {Phoenix, Arizona},
series = {ISCA '19}
}
Papers that use MGPUSim:
MIT © Project Akita Developers.