我试图利用我的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架构有关。因此,我添加了这个:
我对这个话题还不熟悉,谢谢你的帮助:)。
答案 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];
}
}