[問題] 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