Embarrassingly parallelEmbarrassingly parallel

Posted at 2017. 2. 9. 16:26 | Posted in 카테고리 없음

Peter Pacheco의 병렬 프로그래밍 책을 읽다보면

 

Embarrassingly parallel 라는 말이 나온다.

 

 

한국어로 곤란한 병렬화라고 말을 해석하는 사람들이 있지만

 

내 생각에는

 

"(병렬화를 했다고 말하기에는) 다소 부끄러운 병렬구조"이라는 말로 해석해야한다고 생각한다.

 

 

Embarrassingly parallel 라는 말의 어원은

 

"프로그래머들의 프로적인 태도"에서 나온 말이다.

 

만약 아래와 같은 A[100]이라는 배열을 0이라는 값으로 초기화하는 반복문이 있다고 하자.

 

void main ( ){

 

int A[100];

 

int i;

 

for(i=0 ; i<100 ; i++)

A[i] = 0;

 

}

 

만약, 이 초기화 반복문을

 

병렬화해야한다면

 

너무 간단하다.

 

 

내가 가지고 있는 코어의 수에 맞게

 

반복문을 쪼개서 할당해주면 되기 때문이다.

 

 

다시 말해, 내가 가지고 있는 코어의 개수가 2개라면

 

아래의 코드와 같이

 

void main ( ){

 

int A[100];

 

int i;

 

if( 첫번째 코어라면 )

for(i=0 ; i<50 ; i++)

A[i] = 0;

 

     else // 두번째 코어라면

for(i=50 ; i<100 ; i++)

A[i] = 0;

}

 

A[0]~A[49]는 첫번째 코어에서

 

A[50]~A[99]는 두번째 코어에서 초기화를 해주도록

 

"병렬화"해주면 된다는 것이다.

 

 

즉, 한눈에 봐서 병렬화하기에 너무도 손쉬운 구조이기 때문에

 

프로 프로그래머 입장에서는

 

"내가 이 코드를 병렬화했다고 자신있게 말하기에는 다소 낯뜨겁기 때문에"

 

Embarrassingly parallel 한 구조라고 말하는 것이다.

 

 

 

 

 

 

 

 

 

 

//