CUDA Academy · 강의

레지스터와 공유 메모리 한계

리소스가 상주 블록 수를 제한하는 방식을 알아봅니다.

레슨 2/413개 단계

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

자원 예산

각 SM에는 고정된 양의 레지스터와 공유 메모리가 있습니다. 모든 상주 블록은 이 저장 공간에서 자신의 몫을 확보해야 합니다.

스레드당 레지스터

커널은 일정 수의 스레드당 레지스터를 사용합니다. 여기에 블록당 스레드 수를 곱하면 블록 하나에 필요한 레지스터 비용을 알 수 있습니다.

레지스터가 블록 수를 제한합니다

각 스레드에 많은 레지스터가 필요하면 들어갈 수 있는 스레드 수가 줄어들고, 따라서 상주 상태로 유지되는 블록 수도 줄어듭니다. 레지스터를 많이 사용하는 커널은 점유율이 낮아집니다.

레지스터 사용량 확인

이 플래그를 사용하여 컴파일하면 nvcc가 스레드당 레지스터 수를 출력하므로 커널이 레지스터를 과도하게 사용하는지 확인할 수 있습니다.

nvcc -Xptxas -v vecadd.cu

레지스터 수 제한

실행 제한을 사용하여 상한을 강제로 지정하면 컴파일러가 사용하는 레지스터 수를 줄이고 더 많은 워프를 상주 상태로 유지하게 할 수 있습니다.

__launch_bounds__(256, 4) __global__ void k() {}

블록당 공유 메모리

각 블록은 공유 메모리를 요청할 수 있습니다. SM에는 공유 메모리 풀이 허용하는 수만큼의 블록만 들어가며, 보통 48~100KB입니다.

공유 메모리가 블록 수를 제한합니다

큰 __shared__ 타일을 요청하면 SM당 한두 개의 블록만 들어갑니다. 큰 타일은 데이터 재사용을 얻는 대신 점유율을 낮춥니다.

가장 엄격한 제한이 적용됩니다

SM은 레지스터, 공유 메모리, 워프 한도를 기준으로 허용되는 블록 수를 계산합니다. 이 값들 중 가장 작은 값이 점유율을 결정합니다.

레지스터 스필링

스레드에 허용된 것보다 많은 레지스터가 필요하면 초과분이 느린 로컬 메모리로 스필됩니다. 스필은 낮은 점유율보다 더 큰 성능 저하를 일으킬 수 있습니다.

균형 조정

레지스터나 공유 메모리를 줄이면 점유율이 높아지지만, 지나치게 줄이면 스필이 발생합니다. 최적 지점은 균형을 이루는 곳입니다.

추측하지 말고 측정하기

튜닝하기 전에 항상 컴파일러가 보고하는 실제 레지스터 및 공유 메모리 사용량을 확인하십시오. 추측하면 대개 잘못된 조정 항목을 선택하게 됩니다.

빠른 확인

SM이 상주 상태로 유지할 수 있는 블록 수를 어떻게 결정하는지 떠올려 보십시오.

복습

레지스터와 공유 메모리는 SM의 고정된 예산이며, 가장 엄격한 제한이 점유율의 상한을 결정한다는 것을 확인했습니다. 스필에 주의하십시오. 🧮

무료로 시작

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. 점유율 계산기 API
  4. 점유율이 전부가 아닌 이유
← CUDA Academy(으)로 돌아가기