2017-05-22 9 views
0

webgl에서 장시간 실행되는 glsl 코드로 인해 모든 컴퓨터가 정지 할 수 있습니다. Path Tracer MIS (progressive)크롬이 멈 추면 긴 웹gl 프로세스가 중지됩니다.

쉐이더 너무 많이하고 자바 스크립트 수준에서 그것을 자동 죽이기에 복용 여부를 감지 할 수있는 방법이 있나요 : shadertoy를 검색 할 때 , 특히 전체 화면 모드에서의 몇 가지 예는이 같은 내 맥이 얼어? 또는 개발자가 도달 할 수 없으며 브라우저 개발자가 처리해야합니다.

또 다른 질문 : 긴 크롬 GPU 액세스가 컴퓨터를 멈추는 것을 방지하는 방법 (플러그인 또는 Mac 또는 Linux의 외부 응용 프로그램)이 있습니까?

답변

2

WebGL뿐만 아니라 모든 GPU 코드가 컴퓨터를 고정시킬 수 있습니다. 문제는 CPU와 달리 현재 GPU가 선점되지 않는다는 것입니다. 즉, 30 분의 작업을 수행하면 30 분 동안 해당 작업을 실행하게되며 CPU로 수행 할 수있는 것처럼 다른 작업을 수행 할 수는 없습니다. (멀티 태스킹 없음)

좋은 OS의 솔루션은 CPU가 시간 초과를 실행하고 GPU가 너무 오래 걸리면 OS가 GPU를 재설정 (효과적으로 다시 부팅)합니다. Windows는 Windows Vista 이후로이 작업을 수행했습니다. macOS는 최근에 추가 된 것 뿐이며, MS와 같은 상황에서 복구 할 수있는 OS를 설계하지 않았기 때문에 모든 작업을 처리하는 데 오랜 시간이 걸립니다.

좋은 점은 의도적으로 수행 할 인센티브가별로 없다는 것입니다. 컴퓨터를 잠그는 웹 사이트를 방문하면 아마 그 사이트를 방문하는 것을 멈추게됩니다. 사람들이 사이트를 방문하기를 원하기 때문에 문제는 일반적으로 스스로 수정됩니다.

반면 shadertoy와 같은 사이트에서는 사람들이 매우 길고 복잡한 쉐이더를 작성하는데, 실제로는 톱 엔드 GPU에서만 실행되도록 설계되었으며 일반 노트북 GPU에서는 실행되지 않도록 설계되었습니다.

최대한 멀리 할 수 ​​있습니다.

  • 애플에 문의하여 드라이버와 OS를 고쳐 문제를 해결할 수 있도록 요청하십시오.

  • 은 어쩌면 그들이 쉐이더 자신의 시스템에 대해 너무 무거운 수 있습니다 사용자에게 경고할지 여부 을 결정하는 몇 가지 타이밍 정보 또는 다른 발견을 추가 할 수 있습니다 자동으로 무거운 쉐이더

    을 실행하지 Shadertoy 요청합니다.

  • GPU 기업에게 GPU를 선점 가능하도록 요청하십시오.

그렇지 않으면 브라우저가 할 수있는 것이 많지 않습니다. The browser has no idea if the shader is going to be fast or slow before it runs it.