c++ - 使用 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()
输出函数没有任何问题。*
只是我和/
运营商有问题。
解决方案
推荐阅读
- ajax - 如何在asp.net mvc中单击删除文件夹中的所有图像
- android - Android P - 在运行时检查系统主题(默认、浅色或深色)
- c++ - 使用 libSox 链接多个效果并读取输出数据的正确方法
- python - dask.delayed 导致没有加速
- javascript - 单击时更改按钮类型上的文本
- r - 通过任务计划程序运行批处理文件时,httpuv 无法启动 oauth 服务器
- android - 构建文件夹中没有 apk 文件夹
- csv - 无法提交要发布到商店的 MS 应用程序
- listview - 在颤振列表视图中检测焦点小部件
- c# - 如何获取datagridview组合框列的选定值?