内核将在2D数组中搜索数字 5
例如,Array的尺寸为10x10 ,总元素= 10000,如果我除以4,则范围= 2500;
BlockIdx.x = 0然后它将搜索(i = 0; i <2500; i ++)
BlockIdx.x = 1然后它将搜索(i = 2500; i <5000; i ++)
BlockIdx.x = 2然后它将搜索(i = 5000; i&lt; 7500; i ++)
BlockIdx.x = 3然后它将搜索(i = 7500; i&lt; 10000; i ++)
Kernel Code
__global__
void psearch(int *d_array)
{
int blockID = blockIdx.x;
int condition = (blockID+1)*(Range)
for(int i = blockID*(Range) ; i < condition; i++)
{
if(d_array[i] == 5)
{
d_array[1] = 1992;
}
}
如下所示,我用4块1个线程调用内核。
Kernel Call
psearch<<<4,1>>>(d_array);
我的问题是内核调用将调用每个1个线程的4个块,所以我可以说所有块都是并行运行的,因此并行搜索数组。
设备名称= Quadro FX 1800M
这个程序是出于学习目的,所以如果我犯了任何错误,如果有人能指出它们,我会很高兴的。
感谢您的考虑。
答案 0 :(得分:1)
是的,它将并行运行,但与卡实际上能够做的相比,它会表现不佳。为了获得全部力量,你应该至少拥有:
当您拥有数百或数千个线程时,GPU可以获得性能。对于GPU来说,4非常非常小。