MCP로 연결 →

계산 입력

공식

광고

결과

전체 속도 향상
4.706×
배 빠름 (직렬 버전 대비)
최대 이론적 속도 향상 (s → ∞) 10×
병렬 효율 58.82%

암달의 법칙이란?

암달의 법칙은 1967년 컴퓨터 설계자 진 암달(Gene Amdahl)이 정립한 법칙으로, 작업의 일부만 병렬화할 수 있을 때 얻을 수 있는 최대 이론적 속도 향상을 예측합니다. 병렬 컴퓨팅의 핵심 원리로 자리 잡았으며, 프로세서나 코어, 스레드를 더 늘리는 것이 과연 그만한 효과가 있는지 판단할 때 큰 도움이 됩니다. 핵심은 간단합니다. 병렬화할 수 없는 직렬(순차) 부분이 결국 전체 성능의 한계를 정하기 때문에, 병렬 부분에 아무리 많은 자원을 투입해도 그 한계를 넘을 수 없다는 것입니다.

병렬화 전후 프로그램의 직렬 부분과 병렬 부분을 나타낸 막대 그래프
암달의 법칙은 실행 시간을 고정된 직렬 부분\((1 - p)\)과 프로세서가 늘수록 줄어드는 병렬 부분 \(p\)로 나눕니다.

계산기 사용법

두 가지 값을 입력하면 됩니다. 첫째는 프로그램의 병렬 처리 비율을 백분율로 나타낸 값(여러 프로세서로 나눠 처리할 수 있는 작업의 비중)이고, 둘째는 병렬 부분의 속도 향상 계수로, 보통 그 부분을 실행하는 프로세서나 코어의 개수에 해당합니다. 계산기는 전체 속도 향상, 병렬 속도 향상이 무한대일 때의 최대 이론적 속도 향상, 그리고 병렬 효율을 함께 알려 줍니다.

공식 풀이

공식은 다음과 같습니다.

$$\text{Speedup} = \dfrac{1}{(1 - p) + \dfrac{p}{s}}$$

여기서 \(p\)는 병렬화 가능한 비율(0과 1 사이)이고, \(s\)는 그 부분에 적용되는 속도 향상 계수입니다. \((1 - p)\) 항은 가속할 수 없는 직렬 부분을 뜻합니다. \(s\)가 무한대에 가까워지면 속도 향상은 \(\dfrac{1}{1 - p}\)에 수렴하는데, 이것이 바로 직렬 부분이 만들어 내는 절대적인 상한선입니다.

광고
병렬 비율별로 프로세서 수가 늘수록 평탄해지는 속도 향상 곡선
프로세서가 늘어도 속도 향상은 한계에 다다른다 — 직렬 비율이 최대 이득을 제한한다.

계산 예시

프로그램의 90%가 병렬화 가능하고(\(p = 0.9\)) 이를 8개의 프로세서에서 실행한다고(\(s = 8\)) 가정해 봅시다. 그러면 분모는 $$(1 - 0.9) + \frac{0.9}{8} = 0.1 + 0.1125 = 0.2125$$가 되어, 속도 향상은 \(\dfrac{1}{0.2125} \approx 4.71\)배입니다. 프로세서를 무한히 늘려도 최대 속도 향상은 \(\dfrac{1}{0.1} = 10\)배에 그치는데, 이는 10%의 직렬 부분이 성능을 어떻게 제한하는지 잘 보여 줍니다.

광고

결과 해석

속도 향상 값은 \(s\)개의 프로세서로 실행할 때 프로그램이 단일 프로세서에서 실행되는 것에 비해 몇 배 더 빠른지를 나타냅니다. 4배의 속도 향상은 병렬화된 작업이 원래 시간의 1/4에 완료된다는 의미입니다. Amdahl의 법칙은 고정된 문제 크기를 가정하므로, 속도 향상은 빨라질 수 없는 직렬 부분 \(1-p\)에 의해 제한됩니다.

무한 프로세서 상한인 \(1/(1-p)\)는 제한 없는 하드웨어로 달성할 수 있는 최대 속도 향상입니다. 예를 들어, 작업의 95%가 병렬화 가능하다면 상한은 \(1/(1-0.95) = 20\times\)입니다. 백만 개의 코어도 20배를 초과할 수 없습니다. 이것은 계획을 위한 가장 중요한 숫자입니다. 추가 프로세서 투자의 상한을 설정합니다.

병렬 효율성은 프로세서가 얼마나 잘 활용되는지를 측정하며, 속도 향상을 프로세서 수로 나눈 값으로 정의됩니다. \(\text{효율성} = \text{속도 향상}/s\). 1.0 (100%)의 효율성은 완벽한 선형 확장입니다. 실제로는 코어를 추가할수록 감소합니다. 예를 들어, 90% 병렬화 가능한 코드를 8개 코어에서 실행하면 4.71배의 속도 향상을 얻으므로, 효율성은 \(4.71/8 \approx 59\%\)입니다. 추가된 각 코어는 점차적으로 유용한 작업을 적게 수행합니다.

프로세서 추가가 가치 있기를 멈추는 경우는 추가 코어당 한계 속도 향상이 비용에 비해 작아지고 효율성이 허용 가능한 임계값(실제로는 보통 50–70%) 아래로 떨어질 때입니다. 속도 향상이 상한에 접근하면 추가 하드웨어는 거의 도움이 되지 않습니다. 상한 자체를 높추려면 더 많은 코어를 구매하기보다는 알고리즘 병렬화를 증가시키거나 동기화 및 I/O를 줄임으로써 직렬 부분을 감소시켜야 합니다. Amdahl의 법칙은 통신 및 조정 오버헤드를 무시하므로, 실제 속도 향상은 이러한 이론적 최댓값보다 일반적으로 낮습니다.

자주 묻는 질문

프로세서를 두 배로 늘리면 왜 속도도 두 배가 되지 않나요? 직렬 부분은 프로세서 개수와 상관없이 같은 속도로 실행되기 때문에, 그 실행 시간이 결국 가장 큰 병목으로 남기 때문입니다.

병렬 효율이란 무엇인가요? 속도 향상을 프로세서 개수로 나눈 값을 백분율로 나타낸 것으로, 추가로 투입한 자원을 얼마나 효율적으로 활용하고 있는지를 보여 주는 지표입니다.

구스타프슨의 법칙과는 어떻게 다른가요? 구스타프슨의 법칙은 문제의 크기가 프로세서 개수에 비례해 커진다고 가정하기 때문에, 작업량을 고정한 암달의 모델보다 대체로 더 낙관적인 전망을 제시합니다.

최종 업데이트: