写了两个脚本来获得通过nsys profile出来的cuda程序执行时间。

1. runnsys.sh

runnsys.sh program args

以sradv1为例,runnsys.sh /home/test/rodinia/sradv1/srad 1 0.5 502 458。脚本将执行后面的命令,在执行的binary所在的目录,生成一个reports文件夹,里面包含的就是生成的reports(qdrep和sqlite格式)。reports文件名的格式为 report1_srad.qdrep, report1_srad.sqlite,同时还会生成report1_srad_gpumemsizesum.csvreport1_srad_gpumemtimesum.csv, report1_srad_cudaapisum.csv , report1_srad_gpukernsum.csv,分别代表了gpu memory traffice, gpu memory copy time, cuda api execute time,gpu kernel execute time。脚本会默认执行十次传入的参数,所以会有report1-report10。

2. 提取kernel执行时间,memory copy traffic 和cuda api运行时间

selectnsys.py -i report_path [-e special_middle_name] [-o save_to]

-i传入reports地址,最后一定要是/reports结尾。

-e用于一些特殊文件名的时刻。脚本默认是qdrepreport文件的前一个部分作为读取的pattern,比如report1_srad.qdrep是srad。但如果与真正的reports文件的中间名字不同,比如report1_srad_v1.qdrep,则会以v1为pattern去读取reports,但这样会导致读取失败。此时,可以用 -e srad_v1来手动指定report中间名的全称。

以srad为例,selectnsys.py -i /home/test/rodinia/sradv1/reports/ -o sradv1-original。执行完成后,将在当前目录下生成sradv1-original_kernel_time.csv,sradv1-original_memsize.csv,sradv1-original_cudaapi.csv,分别是对应类型的十次记录的均值。


文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://www.findhao.net/academic/2573.html

Comments

comments powered by Disqus