[问题] CUDA调整block大小 使用GPGPU-Sim

楼主: v00623 (阿哩他命EX PLUS)   2016-09-19 20:22:32
抱歉 原本的数据有错 已修改
各位前辈好
最近在使用GPGPU-Sim 3.2.2来模拟CUDA程式,想了解block大小对于程式的影响
我挑选模拟器附的Benchmark BFS来改
原本程式中的block数为256,而每个block中有256个thread
而我修改成2048个block,每个block有32个thread
原本预想thread总数相同,模拟结果应该OK,顶多执行速度变慢
但是模拟器吐出的讯息显示修改后的模拟cycle以及指令数量与原本相差许多
原本:
gpu_tot_sim_cycle = 773568
gpu_tot_sim_insn = 15889228
gpgpu_simulation_time = 0 days, 0 hrs, 4 min, 23 sec (263 sec)
修改后:
gpu_tot_sim_cycle = 697192
gpu_tot_sim_insn = 14920542
gpgpu_simulation_time = 0 days, 0 hrs, 2 min, 47 sec (167 sec)
模拟的数值差了一些 这是有问题的吗?
而且比对输出的result也不同
请问问题出在哪? 是因为block数量不同 而blockID影响结果?
我对于block数量与程式的关系还不熟悉
应该怎么调整block以及thread的数量,而不影响程式结果呢
另外想请教GPGPU-Sim使用上遇到问题有哪里可以发问吗
目前只有看到GOOGLE Group,不过似乎不太热络?
作者: johnjohnlin (嗯?)   2016-09-19 22:02:00
block size 32 会造成 occupancy 低落,导致效能不佳但是改了 block size 之后差那么多我觉得应该是 bug
作者: freef1y3 ( )   2016-09-20 10:44:00
如果要确认是 benchmark 还是 gpgpu-sim 的问题我会建议用真正的 GPU 跑一次看看block 和 thread 数量这有时候是跟 benchmark 有关的甚至有的 CUDA 程式必须 block 大小是 2 的次方才能跑多个小 block 比少数大 block 好我会猜是因为 __syncthreads() 造成的 overhead若是 occupancy 的关系,应该多个小 block 会比较差但是看这 IPC 的差异,执行时间似乎不该差这么多除非执行的 Instruction 总数也会随着 block size 改变若你的学校有授权 visual studio,且你有实体显示卡可用 nvidia visual profiler 测测看我没用过 gpgpu-sim,所以这方面的问题就无法回答了

Links booklink

Contact Us: admin [ a t ] ucptt.com