Установка 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 обновит ссылки

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