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 한 구조라고 말하는 것이다.