반응형
- 암달의 법칙(
Amdahl's Law
) 은 컴퓨터 과학에서 병렬화의 한계를 설명하는 법칙입니다. - 프로그램의 일부를 병렬로 처리할 수 있더라도 전체 성능 향상이 제한적이라는 사실을 나타냅니다.
- 암달의 법칙은 다음 수식으로 표현됩니다:
[
]
S
: 전체 성능 향상 (Speedup)P
: 병렬화가 가능한 작업 비율 (0 ≤ P ≤ 1)1 - P
: 병렬화가 불가능한 작업 비율N
: 사용된 병렬 처리 장치(프로세서 또는 코어)의 수
-
- 병렬 처리 가능한 부분(P)이 전체 작업에서 차지하는 비중이 낮을수록 성능 향상이 제한적입니다.
-
- 병렬 프로세서 수(N)가 증가하더라도, 병렬화가 불가능한 부분(1 - P)이 전체 성능 향상의 상한선을 결정합니다.
-
- 병렬화의 효과는 점점 줄어드는 수확 체감의 법칙 과도 유사합니다.
- 프로그램의 80%가 병렬화 가능(P = 0.8)하고, 나머지 20%는 병렬화가 불가능(P = 0.2)하다고 가정합니다.
- 프로세서가 4개(N = 4)일 때 성능 향상은 다음과 같습니다:
[
]
- 프로세서가 많아질수록 성능 향상의 증가폭은 감소합니다.
python
# 암달의 법칙 (Amdahl's Law)
# 암달의 법칙은 프로그램의 병렬화 가능성에 따라 성능 향상의 한계가 존재함을 설명합니다.
# 법칙의 수식은 다음과 같습니다:
# Speedup = 1 / ( (1 - P) + P / N )
# 여기서,
# P: 병렬화 가능한 비율
# N: 병렬 처리를 수행하는 프로세서(코어)의 수
# 예제 코드: 병렬화에 따른 성능 향상을 계산
def amdahls_law(P, N):
"""
암달의 법칙에 따라 성능 향상을 계산합니다.
Parameters:
P (float): 병렬화 가능한 비율 (0 <= P <= 1)
N (int): 병렬 처리에 사용되는 프로세서(코어) 수
Returns:
float: 성능 향상 비율 (Speedup)
"""
if not (0 <= P <= 1):
raise ValueError("P는 0과 1 사이여야 합니다.")
if N <= 0:
raise ValueError("N은 1 이상의 정수여야 합니다.")
return 1 / ((1 - P) + (P / N))
# 예제 입력
P = 0.9 # 병렬화 가능한 비율
N_values = [1, 2, 4, 8, 16, 32] # 코어 수
print("암달의 법칙에 따른 성능 향상:")
print("P =", P)
print("N값에 따른 Speedup:")
for N in N_values:
speedup = amdahls_law(P, N)
print(f"N={N}, Speedup={speedup:.2f}")
- 암달의 법칙은 병렬 처리 시스템 설계 시 병렬화의 한계를 인식하게 해주며, 병렬화보다는 병렬화가 불가능한 부분을 줄이는 것이 중요함을 시사합니다.
728x90
반응형
'Algorithm' 카테고리의 다른 글
4색 정리 (Four Color Theorem) (0) | 2024.12.28 |
---|---|
배낭 문제(Knapsack Problem) (0) | 2024.12.25 |
축 분리 정리 (Separating Axis Theorem, SAT) (0) | 2024.12.21 |
다항 시간 (polynomial time) (0) | 2024.12.20 |
희소 자원의 효율적 배분 (0) | 2024.12.20 |