O que acontece quando a memória da GPU não é suficiente?

O que acontece quando a memória da GPU não é suficiente?

Digamos que eu tenha uma GPU com memória de 1GB, mas meu aplicativo requer 2GB de memória de placa de vídeo, o que acontecerá quando eu executar o programa? O aplicativo retira memória da RAM? Como ele lida com a memória de vídeo insuficiente?

Por algum motivo, ainda consigo executar o aplicativo e percebi que o processo system.exeocupa bastante memória (~800 MB), não tenho certeza se isso está relacionado à memória de vídeo insuficiente ou se há outro problema.

Responder1

As GPUs modernas executarão um modo híbrido onde os drivers/GPU começarão a transmitir dados de textura da RAM do sistema através do barramento PCIe para compensar a RAM “ausente”. Como a RAM do sistema é 3-5X mais lenta que a GDDR5 com latência muito maior, ficar sem "VRAM" se traduziria em um aplicativo mais lento e em perda significativa de FPS.

No entanto, o desempenho será limitado pela largura de banda PCIe (6 GB/s).

Ao programar com o kit de ferramentas CUDA (v2.2+), isso é conhecido comocópia zero.

Aqui está o código dele, para quem estiver curioso como funciona.

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);

Leia mais em:http://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#ixzz3nEbijjQZ

Responder2

O que acontecerá quando eu executar o programa?

Ele usará 100% da VRAM disponível em seu sistema. Ele funcionará sem problemas porque foi implementado para usar também a memória do sistema ou porque você não tem VRAM suficiente, ele pode se comportar de maneira inesperada.

O aplicativo retira memória da RAM?

Se o aplicativo exigir 2 GB de VRAM, ter mais memória do sistema não ajudará muito, a menos que o aplicativo tenha sido projetado para isso.

Como ele lida com a memória de vídeo insuficiente?

Isso depende inteiramente da implementação que o autor do aplicativo escolhe implementar.

informação relacionada