Java小程序:jocl操作停止java3d

Java小程序:jocl操作停止java3d,java,applet,opencl,java-3d,jocl,Java,Applet,Opencl,Java 3d,Jocl,运行Jocl(opencl包装器)内核会禁用java3d输出。opencl完成后,java3d将继续工作 如何让Opencl(jocl)和opengl(java3d)一起工作?我需要一些命令,告诉“它的opencl时间”,当它完成时,告诉“它的opengl时间现在” 不知何故,当opencl工作时,java3D Jpanel冻结并变灰 我做了一些跟踪,发现java3D正在攻击opencl(jocl),而jmonkey engine 3.0并没有这样做。另一次尝试显示jmonkey也在做同样的事情

运行Jocl(opencl包装器)内核会禁用java3d输出。opencl完成后,java3d将继续工作

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

不知何故,当opencl工作时,java3D Jpanel冻结并变灰

我做了一些跟踪,发现java3D正在攻击opencl(jocl),而jmonkey engine 3.0并没有这样做。另一次尝试显示jmonkey也在做同样的事情。突然,opencl停止更新所有粒子的位置,然后所有位置都变为0,0,0

使用唯一的上下文、程序、id。。。对于每个设备

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

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

Aparapi(opencl-wrapper for java)从来都不是问题,在1200MHz下运行良好 甚至出现了“驱动程序停止运行并恢复”错误。催化剂13.3β。Jocl 1.5.1和疲倦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性能损失为代价解决了问题


谢谢。

是的,这可能是一个很难解决的问题。我挣扎了一会儿,直到找到了这根线

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


Java3D可以使用OpenGL或DirectX。不确定这是否有帮助,但值得一试:
-Dj3d.rend=d3d
无法完成该工作。我认为我的驱动程序catalyst或amd应用程序包已损坏。