Visual Studio 2005의 OpenMP
-
19-09-2019 - |
문제
OpenMP를 사용하여 Visual Studio 2005 Professional에서 Loop for Loop을 만들려고합니다. omp.h를 포함시키고 /OpenMP 컴파일러 플래그를 지정했습니다. 그러나 루프가 컴파일하는 가장 간단한 평행조차 얻을 수 없습니다.
#pragma omp parallel for
for ( int i = 0; i < 10; ++i )
{
int a = i + i;
}
위는 #Pragma 라인에서 컴파일러 오류 C3005를 생성합니다.
Google은 큰 도움이되지 않았습니다. 비슷한 문제가있는 사용자가있는 모호한 일본 웹 사이트 만 발견했습니다. 결의안에 대한 언급이 없습니다.
표준 병렬 블록은 잘 컴파일됩니다.
#prgram omp parallel
{
// Do some stuff
}
그것은 당신이 for 루프를 추가하려고 할 때까지입니다.
#pragma omp parallel
{
#pragma omp for
for ( int i = 0; i < 10; ++i )
{
int a = i + i;
}
}
위의 결과 컴파일러 오류 C3001을 일으 킵니다. 'for'가 컴파일러와 혼동되는 것 같습니다. 어떤 아이디어?
해결책
나는 문제를 발견했다. 일부 천재는 헤더 내에서 다음 매크로를 정의했습니다.
#define for if ( false ) ; else for
내 유일한 추측은 이것이 루프가 시각적 C ++에서 올바르게 범위를 범하기 위해 변수를 선언하는 데 사용되었다는 것입니다.
제휴하지 않습니다 StackOverflow