CUDA Academy · 강의

CUDA 프로그램의 생애

할당하고, 복사하고, 실행하고, 다시 복사한 뒤 해제합니다.

레슨 4/413개 단계

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

반복되는 리듬

거의 모든 CUDA 프로그램은 동일한 다섯 단계의 흐름을 따릅니다. 이 리듬을 한 번 익히면 어떤 GPU 코드든 읽을 수 있습니다. 🕺

1단계: 할당

먼저 cudaMalloc으로 입력과 출력에 사용할 장치 메모리를 예약해야 합니다. GPU는 호스트 버퍼를 직접 사용할 수 없기 때문입니다.

cudaMalloc(&d_a, bytes);
cudaMalloc(&d_b, bytes);

2단계: 복사해 넣기

그다음 cudaMemcpy로 호스트의 입력 데이터를 장치로 업로드합니다. 이제 GPU에는 작업에 사용할 자체 복사본이 생깁니다.

cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);

3단계: 실행 시작

이제 여러 스레드에서 커널을 실행 시작합니다. 실제 병렬 작업이 장치에서 수행되는 단계입니다. 🚀

myKernel<<<blocks, threads>>>(d_a, d_b, n);

4단계: 다시 복사하기

계산이 끝나면 결과를 장치에서 호스트로 다운로드하여 CPU가 읽고 사용할 수 있게 합니다.

cudaMemcpy(h_b, d_b, bytes, cudaMemcpyDeviceToHost);

5단계: 해제

마지막으로 cudaFree를 사용해 모든 장치 버퍼를 해제합니다. 이 단계를 건너뛰면 다른 작업에서 사용할 수 있는 GPU 메모리가 누수됩니다.

cudaFree(d_a);
cudaFree(d_b);

동기화를 잊지 마세요

실행 시작은 비동기적으로 이루어지므로, GPU가 실제로 작업을 끝냈는지 확인하려면 결과를 읽기 전에 cudaDeviceSynchronize를 호출해야 합니다.

cudaDeviceSynchronize();

복사에는 시간이 듭니다

복사 단계에서는 느린 PCIe 버스를 통과하므로 데이터 전송이 커널 자체보다 실제 병목이 되는 경우가 많습니다.

버퍼 재사용하기

메모리를 반복문이 반복될 때마다 새로 할당하는 것보다 한 번 할당한 뒤 여러 번의 실행 시작에 걸쳐 버퍼를 재사용하는 편이 효율적입니다.

패턴의 대칭성

대칭성에 주목하세요. 모든 cudaMalloc은 cudaFree와 짝을 이루고, 복사해 넣기는 결국 복사해 나오기와 짝을 이룹니다.

한 호흡으로 말하는 수명 주기

주문처럼 말해 보세요. 할당, 복사해 넣기, 실행 시작, 다시 복사하기, 해제. 이 한 줄이 거의 모든 커널 프로그램의 뼈대입니다.

빠른 확인

표준 CUDA 프로그램의 수명 주기를 확인해 보겠습니다.

복습

CUDA의 다섯 단계 수명 주기인 할당, 복사해 넣기, 실행 시작, 다시 복사하기, 해제와 결과를 읽기 전 동기화까지 배웠습니다. 🎉

무료로 시작

AI 튜터와 함께 C++을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
30
레슨
120

자주 묻는 질문

“CUDA 프로그램의 생애” 강의는 무료인가요?

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

“CUDA 프로그램의 생애”에서 뭘 배우나요?

할당하고, 복사하고, 실행하고, 다시 복사한 뒤 해제합니다. 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“CUDA 프로그램의 생애” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. __global__ 함수 지정자
  2. __device__와 __host__ 함수
  3. 분리된 주소 공간
  4. CUDA 프로그램의 생애
← CUDA Academy(으)로 돌아가기