본문 바로가기
IT_Study/CS_Study

[Parallel Computing] (2-2) Parallel Processing이란 무엇일까?

by 두번째얼룩 2024. 4. 12.

앞 글에서는 관련 키워드에 대해서 알아보았다. 이번 글에서는 Parallel processing의 효과 및 이를 측정하는 방법에 대해서 알아보려고 한다. 
 Parallel Processing의 궁극적인 목적은 빠르게 수행하는 것이다. 얼마나 빠르 게 수행되었는 지를 어떤 테스크를 순차적으로 수행했을 때와 동시에 수행했을 때를 비교하여 알 수 있다. 예를 들어, 'A'라는 일을 순차적으로 실행했을 때 걸리는 시간 10초였고, 동시에 수행했을 때 걸리는 시간이 5초였다면, 순차 실행 대비 동시 수행은 2(=10/5)배의 성능을 보인다고 이야기 할 수 있다.
그리고 수행하는 주체는 프로세서라고 한다면, 프로세서 개수에 따른 성능 향상을 알 수 있으며, 더 나아가 몇 개의 프로세서를 사용했을 때 가장 효율적인지도 알 수 있다. 위의 예제에서 2개의 프로세서를 사용했을 때, 걸리는 시간이 5초였고, 4개의 프로세서를 사용 했을 때 걸리는 시간이 2초였다라고 가정하자. 그러면 아래와 같은 성능을 알 수 있다.
> 2개의 프로세서 :: 10/5 = 2
> 4개의 프로세서 :: 10/2 = 5 
이를 비교하기 위해서 평균적으로 한 개의 프로세서에서 보이는 성능향상을 사용된 프로세서의 수로 나눔으로써 계산할 수 있다. 
> 2개의 프로세서 :: 2/2 = 1
> 4개의 프로세서 :: 5/4 = 1.25
4개의 프로세서를 사용하면 2개의 프로세서를 사용할 때보다 더 효율(1.25>1)이 좋은 것을 알 수 있다. 
 이런 효율을 조금더 체계적으로 계산하는 방법이 Amdahl's Law이다. Amdahl's Law는 어떤 테스크를 한개의 프로세서만 사용했을 때 성능 향상 대비 여러 프로세서를 사용했을 때의 성능 향샹의 비율을 계산하여 그 효율을 알아 볼 수 있다. 그런데, 보통 하나의 테스크에 포함되어 있는 모든 연산을 동시에 수행할 수 없다. 그렇다는 것은 해당 테스트는 성능을 향상 시킬 수 있는 부분과 그렇지 않은 부분으로 나눌 수 있다. 테스트를 'T'라 표현하고, 성능 향상을 기대하기 어려운 부분의 비율을 'R'이라고 하고, 사용된 프로세서의 수를 'p'라고 하면 기대할 수 있는 성능향상은 아래 수식과 같다. 

예를 들어 테스트의 97%가 동시 동작이 가능하면, R=0.03, 동시에 수행하는 프로세서의 개수가 40000개라고 하면, 아래와 같다. 

40000개의 프로세서를 사용했고, 무려 97퍼세트의 동작을 동시에 수행가능하지만, 순차 실행 대비 성능 향상이 33배로 기대 대비 작았다. 무조건 프로세서를 많이 사용하는 것이 성능 향샹에 효율적이지 않다. 동시 수행으로 성능 향상을 기대할 수 있는 테스크의 비율에 따라 프로세서의 수를 정하는 것이 좋으며, 달리 말하면 성능 향상을 기대할 수 없는 테스크는 하나의 프로세서의 성능에 영향을 받으므로, 한개의 프로세서의 성능도 중요하다. 


 multicore hardare를 최대한 활용하는 것과 쉽게 Programming을 하는 것에는 간극이 있다. 둘 다 동시에 만족하기에는 매우 어렵다. Programming model에는 Shared memory 관점에서는 OpenMP, Pthreads, Message passing 관점에서는 MPI, Accelerator Programming model은 OpenCL, SnuCL, CUDA, OpenMP, OpenACC 등이 있다.
 

댓글