java - java openCL 指针不能指向空对象

标签 java pointers opencl jocl

我正在使用一个内核,该内核将图像作为 java 和 JOCL 的参数

input ="12.jpg";
image = createBufferedImage(input);
image = createBufferedImage(input);
DataBufferInt dataBufferSrc = (DataBufferInt)image.getRaster().getDataBuffer();
int dataSrc[] = dataBufferSrc.getData();
inputImageMem = clCreateBuffer(context, CL_MEM_READ_ONLY| CL_MEM_USE_HOST_PTR,
            dataSrc.length * Sizeof.cl_uint, Pointer.to(dataSrc), null);
clSetKernelArg(kernel, 0, Sizeof.cl_mem, Pointer.to(inputImageMem));

编译时出现错误:

Pointer may not point to null objects

它在行中:

clSetKernelArg(kernel, 0, Sizeof.cl_mem, Pointer.to(inputImageMem));

可能的问题是什么?我该如何修复它?

PS:createBufferedImage 是取自 JOCL 示例的函数 http://jocl.org/

最佳答案

来自 openCL clCreateBuffer documentation :

Returns a valid non-zero buffer object and errcode_ret is set to CL_SUCCESS if the buffer object is created successfully. Otherwise, it returns a NULL value with one of the following error values returned in errcode_ret...

clCreateBuffer 函数的最后一个参数是一个 int 指针(您希望返回错误代码的位置)。您当前已将其设置为 null。我的猜测是 clCreateBuffer 中出现了某些问题。我建议检查 errcode_ret 的值,它将包含一个错误代码,可帮助您解决问题。

关于java - java openCL 指针不能指向空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968216/

相关文章:

c++ - 尽管设置了路径,但 g++/Eclipse 找不到包含文件

java - Java 如何从一个方法返回多个值

c - 尝试在 C 中释放字符数组的数组会导致双重释放或损坏

c - 将动态分配的二维数组分配给结构中的双指针时出现段错误

c++ - 理解指针转换

cuda - 内核模式 GPGPU 使用

c++ - 在 OpenCL 中获得最佳的本地/全局工作组规模?

java - 如何使用java轮询数据库并跟踪最新记录?

JavaMail 无法从 docker 容器发送电子邮件

java - Spring 容器如何引用我们作为参数传递给方法的接口(interface)或类类型