Установка OpenBLAS в CentOS / Fedora
В проекте Java я использую https://github.com/fommil/matrix-toolkits-java (MTJ) для эффективного умножения матриц. Это зависит от netlib-java, который, в свою очередь, основан на оптимизированной реализации BLAS и LAPACK, установленных на машине. Это конкретно ищет /usr/lib64/libblas.so.3
а также /usr/lib64/liblapack.so.3
найти эти библиотеки.
При установке blas
а также lapack
через Yum мы получаем символические ссылки /usr/lib64/libblas.so.3
а также /usr/lib64/liblapack.so.3
указывая на.so файлы из ссылки blas
а также lapack
устанавливается через Yum.
Теперь мы хотим использовать реализации, которые быстрее, чем эталонные, в моем случае OpenBLAS. Не имеет значения, собираю ли я это сам или устанавливаю через Yum, я получаю /usr/lib64/libopenblas-r0.2.18.so
,
Теперь, согласно любому руководству в Интернете, я должен заменить символические ссылки на эталонную реализацию символическими ссылками на реализацию OpenBLAS, заканчиваясь примерно так:
libblas.so.3 -> libopenblas-r0.2.18.so
liblapack.so.3 -> libopenblas-r0.2.18.so
Хорошо, я могу это сделать! Я могу сделать это с ln
или через alternatives
, И если я это сделаю, мой код с удовольствием использует быстрый OpenBLAS.
Однако когда ldconfig
Запускаются мои потрясающие символические ссылки, они перезаписываются ссылочными установками BLAS и LAPACK. А потом мое программное обеспечение печально и медленно.
Итак, мой вопрос, как установить OpenBLAS на CentOS/Fedora таким образом, чтобы запустить ldconfig
не разрушит это? Я не могу удалить blas
а также lapack
пакеты, так как другие клиенты хоста могут полагаться на него. Скорее, я бы как-то заставил ОС понять, что OpenBLAS является альтернативой blas
а также lapack
,
2 ответа
В этой статье предлагается установка openblas-compat
через ням. Это решает проблему для меня. После установки по умолчанию blas
пакет моего программного обеспечения все еще использовал OpenBLAS.
Я не думаю, что такого поведения можно избежать, не удаляя эталонные реализации. если вам нужно вручную перестроить ld.so.cache, вы можете запустить ldconfig -X
чтобы избежать обновления ссылок.
кроме этого вам, скорее всего, придется создать собственный скрипт для восстановления символических ссылок на openblas после того, как ldconfig обновит ссылки