web-dev-qa-db-ja.com

GPUメモリが十分でない場合はどうなりますか?

1GBのメモリを搭載したGPUを使用しているが、アプリケーションに2GBのビデオカードメモリが必要であるとしましょう。プログラムを実行するとどうなりますか?アプリケーションはRAMからメモリを取得しますか?不十分なビデオメモリをどのように処理しますか?

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

2
rcs

最新のGPUはハイブリッドモードを実行し、ドライバー/ GPUがPCIeバスを介してシステムRAMからテクスチャデータのストリーミングを開始し、「欠落している」RAMを補います。システムRAMはGDDR5よりも3〜5倍遅く、待ち時間がはるかに長くなります。「VRAM」が不足すると、アプリケーションが遅くなり、FPSが大幅に失われます。

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

CUDAツールキット(v2.2 +)でプログラミングする場合、これはzero-copyとして知られています。

これがその仕組みに興味がある人のためのコードです。

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

6
DrZoo

プログラムを実行するとどうなりますか?

システムで使用可能なVRAMを100%使用します。システムメモリも使用するように実装されているため、または十分なVRAMがないため、予期しない動作をする可能性があるため、問題なく動作します。

アプリケーションはRAMからメモリを取得しますか?

アプリケーションが2GBのVRAMを必要とする場合、アプリケーションがそうするように設計されていない限り、システムメモリを増やしても実際には役に立ちません。

不十分なビデオメモリをどのように処理しますか?

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

1
Ramhound