Как запустить линейную алгебру JBLAS Java без собственных библиотек

Я хотел бы запустить JBLAS в приложении Kotlin. Я использую OpenJDK 17 на Mac OSX Monterey с M1.

Я добавил зависимость JBLAS в свой Maven pom.xml.

Я написал тест JUnit, в котором один тест проходит успешно, а другой терпит неудачу:

      package fea

import org.jblas.DoubleMatrix
import org.jblas.Solve
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test

class JBlasTest {

    @Test
    fun `create and add two double matricies`() {
        // setup
        val n = 3
        val a = DoubleMatrix(n, n, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)
        val b = DoubleMatrix.ones(n, n).mul(2.0)
        val expected = DoubleMatrix(n, n, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0)
        // exercise
        val actual = a.add(b)
        // assert
        Assertions.assertEquals(expected, actual)
    }

    @Test
    fun `first solver`() {
        // setup
        val n = 3
        val a = DoubleMatrix(n, n, 1.0, 1.0, 2.0, 2.0, 4.0, -3.0, 3.0, 6.0, -5.0)
        val b = DoubleMatrix(n, 1, 9.0, 1.0, 0.0)
        val expected = DoubleMatrix(n, 1, 1.0, 2.0, 3.0)
        // exercise
        val actual = Solve.solve(a, b)
        // assert
        Assertions.assertEquals(expected, actual)
    }
}

Тест, который создает и добавляет две двойные матрицы, проходит.

Тест, который нужно решитьA*x = bтерпит неудачу сUnsatisfiedLinkError.

Я добавил библиотеки lapack и openblas на свой Mac с помощью brew:

      brew install lapack openblas

Я добавил пути к моей LD_LIBRARY_PATH:

LD_LIBRARY_PATH=/opt/homebrew/opt/lapack:/opt/homebrew/opt/openblas

Нет радости. Тест, который создает и добавляет два прохода двойных матриц; первый тест решателя не проходит. Вот сообщение об ошибке, которое я получаю:

      java.lang.UnsatisfiedLinkError: 'int org.jblas.NativeBlas.dgesv(int, int, double[], int, int, int[], int, double[], int, int)'

Я не знаю, какая библиотека содержит файлы . Я предполагал, что все необходимые зависимости будут доступны в библиотеках Open BLAS и LAPACK, которые я установил вместе с brew.

Я искал в репозитории jblas GitHub функцию с именемdgesv. IntelliJ не смог найти метод с таким именем.

Возможно, мой LD_LIBRARY_PATH неверен.

Я попытался клонировать репо и запуститьmvn install. У меня были сбои тестов, которые также были связаны с отсутствующими зависимостями. Когда я выполняю grep текстового вывода surefire-reports для ERROR, я вижу много ошибок ссылок.

Я установил XCode из AppStore - не помогло.

Далее я собираюсь попробовать собрать исходный код GitHub. Я не уверен, нужно ли мне вносить изменения в Makefile, чтобы использовать M1.

Это вызвано отсутствием библиотек в Mac M1?

Любые советы по следующим шагам?

0 ответов

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