gpt4 book ai didi

c++ - 使用 C++ 在 Xcode 6.1.1 下编译简单的 OpenCL 示例代码时出现问题

转载 作者:行者123 更新时间:2023-11-30 03:57:26 29 4
gpt4 key购买 nike

我有一个简单的 hello world OpenCL 程序。出于某种原因,当我尝试从代码中引用内核名称时,编译器出错。

在 kernel.cl 我有

kernel void square_kernel(global float *input, global float * output, const unsigned int count)
{
size_t i = get_global_id(0);
if(i<count)
output[i] = input[i] * input[i];
}

在 main.cpp 中我有:

...
#include "kernel.cl.h"
...
int main()
{
...
dispatch_sync(queue, ^{
size_t wgs;
gcl_get_kernel_block_workgroup_info(square_kernel, CL_KERNEL_WORK_GROUP_SIZE, sizeof(wgs), &wgs, NULL);

cl_ndrange range = {
1, // number of dims
{0, 0, 0}, // offset in each dim
{DATA_SIZE, 0, 0}, // global range (total)
{wgs, 0, 0} // local size of each work group #work_groups = DATA_SIZE / wgs
};

// call kernel
square_kernel(&range, (cl_float *)mem_in, (cl_float *)mem_out, DATA_SIZE);

// copy the output
gcl_memcpy(results, mem_out, sizeof(cl_float) * DATA_SIZE);

});
...
}

我在引用它的地方得到“使用未声明的标识符 square_kernel”。 cl 文件必须正在构建,因为它会生成字节代码文件。

现在我突然想到,这可能是因为我从 C++ 文件中引用它。但是,如果这是导致问题的原因,我不确定如何解决该问题。如果可以的话,我不想使用 C。有什么想法吗?

最佳答案

值得检查自动生成的 kernel.cl.h header ,以仔细检查您在这种情况下尝试调用的函数的定义。我刚刚创建了一个新的 Xcode 项目并用它构建了您的 OpenCL 内核,生成的函数定义如下所示:

extern void (^square_kernel_kernel)(const cl_ndrange *ndrange, cl_float* input, cl_float* output, cl_uint count);

注意函数名中额外的_kernel

关于c++ - 使用 C++ 在 Xcode 6.1.1 下编译简单的 OpenCL 示例代码时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977553/

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