gpt4 book ai didi

c - OpenCL 内核中通过指针访问变量

转载 作者:行者123 更新时间:2023-11-30 17:47:10 32 4
gpt4 key购买 nike

我正在 OpenCL 中编写光线跟踪程序,并且我的内核中有一个函数 Quadratic,它接受 3 个浮点变量和两个指向浮点值的指针。

功能:

bool Quadratic(float A, float B, float C, float *t0, float *t1) {
float discrim = B * B - ( 4.0 * A * C );
if (discrim <= 0.0) return false;
float rootDiscrim = sqrtf(discrim);
float q;
if (B < 0) q = -0.5f * ( B - rootDiscrim);
else q = -0.5f * ( B + rootDiscrim);
*t0 = q / A;
*t1 = C / q;
float temp;
return true;
}

调用函数:

float t0;
float t1;
if (Quadratic(A, B, C, &t0, &t1)) c[(i*dimy)+j] = t0;
else c[(i*dimy)+j] = 0.0;

产生以下错误:

pyopencl.RuntimeError: clBuildProgram failed: build program failure - 
Build on <pyopencl.Device 'ATI Radeon HD 6750M' on 'Apple' at 0x1021b00>:
Error returned by cvms_element_build_from_source

在尝试找出问题所在时,我创建了以下似乎有效的测试函数:

bool TestFunc(float Y, float *x) {
*x = Y;
return true;
}

float x;
if (TestFunc(50.0, &x)) c[(i*dimy)+j] = x;

据我所知,这两个函数具有相同类型的输入和输出,任何帮助将不胜感激。

最佳答案

事实证明问题出在使用sqrtf。一旦更改为 sqrt ,它就可以完美运行。

关于c - OpenCL 内核中通过指针访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19033574/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com