문제

병렬 코드를 작성하기 위해 GCC와 함께 OpenMP를 사용했습니다. 나는 현재 Visual C ++ 2005를 사용하고 있으며 OpenMP를 사용하는 방법을 알아 내려고 노력하고 있습니다. 속성-> c/c ++/언어 메뉴에는 컴파일러 옵션이 있지만 라이브러리가 누락되었다고 불평합니다. OpenMP에 대한 타사 구현이 있습니까? 아니면 비주얼 C ++를 잘못 구성하고 있습니까?

도움이 되었습니까?

해결책

일부 연구 후에 나는 OpenMP Libs 및 DLL이 Visual C ++ 2005 또는 Visual C ++ Express Edition 2008에 포함되어 있지 않다는 것을 알았습니다. 그러나 몇 가지 해결 방법을 사용하면 작동 할 수 있습니다.

먼저 Microsoft에서 Lib 파일을 다운로드해야합니다. Windows SDK 용 Windows Server 2008 및 .NET Framework 3.5. 다운로드 한 후에는 vcomp.lib 또는 vcompd.lib가 프로그램에 연결되어 있는지 확인해야합니다.

다음으로 당신은 시각적 C ++ 재분배 가능한 팩 케이지. 그런 다음 vcomp90.dll이 길 어딘가에 있는지 확인하십시오.

또한 Visual C ++의 속성-> C/C ++/언어 메뉴에서 찾을 수있는 OpenMP 컴파일러 옵션을 활성화해야합니다.

그 후에는 OpenMP를 잘 사용할 수 있어야합니다.

다른 팁

T는 VC 2005와 함께 상자에서 작동한다고 생각하지만 모든 버전이 제공되는지 확실하지 않습니다.

당신이 jsut를 첨부한다면

/openmp

Open MP 헤더도 포함해야합니다.

#include <omp.h>

이 헤더는 매니페스트를 애플리케이션에 추가하여 올바른 시스템 경로에서 vcomp.dll을로드 할 수 있기 때문에 중요합니다. 따라서 일반적으로 실행 파일 아래에 vcomp.dll 또는 기타 시스템 DLL을 복사 할 수는 없지만 올바른 위치에서 DLL을로드하려면 응용 프로그램의 매니페스트를 포주해야합니다. 이것은 OMP.H 헤더에 의해 자동으로 없습니다.

따라서 자신의 매니페스트를 직접 수정하고 싶지 않은 최소 코드는 다음과 같습니다.

#include <omp.h> // has to include this header to build the correct manifest to find vcom.dll or vcompd.dll

int main(int argc, char* argv[])
{
  double sum;
#pragma omp parallel for
  for(int i = 0; i < 10000; ++i) {

  }
    return 0;
}

추가해야합니다.

/openmp

컴파일러 옵션에.

자세한 내용은 다음에 확인할 수 있습니다 MSDN

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top