반응형

암달의 법칙(Amdahl's Law)

  • 암달의 법칙(Amdahl's Law) 은 컴퓨터 과학에서 병렬화의 한계를 설명하는 법칙입니다.
  • 프로그램의 일부를 병렬로 처리할 수 있더라도 전체 성능 향상이 제한적이라는 사실을 나타냅니다.

공식

  • 암달의 법칙은 다음 수식으로 표현됩니다: [ equation ]
    • S : 전체 성능 향상 (Speedup)
    • P : 병렬화가 가능한 작업 비율 (0 ≤ P ≤ 1)
    • 1 - P : 병렬화가 불가능한 작업 비율
    • N : 사용된 병렬 처리 장치(프로세서 또는 코어)의 수

설명

    1. 병렬 처리 가능한 부분(P)이 전체 작업에서 차지하는 비중이 낮을수록 성능 향상이 제한적입니다.
    1. 병렬 프로세서 수(N)가 증가하더라도, 병렬화가 불가능한 부분(1 - P)이 전체 성능 향상의 상한선을 결정합니다.
    1. 병렬화의 효과는 점점 줄어드는 수확 체감의 법칙 과도 유사합니다.

예시

  • 프로그램의 80%가 병렬화 가능(P = 0.8)하고, 나머지 20%는 병렬화가 불가능(P = 0.2)하다고 가정합니다.
  • 프로세서가 4개(N = 4)일 때 성능 향상은 다음과 같습니다: [ equation ]
  • 프로세서가 많아질수록 성능 향상의 증가폭은 감소합니다.

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

+ Recent posts