얼마 전에 OpenCL 용 Cloo와 OpenGL for OpenGL 출력을 사용하여 OpenCL (학교 지정)을 사용하여 간단한 보이드 시뮬레이션을 작성했습니다. 필자는 Windows 7에서 OpenCL의 AMD CPU 구현과 친구의 NVidia에서이를 테스트했습니다. 이제 Linux (Ubuntu 12.04)에서 시도해 보았습니다. 나는 amd app sdk와 intel sdk를 설치했다. 그것은 괜찮아요, 참조 CPU를 구현 괜찮아요 그래픽 출력과 함께 일하고있다 컴파일 된. 하지만 OpenCL 버전을 실행하려고하면 약 1 초 동안 실행되고 (OpenGL에서 유효한 출력으로 보이는 것) SIGXCPU에 의해 종료됩니다. Google에 알려진 몇 가지 문제를 시도했지만 아무 것도 발견하지 못했습니다. 그래서 나는 그 신호를 잡아 내고 무시하려했지만, 시도 할 때마다 프로그램이 멈 춥니 다. 다른 신호 (예 : SIGPIPE)를 잡기 위해 모노를 설정하면 okcl (빼기 - opencl)을 실행합니다. 모노에서 , 내가Intel CPU OpenCL in Mono SIGXCPU (우분투)로 죽임
Mono.Unix.Native.Stdlib.SetSignalAction (Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Ignore);
시도 자주 묻는 질문 에 끊지 않는 무언가를 언급 한 바와 같이 Mono.UnixSignal을 시도하지만, 도움이되지 않습니다 중 하나
Mono.Unix.Native.Stdlib.SetSignalAction (Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Error);
심지어
ignore (0);
Mono.Unix.Native.Stdlib.signal(Mono.Unix.Native.Signum.SIGXCPU, new Mono.Unix.Native.SignalHandler (ignore));
와
static void ignore(int signal) {
}
메인에서 다른 모든 것을 제거해도 그 신호를 "만진"후에도 여전히 멈 춥니 다.
하나 더 이상한 것은 : 어딘가에 Application.EnableVisualStyles 후 SIGXCPU와
Mono.Unix.Native.Stdlib.SetSignalAction (Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Default);
킬 응용 프로그램(); 이번에는 OpenCL을 건드리지도 않고 바로 전에 설정했습니다.
내가 모노에서 놓친 것이 있습니까? OpenCl의 한가운데서 내부적으로이 신호를 사용하고 있습니까?
그건 내가 두려워했던거야. 그렇다면 좀 더 간단한 OpenCL을 시도해보아야한다. – jkavalik