gpt4 book ai didi

c - 在 OpenCl 内核中使用指针

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:53 27 4
gpt4 key购买 nike

我在 OpenCl 内核中有以下代码:

char* read_data(char* data) {
return data;
}

__kernel void some_function(__global char* source_data, __global char* output_data) {
char *ptr = read_data(source_data); // <--- doesn't work
char *ptr2;
ptr = read_data(ptr2); // <--- works
}

当我为 source_data 调用函数 read_data 时它不起作用,当我使用 clBuildProgram 构建它时出现错误 -11 (CL_BUILD_PROGRAM _FAILURE) 。如果我写

global char *ptr3 = source_data;

直接在内核函数中,它可以工作,但当我删除 global 时停止工作。但是,将 global 添加到 read_data 函数并没有帮助。

我使用的是 OpenCl 1.2,因此它应该允许使用 char*(与 1.0 不同)。

知道如何让它发挥作用吗?

最佳答案

所以,我能够通过将 3 件事全局化来解决它:

  1. 函数read_data
  2. 这个函数的参数
  3. 我分配返回值的变量

以下工作正常:

global char* read_data(global char* data) {
return data;
}

__kernel void some_function(__global char* source_data, __global char* output_data) {
global char *ptr = read_data(source_data);
}

关于c - 在 OpenCl 内核中使用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42868095/

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