11得票5回答
cuBLAS的等效cudaGetErrorString是什么?

CUDA运行时库有一个便捷函数cudaGetErrorString(cudaError_t error), 可以将错误枚举值转换为可读字符串。许多人用于CUDA错误处理的CUDA_SAFE_CALL(someCudaFunction())宏中使用了cudaGetErrorString。 我现...

10得票1回答
cublasSetVector()和cudaMemcpy()的区别

我想知道以下两者有没有区别:// cumalloc.c - Create a device on the device HOST float * cudamath_vector(const float * h_vector, const int m) { float *d_vector =...

10得票1回答
如何使用BLAS以最优方式转置矩阵?

我正在进行一些计算,并对不同的BLAS实现的力量和弱点进行分析。然而,我遇到了一个问题。 我正在测试cuBlas,在GPU上进行线性代数似乎是个好主意,但有一个问题。cuBlas实现使用列优先格式,而这不是我最终需要的内容,我想知道是否有一种方法可以使BLAS执行矩阵转置?

8得票3回答
如何在CUDA中以最大性能归一化矩阵列?

如何在CUDA中有效地对矩阵列进行归一化? 我的矩阵是以列为主存储的,通常大小为2000x200。 该操作可以用以下matlab代码表示。 A = rand(2000,200); A = exp(A); A = A./repmat(sum(A,1), [size(A,1) 1]); ...

8得票2回答
cuBLAS同步最佳实践

我在Stack Overflow上读到了两篇文章,分别是cublas内核函数是否会自动与主机同步?和CUDA动态并行; 来自设备的流同步,他们推荐在调用cuBLAS函数后使用一些同步API,例如cudaDeviceSynchronize()。 我不确定使用这样的通用函数是否有意义。 如果按照...

8得票1回答
为什么在稀疏矩阵乘法中,cuSparse比cuBlas慢得多

最近,当我在使用CUDA TOOLKIT 6.5中的cuSparse和cuBLAS进行稀疏矩阵乘法时,我发现在任何情况下,cuSPARSE都比cuBLAS慢得多! 在所有实验中,我使用了cuSparse中的cusparseScsrmm和cuBLAS中的cublasSgemm。在稀疏矩阵中,总...

7得票1回答
将指向数组的指针复制到设备内存并返回(CUDA)

我正在尝试在我的玩具示例中使用函数。 在这个例子中,我首先分配了大小为[][]的2D数组:h_AA, h_BB和大小为[][]的h_CC。 然后我将其复制到设备上,执行了并尝试将数组复制回主机数组。 然而,在设备到主机的复制时,我遇到了一个错误(),我不确定我是否正确地将数组复制到设备中: ...

7得票1回答
使用cublasSgemm实现行主序矩阵乘法

我正在尝试使用cublasSgemm来计算两个非方阵以行主序存储的矩阵的乘积。我知道这个函数有一个参数可以指定是否要转置矩阵(CUBLAS_OP_T),但结果是以列主序存储的,而我需要以行主序存储。 此外,我的代码无法使用参数CUBLAS_OP_T来计算非方阵的乘积,只能计算方阵或非方阵的乘...

7得票2回答
我们应该在不同的调用之间重复使用cublasHandle_t吗?

我正在使用最新版本的CUDA 5.5,新的CUBLAS有一种有状态的味道,每个函数都需要一个,例如: cublasHandle_t handle; cublasCreate_v2(&handle); cublasDgemm_v2(handle, A_trans, B_tr...

7得票2回答
普通的CUDA和CuBLAS有什么区别?

仅出于好奇,CuBLAS是一个基本矩阵计算库。但通常情况下,这些计算也可以轻松地使用普通的Cuda代码编写,而不必使用CuBLAS。那么,CuBLAS库和您自己编写的矩阵计算Cuda程序之间的主要区别是什么?