如何使用OpenMP在GPU上分发团队?

时间:2017-05-18 23:36:20

标签: parallel-processing openmp nvidia gpgpu gpu-programming

我试图利用我的Nvidia Geforce GT 740M使用OpenMP和clang-3.8编译器进行并行编程。

在CPU上并行处理时,我设法获得所需的结果。但是,在GPU上处理时,我的结果几乎是随机数。

因此,我认为我没有正确分发我的线程团队,并且可能会有一些数据争用。我想我必须以不同方式进行for-loops,但我不知道错误可能在哪里。

def FindLargestRow(lsts):   
    largestSize=0
    largestRow=0


    for i in range(0,len(lsts)):


       if sum(lsts[i])>=largestSize:



           largestRow = i

           largestSize = sum(lsts[i])

return [largestRow,largestSize]

我猜它可能与我的GPU架构有关。因此,我添加了这个:

GPU Information

我对这个话题还不熟悉,谢谢你的帮助:)。

1 个答案:

答案 0 :(得分:0)

是的,这里有一场比赛。不同的团队正在阅读和写入阵列的相同元素' y。也许你想要这样的东西?

for(i = 0; i < n; i++) {
  #pragma omp target teams distribute parallel for
  for (j = 0; j < n; j++){
    y[j] = a*x[j] + y[j];
  }
}