GPU 메모리가 부족하면 어떻게 되나요?

GPU 메모리가 부족하면 어떻게 되나요?

메모리가 1GB인 GPU가 있는데 내 애플리케이션에 2GB의 비디오 카드 메모리가 필요하다고 가정해 보겠습니다. 프로그램을 실행하면 어떻게 되나요? 애플리케이션이 RAM에서 메모리를 가져오나요? 부족한 비디오 메모리를 어떻게 처리합니까?

어떤 이유로든 여전히 응용 프로그램을 실행할 수 있으며 프로세스가 system.exe꽤 많은 메모리(~800MB)를 사용하는 것으로 나타났습니다. 이것이 비디오 메모리 부족과 관련이 있는지 아니면 다른 문제가 있는지는 확실하지 않습니다.

답변1

최신 GPU는 드라이버/GPU가 "누락된" RAM을 보충하기 위해 PCIe 버스를 통해 시스템 RAM의 텍스처 데이터 스트리밍을 시작하는 하이브리드 모드를 실행합니다. 시스템 RAM은 GDDR5보다 3~5배 느리고 대기 시간이 훨씬 길기 때문에 "VRAM"이 부족하면 애플리케이션 속도가 느려지고 FPS가 크게 손실됩니다.

그러나 성능은 PCIe 대역폭(6GB/s)에 의해 제한됩니다.

CUDA 툴킷(v2.2+)으로 프로그래밍할 때 이는 다음과 같이 알려져 있습니다.제로 카피.

어떻게 작동하는지 궁금하신 분들을 위해 코드를 알려드리겠습니다.

float *a_h, *a_map;
cudaGetDeviceProperties(&prop, 0); 
if (!prop.canMapHostMemory) 
    exit(0); 
cudaSetDeviceFlags(cudaDeviceMapHost);
cudaHostAlloc(&a_h, nBytes, cudaHostAllocMapped);
cudaHostGetDevicePointer(&a_map, a_h, 0);
kernel<<<gridSize, blockSize>>>(a_map);

자세한 내용은 다음을 참조하세요.http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#ixzz3nEbijjQZ

답변2

프로그램을 실행하면 어떻게 되나요?

시스템에서 사용 가능한 VRAM을 100% 사용합니다. 시스템 메모리도 사용하도록 구현되었기 때문에 문제 없이 작동하거나 VRAM이 충분하지 않기 때문에 예상치 못한 방식으로 작동할 수 있습니다.

애플리케이션이 RAM에서 메모리를 가져오나요?

애플리케이션에 2GB의 VRAM이 필요한 경우 애플리케이션이 그렇게 하도록 설계되지 않은 한 더 많은 시스템 메모리를 갖는 것은 실제로 도움이 되지 않습니다.

부족한 비디오 메모리를 어떻게 처리합니까?

이는 전적으로 애플리케이션 작성자가 구현하기로 선택한 구현에 달려 있습니다.

관련 정보