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