使用OpenCL 1.1查找素数的program给出了以下基准:
设备: CPU
实时:约3秒 使用时间:约。 32秒
设备: GPU
实时 - 约。 37秒 使用时间 - 约。 32秒
为什么GPU的执行时间不小于CPU的执行时间?数据/任务并行化是否未发生?
系统规格:64位CentOS 5.3系统,配备两个ATI Radeon 5970显卡+ Intel Core i7处理器(12个核心)
答案 0 :(得分:1)
你的内核效率很低,我有一个调整后的内容供你考虑。至于为什么它在cpu设备上运行得更好......
我认为在基于FFT的素数计算甚至筛选算法中,gpu会好得多。
{
int t;
int i = get_global_id(0);
int end = sqrt(i);
if(i%2){
B[i] = 0;
}else{
B[i] = 1; //assuming only that it should be non-zero
}
for ( t = 3; (t<=end)&&(B[i] > 0) ; t+=2 ) {
if ( i % t == 0 ) {
B[ i ] = 0;
}
}
}