5

AMxK行列、Bはサイズのベクトル、KC行列KxNです。以下の行列を計算するには、どのBLAS演算子のセットを使用する必要がありますか?

M = A*diag(B)*C

これを実装する1つの方法は、以下のような3つのforループを使用することです。

for (int i=0; i<M; ++i)
    for (int j=0; j<N; ++j)
        for (int k=0; k<K; ++k)
            M(i,j) = A(i,k)*B(k)*C(k,j);

より良い速度効率を得るために、これをBLASに実装することは実際に価値がありますか?

4

1 に答える 1

3

最初にを計算D = diag(B)*Cし、次に適切なBLAS行列乗算を使用してを計算しA*Dます。

diag(B)*Cの要素のループを使用して実装しB、適切なBLASスカラー乗法ルーチンを呼び出すことができます。

于 2011-02-17T22:18:34.050 に答える