メモリ帯域幅についての私の理解ではSI units
、kilo=10^3
,を使用して報告mega=10^6 etc
されます (ただし、メモリ サイズは明らかに 2^n 形式で報告されます)。
CUDA bandwidthTest サンプルはこれを誇示しているようです。以下のサンプルは、SDK サンプルから直接引用したものです。ここで、memSize は配列のサイズを表す整数であり、デフォルトでは 32*2^20 であり、MEMCOPY_ITERATIONS は整数です。
経過時間が 1000 ミリ秒で MEMCOPY_ITERATIONS=1 の場合、結果は 64MB/秒になりますが、MB は 2^20 の形式です。私の仮定は正しいですか? もしそうなら、帯域幅のバイナリ表記は受け入れられますか?
そうではないと思いました。
//calculate bandwidth in MB/s
bandwidthInMBs = 2.0f * (1e3f * memSize * (float)MEMCOPY_ITERATIONS) /
(elapsedTimeInMs * (float)(1 << 20));
編集:誰かがこれを再び検索する可能性がない場合は、SI MB/秒で報告する変更された帯域幅テストがここにあり、CUDA 5.5 SDK から適合され、Visual Studio プロジェクトが含まれています。