小编Ere*_*rel的帖子

CUBLAS 矩阵乘法与行主数据无转置

我目前正在尝试在我的 GPU 上使用 CUBLAS 实现矩阵乘法。

它适用于方阵和某些大小的输入,但对于其他人,最后一行不会返回(并且包含 0,因为这是我实现它的方式)。

我认为这是 的分配或语法问题cublasSgemm,但我找不到它的位置。

注意:如果您不熟悉 CUBLAS:它是column-majored,这就是为什么看起来操作以另一种方式执行的原因。

任何帮助,将不胜感激。


编码:

请注意,gpuErrchkcublasErrchk在这里当然无关紧要。

#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)

c++ cuda cublas

1
推荐指数
1
解决办法
133
查看次数

标签 统计

c++ ×1

cublas ×1

cuda ×1