Aがnxn行列で、xが次元nのベクトルである場合、x ← A・x?_GEMV
x
y
beta=0
私は特に、Cインターフェイスを使用したCublasの実装に興味があります。
いいえ。Fortranの場合、実装とは何の関係もありません。Fortranでは、引数がIntent(In)でない限り、言語標準に違反するため、サブプログラムの実際の引数にエイリアスを設定することは言語標準に違反します。したがって、インターフェイスにIntent(Out)、Intent(InOut)のダミー引数がある場合、またはIntentがない場合は、サブプログラムを呼び出すときに、対応する実際の引数に常に個別の変数を使用する必要があります。
いいえ。
出力の各要素は、入力ベクトルのすべての要素に依存しますx
例:x
が入力で、y
が出力、A
が行列の場合、のi
th要素はy
次の方法で生成されます。
y_i = A_i1*x_1 + A_i2 * x_2 ... + A_in * x_n
x_i
したがって、上記の結果で上書きすると、x_r
依存する他のいくつかx_i
は適切な入力を受け取らず、不適切な結果を生成します。
編集
これをコメントするつもりでしたが、大きくなりすぎていました。したがって、ここで、上記の推論が並列実装にも当てはまる理由を説明します。
各並列グループ/スレッドが元のデータのローカルコピーを作成しない限り、その場合、元のデータが破棄される可能性がありますが、この推論の行は成り立ちます。
ただし、そうすること(ローカルコピーを作成すること)は、次の場合にのみ実用的で有益です。
ノート: