Допустим, у меня есть две матрицы (в виде Common Lisp массива) Foo и бар, что:Matrix-умножение с использованием BLAS из Common Lisp
(defvar foo #2A((2 1 6) (7 3 4)))
(defvar bar #2A((3 1) (6 5) (2 3)))
Я хотел бы выполнить умножение матриц с помощью BLAS без с использованием оберток, таких как Matlisp, GSLL, LLA, & co. так что я получаю массив с результатом:
#2A((24 25) (47 34))
Какие шаги следует предпринять для выполнения такой операции?
Мое понимание заключается в том, что я должен вызвать функцию умножения матрицы BLAS из REPL и передать ей свои аргументы foo и bar.
В R, я легко могу это сделать так:
foo %*% bar
Как я могу сделать это в Common Lisp?
Отказ от ответственности: 1) Я использую SBCL 2) Я не опытный ученый
Моего текущее понимания, что вам нужно связывание для обеспечения связи между функцией BLAS и ее некоторых иностранные функциями интерфейса звоните из Common Lisp. Если мое понимание является точным, в этом смысле, да, вам нужна обертка. Перефразируя мой вопрос с некоторой точностью, вы получите: как можно напрямую использовать ffi, не используя какой-либо другой более высокий уровень Lisp библиотека, такая как Matlisp и т. Д.? Я пытаюсь понять, как я могу выполнить умножение матрицы на два массива CL foo и bar или вычислить ковариационную матрицу на каком-то массиве baz с использованием уже существующих функций BLAS. –