2013-05-15 16 views
5

Jocl(opencl wrapper)カーネルが実行されているため、java3d出力が無効になります。 openclが終了すると、java3d continusが動作します。Javaアプレット:jocl操作の停止java3d

どのように私は、OpenCLの(JOCL)およびOpenGL(Java3Dのは)一緒に仕事させることができますか?私は "opencl time"を伝えるコマンドを必要とし、終了すると "opengl time now"に伝えます。

はどういうわけか、Java3DのJPanelのは、フリーズやOpenCLのが動作しているとき、グレー表示になります。

私は3.0 doesntのはそれを行うjmonkeyエンジン、いくつかのトレースを行なったし、Java3Dのは、OpenCLの(JOCLを)harrassingしていることが分かりました。別の試みは、jmonkeyが同じことをしていることを示しました。突然、すべてのパーティクルの位置がopenclによって更新を停止し、すべての位置が0,0,0になります。各デバイスのために...、ユニークなコンテキスト、プログラム、IDを使用して

ギャラクシーがスムーズにレンダリングされている間に、飛行機がラインに投影されてから数秒後に作成されなかった飛行機にすべてのパーティクルが投影され、最終的にそのラインがスポットに投影されます。これらのすべては、バッファx [] y [] z []の開始がすべての要素に対してゼロになるためでなければなりません。

編集:下のGPU動作周波数は誤差がそれほど頻繁にします。地方での計算をより速くするため、これはGPUを単調に押し上げることができますか?または、これはjocl/jmonkey/java3dのタイミング/アクセスの優先順位の問題ですか? furmarkを含む他のプログラムはすべて1225MHz(hd7870 hawk)で安定していますが、1000MHz(AMDデフォルトのhd7870)で安定している可能性が高く、バッファがガベージコレクションによって破壊されると不安定に見えますか?

Aparapi(java用のopenclラッパー)は問題ではなく、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パフォーマンスの損失を交換

おかげで問題を解決します。

+0

Java3Dのは、OpenGLやDirectXのいずれかを使用することができます。これが助けになるかどうかは分かりませんが、試してみる価値はあります: '-Dj3d.rend = d3d' – whiskeyspider

+0

その作業を取得できませんでした。私は私のドライバー触媒やamdアプリケーションパッケージが破損していると思う。 –

答えて

関連する問題