다음 코드를 사용하여 OpenMP 작업 구성을 사용하여 배열의 요소 합계를 찾습니다.
코드는 n = 10000
까지 올바른 결과를 산출합니다.OpenMP 작업 - 더 큰 수의 반복에 대해 세그먼트 화 오류가 나타나는 이유는 무엇입니까?
하지만 그 외에는 세그먼트 오류가 발생합니다. gdb
을 사용하여 reduce()
에 대한 재귀 호출 중 하나에서 오류가 발생하는 것으로 나타났습니다. 입력 배열 할당에는 문제가 없으며이를 확인했습니다.
누구에게 문제가 있을지에 대한 제안이 있습니까?
int reduce (int *arr, unsigned long int n)
{
int x;
if (n <= 0)
return 0;
#pragma omp parallel
{
#pragma omp single nowait
{
#pragma omp task shared(x)
x = reduce(arr, n-1) + arr[n-1];
#pragma omp taskwait
}
}
return x;
}
'서명되지 않은'경우'n '은 (는)'<0'이됩니다. – yano
스택 크기를 늘리고'OMP_STACKSIZE'를보십시오 – Gilles
코드를 포맷하십시오. 이것은 너무 불필요하게 추악합니다. – Zulan