2013-05-15 6 views
5

Jocl (opencl wrapper) 커널을 실행하면 java3d 출력이 비활성화됩니다. opencl이 끝나면 java3d continus가 작동합니다.Java 애플릿 : jocl 작업 중지 java3d

어떻게하면 Opencl (jocl)과 opengl (java3d)가 함께 작동하게 할 수 있습니까? 나는 "opencl time"을 알려주는 일종의 명령어가 필요하며, 그것이 끝나면 "opengl time now"라고 알려준다.

어떻게 든 opencl이 작동 중일 때 java3D Jpanel이 얼어서 회색으로 변합니다.

나는 추적을 한 결과 java3D가 opencl (jocl)을 괴롭 히고 있다는 것을 알았습니다. jmonkey 엔진 3.0은 그렇게하지 않습니다. 또 다른 시도는 똑같은 일을하는 jmonkey를 보여 줬다. 갑자기 모든 입자 위치가 opencl에 의한 갱신을 멈추고 모든 위치는 0,0,0이됩니다.

각 장치마다 고유 한 컨텍스트, 프로그램, ID 등을 사용합니다.

은하가 부드럽게 렌더링되는 동안 갑자기 모든 입자가 평면에 투영되고 비행기가 선에 투영되고 마지막으로 그 선이 한 지점에 투영 된 후 몇 초 후에 생성됩니다. 버퍼 x [] y [] z []가 모든 원소에 대해 0으로 시작하기 때문에 이들 모두가 있어야합니다.

편집 : gpu 작동 빈도가 낮 으면 오류가 덜 발생합니다. 로컬에서 계산을 수행하면 GPU가 더 빨리 작동하기 때문에 GPU를 까다롭게 만드실 수 있습니까? 아니면 jocl/jmonkey/java3d 사이의 타이밍/액세스 우선 순위 문제입니까? furmark를 포함한 다른 모든 프로그램은 1225MHz (hd7870 호크)에서 안정적이지만 1000MHz (AMD 기본값은 hd7870)보다 안정적이거나 가비지 수집으로 인해 버퍼가 손상되어 불안정 해 보입니다. ??

Aparapi (Java 용 opencl wrapper)는 결코 문제가 없었으며 1200MHz에서 정상적으로 작동했습니다. "드라이버가 작동을 멈추고 복구되었습니다"라는 오류가 있습니다. 촉매 13.3 베타. 조 클로 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 앱 패키지가 손상된 것 같습니다. –

답변