2013-04-24 3 views
4

저는 첫 번째 OpenCL 커널을 NVIDIA 카드가있는 Ubuntu 컴퓨터에 작성하고 있습니다. 가끔은 응용 프로그램이 전체 컴퓨터를 완전히 정지시킵니다. 마우스가 움직이지 않으며 다시 부팅하는 유일한 방법은 전원 단추를 누르는 것입니다.리눅스에서 OpenCL freeze를 복구하십시오.

내가 얼어있는 이유는 실수로 전역 읽기 전용 플로트 배열의 마지막 인덱스를 읽었다는 것입니다. 이것이 내가 자주 할 의도는 아니지만 앞으로도 계속 발생할 수 있습니다.

내 질문은 - 에서 컴퓨터를 막을 수있는 방법이 있습니까?이 경우 다시이 발생하면 종료 하시겠습니까? 예를 들어, Windows는 잘못된 GLSL 커널을 종료하고 그래픽 드라이버를 다시 시작하여 복구 할 수 있음을 알고 있습니다. 비슷한 것이 여기 있습니까?

+2

좋은 질문입니다. 내 솔루션은 항상 CPU에서 내 커널을 실행하는 것입니다. 그들은 결코 전체 시스템을 파괴하지 않습니다. 커널이 CPU에서 안정되면 GPU에서 테스트합니다. 또한 CPU에서 printf를 사용하면 디버깅에 매우 유용합니다. –

+0

Windows는 TDR (Timeout Detection and Recovery)을 사용하여 일시 중지 된 그래픽 드라이버를 다시 시작합니다. 리눅스가 비슷한 것을 가지고 있는지 전혀 모른다. 키보드가 여전히 작동합니까? 콘솔간에 전환 할 때 중요한 조합이있었습니다. 이상적인 솔루션은 아니지만 아마도 PC를 제대로 종료 할 수 있습니다. 디스플레이 드라이버가 멈췄으므로 마우스가 움직이지 않지만 모든 앱이 백그라운드에서 계속 실행 중임을 기억하십시오. 진행 상황이 표시되지 않습니다. – chippies

답변

1

SysRq (시스템 요청 또는 Magic SysRq라고도 함)를 사용하여 완전히 복구 할 수는 있지만 복구가 더 잘 될 수 있습니다. 특정 키 조합을 실행하면 Linux 재부팅을 정상적인 방법으로 수행 할 수 있습니다 (프로세스 삭제 및 파일 시스템 마운트 해제). 이 키 시퀀스는 http://en.wikipedia.org/wiki/Magic_SysRq_key에 자세히 설명되어 있으므로 여기에서 반복하지 않겠습니다.

경우에 따라 기기에서 SSH를 계속할 수도 있습니다. 이것이 귀하의 경우라면 더 운이 좋을 것입니다. SSH를 사용할 수있는 경우, 충돌 모듈 언로드/재로드, xserver 재시작 또는 적어도 정상적인 재부팅과 같은 다른 옵션을 시도 할 수 있습니다.

나는 "HURD"에 대한 전문가가 아니지만이 유형의 상태를 더 잘 처리하도록 설계된 것 같습니다. 내가 생각할 수있는 유일한 해결책은 두 개의 X를위한 그래픽 카드와 OpenCL을위한 그래픽 카드를 사용하는 것이다. 자신이하고있는 일에 대한 의존성은 NVIDIA를 VM으로 통과시켜 호스트에서 완전히 격리시켜야 할 수도 있습니다.

관련 문제