gpt4 book ai didi

Java 小程序 : jocl operations stop java3d

转载 作者:搜寻专家 更新时间:2023-11-01 00:51:06 25 4
gpt4 key购买 nike

Jocl(opencl wrapper) 内核运行使 java3d 输出被禁用。当 opencl 完成时,java3d 继续工作。

如何让 Opencl(jocl) 和 opengl(java3d) 一起工作?我需要某种命令来告诉“它的 opencl 时间”,当它完成时它告诉“它现在的 opengl 时间”。

当 opencl 工作时,java3D Jpanel 不知何故卡住并变成灰色。

我做了一些跟踪,发现 java3D 正在骚扰 opencl(jocl),jmonkey 引擎 3.0 不这样做。另一次尝试显示 jmonkey 做同样的事情。突然,所有粒子位置停止由 opencl 更新,然后所有位置变为 0,0,0。

为每台设备使用唯一的上下文、程序、id...。

错误看起来是这样的:当星系被平滑地渲染时,突然所有粒子都被转换到一个我没有创建的平面上,然后在平面被转换到一条线上几秒钟后,最后这条线被转换到一个点上。所有这些都必须是因为缓冲区 x[] y[] z[] 开始对所有元素都为零。

编辑:较低的 gpu 运行频率会降低错误发生的频率。这会不会比 furmark 更努力地插入 gpu,因为在本地进行计算可以更快地工作?或者这是 jocl/jmonkey/java3d 之间的时间/访问优先级问题?包括 furmark 在内的所有其他程序都稳定在 1225MHz(hd7870 hawk),但这可能在仅 1000MHz(AMD 默认为 hd7870)时更稳定,或者看起来不稳定,因为缓冲区被垃圾收集故障破坏了??

Aparapi(java 的 opencl 包装器)从来都不是问题,并且在 1200MHz 下运行良好甚至出现“驱动程序停止运行并恢复”错误。催化剂 13.3 测试版。 Jocl 1.5.1 和 tired 1.5.2。 Catalyst 13.4 whql 执行相同的操作。

将 System.gc();就在内核重复循环立即产生错误之前,一定有垃圾收集的事情我错过了

通过一些跟踪:clCreateBuffer 方法在垃圾回收方面存在问题

编辑:解决了问题。当使用 CL.CL_MEM_USE_HOST_PTR 属性时,在主线程中由 clCreateBuffer 创建的缓冲区对于子线程来说似乎是垃圾(待收集)。 CL.CL_MEM_COPY_HOST_PTR 以%1-%2的性能损失换取问题的解决

谢谢。

最佳答案

是的,这可能是一个很难追踪的问题。在找到这个线程之前,我为此苦苦挣扎了一段时间。

http://www.khronos.org/message_boards/showthread.php/6184-Creating-buffers

当然可以在这里找到讨论这个标志使用的文档

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/clCreateBuffer.html

关于Java 小程序 : jocl operations stop java3d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16573988/

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