암달의 법칙
Amdahl's law는 순차 실행(병렬이 아닌) 코드와 병렬 실행 코드를 가진 프로그램에서 CPU 코어 숫자를 늘렸을 때 얻을 수 있는 잠재적인 성능 이득을 구할 수 있는 공식이다. N개의 처리 코어를 가진 시스템에서 실행되는 프로그램 중, 반드시 순차적으로 수행되어야 하는 코드의 비율을 S라고 하면 다음과 같이 표현할 수 있다.
예컨데 75%는 병렬 수행이 가능한 코드, 25%는 순차 실행이 강제되는 코드라고 가정하자. 이 프로그램을 코어가 2개인 시스템에서 실행할 경우, 싱글 코어보다 1.6배의 속도 향상을 얻을 수 있다.
만약 2개의 코어를 추가하면(4개의 코어) 속도는 2.28배 빨라진다.
위 공식에서 시사하는 재미있는 점은 N(코어 개수)이 무한대에 가까워지면 속도가 1/S(순차실행코드의 비율)에 수렴한다는 것이다. 예컨데 프로그램의 40%가 순차 실행부분이면 코어를 천억개를 갖다 붙여도 2.0배 이상의 속도 향상은 얻을 수 없다. (그래서 암달의 저주라고 불리기도 한다.)
만약 성능 향상을 위해 병렬 프로그래밍을 고려하고 있다면, 코어 개수 == N배의 성능 향상이 아님을 기억하자!
레퍼런스
•
공룡책 10th 개정판, 180쪽