암달의 법칙 (Amdahl's Law)
쉽게 풀면
저녁 식사를 준비한다고 생각해봅시다. 감자 껍질 벗기기는 사람을 더 투입하면 훨씬 빨리 끝나지만, 오븐에 고기를 굽는 시간은 사람이 몇 명이든 정해진 시간이 걸립니다. 프로그램도 마찬가지로 여러 코어에 나눠서 동시에 처리할 수 있는 부분(감자 껍질 벗기기)과, 순서대로만 처리해야 하는 부분(오븐 굽기)이 섞여 있습니다. 암달의 법칙은 이 순차 처리 구간의 비율이 클수록, 아무리 코어를 늘려도 전체 작업 시간을 줄이는 데 한계가 있다는 것을 수식으로 보여줍니다. 예를 들어 프로그램의 90%를 병렬화할 수 있어도 나머지 10%가 순차적이라면, 코어를 무한히 늘려도 속도는 최대 10배까지밖에 빨라지지 않습니다.
왜 중요한가
암달의 법칙은 병렬·분산 시스템 연구에서 "코어(또는 노드)를 더 투입하면 얼마나 빨라지는가"라는 질문에 대한 이론적 상한선을 제공하기 때문에 자주 인용됩니다. 하드웨어 설계자에게는 코어 수를 늘리는 투자가 어느 지점부터 수익 체감에 부딪히는지 가늠하게 해주고, 소프트웨어 연구자에게는 병렬화 자체보다 순차 구간(임계 구역, 동기화 지점, 초기화 단계 등)을 줄이는 최적화가 더 중요할 수 있음을 시사합니다. 이 때문에 컴퓨터 구조, 고성능 컴퓨팅, 분산 시스템, 최근에는 대규모 딥러닝 학습의 확장성 논의에서도 성능 향상의 한계를 설명하는 근거로 널리 쓰입니다.
논문에서는 이렇게 쓰입니다
이 문장은 "코어를 계속 추가해도 프로그램 안에 있는 순차 처리 부분 때문에 성능 향상이 어느 지점부터는 더 이상 늘지 않는다"는 실험 결과를 암달의 법칙으로 설명한 것입니다.
이 예문은 딥러닝 분산 학습 논문에서 흔히 볼 수 있는 서술로, 노드를 늘려도 통신·동기화 오버헤드 때문에 이론적 한계보다 실제 속도 향상이 더 낮게 나타난다는 점을 암달의 법칙과 연결지어 설명하고 있습니다.
이 문장은 컴퓨터 구조 분야 논문에서, 단순히 코어 수를 늘리는 접근의 한계를 암달의 법칙으로 짚은 뒤 순차 구간을 직접 줄이거나 가속하는 방향으로 연구 동기를 제시하는 전형적인 패턴을 보여줍니다.
조금 더 깊게 보면
암달의 법칙을 수식으로 보면, 병렬화 가능한 비율을 p, 사용하는 프로세서(코어) 수를 N이라 할 때 전체 속도 향상은 대체로 1 / ((1-p) + p/N) 형태로 표현되며, N을 무한히 늘려도 속도 향상은 1/(1-p)에 수렴합니다. 즉 순차 구간의 비율 (1-p)가 성능 향상의 상한을 사실상 결정짓습니다. 논문에서는 이 순차 구간이 흔히 락(lock)이나 임계 구역 같은 동기화 지점, 데이터 의존성이 강한 초기화·집계 단계로 나타나며, 이를 줄이는 것이 코어를 추가하는 것보다 더 효과적인 최적화가 되는 경우가 많습니다. 또한 실제 확장성 평가에서는 이론적 속도 향상뿐 아니라 통신·동기화 오버헤드까지 포함한 실측값을 함께 제시하는 경우가 일반적입니다.
주의할 점
암달의 법칙은 문제의 크기(작업량)가 고정되어 있다고 가정합니다. 실제로는 코어가 늘어나면 더 큰 문제를 동시에 풀 수도 있는데, 이런 상황을 설명하는 것이 구스타프슨의 법칙이므로 둘을 혼동하지 않아야 합니다. 또한 이 법칙은 병렬화에 따르는 통신·동기화 오버헤드는 고려하지 않으므로, 실제 성능 향상은 계산값보다 더 낮게 나타나는 경우가 많습니다.