2011-03-14 2 views
6

나는 많은 수의 계산을하고 GPU의 100 %를 행복하게 소비하는 OpenCL Windows 프로그램을 가지고 있습니다. 컴퓨터를 정상적으로 사용하면서 백그라운드에서 실행할 수 있기를 원하지만, 지금은 상당한 데스크톱 지연을 초래하고 모든 3D 응용 프로그램을 사용할 수 없게 만듭니다.낮은 우선 순위로 OpenCL 프로그램을 실행할 수 있습니까 ("훌륭함")?

OpenCL에서 우선 순위를 설정하여 다른 프로세스에 GPU 전원을 공급하고 예비 주기만 사용하는 방법이 있습니까?

답변

7

대부분의 GPU는 한 번에 여러 가지 작업을 실행할 수 없으므로 우선 순위를 지정할 방법이 없습니다. 즉, OpenCL 커널이 실행 중일 때 GPU가 실행하는 유일한 작업이며 커널이 완료 될 때까지 그럴 것입니다.

커널을 실행하는 동안 컴퓨터를 사용할 수있게하려면 (일반적인 데스크톱 작업, 탐색, 비디오, 게임) 각 커널 반복이 매우 빨라야합니다. 따라서 각 커널 실행 세트 (즉, 각 작업이 clEnqueueNDRangeKernel에 대기열에 포함됨)에 소요되는 시간을 단축 할 수 있다면 원하는 것을 얻을 수 있습니다. GPU에서 효율적으로 작동하려면 충분히 커야하지만 NDRange를 작게 만들면이 작업을 수행 할 수 있습니다. 5120 작업 아이템과 같은 것이 내가 Radeon HD 5870에서 최소로 발견 한 것입니다. 그렇지 않으면 각 커널의 작업량을 줄일 수 있습니다.

각 대기열에 넣은 작업의 실행 시간을 1/60 초로 줄이면 컴퓨터를 사용할 수있는 좋은 기회가됩니다. 저는 OpenCL 프로그램을 실행할 수 있었는데, 각 엔큐는 게임을하면서 아무 것도 알지 못하고 약 1/120 초가 걸렸습니다.

관련 문제