for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(asubsref(struct1,j) > 0)
asubsref(struct2,j) = asubsref(struct3,j) + 1;
}
for(j=0; j<n; j++)
asubsref(struct1,j) = asubsref(struct2,j) - asubsref(struct3,i);
}
Struct1/struct2는 너비/높이/INT-float 배열 두 구조체이다 각기. struct3은 float 구조체입니다.
내 시도 두 개의 서로 다른 루프로를 만드는 것이 었습니다하지만 잘못된 결과를 많이 얻을 것 같은 아아, 그것은 작동하지 않았다 지금까지 : 나는 대답을 찾는 게 아니에요
#pragma omp parallel
{
#pragma omp for private(j)
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(asubsref(struct1,j) > 0)
asubsref(struct2,j) += 1;
}
}
#pragma omp for private(j)
for(i=0; i<n; i++)
{
k = asubsref(struct3,i);
for (j=0; j<n; j++)
{
asubsref(struct1,j) -= k;
}
}
}
을 그러나 이것에 관해 어떻게 가야하는지/대답과 그에 대한 팁을 생각하는 데 도움이되는 몇 가지 지침. 이 코드에서 볼 무엇
'asubref'는 무엇을합니까? – Tudor
또한 asubsref (bin, j) = asubsref (bin, j) + 1;과 asubsref (bin, j) + = 1;은 * 동일한 * 문장입니까? 'asubsref'가 부작용이 있다면, 사실이 아닐 수도 있습니다. – ArjunShankar
무슨 뜻입니까? * OpenMP없이 코드의 * 두 번째 버전을 컴파일 할 때 결과가 정확합니까? – ArjunShankar