14

高性能 GPU 操作を使用して、次のコードの M を N 倍し、結果を P に配置できる CUBLAS の非常に基本的な行列乗算の例を探しています。

float M[500][500], N[500][500], P[500][500];
for(int i = 0; i < Width; i++){
    for(int j = 0; j < Width; j++)
    {
        M[i][j] = 500;
        N[i][j] = 500;
        P[i][j] = 0;
    }
}

これまでのところ、CUBLAS を使用して任意の種類の行列乗算を行うために見つけたほとんどのコードは (一見?) 過度に複雑です。

GPU での行列乗算と CPU での行列乗算のパフォーマンスを学生が比較できる基本的なラボを設計しようとしています。おそらく GPU でのパフォーマンスが向上しています。

4

2 に答える 2

8

SDK には、CUBLAS の使用方法を示す matrixMul が含まれています。より簡単な例については、CUBLAS マニュアルのセクション 1.3 を参照してください。

matrixMul サンプルはカスタム カーネルも示していますが、これはもちろん CUBLAS ほどには機能しません。

于 2011-10-04T15:49:22.250 に答える
1

CUBLAS は、GPU が CPU よりも優れていることを示すために必要ではありませんが、CUBLAS はおそらく CPU よりも優れているでしょう。ここで説明および実証されているように、十分な大きさのデータセットが与えられた場合、多くの単純な CUDA 実装 (行列乗算を含む) が CPU よりも優れているようです。

CUDA を使用して GPU が CPU より優れていることを示す最も単純な例

于 2011-10-08T15:29:17.350 に答える