gpt4 book ai didi

python - PyCUDA:C/C++ 包括?

转载 作者:太空狗 更新时间:2023-10-30 01:35:19 24 4
gpt4 key购买 nike

在任何地方都没有真正提到的东西(至少我可以看到)是哪些库函数公开给内联 CUDA 内核。

具体来说,我正在执行不值得单独卸载到 GPU 的小型/愚蠢的矩阵乘法,但我正在卸载包括此乘法的算法的较大部分。没有人喜欢使用他们自己的 linalg 函数,因为有人总是做得更好。

TLDR 在 PyCUDA 下的内联内核中我可以使用哪些库?

最佳答案

我什么都不知道,我一直认为拥有它会很有用。

对于我通常处理的问题的大小(有限元法中出现的小矩阵和张量),我只是编写C++模板来进行操作。对函数进行模板化允许编译器在编译时知道行程计数,并且它可以展开循环并将结果或中间结果保存在寄存器中,这对于内核吞吐量来说往往非常有效。所以矩阵矩阵乘积被声明为

template < typename Real, unsigned int l, unsigned int m, unsigned int n >
__device__ __host__
void matmul(const Real *a,
const Real *b,
Real *c)
{
for(int i=0; i<l; i++) {
for(int j=0; j<n; j++) {
Real dotprod = Real(0);
for(int k=0; k<m; k++) {
dotprod += a[idx2c(i,k,l)] * b[idx2c(k,j,m)];
}
c[idx2c(i,j,l)] = dotprod;
}
}
}

对于我的内核中突然出现的那种大小(2x2、3x3、4x4、8x8、9x9),执行上述操作并让编译工作似乎与我尝试过的任何其他方法一样好。因为在线程级别 CUDA 是有效的标量,所以没有任何矢量原语或类似的东西可以用来加速这些类型的小操作。

关于python - PyCUDA:C/C++ 包括?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5641299/

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