0Pricing
CUDA Academy · 강의

장치에서 호스트로 전송하기

결과를 CPU로 다운로드합니다.

장치에서 호스트로 전송하기은(는) CoddyKit의 무료 CUDA Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CUDA Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

결과를 가져오기

방금 커널이 디바이스 버퍼에 결과를 채웠지만 CPU는 GPU 메모리를 직접 읽을 수 없습니다. 결과를 다시 다운로드해야 합니다. 📥

다운로드 방향

데이터를 가져오려면 cudaMemcpyDeviceToHost를 사용합니다. 이제 소스는 디바이스 메모리이고 대상은 호스트 RAM입니다.

cudaMemcpy(h_c, d_c, bytes, cudaMemcpyDeviceToHost);

대상은 여전히 먼저 옵니다

규칙은 변하지 않습니다. 대상 인자가 먼저 오고 소스가 두 번째입니다. 다운로드할 때는 호스트 포인터가 먼저 옵니다.

cudaMemcpy(h_dst, d_src, bytes, cudaMemcpyDeviceToHost);

호스트 버퍼가 있어야 합니다

대상을 위해 실제 CPU 메모리를 준비해야 합니다. 복사하기 전에 malloc 또는 new로 호스트 저장 공간을 할당하세요.

float* h_c = (float*)malloc(bytes);

커널이 끝날 때까지 기다리세요

차단 방식의 cudaMemcpy는 기본 스트림에서 이전 작업이 끝날 때까지 기다리므로, 결과를 읽기 전에 커널이 완료됩니다.

myKernel<<<blocks, threads>>>(d_c, n);
cudaMemcpy(h_c, d_c, bytes, cudaMemcpyDeviceToHost);

바이트 수는 동일하게

업로드하고 계산한 것과 정확히 같은 수의 바이트를 다운로드하세요. 크기가 맞지 않으면 결과가 잘리거나 의미 없는 값이 됩니다.

size_t bytes = n * sizeof(float);

이제 읽을 수 있습니다

복사가 반환되면 값은 일반 CPU 메모리에 저장됩니다. 어떤 호스트 배열처럼 값을 출력하거나 확인하거나 저장할 수 있습니다.

printf("%f\n", h_c[0]);

왕복 과정

GPU 작업 전체는 왕복 과정입니다. 입력을 업로드하고, 커널을 실행한 다음, 출력을 다운로드합니다. 각 단계에서 cudaMemcpy를 사용합니다.

신뢰하기 전에 검증하세요

다운로드한 후 GPU 결과를 간단한 CPU 기준 결과와 비교하세요. 검증을 수행하면 버그가 퍼지기 전에 발견할 수 있습니다. ✅

할당한 것은 해제하세요

결과를 가져온 후 양쪽을 모두 해제하세요. 디바이스 버퍼에는 cudaFree를 사용하고 호스트 버퍼도 해제해 메모리 누수를 방지합니다.

cudaFree(d_c);
free(h_c);

다운로드에도 시간이 듭니다

돌아오는 길에도 같은 느린 버스를 통과하므로, 호스트에 실제로 필요한 결과만 복사하세요.

빠른 확인

커널이 디바이스 버퍼 d_c에 결과를 썼습니다. CPU에서 결과를 어떻게 읽을까요?

복습

cudaMemcpyDeviceToHost를 사용해 결과를 가져오는 방법을 배웠습니다. 호스트 저장 공간을 할당하고, 호스트 포인터를 먼저 지정하며, 커널이 끝날 때까지 기다린 다음 검증하고 해제합니다. 🎉

자주 묻는 질문

“장치에서 호스트로 전송하기” 강의는 무료인가요?

네 — “장치에서 호스트로 전송하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CUDA Academy 강의 전체를 잠금 해제할 수 있습니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“장치에서 호스트로 전송하기”에서 뭘 배우나요?

결과를 CPU로 다운로드합니다. 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

CUDA Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 CUDA Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“장치에서 호스트로 전송하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 CUDA Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 CUDA Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 호스트에서 장치로 전송하기
  2. 장치에서 호스트로 전송하기
  3. 복사 방향 열거형
  4. PCIe 전송 병목
← CUDA Academy(으)로 돌아가기