CUDA Academy · 강의

피어 간 메모리 접근

NVLink를 통한 GPU 간 직접 복사

레슨 3/413개 단계

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

느린 우회 경로

한 GPU에서 다른 GPU로 데이터를 옮길 때는 보통 먼저 CPU 메모리를 거칩니다. 이 왕복 과정은 느리고 호스트의 대역폭을 낭비합니다.

GPU끼리 직접 통신하기

최신 GPU는 CPU를 완전히 건너뛸 수 있습니다. 피어 간 접근을 사용하면 한 GPU가 직접 연결을 통해 다른 GPU의 메모리를 읽고 쓸 수 있습니다.

NVLink 고속도로

카드 사이의 빠른 연결은 흔히 NVLink이며, 공유 PCIe 버스보다 훨씬 빠릅니다. P2P 전송은 사용 가능한 경우 이 고속도로를 이용합니다.

사용하기 전에 확인하기

모든 GPU 쌍이 P2P를 지원하는 것은 아닙니다. 먼저 cudaDeviceCanAccessPeer를 호출해 한 장치가 다른 장치에 접근할 수 있는지 확인하십시오.

int can;
cudaDeviceCanAccessPeer(&can, 0, 1);

접근 활성화하기

권한은 기본적으로 꺼져 있습니다. GPU 0을 현재 장치로 설정한 상태에서 cudaDeviceEnablePeerAccess를 호출하면 GPU 0이 GPU 1의 메모리에 접근할 수 있습니다.

cudaSetDevice(0);
cudaDeviceEnablePeerAccess(1, 0);

접근은 한 방향입니다

피어 접근을 활성화하면 요청한 방향만 허용됩니다. GPU 1이 GPU 0을 읽게 하려면 장치 1에서 해당 방향도 활성화해야 합니다.

피어 간 복사하기

카드 사이에서 버퍼를 직접 이동하려면 cudaMemcpyPeer를 사용하십시오. 대상 포인터와 장치, 그리고 원본 포인터와 장치를 지정합니다.

cudaMemcpyPeer(dst, 1, src, 0, bytes);

커널에서 다른 GPU 읽기

접근을 활성화하면 GPU 0의 커널이 GPU 1에 있는 포인터를 역참조할 수 있습니다. 하드웨어가 이를 피어 연결을 통해 자동으로 가져옵니다.

P2P를 사용할 수 없을 때

두 카드가 피어 접근을 지원하지 않으면 런타임이 조용히 호스트 메모리를 거치는 방식으로 전환합니다. 복사는 계속 수행되지만 더 느린 PCIe 속도로 이루어집니다.

비동기 피어 복사

피어 전송은 다른 작업과 겹쳐 실행될 수 있습니다. cudaMemcpyPeerAsync를 스트림과 함께 사용하면 커널이 계속 계산하는 동안 복사가 실행됩니다.

cudaMemcpyPeerAsync(dst, 1, src, 0, bytes, stream);

완료되면 끄기

피어 접근은 리소스를 사용하므로 작업이 끝나면 해제하십시오. cudaDeviceDisablePeerAccess는 앞서 연 연결을 해제합니다.

cudaDeviceDisablePeerAccess(1);

빠른 확인

두 GPU 사이에서 피어 간 접근을 사용할 때의 이점을 떠올려 보십시오.

복습

P2P를 사용하면 GPU가 메모리를 직접 공유할 수 있으며, 이상적으로는 NVLink를 통해 이루어집니다. 지원 여부를 확인하고 방향별로 접근을 활성화한 다음 cudaMemcpyPeer를 사용하십시오. 다음에는 NCCL을 사용해 확장하는 방법을 알아봅니다. ✨

무료로 시작

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

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

코스
30
레슨
120

자주 묻는 질문

“피어 간 메모리 접근” 강의는 무료인가요?

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

“피어 간 메모리 접근”에서 뭘 배우나요?

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

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

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

“피어 간 메모리 접근” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 장치 열거 및 선택
  2. GPU 간 작업 분할
  3. 피어 간 메모리 접근
  4. NCCL을 활용한 다중 GPU
← CUDA Academy(으)로 돌아가기