【发布时间】:2015-07-03 09:26:38
【问题描述】:
我想测量不同设备(即 CPU 和 GPU)的性能。 这是我的内核代码:
__kernel void dataParallel(__global int* A)
{
sleep(10);
A[0]=2;
A[1]=3;
A[2]=5;
int pnp;//pnp=probable next prime
int pprime;//previous prime
int i,j;
for(i=3;i<10;i++)
{
j=0;
pprime=A[i-1];
pnp=pprime+2;
while((j<i) && A[j]<=sqrt((float)pnp))
{
if(pnp%A[j]==0)
{
pnp+=2;
j=0;
}
j++;
}
A[i]=pnp;
}
}
但是sleep() 函数不起作用。我在构建日志中收到以下错误:
<kernel>:4:2: warning: implicit declaration of function 'sleep' is invalid in C99
sleep(10);
builtins: link error: Linking globals named '__gpu_suld_1d_i8_trap': symbol multiply defined!
有没有其他方法可以实现该功能。还有有没有办法记录执行这段代码sn-p所用的时间。
P.S.我已将#include <unistd.h> 包含在我的主机代码中。
【问题讨论】:
-
还有没有办法记录执行这段代码sn-p所用的时间。
-
将事件附加到内核启动,然后查询分析信息。如果您进行搜索,您可能会找到很多答案。
标签: c linux parallel-processing opencl gpgpu