1

メモリ帯域幅についての私の理解ではSI unitskilo=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 プロジェクトが含まれています。

4

1 に答える 1

1

bandwidthTest はバイナリ MB/秒で結果を返しますか?

はい。

帯域幅のバイナリ表記は受け入れられますか?

おそらくそうではありません。

(これらは、私が見つけることができた2つの質問だけでした。)

バイナリ メガバイトは SI メガバイトよりも大きいため、SI 単位に従って結果を解釈すると、bandwidthTest サンプル コードは過小報告されているように見えます。サンプル コードとして、その主な目的は教育と指示であり、何らかの定義に準拠することではありません。

あなたはソース コードを持っています。あなたのバージョンのソース コードを、好きな方法でレポートすることができます。

于 2013-08-24T17:04:27.967 に答える