Системный шаблон файла systemd для нескольких пользователей

Я понимаю, потратив более 16 часов на то, чтобы OpenCL работал на Windows и Linux, что OpenCL On ubuntu 16.04, процессор Intel Sandy Bridge наиболее близок к работе.

Что не работает для я был от установки драйверов и конфигурации, после чего я пробовал из нескольких мест. Да, версии были разные. Я принимал это во внимание, когда это возможно. Но тогда я впервые установил библиотеки и установил связь. Поэтому я надеюсь, что это поможет любому новичку, как я. Я рассмотрел только часть графических процессоров Intel

Получение OpenCL для работы

sudo apt install clinfo ocl-icd-opencl-dev opencl-headers

Проверьте вывод функции clinfo

clinfo | grep "GPU"

, чтобы проверить, является ли GPU включен. Если на выходе нет строки типа

Device Type                            GPU

, тогда GPU еще не поддерживает OpenCL. В этом случае попробуйте установить beignet-opencl-icd, mesa-opencl-icd и т. Д. - возможно, по одному за раз. Продолжайте проверять вывод clinfo после каждого. Если он содержит указанную выше строку, все готово.

Установка драйверов Intel OpenCL

Если это не сработает, установите драйверы opencl для Intel из OpenCL On ubuntu 16.04, Intel Sandy Bridge CPU . Для автоматической установки требуется тонна времени и пространства. Однако есть альтернативный метод. Разархивируйте архив. Установите чужой, если у вас еще нет: sudo apt install alien

cd в распакованную папку и запустите

sudo alien -i *.rpm

Еще раз проверьте вывод «clinfo» , Он должен иметь графический процессор. клинфо | grep «GPU»

На этом этапе у вас будет рабочая реализация OpenCL.

Однако, примеряя примеры (отсюда), я обнаружил, что большинство примеров работают с Библиотеки Intel (см. Ниже), некоторые из них не работают с библиотеками, установленными с дистрибутивом (установлено выше). (Я полагаю, это связано с различными версиями openCL.)

Установите Intel OpenCL SDK

Установите Intel OpenCL SDK для Linux (после регистрации бесплатно) с ними, начиная с здесь здесь . Просто запустите скрипт установщика - не нужно работать над тем, чтобы заставить его работать с Eclipse и всеми. Возможно, вам понадобится

sudo apt install dkms

. На этом этапе у вас должно быть все готово.

Если вы новичок (например, я)

Знай процесс компиляции программ C: во-первых, генерируются объектные файлы, затем они связаны. См. Https://stackoverflow.com/questions/31179452/what-exactly-is-in-aoa-so-file.

В IDE (я не знаю о терминале) есть две части для работы с библиотеками. Сначала включается путь к файлам заголовков. Второй включает файлы библиотеки в проекте.

Я использую CodeBlocks. Итак, причина, по которой Linux нравится, заключается в том, что самая первая команда этого ответа отправила файлы в их предполагаемые места. Файлы заголовков находятся в каталоге / usr / include в папке «CL». Библиотека (в моем случае) находится под / usr / lib / x86_64-linux-gnu, с именем «libOpenCL.so». Вам не нужно ничего делать, чтобы использовать их. Вы можете просто начать кодирование -

#include

В случае Intel OpenCL SDK файлы заголовков находятся под / opt / intel / opencl-sdk / include; в то время как файлы библиотеки находятся в разделе После установки, проверьте содержимое / opt / intel / opencl для содержимого. У них тоже есть библиотеки. Однако один из файлов библиотеки дал мне синтаксическую ошибку (libclang.so). Intel OpenCL SDK загружается в основном для файлов заголовков в: / opt / intel / opencl-sdk / lib64 - только .so. (Я обнаружил, что файл libclang.so дал синтаксическую ошибку. Проверьте во время запуска программы.)

В случае CodeBlocks использовать эти файлы Intel - нестандартные - создать новый проект , Щелкните правой кнопкой мыши проект в диспетчере - подзаголовок. Перейдите к «Параметры сборки». Выберите имя проекта в левой панели - таким образом, настройки будут применены для версий Release и Debug. В настройках компоновщика -> библиотеки ссылок нажмите «Добавить». Здесь добавьте библиотеки (а не файлы заголовков, все .so): at / opt / intel / opencl-sdk / lib64. На вкладке «Каталоги поиска» в разделе «компилятор» добавьте / opt / intel / opencl / include (или где бы ни были ваши файлы заголовков).

В случае CodeBlocks , сначала установите CDT. Затем, после создания проекта, в разделе Project -> Properties -> C / C ++ Build -> Settings -> Tool Settings, (1) в GCC C ++ Compiler, добавьте каталог файлов заголовков. (2) в GCC C ++ Linker, в разделе «Библиотеки», добавьте OpenCL, а в нижней части в разделе «Путь к библиотеке» добавьте путь. В моем случае, чтобы заставить его работать, мне потребовалось: / opt / intel / opencl / include в первой части и / opt / intel / opencl / SDK / lib64 во второй части. Значение по умолчанию, как в случае с Codeblocks, не работает. Возможно, это связано с версиями или я не пробовал правильно - Eclipse для меня новичок.

