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

与 arg() 等效的 CUDA 数学库是什么?

如何解决与 arg() 等效的 CUDA 数学库是什么?

C++ 标准库有一个名为 std::arg()函数。它返回其复数参数的相位角(或角分量),以弧度表示。

我需要在 CUDA 内核中调用 std::arg() 之类的东西。 CUDA Math 库或 CUDA Complex Math 库中是否有等效函数

解决方法

总结并稍微扩展评论:

  • CUDA 数学库不直接支持复数值的 arg() 函数。
  • cuComplex.h 非常简陋。正如@njuffa 指出的那样:它只有 CUBLAS 和 CUFFT 需要的东西。
  • 您可以而且应该使用 atan2(y,x)(或 std::atan2(y,x)),其中 y 是虚部,x 是实部。

那么,推力呢? thrust::complex<T> 到底有没有 arg() 方法?

嗯,这就是它的实现方式:

template <typename T>
__host__ __device__
T arg(const complex<T>& z)
{
  // Find `atan2` by ADL.
  using std::atan2;
  return atan2(z.imag(),z.real());
}

(另见 on GitHub。)...所以,atan2() 也有。

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