GPU 프로그래밍

단일 GPU를 사용하는 프로그램에서 CPU 측 메모리와 GPU 측 메모리에 대해 일반적으로 올바른 것은?

  1. A별개의 메모리이므로 계산 전에 데이터를 GPU로 복사하고, 끝나면 결과를 CPU로 복사해 되돌린다
  2. B같은 메모리이므로 복사는 전혀 필요 없다
  3. CGPU는 계산 결과를 저장할 수 없다
정답과 해설 보기

정답: A. 별개의 메모리이므로 계산 전에 데이터를 GPU로 복사하고, 끝나면 결과를 CPU로 복사해 되돌린다

단일 GPU는 카드 위에 GDDR이나 HBM 전용 메모리를 가지며, CPU 메모리와는 PCI Express 등으로 연결되어 있습니다. 따라서 CPU 메모리에 있는 데이터를 GPU 메모리로 복사한 뒤 커널을 실행하고, 끝나면 결과를 CPU 메모리로 복사해 되돌리는 것이 기본 흐름입니다. 이 복사 시간이 전체 성능을 좌우하는 경우가 많습니다.

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

GPU 프로그래밍의 다른 문제

  1. 배열 요소를 한 번만 더하는 가벼운 처리를 위해 데이터를 GPU로 보내면 CPU에서 계산하는 것보다 느려지는 경우가 있다. 주된 이유는?
  2. CPU 메모리를 핀 고정(페이지 락)한 뒤 GPU로 전송하면 빨라지는 이유로 올바른 것은?
  3. CUDA 스트림을 여러 개 사용하는 주된 목적은?
  4. 매우 작은 커널을 수천 번 연속으로 실행하는 프로그램이 느릴 때, 개선 방법으로 가장 적절한 것은?
  5. CUDA 유니파이드 메모리(통합 메모리)에 대한 설명으로 올바른 것은?

이 분야의 비교