OpenMP를 사용하면 쉽게 병렬 처리를 할 수 있다.
먼저 환경 구성은 프로젝트 속성창 - C/C++ - 언어 탭으로 이동하여 OpenMP 지원을 선택한다.
아래는 OpenMP 를 사용하여 병렬 처리를 하는 예제 코드 이다.
#include <iostream>
#include <windows.h>
#include <omp.h> // OpenMP 에 대한 함수가 정의된 헤더파일
#include <ctime>
using namespace std;
#define COUNT_MAX 1000
void doNothing()
{
}
void func(int n, int m)
{
for(int i = 0 ; i < n ;i +=1 )
{
for(int j = 0 ; j < m ; j +=1)
{
doNothing();
}
}
}
int main()
{
clock_t start = clock();
int max_count = omp_get_max_threads(); // 사용 가능한 최대 스레드 개수 리턴
cout << "max threads count : " << max_count << "\n";
omp_set_num_threads(2); // for문을 병렬로 수행할 때 사용할 Thread 갯수
#pragma omp parallel for // for문을 병렬로 수행하기 위한 directive
for (int i = 0 ; i < COUNT_MAX ; i += 1)
{
func(100, 1000000);
}
cout << "run time = " << clock() - start << " milliseconds." << std::endl;
system("pause");
return 0;
}
Release | OpenMP 사용 | OpenMP 미 사용 |
속도 측정 | 3 ms | 2 ms |
무엇이 잘못된 것인가??
멀티코어 프로그래밍을 잘못 사용 했을 때의 좋은 예시를 찾았다.
개판된다!
일단 처음 사용하는 것임으로 오답노트 개념으로 정리해 나가면서 문제점을 찾아보자.
OpenMP #5 - android configration (0) | 2020.01.21 |
---|---|
OpenMP #4 - xcode configration (0) | 2020.01.21 |
OpenMP #3 - omp parallel for 디렉티브 (0) | 2020.01.21 |
OpenMP #2 - Work Sharing (0) | 2020.01.21 |
댓글 영역