Задействовать CUDA при сборке пакета

openSUSE, SUSE Linux Enterprise

Модератор: Модераторы разделов

Ответить
zenitur
Сообщения: 594
Статус: Одмин
ОС: openSuSE 10.2

Задействовать CUDA при сборке пакета

Сообщение zenitur »

Привет! Для openSUSE существует репозиторий CUDA: https://developer.nvidia.com/cuda-downloads

На локалхосте проблем нет: 1). Установил CUDA. 2). Скомпилировал свою прогу.
А что насчёт OBS? Можно ли как-то добавить туда RPM-ки по ссылке выше? Импортировать или сделать SPEC-файл, который тупо перепакует официальные пакеты?

Какую именно прогу я хочу пересборать с поддержкой CUDA, я напишу в первом сообщении темы.
А йа Ктулху! А йа - Медве-ед! А где Путин? Путина не-ет! Если встретишь - зохавай моск! А вернёшься - скажи ПРЕВЕД! Превед, Ктулху! Превед, Медвед!
Спасибо сказали:
zenitur
Сообщения: 594
Статус: Одмин
ОС: openSuSE 10.2

Re: Задействовать CUDA при сборке пакета

Сообщение zenitur »

CUDA может понадобиться например для ffmpeg. По ссылке - официальная документация NVIDIA, в которой разъяснена работа с ffmpeg, который собран со следующими параметрами:

Код: Выделить всё

--enable-nvenc --enable-nvresize


Первый параметр не зависит от CUDA, он зависит только от header-файлов из nvenc_5.0.1_sdk.zip + библиотеки libnvidia-encode.so.1, появившейся в драйвере 340.xx и ставшей доступной для использования в 346.xx.

Второй параметр зависит от CUDA: разработчики разделили реализацию NVENC в ffmpeg на часть без CUDA и часть с ней. Часть с CUDA - маленькая и опциональная: в то время как параметр "nvenc" позволяет записывать видео с экрана, сжимать файл с несжатым видео, и стримить в онлайн (99% моих потребностей), то параметр "nvresize" оказался необходим для команды ниже:

Код: Выделить всё

ffmpeg -i captured_video.mkv -acodec copy -vcodec nvenc -preset hq -tune film -filter:v "crop=1280:720:316:50" cropped_video.mkv


Это команда обрезки по размеру картинки. Она прекрасно работает с libx264, но для аппаратного кодирования нужна та самая опциональная часть, зависящая от CUDA.
А йа Ктулху! А йа - Медве-ед! А где Путин? Путина не-ет! Если встретишь - зохавай моск! А вернёшься - скажи ПРЕВЕД! Превед, Ктулху! Превед, Медвед!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20742
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Задействовать CUDA при сборке пакета

Сообщение Bizdelnick »

zenitur писал(а):
17.01.2017 16:43
А что насчёт OBS? Можно ли как-то добавить туда RPM-ки по ссылке выше? Импортировать или сделать SPEC-файл, который тупо перепакует официальные пакеты?

Нет. Правила пользования сервисом запрещают сборку проприетарных пакетов, а также пакетов, подпадающих под действие патентов, в том числе x264 и ffmpeg (за исключением урезанных версий).
https://en.opensuse.org/openSUSE:Build_Serv...ation_blacklist
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
zenitur
Сообщения: 594
Статус: Одмин
ОС: openSuSE 10.2

Re: Задействовать CUDA при сборке пакета

Сообщение zenitur »

В качестве плацдарма для сборки ffmpeg, я решил использовать уже имеющийся у меня репозиторий. Когда-то я создавал его, чтобы пересобрать несколько пакетов (VLC, MPlayer, Audacity) с нестандартными параметрами, которых не включили даже в Packman! И ffmpeg там уже лежит как зависимость (скрыт публикации, потому что от Packman-овского он ничем не отличается).

Три шага:

1). Добавить драйвер NVIDIA в репозиторий (или выдрать из него отдельный файл libnvidia-encode.so.1). Готовые пакеты с драйвером есть, например, здесь: ftp://download.nvidia.com/opensuse/
2). Создать "с нуля" пакет с заголовочными файлами из NVENC SDK.
3). Добавить пакеты с CUDA (в принципе, для сборки ffmpeg хватает заголовочного файла cuda.h, который и так есть в драйвере. Поэтому третий шаг может и не понадобиться. Но всё равно надо научиться добавлять CUDA в OBS - для других пакетов)
4). В случае успеха, закоммитить в Packman - пусть у всех будет nvenc! В связке с obs-studio (это такая программа для записи видео с экрана) вообще огонь!

Bizdelnick, спасибо за разъяснение! А я могу собрать проприетарный пакет и скрыть его? Не публиковать в общий доступ, а только для себя?
А йа Ктулху! А йа - Медве-ед! А где Путин? Путина не-ет! Если встретишь - зохавай моск! А вернёшься - скажи ПРЕВЕД! Превед, Ктулху! Превед, Медвед!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20742
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Задействовать CUDA при сборке пакета

Сообщение Bizdelnick »

Я бы не нарывался на немилость админов OBS, а собирал всё локально osc build.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить