如何在Mathematica中链接这个线性求解器?

Pla*_*iac 5 wolfram-mathematica compilation numerical-methods data-structures

这是一个很好的线性求解器,名为GotoBLAS.它可以下载并在大多数计算平台上运行.我的问题是,是否有一种简单的方法可以将此求解器与Mathematica内核相链接,以便我们可以像LinearSolve一样调用它?大多数人肯定会同意的一件事是,如果我们有一个非常大的线性系统,那么我们最好通过一些行业标准的线性求解器来解决它.内置求解器不适用于非常大的问题.

现在Mathematica 8已经提出了更好的编译和库链接功能,我们可以期望在Mathematica中使用一些解算器.问题是需要对源代码进行少量调整,或者您需要成为高级向导才能执行此操作.在这个论坛中,我们可以开始链接一些优秀的开源程序,如GotoBLAS和Mathematica,并交换我们的观点.经验不足的人可以从专业用户那里获得一些见解,最后我们得到了更强大的Mathematica.对于不断增加的Mathematica社区和一个平台来说,这将是一个开放式项目,Mathematica 8的这些新引入的功能可以为未来用户透明地记录下来.

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

Mar*_*ure 7

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

据我所知,GotoBLAS是BLAS的一个特定实现,它代表Basic Linear Algebra Subroutines.例如,"基本"在这里意味着非常基本 - 将矩阵乘以向量.因此,BLAS不是函数LinearSolve会调用的解算器. LinearSolve将(取决于参数的确切形式)调用LAPACK命令,该命令是在BLAS之上构建的更高级别的包.因此,要真正将GotoBLAS(或任何BLAS)链接到Mathematica,真的需要重新编译整个内核.

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