При сборке Wine не для личного использования, а чтобы распространять сборки, я столкнулся с проблемой. С какой реализацией OpenCL линковать? NVIDIA, AMD,
[[https://software.intel.com/en-us/articles/opencl-drivers Intel]], Mesa? Ответ - FreeOCL!На самом деле, не важно с чем линковать. У всех известных мне реализаций OpenCL, сама библиотека []libOpenCL.so.1[] занимает около 30 Кб. Оказывается, внутри этой библиотеки ничего нет. Сам OpenCL находится в другой библиотеке (например в []libatiocl64.so[] - см. []/etc/OpenCL/vendors/*.icd[] для подробностей). Однако залить проприетарный драйвер в OBS-репозиторий я не могу, так как закрытый код. Остаётся только Mesa и FreeOCL.
[[https://github.com/zuzuf/freeocl FreeOCL]] это программная реализация OpenCL, написанная на C++, и имеющая у себя в зависимостях libatomic_ops - а LLVM не имеющая. Установив в систему []FreeOCL[] и []opencl-headers[], я успешно собрал Wine. Причём Wine линкуется только с OPENCL_1.0, что не помешало конечному софту, запущенному в Wine, успешно задействовать расширения 1.2 и 2.0.
В общем, рекомендую всем, кто до сих пор собирает с AMD APP SDK 3.0, перейти на FreeOCL. Я попробовал скомпилировать весь известный мне OpenCL-софт при помощи FreeOCL, а затем запустить на NVIDIA и AMD - всё работает безупречно. Не падает, не отказывается стартовать, и демонстрирует ровно ту же скорость работы.
P.S. Бинарник получает зависимость от libOpenCL.so.1 (параметр []-lOpenCL[]), а пакет RPM или DEB также получает от pkg-config ещё несколько зависимостей:
libOpenCL.so.1(OPENCL_1.0)(64bit)
libOpenCL.so.1(OPENCL_1.1)(64bit)
libOpenCL.so.1(OPENCL_1.2)(64bit)
libOpenCL.so.1(OPENCL_2.0)(64bit)Поэтому если вы собираете пакеты, а не просто tar.gz архив с программой, рекомендую пропатчить FreeOCL патчем
[[https://build.opensuse.org/package/view_file/home:linux4huma... freeocl-0.3.6-disable-symbol-versioning.patch]]. В этом случае, пакет получит зависимость только от []libOpenCL.so.1()(64bit)[]. Например в моей системе в пакете NVIDIA 340.xx нет «версионинга» OpenCL, а в 390.xx он есть. Вследствие чего, пакет не хотел устанавливаться, но после force install - работал.URL:
Обсуждается: http://www.opennet.dev/tips/info/3072.shtml
12 лет собираю софт без OpenCL. Что я теряю, чего лишаюсь?
мегахеши.
12 лет назад его ещё совсем не было. Так что, тогда ты точно ничего не терял.
12 лет собирать софт и сморозить такое. Глупость действительно неисправима!
> 12 лет собирать софт и сморозить такое. Глупость действительно неисправима!Я серьёзно. Что я пропустил?
> 12 лет собирать софт и сморозить такое. Глупость действительно неисправима!Это же iZEN. Сегодня он показал что можно 12 лет собирать софт и при этом все-же остаться ламером и нубом.
Понимаешь ли, мой маленький друг, то, что iZEN хочет заполнить пробелы в своих знаниях и при этом не боится показаться невежественным говорит о нём, как в взрослой личности.А твоя клоунада с попыткой оскорбить незнакомого человека говорит о том, что ты малолетний дегенерат.
Если ты с этим не согласен - начинай себя вести так же и в реальной жизни.
О результатах непременно отпиши на этом форуме.
> iZEN хочет заполнить пробелы в своих знаниях и при этом не боитсяНе заблуждайтесь.
..
Если не хотите прослушать курс (не менее ламepский кстати) на тему, как жаба разруливает зависимости при распространении блобов.
Все знать в этом мире нереально .
Лично вы например тоже чего-то не знаете .
Давайте я буду смеяться над вами, над тем что лично вы не знаете ?
И напишу что вы в этом деле нуб , клоун и дегенерат .
> 12 лет собираю софт без OpenCL. Что я теряю, чего лишаюсь?Ускорения массово параллелящихся операций раз так во много. Видал разгон в 30 раз. Но да, это требует GPU и достаточно работоспособный 3D драверй с opencl-ным рантаймом.
>> 12 лет собираю софт без OpenCL. Что я теряю, чего лишаюсь?
> Ускорения массово параллелящихся операций раз так во много. Видал разгон в 30
> раз. Но да, это требует GPU и достаточно работоспособный 3D драверй
> с opencl-ным рантаймом.На nvidia-driver-390.77 и видеокарте Geforce GT 710 работает?
На xf86-video-ati-7.9.0 и видеокарте AMD 785G (HD 4200) работает?
Да, но большая часть софта не получит преимуществ, слишком старые видеокарты не поддерживают современные инструкции и софт просто не задействует opencl на них.
А что будет, если поставить Geforce GTX 1050? Какие преимущества я получу от OpenCL в этом случае?
Одно из преимуществ: https://hashcat.net/hashcat/
Когда OpenCL только начал появляться, было множество новостей о том, что вычисления в электронных таблицах LibreOffice ускоряются в несколько раз.
Например, из 2014:
http://www.techenablement.com/libreoffice-opencl-acceleratio.../Но вроде бы, с тех пор все вменяемые дистры запилили поддержку этой фичи по дефолту. Так что, смысл этой пересборки мне тоже не очень понятен. Без фороникса не разобраться, короче.
погодите-ка, вы хотите сказать, что у вас были ТАКИЕ таблицы в опенофисе, что их вычисления (вычисления, йопаралон - не старт oocalc, не отрисовка бесконечных элементов интерфейса, не открытие файла, а ВЫЧИСЛЕНИЯ) выполнялись заметное глазом время?
Ну, не все же на ай9 сидят. ))В обсуждении новости в 2013-м году возникло похожее непонимание:
https://www.phoronix.com/forums/forum/software/desktop-linux...
И вот что было отвечено: "OpenCL also means CPU multi core." Т.е., как gcc может обрабатывать одну задачу с помощью нескольких ядер, так и, в идеале, многое может быть реализовано для параллельного выполнения. Другое дело, что сейчас уже 2018, а многого не видно.
У меня такой вопрос: есть ли разница между header-ами OpenCL из CUDA Toolkit, AMD APP SDK и с сайта Khronos Group (пакет opencl-headers)?
> У меня такой вопрос: есть ли разница между header-ами OpenCL из CUDA
> Toolkit, AMD APP SDK и с сайта Khronos Group (пакет opencl-headers)?По идее, должна быть, ведь вендоры имеют право добавлять свои собственные расширения. Не знаю, добавляли ли NVIDIA с AMD что-нибудь своё в OpenCL
6 лет назад в Debian появился пакет ocl-icd с реализацией платформонезависимого драйвера, который можно использовать для разработки, а потом оно будет работать с проприетарными драйверами."OpenCL implementations are provided as ICD (Installable Client Driver). An OpenCL program can use several ICD thanks to the use of an ICD Loader as provided by this project. This free ICD Loader can load any (free or non free) ICD."
Источник: https://forge.imag.fr/projects/ocl-icd/
Вот оно что. Спасибо
Так что же, в итоге, лучше? FreeOCL или OCL-ICD?
Результат будет одинаковым. Наверное лучше OCL-ICD, потому что он создан конкретно для того, чтобы компилить с ним софт, а FreeOCL претендует на серьёзность, на то, чтобы выполнять OpenCL-код на CPU
Дошел ли прогресс до такого состояния, что собрав мою, не использующую на прямую opencl, программу вместе в opencl, я получу приваку к скорости?