我目前正在尝试在我的 GPU 上使用 CUBLAS 实现矩阵乘法。
它适用于方阵和某些大小的输入,但对于其他人,最后一行不会返回(并且包含 0,因为这是我实现它的方式)。
我认为这是 的分配或语法问题cublasSgemm,但我找不到它的位置。
注意:如果您不熟悉 CUBLAS:它是column-majored,这就是为什么看起来操作以另一种方式执行的原因。
任何帮助,将不胜感激。
请注意,gpuErrchk和cublasErrchk在这里当然无关紧要。
#include <cuda.h>
#include <cuda_runtime.h>
#include <cublas_v2.h>
#include <vector>
std::vector<float> CUDA_mult_MAT(const std::vector<float> &data_1 , const uint64_t data_1_rows, const uint64_t data_1_columns,
const std::vector<float> &data_2 , const uint64_t data_2_rows, const uint64_t data_2_columns){
cublasHandle_t handle;
cublasErrchk(cublasCreate(&handle));
std::vector<float> result(data_1_rows * data_2_columns); //Vector holding the result of the multiplication
/*----------------------------------------------------------------------------------------------*/
float* GPU_data_1 = NULL;
gpuErrchk(cudaMalloc((void**)&GPU_data_1 , data_1.size()*sizeof(float))); //Allocate memory on the GPU
gpuErrchk(cudaMemcpy(GPU_data_1, …Run Code Online (Sandbox Code Playgroud)