Re: [問題] OpenCL GPU benchmark

作者: fishlinghu (令狐瑜)   2016-10-22 20:21:10
: hmmmm,
: 你沒有放程式碼,只能猜測你沒有檢查return value,
: 例如事實上他從clGetPlatformIDs或clGetDeviceIDs就失敗了,
: 或者你的Kernel Source在clBuildProgram編譯過程中有錯誤,
: 所以clCreateContext或後面的操作也都只是在面對invalid argument
: 在kernel內超出存取範圍也會讓kernel直接跳掉。
我有檢查return value
應該是沒有錯誤
: memory transferring time看你data size有多大,因為也不知道你用的是哪個API
: 是clEnqueueWriteBuffer嗎? 還是SVM?
我是先用writebuffer把資料從host寫到device
kernel長這樣
做的事情只是把data從source copy到destination
__kernel void bw(__global unsigned char* src, __global unsigned char* dst)
{
int xid = get_global_id(0) + get_global_size(0) * get_global_id(1) + get_global_size(0) * get_global_size(1) * get_global_id(2);
dst[xid] = src[xid];
}
然後在host program那邊測試kernel執行時間
除出來1XXX GB/s
而且數字很飄
更慘的是data變小
執行時間也沒變小很多
感覺一定是哪邊測錯了
: 搞不好因為Intel Graphic的data傳很快而沒有像是PCIe的瓶頸。
: 因此還是得將程式碼攤開,把程式印出訊息秀出來才知道問題
我code有放GitHub
有興趣的人可以看一下
不過有點亂亂的= =
https://github.com/fishlinghu/OpenCL/blob/master/gpu_cache_profile_3.cpp
作者: LPH66 (-6.2598534e+18f)   2016-10-22 20:50:00
xid 計算是不是應該要有 get_global_id(1)?你的中間項是兩個 get_global_size() 相乘喔, 我看錯了 orz
作者: VictorTom (鬼翼&娃娃魚)   2016-10-25 23:12:00
弱弱問一句 clGetDeviceInfo() 不就可以問cache/linesize了嗎?_?
作者: sOuOr (sOuOr)   2016-10-27 04:48:00
原po可能想練習自己測試? 不然照你說上網也可以查啊XDD

Links booklink

Contact Us: admin [ a t ] ucptt.com