5

GotoBLASという名前のリニアソルバーがあります。ほとんどのコンピューティングプラットフォームでダウンロードして実行できます。私の質問は、このソルバーをMathematicaカーネルにリンクする簡単な方法があるから、LinearSolveのように呼び出すことができるのですか?大部分のあなたが確信していることは、リニアシステムが非常に大きい場合は、業界標準のリニアソルバーで解決するほうがよいということです。組み込みソルバーは、本当に大きな問題を意味するものではありません。このリニアソルバーはMathematica内でどのようにリンクできますか?

Mathematica 8では、より良いコンパイルとライブラリリンク機能が登場したので、Mathematica内のソルバーの一部を使用することが期待されます。問題は、ソースコードを微調整する必要がないか、高度なウィザードを使用して実行する必要があることです。このフォーラムでは、GotoBLASのようないくつかの優れたオープンソースプログラムをMathematicaとリンクさせ、私たちの意見交換を開始するかもしれません。経験の少ない人は、プロユーザーからいくつかの洞察を得ることができ、最終的にはより強力なMathematicaを得ることができます。ますます増えているMathematicaコミュニティと、Mathematica 8のこれらの新しく導入された機能が将来のユーザのために透過的に文書化されるプラットフォームのためのオープンプロジェクトとなるでしょう。

ここでは、Mathematica内でGotoBLASをどのように稼働させることができるかについての確かなアイデアをお寄せいただきたいと思います。より新しいコンパイルおよびライブラリリンク機能は、通常、よく文書化されていないため、一般ユーザは頻繁には使用しません。この質問はMathematicaのこれらの新しい能力を文書化するおもちゃの例として働くことができます。経験豊かなフォーラムのメンバーがこの方向に手助けをすれば、私のような新しいユーザーのモチベーションが向上するだけでなく、Mathematicaのナンバー・クランチング・アーセナルを拡張するのに非常に有用なことが教えられます。

+2

MathLinkをご覧ください。それは学ぶのは簡単です。 – Szabolcs

+7

私はLinearSolveに広範な不満を感じていません。 SparseArrayを使用すると、数百万の方程式を簡単に処理できます。あなたの問題はどんなものですか? –

+0

Mathematicaがすでに何らかの形の線形ソルバーにリンクしている場合は、少なくとも私を驚かせることはありません。実際には、そうでないと私は驚いてしまうでしょう。これらがLAPACKとBLASの内部または外部バージョンであるかどうかは、テストされている限り重要ではありません。 [messages](http://stackoverflow.com/questions/1675387/finding-previously-defined-messages-in-mathematica/1682004#1682004)を見ると、それらはすでにLAPACKのサポートであることが示されます。私はそれを使用していない。 – rcollyer

答えて

7

短い答えは、私が思うに、これはあなたが本当にやりたいことではないということです。

私が理解するように、GotoBLASはBLASの具体的な実装であり、基本線形代数サブルーチンを表します。ここでの「基本的な」は基本的には非常に基本的な意味を持ちます。したがって、BLASは、LinearSolveのような関数が呼び出すソルバではありません。 LinearSolve(引数の正確な形式に応じて)BLASの上に構築された上位パッケージであるLAPACKコマンドを呼び出します。したがって、実際にGotoBLAS(またはBLAS)をMathematicaにリンクするには、本当にカーネル全体を再コンパイルする必要があります。

もちろん、GotoBLASに対してコンパイルされたC/Fortranプログラムを作成し、それをMathematicaにリンクすることもできます。 Mathematicaにリンクした特定のコマンドを実行するときには、結果として得られるプログラムはGotoBLASのみを使用しますが、むしろBLAS全体のポイントを失います。

0

Wolfram Kernel(Mathematica)は、すでに最適化されたインテルマスカーネルライブラリにリンクされており、Mathematicaとともに配布されています。 MKLはマルチスレッド化とベクトル化されているので、GotoBLASが改善するものはわかりません。

関連する問題