Используйте OpenCL на AMD APU, но используйте дискретный графический процессор для X-сервера

Можно ли включить OpenCL на A10-7800, не используя его для X-сервера? У меня есть окно Linux, которое я использую для программирования GPGPU. Дискретная карта GEForce 740 используется как для X-сервера, так и для запуска программ OpenCL и Cuda, которые я разрабатываю. Мне также хотелось бы иметь возможность запуска кода OpenCL на интегрированных ядрах APU.

Все, что я до сих пор читал, подразумевает, что если я хочу использовать APU для OpenCL, мне нужно установить Catalyst и, AFAIK, это означает использовать его для X-сервера. Это правда? Будет ли преимуществом использование APU для моего X-сервера и использование GEForce исключительно для кода GPGPU?

2 ответа

Решение

У меня была аналогичная цель, поэтому я построил систему с AMD APU (4 обычных ядра + 6 графических процессоров) и дискретной графической платой Nvidia. Извините, но сказать, что это было нелегко, поэтому я задал вопрос Ask Ubuntu Форум, не получил никаких ответов, много экспериментировал с настройкой аппаратного и программного обеспечения и, наконец, опубликовал свой ответ на мой вопрос.

Я опишу мои настройки снова здесь - кто знает, что может произойти с моим авто-ответом на вопрос Ask Ubuntu?

Сначала мне пришлось включить встроенное графическое оборудование через флаг BIOS. Этот флаг называется IGFX Multi-Monitor на моей материнской плате (ASUS A88X-PRO).

Вторым шагом было найти правильное сочетание низкоуровневого графического драйвера и высокоуровневой реализации OpenCL. Низкоуровневый драйвер для процессоров AMD называется AMD Catalyst и имеет имя файла fglrx, Я не устанавливал этот драйвер из центра программного обеспечения Ubuntu - вместо этого я использовал версию 15.302, прямо скачанный с сайта AMD. Мне пришлось установить значительное количество предпосылок для этого драйвера. Самым важным открытием было то, что мне пришлось пропустить aticonfig команда после fglrx Установка - эта команда на самом деле настраивает X-сервер для использования этого драйвера для вывода графики, и я не хотел этого.

Затем я установил AMD SDK Ver 3.0 (выпуск 130.136, более ранние версии не работали с моим fglrx) - это реализация OpenCL от AMD. clinfo Теперь команда сообщает о процессорах и графических процессорах с правильным количеством ядер.

Итак, у меня есть гибридный процессор AMD, поддерживаемый OpenCL, со всеми графическими выходами, поддерживаемыми дискретной видеокартой с процессором Nvidia.

Удачи!

Я поддерживаю сервер Linux (OpenSUSE, но дистрибутив не должен иметь значения), содержащий как NVIDIA, так и (дискретный) AMD GPU. Это без головы, так что технически я не знаю, создаст ли X-сервер дополнительные проблемы, но я так не думаю. Вы всегда можете настроить xorg.conf для использования именно того драйвера, который вам нужен. Или в этом отношении: установите Catalyst, но удалите сам файл драйвера X-сервера, который не является тем же самым, что вам нужно для OpenCL.

Однако я заметил одну проблему со смешанной системой: драйвер AMD OpenCL (ICD) будет использоваться для библиотеки libGL.so, я полагаю, для взаимодействия с OpenCL/OpenGL. Если он найдет какой-либо из предоставленных NVIDIA libGL.so, он запутается и зависнет - по крайней мере, на моей машине. Я "решил" это, удалив все файлы libGL.so (они мне не нужны на автономном вычислительном сервере), но это может оказаться неприемлемым для вас. Может быть, вы можете устроить так, чтобы libGL.so, поставляемый AMD, имел приоритет, возможно, установив драйвер AMD последним.

Другие вопросы по тегам