如果我想处理复数并对内核中的这些复数双数进行简单的数学运算(加法和乘法),我应该在程序中包含哪些CUDA标题?
在C++中,我可以将常数与复数double相乘,只要它们都是双精度.然而,在CUDA我得到很多的错误,当我尝试做简单的数学运算到复杂的双重>取值,只要它不与其他复杂的双重>.我错过了什么?
谢谢!
Rob*_*lla 13
要包含的标题是:
#include <cuComplex.h>
Run Code Online (Sandbox Code Playgroud)
在标准的Linux CUDA安装上,它位于:
/usr/local/cuda/include
Run Code Online (Sandbox Code Playgroud)
您需要检查该头文件并使用其中定义的函数来操作设备上的复数.
要将(双)复数乘以实数,我会:
#include <cuComplex.h>
...
double cr = 1;
double ci = 2;
double r = 3;
cuDoubleComplex c = make_cuDoubleComplex(cr, ci);
cuDoubleComplex result = cuCmul(c, make_cuDoubleComplex(r, 0));
Run Code Online (Sandbox Code Playgroud)
编辑:随着最近在CUDA 7 RC中发布的Thrust v1.8,可以在推力代码或 CUDA设备代码中使用thrust :: complex .这使得编写更自然的操作成为可能,例如:
#include <thrust/complex.h>
...
thrust::complex<float> c = thrust::complex<float>(2.0f, 5.0f);
thrust::complex<float> c2 = c*c;
float r = c2.real();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12649 次 |
| 最近记录: |