0

私はcudaMallocを使用して、サイズ100の整数の配列を割り当てました。

int_total_bytes=100*sizeof(int), 

サイズ1000のdoubleの配列を割り当てる、つまり合計

db_total_bytes=1000*sizeof(double),... 

GPUで使用されるグローバルメモリの合計が

int_total_bytes+db_total_bytes?

ありがとう!

4

2 に答える 2

1

いくつかの状況では、最適なアドレスアラインメントを実現するために追加されたパディングまたは最小ブロックサイズのために、割り当てられたメモリの実際のサイズが計算されたサイズよりも大きくなる可能性があります。

提供する2つの例では、データサイズは自然な配置サイズおよび境界と互換性があるため、計算されたメモリと実際に使用されたメモリの間に大きな違いは見られないでしょう。ただし、cudaMallocがサブアロケーターを使用する場合(OS(またはデバイス)から大きなブロックを割り当てる場合)、その大きなブロックを小さなブロックに分割してcudaMalloc()要求を満たす場合は、まだいくつかのバリエーションがある可能性があります。

サブアロケーターが含まれている場合、OSは実際のメモリ使用量を計算された使用量よりもかなり大きく表示しますが、アプリが複数の小さな割り当て(すでに割り当てられている大きなブロックから埋めることができます)を行っても、実際の使用量は安定しています。

同様に、ハードウェアの最小割り当てサイズは通常、メモリページサイズと同じです。ハードウェアから割り当てることができるメモリの最小チャンクがたとえば64Kである場合、3kを要求すると、割り当てられているが使用されていない61Kがあります。これは、割り当てるメモリブロックをできるだけ多く使用するために、サブアロケータが役立つ場所です。

于 2012-08-06T22:43:00.240 に答える
0

dthorpeが言ったことに加えて、nvidia-smiコマンドを使用してプロセスのGPUメモリ使用量を確認できます。

于 2012-08-06T23:07:03.983 に答える