GPU 프로그래밍

CUDA에서 CPU 측 프로그램이 커널을 실행한 직후의 동작으로 일반적으로 올바른 것은?

  1. ACPU는 커널이 끝날 때까지 반드시 멈춰 아무것도 할 수 없다
  2. B커널은 CPU에서 실행된다
  3. C실행은 비동기이므로 CPU는 커널의 종료를 기다리지 않고 다음 처리로 진행하며, 결과를 사용하기 전에 동기화해야 한다
정답과 해설 보기

정답: C. 실행은 비동기이므로 CPU는 커널의 종료를 기다리지 않고 다음 처리로 진행하며, 결과를 사용하기 전에 동기화해야 한다

커널 실행은 GPU로의 명령열에 처리를 추가할 뿐이며 곧바로 CPU 측에 제어가 돌아옵니다. 그래서 CPU는 GPU가 계산하는 동안 다음 데이터 준비 등을 진행할 수 있습니다. 한편 결과를 CPU에서 읽기 전에는 cudaDeviceSynchronize나 결과 복사(같은 스트림이라면 이전 처리의 완료를 기다림)로 커널의 종료를 확인해야 합니다. 시간을 측정할 때도 동기화하지 않으면 커널 시간을 정확히 측정할 수 없습니다.

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

GPU 프로그래밍의 다른 문제

  1. CPU와 GPU의 설계 사고방식의 차이로 올바른 것은?
  2. GPU에서 빠르게 처리할 수 있는 작업의 특징으로 가장 적절한 것은?
  3. GPU에서 실행하면 효율이 떨어지기 쉬운 처리는?
  4. CUDA 등 GPU 프로그래밍에서 말하는 '커널'에 대한 설명으로 올바른 것은?
  5. CUDA 스레드 계층의 조합으로 올바른 것은? (큰 순서)

이 분야의 비교