강좌

병렬처리 개념 강좌: #3 암달의 법칙

하늘흐늘 2021. 11. 6. 13:03
반응형

병렬처리를 한다고 무조건 성능 향상이 되는 것은 아닙니다. 병렬처리를 하여 성능이 향상될 수 있는 부분이 존재할 때 성능이 향상될 수 있습니다. 병렬처리를 하여 성능이 향상되는 부분이란 쉽게 이야기 하여 처리를 여러 개의 코어에서 나누어 연산할 수 있는 부분을 의미합니다. 

병렬처리를 통한 성능 향상은 전체 처리의 관점에서 보아야 합니다. 부분에서의 몇 백%의 성능 향상을 할지라도 그게 전체 처리에서의 몇 백%의 성능 향상을 의미하지는 않기 때문입니다.

그럼, 병렬처리를 통하여 어느 정도의 성능 향상을 가져올 수 있을까요?
이 문제에 대하여 이론적인 계산을 가능하게 하는 방법이 암달의 법칙입니다. 
암달의 법칙은 연산의 P비율만큼만 병렬화가 가능하여 S만큼의 성능 향상이 있을 경우, 최대 속도 향상은 1 / ((1-P) + P/S)로 정의됩니다.

간단히 아래 예로 암달의 법칙을 살펴보겠습니다.

위의 예에서 각각의 네모는 동일한 처리량의 크기를 나타내고 한 행을 한 단계로 가정하겠습니다. 위의 예를 보면 직관적으로 2번째 단계의 3개 네모를 동시에 실행한다면, 3개의 코어가 각 1개씩 실행한다고 했을 때 성능이 향상된다는 것을 알 수 있습니다. 위의 예에서 동시에 실행하여 성능을 향상할 수 있는 부분은 2단계뿐입니다. 암달의 법칙으로 위의 예를 풀어보면 아래와 같습니다.

동일한 가중치를 갖는 4단계 중 1단계만 병렬화가 가능할 경우 성능 향상은 P는 1/4 = 0.25가 되며 S는 병렬 처리다 될 경우 처리 성능은 1개로 실행하는 것에 비하여 3배가 되므로 3이 됩니다.

이를 바탕으로 암달의 법칙으로 계산하면 아래와 같습니다.
1/(1-0.25+0.25/3) = 1/0.83 = 1.2 
즉 최대 20%의 성능 향상을 얻을 수 있다는 것을 알 수 있습니다.

참고로 암달의 법칙은 개인적인 경험상 프로그램 튜닝을 할 때에도 대략적인 성능 향상 계산이나 사고에 유용합니다.

 

반응형