OpenCL API를 통해 실행중인 OpenCL 커널을 종료 할 수있는 방법이 있습니까? 사양에서 아무 것도 찾지 못했습니다.OpenCL 커널 강제 종료
내가 해결할 수있는 유일한 해결책은 1) 커널을 멈추고 자 할 때 호스트가 쓰는 플래그를 주기적으로 검사하거나 2) 커널을 별도의 프로세스로 실행하고 전체 프로세스를 종료하는 것입니다 . 나는 그것들 중 하나가 매우 우아한 해결책이라고 생각하지 않으며 # 1이 확실하게 작동 할 지 확신하지 못합니다.
두 번째 옵션이 너무 좋지 않은지 잘 모르겠습니다. 프로세스를 종료하더라도 커널은 여전히 GPU에서 실행됩니다. 나는 레이 트레이서에서 비슷한 것을하려고 노력했다. 커널과는 별도의 스레드에서 키보드를 검사했습니다. 사용자가 'ESCAPE'를 누르면 프로그램이 즉시 종료되기를 원합니다. 마지막으로 프로그래밍 된 끝 부분을 보았을 때 코어 덤프가 발생했습니다. –
나는 완전히 동의한다, 그들은 모두 나쁜 선택이다. 거기에는 더 나은 표준 옵션이 있기를 바라고 있습니다. – agrippa
플러그를 빼내십시오. 커널을 잘 정의 된 (그리고 짧은 시간) 계산 부분으로 분리하고 호스트 측에 제어 결정을 맡기는 것이 좋습니다. 예를 들어 nvidia 드라이버가 몇 초 안에 끝내지 않으면 gpu가 디스플레이에 연결되면 커널이 죽습니다. –