1

私は次の投稿を読みました

LAPACKを使用した部分行列へのアクセス

FortranからcuBLASルーチンを呼び出すのと同じようなことをしたいと思います。

基本的に、大きな行列を3 x 3ブロックに分割し、ループの各ステップで分割を変更します。現時点では、個々のサブブロックごとにポインターを割り当て/解放し、各ステップでデバイスとの間でマトリックスの関連部分をコピーします。それは私が排除したいと思っている多くのオーバーヘッドを生み出します。それは実行可能ですか?

4

2 に答える 2

4

ホスト ポインターの場合とまったく同じ方法で、ホスト コードでデバイス ポインター演算を実行できます。たとえば、GPU に MxN 行列が格納されている場合:

 float *A_d;
 cudaMalloc((void **)&A_d, size_t(M*N)*sizeof(float));

(x1,y1) から始まる部分行列を操作したい場合A+x1+M*y1 は、行列を引数として期待する任意の CUBLAS 関数に渡します。

于 2013-02-07T12:23:54.950 に答える