GPU メモリが不足するとどうなりますか?

GPU メモリが不足するとどうなりますか?

たとえば、メモリが 1 GB の GPU があり、アプリケーションに 2 GB のビデオ カード メモリが必要な場合、プログラムを実行するとどうなるでしょうか。アプリケーションは RAM からメモリを取得しますか。ビデオ メモリが不足した場合、どのように対処するのでしょうか。

何らかの理由で、アプリケーションはまだ実行できますが、プロセスがsystem.exeかなりのメモリ (約 800 MB) を消費していることに気づきました。これがビデオ メモリの不足に関係しているのか、他の問題があるのか​​はわかりません。

答え1

最新の GPU はハイブリッド モードで実行され、ドライバー/GPU は PCIe バスを介してシステム RAM からテクスチャ データをストリーミングし、「不足している」RAM を補います。システム RAM は GDDR5 よりも 3 ~ 5 倍遅く、レイテンシもはるかに高いため、「VRAM」が不足すると、アプリケーションの速度が低下し、FPS が大幅に低下します。

ただし、パフォーマンスは PCIe 帯域幅 (6 GB/秒) によって制限されます。

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 を必要とする場合、アプリケーションがそれに対応するように設計されていない限り、システム メモリを増やしてもあまり意味がありません。

ビデオメモリ不足はどのように処理されますか?

これは、アプリケーションの作成者が実装することを選択した実装に完全に依存します。

関連情報