Как этот линейный решатель может быть связан с Mathematica? - PullRequest
5 голосов
/ 05 августа 2011

Вот хороший линейный решатель с именем GotoBLAS .Он доступен для скачивания и работает на большинстве вычислительных платформ.У меня вопрос: есть ли простой способ связать этот решатель с ядром Mathematica, чтобы мы могли назвать его как LinearSolve?Одна вещь, с которой многие из вас могут согласиться наверняка, - это то, что если у нас очень большая Линейная система, то мы лучше ее решим с помощью стандартного Линейного решателя.Встроенный решатель не предназначен для действительно больших проблем.

Теперь, когда Mathematica 8 предлагает улучшенные возможности компиляции и связывания библиотек, мы можем ожидать использовать некоторые из этих решателей из Mathematica.Вопрос в том, требует ли это небольшой настройки исходного кода, или вам нужен продвинутый мастер для этого.Здесь, на этом форуме, мы можем начать связывать некоторые прекрасные программы с открытым исходным кодом, такие как GotoBLAS, с Mathematica и обмениваться мнениями.Менее опытные люди могут получить представление от профессиональных пользователей, и в конце мы получим намного более сильную Mathematica.Это будет открытый проект для постоянно растущего сообщества Mathematica и платформа, на которой эти новые возможности Mathematica 8 могут быть прозрачно документированы для будущих пользователей.

Я надеюсь, что некоторые из вас здесь дадут твердые идеи о том, как мы можем запустить GotoBLAS из Mathematica.Поскольку новые возможности компиляции и ссылки на библиотеку обычно не очень хорошо документированы, они не очень часто используются обычными пользователями.Этот вопрос может служить игрушечным примером для документирования этих новых возможностей Mathematica.Помощь в этом направлении со стороны опытных участников форума действительно поднимет мотивацию новых пользователей, таких как я, а также научит нас очень полезной возможности расширить численный арсенал Mathematica.

Ответы [ 2 ]

7 голосов
/ 05 августа 2011

Короткий ответ, я думаю, заключается в том, что это не то, что вы действительно хотите сделать.

GotoBLAS, насколько я понимаю, является специфической реализацией BLAS, которая обозначает подпрограммы Basic Linear Algebra.«Базовый» здесь действительно означает «базовый» - например, умножить матрицу на вектор.Таким образом, BLAS не является решателем, который вызовет такая функция, как LinearSolve.LinearSolve будет (в зависимости от точной формы аргументов) вызывать команду LAPACK, которая представляет собой пакет более высокого уровня, построенный поверх BLAS.Таким образом, чтобы действительно связать GotoBLAS (или любой BLAS) с Mathematica, нужно было бы перекомпилировать все ядро.

Конечно, можно написать программу на C / Fortran, скомпилированную с GotoBLAS, и затем связать еев Mathematica.Получающаяся программа будет использовать GotoBLAS только при выполнении каких-либо конкретных команд, которые вы связали с Mathematica, что, скорее, пропускает весь смысл BLAS.

0 голосов
/ 05 апреля 2015

Ядро Wolfram (Mathematica) уже связано с высокооптимизированной библиотекой Intel Math Kernel и распространяется вместе с Mathematica. MKL является многопоточным и векторизованным, поэтому я не уверен, что GotoBLAS улучшит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...