1

したがって、次の合計メモリ有効帯域幅を計算する方法を知りたいです。

cublasSdot(handle, M, devPtrA, 1, devPtrB, 1, &curesult);

その関数はどこへcublas_v2.h

この関数は 0.46 ミリ秒で実行され、ベクトルは10000 * sizeof(float)

私は持ってい((10000 * 4) / 10^9 )/0.00046 = 0.086 GB/sますか?

cublasSdot関数の中身が分からず、必要かどうかも分からないので気になっています。

4

2 に答える 2

3

あなたの場合、2 つの入力ベクトルがあり、出力データのサイズが 4 であるため、入力データのサイズは 10000 * 4 * 2 です。有効な帯域幅は約 0.172 GB/s である必要があります。

基本的cublasSdot()に、計算以外のことは何もしません。プロファイルの結果はcublasSdot()、結果を計算するために 2 つのカーネルを呼び出すことを示しています。CUBLAS_POINTER_MODE_HOSTcublas lib のデフォルト モードであるポインタ モードが の場合、追加の 4 バイトのデバイスからホストへのメモリ転送も呼び出されます。

于 2013-02-19T03:26:32.603 に答える
0

カーネル時間がミリ秒単位の場合、1000 の倍率が必要です。その結果、86 GB/秒になります。

例として、 http: //docs.nvidia.com/cuda/samples/6_Advanced/transpose/doc/MatrixTranspose.pdf でマトリックス転置のために NVIDIA によって提供される例を参照してください。

最後のページにコード全体が表示されます。実効帯域幅の計算方法は 2.*1000*mem_size/(1024*1024*1024)/(ミリ秒単位の時間)

于 2015-05-07T11:58:24.127 に答える