Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cuda 用标量乘矩阵_Cuda_Cublas - Fatal编程技术网

Cuda 用标量乘矩阵

Cuda 用标量乘矩阵,cuda,cublas,Cuda,Cublas,我是cuda和cublas的新手 我想用一个标量值乘以矩阵中的每个元素(我使用了cublasSetMatrix) 我可以用cublascal()来做这个吗?文件上说这是一个向量 谢谢。是的,假设矩阵是连续存储的,您也可以将其用于矩阵缩放操作。这意味着您使用一个普通的cudamaloc和一个平面指针来存储矩阵。在这种情况下,即使它是一个“矩阵”,它也会连续地存储在内存中,因此存储看起来就像一个向量。如果有MxN矩阵,则将MxN作为向量中的元素数传递 例如,类似(为了清晰/简洁,省略错误检查): 是

我是cuda和cublas的新手

我想用一个标量值乘以矩阵中的每个元素(我使用了cublasSetMatrix)

我可以用cublascal()来做这个吗?文件上说这是一个向量


谢谢。

是的,假设矩阵是连续存储的,您也可以将其用于矩阵缩放操作。这意味着您使用一个普通的cudamaloc和一个平面指针来存储矩阵。在这种情况下,即使它是一个“矩阵”,它也会连续地存储在内存中,因此存储看起来就像一个向量。如果有MxN矩阵,则将MxN作为向量中的元素数传递

例如,类似(为了清晰/简洁,省略错误检查):


是的,我用了Cudamaloc和cudaSetMatrix。很酷,看起来它在工作。矩阵何时不连续存储?谢谢。一些矩阵运算可以定义为在较大矩阵的子矩阵上。然后,子矩阵中的相邻元素并不总是连续的,如果要在子矩阵上执行此操作,则不能使用矩阵作为向量的技巧。
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);