C++ 使用OpenCL在GPU上乘以两个复数
我正在尝试编写一个基于OpenCL的代码,使用以下内核函数计算GPU上某些复数的C++ 使用OpenCL在GPU上乘以两个复数,c++,kernel,gpu,opencl,c99,C++,Kernel,Gpu,Opencl,C99,我正在尝试编写一个基于OpenCL的代码,使用以下内核函数计算GPU上某些复数的exp(): #include <complex.h> inline float complex exp(float complex z) { return (exp(__real__(z)) * (cos(__imag__(z)) + sin(__imag__(z))*I )); } __kernel void calculate(__global float * c) {
exp()
:
#include <complex.h>
inline float complex exp(float complex z) {
return (exp(__real__(z)) * (cos(__imag__(z)) + sin(__imag__(z))*I ));
}
__kernel void
calculate(__global float * c)
{
int nIndex = get_global_id(0);
float complex rays = 1.0f + 1.0f * I;
float complex ans = exp(rays);
c[nIndex] = __real__(ans * ans);
}
*
可以很好地处理其他复数,但它会在乘以exp()
函数输出时产生错误。另外,我使用+
和-
运算符,并将exp()
函数输出,没有任何问题。只是我对*
和/
操作符有问题
ASSERTION FAILED: I.hasStructRetAttr() == false