카프-플랫 지표 계산기
실측한 병렬 속도향상과 코어 수로 경험적 직렬비율(e)을 역산합니다. 코어를 늘려도 왜 기대만큼 안 빨라지는지 — 코드 자체의 순차 부분 때문인지, 병렬화 오버헤드 때문인지 구분하는 데 씁니다.
코어 1개일 때 실행시간을 코어 p개일 때 실행시간으로 나눈 배수
경험적 직렬비율 e
0.1003
작을수록 병렬화가 잘 된 것입니다
사용 방법
- 1코어 1개일 때 실행시간(T1) 대비 코어 p개일 때 실행시간(Tp)의 배수, 즉 실측 속도향상(S = T1/Tp)을 넣습니다.
- 2그때 쓴 코어(프로세서) 수를 넣습니다.
- 3경험적 직렬비율 e가 나옵니다. 코어 수를 바꿔가며 여러 번 넣어 e가 일정한지 늘어나는지 비교해 보세요.
자주 묻는 질문
e = (1/S − 1/p) / (1 − 1/p)로 계산합니다. S는 실측 속도향상(코어 1개 대비 배수), p는 코어 수입니다. 암달의 법칙 공식을 거꾸로 풀어, 이 정도 속도향상이 나오려면 순차 비율이 얼마여야 하는지를 역산한 값입니다.
암달의 법칙은 순차 비율을 미리 알 때 속도향상을 예측하는 도구이고, 카프-플랫 지표는 이미 측정한 속도향상에서 거꾸로 순차 비율을 계산하는 진단 도구입니다. 실제 프로그램을 돌려보고 나서 "왜 이만큼밖에 안 빨라졌는지" 원인을 나눠 보는 데 씁니다.
코어 수를 바꿔가며 e를 여러 번 구했을 때, e가 코어 수와 무관하게 거의 일정하면 코드 자체의 순차 비율(암달의 법칙이 말하는 한계)이 원인입니다. 반대로 코어를 늘릴수록 e가 함께 커지면 통신·동기화·부하분산 같은 병렬화 오버헤드가 원인입니다. e는 작을수록 병렬화가 잘 된 것입니다.
이론상 e는 0~1 사이지만, 측정 잡음이나 캐시 효과로 코어를 늘렸더니 이론치보다 더 빨라지는 초선형(super-linear) 속도향상이 나오면 e가 0보다 작게 나올 수 있습니다. 반대로 코어를 늘렸는데 오히려 느려졌다면(S가 아주 작으면) e가 1보다 커집니다. 두 경우 다 계산 오류가 아니라 측정값 자체를 의심해 볼 신호입니다.
알아두면 좋은 점
- 실측 속도향상(S)과 코어 수(p)를 입력으로 받는 진단 지표이지, 이 자체로 프로그램 성능을 예측하지는 않습니다.
- e가 이론 범위(0~1)를 벗어나면 계산은 그대로 보여주되, 측정 방법(워밍업 유무·캐시 효과·잡음)을 먼저 의심해 보시기 바랍니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 6일 · 결과는 참고용 추정치입니다.