Установка OpenBLAS на CentOS/Fedora

В проекте Java я использую 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.


person TTT    schedule 07.07.2017    source источник
comment
если другие полагаются на пакеты blas и lapack, не будут ли они, скорее всего, также полагаться на libblas.so.3, указывающий на реализацию blas?   -  person stefan0xC    schedule 23.08.2017


Ответы (2)


В этой статье предлагается установить openblas-compat через Yum. Это решает проблему для меня. После установки пакета blas по умолчанию мое программное обеспечение все еще использовало OpenBLAS.

person TTT    schedule 27.11.2017

я не думаю, что этого поведения можно избежать, не удаляя эталонные реализации. если вам нужно вручную перестроить ld.so.cache, вы можете запустить ldconfig -X, чтобы избежать обновления ссылок.

кроме того, вам, скорее всего, придется создать собственный скрипт для восстановления символических ссылок на openblas после того, как ldconfig обновил ссылки

person stefan0xC    schedule 23.08.2017