본문 바로가기
카테고리 없음

[OpenMP, C/C++] - OpenMP 환경설정

by CHML 2016. 2. 21.

  OpenMP는 'OpenMP Architecture Review Board'라는 비영리 단체가 개발 및 표준화를 진행하고 있는 병렬 프로그래밍 표준이다. OpenMP Architecture Review Board에 참여하는 주요 구성원으로는 Microsoft, AMD, HP, IBM, Intel, Oracle 등이 있다. OpenMP의 초기 버전은 Fortran 용으로 개발되었으며, 이후 C/C++ 버전이 개발되었다.

  먼저, Windows 환경에서 C/C++ 언어를 기반으로 OpenMP를 이용하는 방법을 설명한다. OpenMP를 이용하기 위해서는 Microsoft Visual Studio 2005 버전 이상, 또는 Intel 컴파일러 8.0버전 이상의 툴을 설치해야 한다. 이 글에서는 Microsoft Visual Studio 2015를 기준으로 OpenMP를 이용하기 위한 프로젝트 설정을 서술한다.


1. C/C++ 프로젝트를 생성한다.



2. 프로젝트 속성에서 구성 속성 → C/C++ → 언어 → OpenMP 지원의 값을 '예'로 변경한다.



3. 소스 코드에 #include <omp.h> 구문을 추가한다.

 #include <omp.h>



4. #pragma omp parallel 키워드를 추가하고, #pragma omp parallel로 시작하는 중괄호 내부에 병렬 처리할 코드를 작성한다.

#include <stdio.h>
#include <omp.h>

int main() {
#pragma omp parallel
{
	printf("Hello, World!\n");
}

	return 0;
}


위의 소스 코드를 실행하면 아래와 같은 결과가 출력된다. OpenMP는 쓰레드 수를 설정하지 않으면 기본으로 시스템의 CPU 코어 수를 생성하는 쓰레드의 수로 설정한다. 따라서, 쿼드코어 시스템에서 위의 소스 코드를 실행하면 Hello, World가 4번 출력된다.



* #pragma omp parallel { }와 같이 #pragma omp parallel 키워드와 중괄호 사이에 줄바꿈이 없으면 에러가 발생한다. 

* OpenMP 2.5부터 지원하는 지시어와 함수들은 Intel Compiler 11.1 버전을 사용하여 구현되었기 때문에, 폴더 경로에 한글이 포함된 경우 에러가 발생할 수 있다.