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


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

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

2 6

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 server, который является Не тем же, что вам нужно для OpenCL.

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