PCIe 전송 병목
복사 작업이 느린 부분이 되는 경우가 많은 이유를 알아봅니다.
PCIe 전송 병목은(는) CoddyKit의 무료 CUDA Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CUDA Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
세상을 잇는 다리
CPU와 GPU는 PCIe 버스로 연결된 서로 다른 보드에 있습니다. 모든 cudaMemcpy는 이 좁은 다리를 통과해야 합니다. 🌉
속도의 불일치
GPU 메모리 대역폭은 초당 테라바이트에 이를 수 있지만, PCIe는 수십 기가바이트만 전달합니다. 이 버스가 느린 연결입니다.
복사가 지배적일 수 있습니다
짧은 커널에서는 전송 시간이 계산 시간보다 훨씬 길 수 있습니다. 데이터가 도착하기를 기다리느라 GPU가 유휴 상태가 됩니다.
복사는 줄이고 계산은 늘리세요
첫 번째 해결책은 간단합니다. 필요한 것만 옮기고, 데이터가 GPU에 올라간 후 바이트당 더 많은 작업을 수행하세요.
데이터를 상주시키세요
배열을 계속 오가지 않게 하세요. 여러 커널이 실행되는 동안 디바이스에 상주시키고 매번 다시 업로드하지 마세요.
작은 복사를 묶으세요
작은 전송을 여러 번 수행하면 각각 고정된 오버헤드가 발생합니다. 이를 하나의 큰 복사로 묶으면 훨씬 효율적입니다. 📦
스트림과 겹쳐 실행하세요
스트림을 사용해 복사와 계산을 겹치면 전송 비용을 숨길 수 있으므로, 데이터가 이동하는 동안 GPU가 작업할 수 있습니다.
페이지 고정 메모리가 도움이 됩니다
페이지 고정 호스트 메모리를 사용하면 더 빠른 DMA와 비동기 복사가 가능합니다. 전송과 커널을 실제로 겹쳐 실행하는 핵심 방법입니다.
추측하지 말고 측정하세요
복사와 커널의 시간을 따로 측정하세요. Nsight 같은 성능 분석기를 사용하면 버스가 정확히 어디에서 병목을 일으키는지 확인할 수 있습니다.
지붕선 관점
전송이 병목이라면 더 빠른 커널을 사용해도 도움이 되지 않습니다. 먼저 데이터 이동을 줄인 다음 계산을 최적화하세요.
이동할 가치가 있을까요?
작은 문제에서는 복사 비용이 속도 향상보다 클 수 있습니다. 계산 시간이 전송 시간보다 확실히 길 때 GPU의 이점이 나타납니다.
빠른 확인
성능 분석 결과 프로그램이 대부분의 시간을 PCIe를 통해 데이터를 이동하는 데 사용하고 있습니다. 무엇이 가장 큰 도움이 될까요?
복습
PCIe가 느린 연결인 이유를 살펴보았습니다. 복사를 줄이고, 데이터를 상주시켜 두며, 전송을 묶고, 스트림과 겹쳐 실행하고, 항상 측정하세요. 🎉
AI 튜터와 함께 C++을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 30
- 레슨
- 120
자주 묻는 질문
“PCIe 전송 병목” 강의는 무료인가요?
네 — “PCIe 전송 병목” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CUDA Academy 강의 전체를 잠금 해제할 수 있습니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“PCIe 전송 병목”에서 뭘 배우나요?
복사 작업이 느린 부분이 되는 경우가 많은 이유를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
CUDA Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 CUDA Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“PCIe 전송 병목” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 CUDA Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 CUDA Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 호스트에서 장치로 전송하기
- 장치에서 호스트로 전송하기
- 복사 방향 열거형
- PCIe 전송 병목