CUDA Academy · 강의

필요할 때 페이지 이동하기

페이지 오류가 데이터를 사용되는 위치로 이동시킵니다.

레슨 2/413개 단계

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

데이터는 어디에 있을까요

관리 메모리에서 데이터에는 고정된 위치가 없습니다. 데이터는 요청 시 페이지 마이그레이션을 통해 CPU와 GPU 사이를 조용히 이동하며, 사용되는 곳을 따라갑니다.

메모리는 페이지 단위입니다

시스템은 메모리를 페이지라는 고정 크기의 청크로 관리하며, 크기는 보통 4 KB 또는 64 KB입니다. 마이그레이션은 바이트 단위가 아니라 한 번에 한 페이지씩 일어납니다.

페이지 폴트가 이를 시작합니다

GPU가 CPU에 있는 페이지에 접근하면 페이지 폴트가 발생합니다. 드라이버는 잠시 멈춘 뒤 해당 페이지를 복사하고 스레드를 계속 실행합니다.

데이터는 접근하는 쪽을 따라갑니다

규칙은 간단합니다. 데이터는 사용하는 쪽으로 이동합니다. CPU에서 쓰면 페이지가 CPU에 있고, 커널에서 읽으면 GPU로 이동합니다.

첫 접근이 느립니다

새로운 쪽에서 처음 접근할 때 비용이 발생합니다. 페이지가 도착한 뒤에는 같은 장치에서 이어지는 읽기가 빠르게 로컬에서 처리됩니다.

핑퐁은 성능을 해칩니다

CPU와 GPU가 같은 페이지에 번갈아 계속 접근하면 페이지가 양쪽 사이를 오갑니다. 이러한 핑퐁 마이그레이션은 처리량을 조용히 크게 떨어뜨릴 수 있습니다.

폴트는 누적됩니다

각 폴트에는 설정 비용이 따르므로 작은 폴트가 수천 개 발생하면 비용이 커집니다. 흩어진 페이지를 하나씩 폴트로 처리하는 것보다 대량으로 마이그레이션하는 편이 효율적입니다.

지역성은 여전히 중요합니다

자동 마이그레이션을 사용하더라도 좋은 접근 패턴이 더 나은 결과를 냅니다. 스레드가 가까운 주소를 읽으면 페이지 전체를 효율적으로 가져오므로 폴트가 흩어지지 않습니다.

초과 할당이 허용됩니다

마이그레이션을 사용하면 GPU가 보유한 양보다 더 많이 할당할 수 있습니다. 필요한 페이지는 들어오고 기존 페이지는 축출되므로, 거대한 데이터 세트도 느리지만 실행할 수 있습니다.

폴트를 확인할 수 있습니다

Nsight Systems 같은 프로파일러는 마이그레이션 트래픽과 폴트 횟수를 보여 줍니다. 많은 마이그레이션을 발견하면 다음에 어디에 힌트를 추가해야 할지 정확히 알 수 있습니다.

편리하지만 주의할 점이 있습니다

요청 시 마이그레이션은 놀라울 정도로 자동으로 처리되지만 폴트에 비용이 없는 것은 아닙니다. 그 비용을 알아야 프리패치와 조언으로 문제를 해결할 수 있습니다.

빠른 확인

마이그레이션을 시작하는 원인이 무엇인지 알고 있는지 확인해 보겠습니다.

복습: 요청 시 마이그레이션

관리 페이지는 폴트가 발생하면 페이지를 사용하는 쪽으로 이동한다는 것을 살펴보았습니다. 첫 접근은 느리고, 핑퐁은 성능을 해치며, 대량 이동이 더 효율적입니다. 계속 진행해 보겠습니다! 🚀

무료로 시작

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

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

코스
30
레슨
120

자주 묻는 질문

“필요할 때 페이지 이동하기” 강의는 무료인가요?

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

“필요할 때 페이지 이동하기”에서 뭘 배우나요?

페이지 오류가 데이터를 사용되는 위치로 이동시킵니다. 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“필요할 때 페이지 이동하기” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 하나의 포인터, 양쪽에서 사용하기
  2. 필요할 때 페이지 이동하기
  3. cudaMemPrefetchAsync로 미리 가져오기
  4. cudaMemAdvise로 힌트 제공하기
← CUDA Academy(으)로 돌아가기