Я не уверен, что это подходящее место, чтобы задать свой вопрос, поэтому, если нет, прошу прощения.
Я пишу программу на Java, которая выполняет много умножений разреженных матриц. После некоторого исследования я обнаружил, что Matrix Toolkits Java обеспечивает лучшую производительность , но только при использовании оболочки netlib-java для библиотек BLAS / LAPACK fortran.
Теперь я попробовал следовать инструкциям на этих страницах github, и я установил как BLAS, так и LAPACK из репозиториев Arch Linux:
$ pacman -Ss lapack
extra/lapack 3.5.0-1 [installed]
Linear Algebra PACKage
$ pacman -Ss blas
extra/blas 3.5.0-1 [installed]
Basic Linear Algebra Subprograms
При проверке / usr / lib / он действительно содержит
-rwxr-xr-x 1 root root 1866088 Jan 27 21:46 liblapacke.so
lrwxrwxrwx 1 root root 13 Jan 27 21:46 liblapacke.so.3 -> liblapacke.so
lrwxrwxrwx 1 root root 13 Jan 27 21:46 liblapacke.so.3.5.0 -> liblapacke.so
-rwxr-xr-x 1 root root 5878120 Jan 27 21:46 liblapack.so
lrwxrwxrwx 1 root root 12 Jan 27 21:46 liblapack.so.3 -> liblapack.so
lrwxrwxrwx 1 root root 12 Jan 27 21:46 liblapack.so.3.5.0 -> liblapack.so
а также
-rwxr-xr-x 1 root root 358448 Jan 27 21:46 libblas.so
lrwxrwxrwx 1 root root 10 Jan 27 21:46 libblas.so.3 -> libblas.so
lrwxrwxrwx 1 root root 10 Jan 27 21:46 libblas.so.3.5.0 -> libblas.so
Теперь моя программа умножает разреженную матрицу размером около 450 000x450 000 элементов на вектор. Это занимает около секунды. Я использую Intel Core 2 Duo @ 2,53 ГГц.
В конце концов, у меня вопрос: действительно ли я использую бэкэнд Fortran или все же Java-реализацию этих функций? Я понимаю, что мои вычисления велики, но я все же считаю, что они могут быть быстрее ... Есть ли способ проверить, какие библиотеки используются во время работы?
Заранее спасибо! С уважением,
Линус
РЕДАКТИРОВАТЬ:
Я только что попробовал кое-что, что, на мой взгляд, говорит о том, что я на самом деле НЕ использую библиотеки. Я переименовал и liblapack, и libblas, предполагая, что это сделает невозможным их поиск Java. Моя программа все еще работала после переименования библиотек и, что более важно, занимала столько же времени ... Думаю, сейчас я ищу, как убедиться, что библиотеки загружены и используются!