Выполнено.

Следующее должно выполняться и компилироваться: https: //stackoverflow.com/questions/31179452/what-exactly-is-in-aoa-so-file

Кредиты: Интернет

1
задан 9 March 2018 в 11:37

3 ответа

Невозможно передать несколько параметров в шаблон systemd (см. соответствующее обсуждение списка рассылки). Однако, поскольку у нас есть только два параметра, а один - имя пользователя, имеет смысл сделать его пользовательской службой вместо системной службы.

Пользовательские службы могут запускаться при загрузке, если вы связаны с рассылкой list для этих пользователей:

sudo loginctl enable-linger username

Из man loginctl:

enable-linger [USER...], disable-linger [USER...]
   Enable/disable user lingering for one or more users. If enabled for
   a specific user, a user manager is spawned for the user at boot and
   kept around after logouts. This allows users who are not logged in
   to run long-running services. Takes one or more user names or
   numeric UIDs as argument. If no argument is specified,
   enables/disables lingering for the user of the session of the
   caller.

Вы можете создать службу пользователя в /etc/systemd/user, которая будет выглядеть (адаптация вашей предыдущей службы):

[Unit]
Description=Start TigerVNC Server at startup
After=syslog.target network.target

[Service]
Type=forking
PAMName=login
PIDFile=%h/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -depth 24 -geometry 1920x1080 -nolisten tcp -localhost
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=default.target

Используйте спецификатор %h для домашнего каталога пользователя. Я опустил поле User=, что не имеет смысла в пользовательских сеансах. Также обратите внимание на изменение WantedBy в [Install] из multi-user.target (которое не существует в пользовательских сеансах) на default.target.

Пользователи могут затем управлять этой услугой с помощью команд systemctl --user. (Обратите внимание, что вам может потребоваться перезапустить после включения linger, если этот пользователь еще не вошел в систему, так что для них запускается пользовательский сеанс.)

1
ответ дан 22 May 2018 в 12:40

Невозможно передать несколько параметров в шаблон systemd (см. соответствующее обсуждение списка рассылки). Однако, поскольку у нас есть только два параметра, а один - имя пользователя, имеет смысл сделать его пользовательской службой вместо системной службы.

Пользовательские службы могут запускаться при загрузке, если вы связаны с рассылкой list для этих пользователей:

sudo loginctl enable-linger username

Из man loginctl:

enable-linger [USER...], disable-linger [USER...] Enable/disable user lingering for one or more users. If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run long-running services. Takes one or more user names or numeric UIDs as argument. If no argument is specified, enables/disables lingering for the user of the session of the caller.

Вы можете создать службу пользователя в /etc/systemd/user, которая будет выглядеть (адаптация вашей предыдущей службы):

[Unit] Description=Start TigerVNC Server at startup After=syslog.target network.target [Service] Type=forking PAMName=login PIDFile=%h/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver :%i -depth 24 -geometry 1920x1080 -nolisten tcp -localhost ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=default.target

Используйте спецификатор %h для домашнего каталога пользователя. Я опустил поле User=, что не имеет смысла в пользовательских сеансах. Также обратите внимание на изменение WantedBy в [Install] из multi-user.target (которое не существует в пользовательских сеансах) на default.target.

Пользователи могут затем управлять этой услугой с помощью команд systemctl --user. (Обратите внимание, что вам может потребоваться перезапустить после включения linger, если этот пользователь еще не вошел в систему, так что для них запускается пользовательский сеанс.)

1
ответ дан 17 July 2018 в 19:13

Невозможно передать несколько параметров в шаблон systemd (см. соответствующее обсуждение списка рассылки). Однако, поскольку у нас есть только два параметра, а один - имя пользователя, имеет смысл сделать его пользовательской службой вместо системной службы.

Пользовательские службы могут запускаться при загрузке, если вы связаны с рассылкой list для этих пользователей:

sudo loginctl enable-linger username

Из man loginctl:

enable-linger [USER...], disable-linger [USER...] Enable/disable user lingering for one or more users. If enabled for a specific user, a user manager is spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run long-running services. Takes one or more user names or numeric UIDs as argument. If no argument is specified, enables/disables lingering for the user of the session of the caller.

Вы можете создать службу пользователя в /etc/systemd/user, которая будет выглядеть (адаптация вашей предыдущей службы):

[Unit] Description=Start TigerVNC Server at startup After=syslog.target network.target [Service] Type=forking PAMName=login PIDFile=%h/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver :%i -depth 24 -geometry 1920x1080 -nolisten tcp -localhost ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=default.target

Используйте спецификатор %h для домашнего каталога пользователя. Я опустил поле User=, что не имеет смысла в пользовательских сеансах. Также обратите внимание на изменение WantedBy в [Install] из multi-user.target (которое не существует в пользовательских сеансах) на default.target.

Пользователи могут затем управлять этой услугой с помощью команд systemctl --user. (Обратите внимание, что вам может потребоваться перезапустить после включения linger, если этот пользователь еще не вошел в систему, так что для них запускается пользовательский сеанс.)

1
ответ дан 23 July 2018 в 19:59

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

Похожие вопросы: