Возможно ли запустить программу OpenCL с низким приоритетом (быть "хорошим")? - PullRequest
7 голосов
/ 14 марта 2011

У меня есть программа OpenCL для Windows, которая выполняет сложные вычисления и с удовольствием потребляет 100% графического процессора. Я хотел бы иметь возможность запускать его в фоновом режиме при обычном использовании компьютера, но сейчас это вызывает значительную задержку на рабочем столе и делает непригодным любое 3D-приложение.

Есть ли способ установить приоритет в OpenCL, чтобы он передавал мощность графического процессора другим процессам и использовал только резервные циклы?

1 Ответ

7 голосов
/ 21 марта 2011

К сожалению, большинство графических процессоров не поддерживают одновременное выполнение нескольких задач, и поэтому нет способа назначить приоритет.Это означает, что когда ваше ядро ​​OpenCL работает, это единственная задача, выполняемая графическим процессором, и это будет иметь место до завершения работы ядра.

Если вы хотите, чтобы компьютер работал во время работы ядра(обычная активность на рабочем столе, просмотр, видео, игры) каждая итерация ядра должна быть очень быстрой.Таким образом, если вы можете сократить время, затрачиваемое на каждый набор запусков ядра (т.е. на каждое задание, поставленное в очередь с clEnqueueNDRangeKernel), вы можете получить то, что ищете.Это может быть достигнуто либо уменьшением NDRange, хотя оно должно быть достаточно большим, чтобы быть эффективным на GPU.Что-то вроде 5120 рабочих элементов - это то, что я нашел минимальным для Radeon HD 5870. Или вы можете уменьшить объем работы в каждом ядре.

Если вы можете получить время выполнения каждого задания в очередипримерно до 1/60 секунды, есть большая вероятность, что компьютер будет работать.Мне удалось запустить программы OpenCL, где каждая постановка занимает около 1/120 секунды во время игры, ничего не замечая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...