5

这是一个名为GotoBLAS的优秀线性求解器。它可供下载并在大多数计算平台上运行。我的问题是,有没有一种简单的方法可以将此求解器与 Mathematica 内核联系起来,以便我们可以将其称为 LinearSolve?你们大多数人肯定会同意的一件事是,如果我们有一个非常大的线性系统,那么我们最好用一些行业标准的线性求解器来解决它。内置求解器不适用于真正的大问题。

现在 Mathematica 8 已经提供了更好的编译和库链接功能,我们可以期望使用 Mathematica 中的一些求解器。问题是这是否需要对源代码进行少量调整,或者您需要成为高级向导才能做到这一点。在这个论坛中,我们可能会开始将 GotoBLAS 等一些优秀的开源程序与 Mathematica 联系起来,并交流我们的看法。经验不足的人可以从专业用户那里获得一些见解,最后我们会得到更强大的 Mathematica。对于不断增长的 Mathematica 社区来说,这将是一个开放项目,也是一个平台,可以为未来的用户透明地记录 Mathematica 8 的这些新引入的功能。

我希望你们中的一些人能够就如何在 Mathematica 中运行 GotoBLAS 提供可靠的想法。由于较新的编译和库链接功能通常没有很好的文档记录,因此普通用户不会经常使用它们。这个问题可以作为一个玩具示例来记录 Mathematica 的这些新功能。经验丰富的论坛成员在这个方向上的帮助将真正提升像我这样的新用户的积极性,并且它会教给我们一个非常有用的东西来扩展 Mathematica 的数字处理库。

4

2 回答 2

7

我认为,简短的回答是,这不是你真正想做的事情。

据我了解,GotoBLAS 是 BLAS 的特定实现,它代表基本线性代数子例程。“基本”在这里实际上意味着非常基本 - 例如,将矩阵乘以向量。因此,BLAS 不是函数喜欢LinearSolve调用的求解器。 LinearSolve将(取决于参数的确切形式)调用 LAPACK 命令,该命令是构建在 BLAS 之上的更高级别的包。因此,要将 GotoBLAS(或任何 BLAS)真正链接到 Mathematica,确实需要重新编译整个内核。

当然,可以编写一个针对 GotoBLAS 编译的 C/Fortran 程序,然后将其链接到 Mathematica。生成的程序只会在运行您链接到 Mathematica 的任何特定命令时使用 GotoBLAS,但是,这会错过 BLAS 的全部要点。

于 2011-08-05T11:42:03.243 回答
0

Wolfram 内核 (Mathematica) 已经链接到高度优化的英特尔数学内核库,并与 Mathematica 一起分发。MKL 是多线程和矢量化的,所以我不确定 GotoBLAS 会改进什么。

于 2015-04-05T13:35:13.097 回答