微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GEMV BLAS和cuBLAS是否缺少“仅共轭”排序选项?

如何解决GEMV BLAS和cuBLAS是否缺少“仅共轭”排序选项?

我对BLAS和cublas接口以及如何进行特定的矩阵向量乘法有疑问。

我有一个正在使用cblas_zgemv的电话,并且给出了正确的结果。

基本上,我有一个复杂的3x3矩阵A一个复杂的向量v(3个分量),所有c阶都按c排序,并且我想乘以埃尔米特共轭(共轭和转置)矩阵与向量的关系 可以通过调用cblas进行此呼叫

std::complex<double> const alpha=1.0;
std::complex<double> const beta=0.0;
cblas_zgemv(CblasRowMajor,CblasConjTrans,3 /*A size*/,3/*A size*/,&alpha,A_pointer,3 /*A stride*/,v_pointer,1,&beta,result_pointer,1 /*result_stride*/)

似乎无法通过BLAS接口实现。 http://www.netlib.org/lapack/explore-html/dc/dc1/group__complex16__blas__level2_gafaeb2abd9fffa7442b938dc384aeaf47.html#gafaeb2abd9fffa7442b938dc384aeaf47

原因似乎是BLAS在BLAS中没有“仅共轭”选项 “ trans”参数。

BLAS(不是cblas)中的等效调用为:

gemv( trans,3,alpha,beta,1);

trans选项仅N(无转置,即以C顺序转置),T(转置,即在C中无转置),{{1} }(C中的共轭转置,仅共轭)。

通过对称性,缺少另一种组合,例如C(“仅共轭”,没有转置,它对应于C序中的共轭转置)。

因此,似乎BLAS中的复杂元素存在不便之处。 最糟糕的是,此限制似乎传播到了与BLAS基本具有相同接口的CUDA BLAS(cuBLAS)。 拨打cuBLAS电话将是我的最终目标。 https://docs.nvidia.com/cuda/cublas/index.html#cublas-lt-t-gt-gemv

与BLAS一样,cuBLAS换位选项只有三个选项(通过枚举):COCUBLAS_OP_NCUBLAS_OP_T

我缺少明显的东西吗?这是一个已知的限制,并且有一个众所周知的解决方法吗?


注:我知道也许可以在尺寸为CUBLAS_OP_H的情况下使用Gemm来实现此特殊情况,但是可以对Gemm进行相同的论点,因为它缺少“仅共轭”选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。