Моя программа использует OpenGL для рисования на экране. Эта задача малоинтенсивна, но чувствительна к задержкам. Другой процессорный поток моей программы делает некоторые вычисления, которые очень интенсивны, но имеют низкий приоритет. Я реализовал эти расчеты, используя OpenCL для запуска на GPU. С тех пор я наблюдаю слишком большую визуальную задержку при рисовании OpenGL.
Можно ли управлять загрузкой графического процессора или планировать задачи на графическом процессоре? Я использую AMD Radeon GPU. Насколько я знаю, для OpenCL есть расширение Device Fission, которое полезно в таких случаях, но поддерживается только для процессоров, не так ли?
Другая вещь, которая меня беспокоит, заключается в том, что системный монитор AMD показывает занятость графического процессора на уровне 55%. Так что, на мой взгляд, должно быть достаточно ресурсов для запуска обеих частей, OpenGL и OpenCL, без остановки.
Обновление. Я провел небольшой эксперимент с моей функцией ядра OpenCL. Глобальный размер работы был ограничен небольшим числом, чтобы гарантировать, что некоторые вычислительные блоки будут простаивать, когда работает ядро OpenCL. Чтобы компенсировать это, каждый рабочий элемент выполняет больше работы. Так что GPU сейчас менее загружен, но ядро работает дольше. В результате OpenGL становится медленнее. Следовательно, похоже, что рисование OpenGL и вычисления OpenCL не могут быть выполнены одновременно. Где я могу найти информацию о том, какие карты поддерживают такую функциональность? А как насчет графических процессоров NVIDIA?