병렬 Process를 적용 하자.
a) for문 구성을 간단하게 Multi Thread와 같은 형태로 변환해준다.(병렬 프로그래밍)
- 8Thread CPU에서 4개를 사용할 경우에 속도 향상이 가장 좋아 4개로 기준 한다.(여러가지 요건에 의해 바뀔 수 있음)
b) 임의로 분리 수를 조절 할 수 있다.
c) 아주 간단하게 반복문의 정보 처리를 빠르게 할 수 있다.
* Window 자원요소등에 접근해야 할 경우 주의를 요한다.(로컬 변수 형태로 Object를 관리해줘야 한다)
(직접 작성 코드에 대한 병렬화에 매우 좋은 효과를 기대 할 수 있다)
* GPU가 아닌 CPU자원을 사용하는 것이다 *^^;;
1) 설정.
2) 기본 코드
int nThAllCht = OMP_TH_CNT;//(4)// omp_get_num_threads();
omp_set_num_threads(nThAllCht);
#pragma omp parallel//윈도우즈용 비주얼 스튜디오는 알아서 컴파일 해준다.
{
//이하 코드는 For문을 각 Thread에게 공통적으로 분배 해주는 역할을 한다.
// 1003개의 Data를 4개의 Thread가 처리 한다면.
//1번 250개, 2번 250개, 3번 250개, 4번 250 + 3(나머지)를 처리 한다.
int nListCnt = nReadFileCnt;//for문을 돌릴 총 수
int nThCnt = omp_get_max_threads();
int nThNum = omp_get_thread_num();
int nJump = nListCnt / nThCnt;
int nJumpN = nListCnt % nThCnt;
int nStartIndex = (nThNum*nJump);
int nTailAddCnt = 0;
if (nThCnt == (nThNum + 1))//nThNum이 Zero Index임으로.
nTailAddCnt = nJumpN;
for (int iF = nStartIndex; iF < (nStartIndex + nJump + nTailAddCnt); iF++)
//for (int iF = 0; iF < nReadFileCnt; iF++)//원본 For문
{
...//반복 수행 코드.
}
#pragma omp barrier //모든 Thread가 여기에 도착 하도록 기다린다.
}
'작업 > MFC' 카테고리의 다른 글
CFileDialog Error (File Click-Mouse R) (1) | 2021.10.14 |
---|---|
MFC에서 Excel 컨트롤 하기(3) (0) | 2021.06.16 |
MFC Tip : CTime 시간 설정, TRACE() 찍기 오류 상황. (0) | 2020.03.10 |
MFC에서 Excel 컨트롤 하기(2) (3) | 2020.01.23 |
MFC에서 Excel 컨트롤 하기(1) (0) | 2020.01.23 |