GPU 프로그래밍

GPU에서 두 개의 큰 배열의 요소별 덧셈(c[i] = a[i] + b[i])을 수행할 때, 성능을 주로 결정하는 것은?

  1. A메모리 대역폭(요소당 12바이트를 읽고 쓰는 데 비해 계산은 덧셈 1회뿐이므로)
  2. B연산기의 수
  3. C클럭 주파수뿐
정답과 해설 보기

정답: A. 메모리 대역폭(요소당 12바이트를 읽고 쓰는 데 비해 계산은 덧셈 1회뿐이므로)

float 덧셈 1회당 a와 b를 4바이트씩 읽고 c에 4바이트를 쓰므로, 12바이트의 전송으로 1회 계산을 합니다. GPU는 초당 수십 조 회 계산할 수 있지만 메모리 대역폭은 수 TB/s 정도이므로, 이 처리는 대역폭으로 상한이 정해집니다. 이러한 처리를 빠르게 하려면 데이터 읽기·쓰기 횟수를 줄이거나, 여러 처리를 융합하여 중간 결과를 메모리에 쓰지 않는 등이 효과적입니다.

이 분야 연습하기 분야로 돌아가기

GPU 프로그래밍의 다른 문제

  1. 가정용 게임 GPU 대부분에서 배정밀도(FP64) 연산 성능이 단정밀도(FP32)보다 훨씬 낮은(수십 분의 일 등) 이유로 가장 적절한 것은?
  2. 최근 GPU에 탑재된 텐서 코어(행렬 연산 유닛)의 특징으로 올바른 것은?
  3. GPU의 혼합 정밀도 계산에서 곱셈은 FP16 등 낮은 정밀도로, 합산(누적)은 FP32로 하는 경우가 많은 이유로 올바른 것은?
  4. GPU에서 같은 데이터의 부동소수점수 총합을 구했더니, 실행할 때마다 결과의 마지막 자릿수가 미세하게 달랐다. 가장 가능성이 높은 원인은?
  5. CUDA에서 블록당 스레드 수를 정할 때의 일반적인 기준으로 올바른 것은?

이 분야의 비교