5

GotoBLASという優れた線形ソルバーを次に示します。ダウンロード可能で、ほとんどのコンピューティング プラットフォームで実行できます。私の質問は、このソルバーを Mathematica カーネルとリンクして、LinearSolveのように呼び出すことができる簡単な方法はありますか? ほとんどの人が確実に同意することの 1 つは、非常に大規模な線形システムがある場合は、業界標準の線形ソルバーで解決する方がよいということです。組み込みのソルバーは、非常に大きな問題には適していません。

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

Mathematica 内から GotoBLAS を実行する方法について、確かなアイデアを提供してくださる方がいらっしゃることを願っています。新しいコンパイルおよびライブラリ リンク機能は、通常、十分に文書化されていないため、一般的なユーザーによって頻繁に使用されることはありません。この質問は、Mathematica のこれらの新しい機能を文書化するためのおもちゃの例として機能します。経験豊富なフォーラム メンバーによるこの方向への支援は、私のような新規ユーザのモチベーションを本当に高めてくれるだけでなく、Mathematica の数値計算機能を拡張するための非常に役立つことを教えてくれます。

4

2 に答える 2

7

簡単に言えば、これはあなたが本当にやりたいことではないということです。

私が理解しているように、GotoBLAS は、Basic Linear Algebra Subroutines の略である BLAS の特定の実装です。「基本」とは、ここでは非常に基本的なことを意味します。たとえば、行列にベクトルを掛けます。したがって、BLAS は関数 likeLinearSolveが呼び出すソルバーではありません。 LinearSolve(引数の正確な形式に応じて)BLASの上に構築された高レベルのパッケージであるLAPACKコマンドを呼び出します。したがって、実際に GotoBLAS (または任意の BLAS) を Mathematica にリンクするには、カーネル全体を再コンパイルする必要があります。

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

于 2011-08-05T11:42:03.243 に答える
0

Wolfram Kernel (Mathematica) は高度に最適化された Intel Math Kernel Library にすでにリンクされており、Mathematica とともに配布されています。MKL はマルチスレッド化され、ベクトル化されているため、GotoBLAS で何が改善されるかはわかりません。

于 2015-04-05T13:35:13.097 に答える