다음 예제를 고려하면 OpenMP는 buff1
및 buff2
에 저장된 주소를 결정해야합니다. 그러나 buff1
및 buff2
에 저장된 주소는 작업을 실행하는 스레드의 ID (myid
)에 따라 결정됩니다. 문제를 어떻게 해결할 수 있습니까? 어떤 해결책을 부탁드립니다. 나는 기억을 할당 할 수 없다.스레드 개인 저장소에 대한 OpenMP 태스크 종속성
mystruct* buff1;
mystruct* buff2;
#pragma omp task depend(in: data[0:1000]) depend(inout: buff1[0:0])
{
int myid=omp_get_thread_num();
buff1=buffers[myid];
processA(data, buff1);
}
#pragma omp task depend(in: data[0:1000]) depend(inout: buff2[0:0])
{
int myid=omp_get_thread_num();
buff2=buffers[myid];
processB(data, buff2);
}
#pragma omp task depend(in: data[0:1000]) depend(inout: buff1[0:0]) depend(inout: buff2[0:0])
{
processC(data, buff1, buff2);
}