首页 > 解决方案 > 使用 OpenCL 在 GPU 上将两个复数相乘

问题描述

我正在尝试编写一个基于 OpenCL 的代码来exp()使用以下内核函数在 GPU 上计算一些复数:

#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);
}

但我收到以下错误:

ASSERTION FAILED: I.hasStructRetAttr() == false

*适用于其他复数,但它会产生乘法exp()输出的错误。我也使用+-操作符exp()输出函数没有任何问题。*只是我和/运营商有问题。

标签: c++kernelgpuopenclc99

解决方案


推荐阅读