使用CUDA的Thrust库获取较大的值
|
嗨,我想实现一个推力极大的循环,但是我发现它比普通的C ++代码慢得多。你能告诉我我要去哪里错了。
fi和fj是宿主载体
xsize通常是大约7-8位数字
thrust::host_vector <double> df((2*floor(r)*(floor(r)+1)+1)*n*n);
thrust::device_vector<double> gpu_df((2*floor(r)*(floor(r)+1)+1)*n*n);
for(i=0;i<xsize;i++)
{
gpu_df[i]=(fi[i]-fj[i]);
if(gpu_df[i]<0)
gpu_df[i]=0;
else
gpu_df[i]=gpu_df[i]*(fi[i]-fj[i]);
if(gpu_df[i]>255)
gpu_df[i]=255;
// cout<<fi[i]<<\"\\n\";
}
df=gpu_df;
我觉得代码没有被并行化。你能帮我一下吗。
没有找到相关结果
已邀请:
1 个回复
谷起
,
,
等。在这种情况下,我们可以用
编写计算,因为循环只是计算函数
和将结果存储在“ 6”中。请注意,在调用
之前,我们必须先将输入数组移至设备,因为Thrust要求输入和输出数组位于同一位置。
作为参考,这是程序的输出: