2016-08-31 14 views
0

私はでscipy.sparse.bsr_matrix操作のようなものを実装しようとしています。 BSR行列が正方形ではないので、残念ながら私はcusparseでこれを行うことはできません。 float * Carray[]cublas <> gemm別名Carrayパラメータ

例えばため

私はそれが(pointer aliasingのように)エイリアスのポインタを使用するように(正確ワイズと性能的に)大丈夫かしら、CUBLASに新たなんだ配列また

/* given float * out as the real output array */ 
float * Carray[] = { 
    out + 1*stride, out + 2*stride, out + 3*stride, 
    out + 1*stride, out + 2*stride, out + 3*stride, 
    /* and repeat */ 
}; 

、私はかなり確信しているが、私はAarrayまたはBarrayエイリアスを使用する場合、それは正しいだろう、任意のパフォーマンスへの影響はありますか?

ありがとうございます!

答えて

1

一般的に、CUBLASではそのようなエイリアシングに問題はありません。実際、サブ行列を扱うのは通常の方法です。ほとんどのLAPACKスタイルソルバーは、行列のサブブロック演算を行うためにポインタの索引付けやエイリアシングを広範囲に使用します。

少なくともバッチソルバーの場合、この方法でパフォーマンスが低下するとは思えませんが、確かな唯一の方法はベンチマークによるものですが、テストするのは簡単ではありません。

関連する問題