gpt4 book ai didi

parallel-processing - CUDA 内核可以调用 cublas 函数吗?

转载 作者:行者123 更新时间:2023-12-02 18:41:15 59 4
gpt4 key购买 nike

我知道这听起来很奇怪,但这是我的场景:

我需要进行矩阵-矩阵乘法 (A(n*k)*B(k*n)),但我只需要评估输出矩阵的对角线元素。我搜索了 cublas 库,没有找到任何可以做到这一点的 2 级或 3 级函数。因此,我决定将 A 的每一行和 B 的每一列分配到 CUDA 线程中。对于每个线程(idx),我需要计算点积“A[idx,:]*B[:,idx]”并将其保存为相应的对角线输出。现在,由于这个点积也需要一些时间,我想知道我是否可以以某种方式在这里调用 cublas 函数(比如 cublasSdot)来实现它。

如果我错过了一些可以直接实现我的目标的 cublas 函数(仅计算矩阵-矩阵乘法的对角线元素),则可以放弃此问题。

最佳答案

是的,可以(直到(且不包括)CUDA 10 版本)。

“CUDA C/C++ 中可用的语言接口(interface)和设备运行时 API 是主机上可用的 CUDA 运行时 API 的子集。CUDA 运行时 API 的语法和语义已保留在设备上,以便于轻松使用可以在主机或设备环境中运行的 API 例程的代码重用。内核还可以直接调用 GPU 库,例如 CUBLAS,而无需返回到 CPU。” Source

Here您可以看到使用 cuda 和 CUBLAS 库函数 cublasSgemv 进行矩阵向量乘法。

但请记住,不再有 device CUBLAS capability in CUDA 10. 。可以引用 Robert_Crovella 的内容:

The current recommendation would be to see if CUTLASS 2 will help (itis mostly focused on GEMM related activities). If not, write your owncode to perform the function, or call cublas from host code.

尽管如此,目前网上有几种矩阵向量乘法的实现,例如1 , 2等等。

关于parallel-processing - CUDA 内核可以调用 cublas 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371082/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com