1
这个openMP代码块运行良好,但我需要确保没有竞争条件。因此,我已将j
变量设为私有。复杂的openMP代码竞争条件的识别
通过这样做,我认为任何竞争条件都不应该存在于最内层循环中的赋值操作。如果我错了,请纠正我。
#pragma omp parallel for private(i,j,k) shared (result_buffer,trans_a,element_b)
for (i=0; i<N; i++)
result_buffer[i]=0;
{
for (j = 0; j<(N/comm_size); j++)
{
for(k=0; k<N; k++)
result_buffer[k]=result_buffer[k]+trans_a[j*N+k]*element_b[j];
}
}
嗯...是在result_buffer [i] = 0之前的第一个`{`应该*';'? – Mysticial 2011-12-16 01:10:28
没有..它在最外面的'For'循环里面。 – 2011-12-16 01:17:20