如何为CUDAVector方便的取复共轭?
mathematica吧
全部回复
仅看楼主
level 9
"CUDALink使 Wolfram 语言能够在GPU上使用 CUDA 并行计算架构".
我想要将复数的 List 转换为 CUDAVector, 再使用 CUDADot 计算内积.
但是发现有 CUDATranspose 函数但是没有相应的 CUDA 下的 Conjugate 函数, 因此想要计算内积似乎需要先将 CUDAVector 转换回 List, 再正常地 Conjugate, 最后转换回 CUDAVector. 这个做法有些奇怪, 看上去是绕了一大圈远路, 有谁知道为CUDAVector取复共轭有什么简便的方法吗?
Needs["CUDALink`"];
cuvec1 = CUDAVector[Normalize@RandomComplex[{-1 - I, 1 + I}, 10],
"ComplexReal32"];
cuvec2 = Conjugate@cuvec1;
cuvec3 = Conjugate@Normal@Normal@cuvec1 ;
cuvec4 = CUDAVector[Conjugate@Normal@Normal@cuvec1 , "ComplexReal32"];
CUDADot[cuvec4, cuvec1]
2025年12月20日 14点12分 1
吧务
level 15
……这似乎是吧里史上第一个CUDALink相关提问。强烈建议直接上Stackexchange,那边好像还有几个研究过这个的。
2025年12月20日 15点12分 2
直接在CUDALink.m里搜conjugate,只看到一个叫iDot的内部函数里有一条注解:(* TODO: pass in the conjugate option *)嗯……
2025年12月20日 15点12分
吧务
level 15
LZ在Stackexchange也问了,《How can the complex conjugate of a CUDAVector be conveniently obtained?》(编号318320),不过目前还没人答。
2025年12月31日 12点12分 3
1