1

私はcudaとcublasの初心者です。

行列 (cublasSetMatrix を使用) の各要素にスカラー値を乗算したいと考えています。

そのために cublasscal() を使用できますか? ドキュメントには、ベクター用であると書かれています。

ありがとう。

4

1 に答える 1

3

はい、行列が連続して格納されていると仮定すると、行列のスケーリング操作にも使用できます。つまり、行列を格納するためにフラット ポインターを使用して通常の cudaMalloc を実行したことになります。その場合、それは「行列」ですが、連続してメモリに保存されるため、ストレージはベクトルと同じように見えます。MxN 行列がある場合は、MxN をベクトルの要素数として渡します。

たとえば、次のようなものです(明確/簡潔にするためにエラーチェックを省略しています):

float *mymatrix, *d_mymatrix;
int size = M*N*sizeof(float);
mymatrix = (float *)malloc(size);
cudaMalloc((void **)&d_mymatrix, size);
... (cublas/handle setup)
cublasSetVector(M*N, sizeof(float), mymatrix, 1, d_mymatrix, 1);
float alpha = 5.0;
cublasSscal(handle, M*N, &alpha, d_mymatrix, 1); 
于 2012-12-27T14:50:05.343 に答える