Mathematica中如何链接这个线性求解器?
这是一个很好的线性求解器,名为GotoBLAS。 它可供下载并在大多数计算平台上运行。 我的问题是,是否有一种简单的方法将此解算器与Mathematica内核链接,以便我们可以将它称为LinearSolve? 你们大多数人可能会同意的一件事是,如果我们有一个非常大的线性系统,那么我们最好通过一些行业标准的线性求解器来解决它。 内置求解器不适用于真正的大问题。
既然Mathematica 8已经提供了更好的编译和库链接功能,我们可以期望在Mathematica中使用一些解决方案。 问题是这样做是否需要对源代码进行微调,或者您需要成为高级向导才能完成。 在这个论坛中,我们可能会开始链接一些优秀的开源程序,如GotoBLAS和Mathematica,并交换我们的观点。 没有经验的人可以从专业用户那里获得一些见解,最终我们得到一个更强大的Mathematica。 对于日益增多的Mathematica社区而言,这将是一个开放项目,并且可以为未来用户透明地记录这些新推出的Mathematica 8功能。
我希望你们中的一些人能够给出我们如何从Mathematica内部运行GotoBLAS的可靠想法。 由于较新的编译和库链接功能通常没有很好的文档记录,因此它们不常用于常见用户。 这个问题可以作为一个玩具的例子来记录Mathematica的这些新功能。 经验丰富的论坛成员在这个方向上的帮助将真正提升像我这样的新用户的动力,同时它将教会我们一个非常有用的东西来扩展Mathematica的数字捣弄武库。
我想,简短的回答是,这不是你真正想做的事情。
据我了解,GotoBLAS是BLAS的一个特定实现,代表基本线性代数子程序。 例如,“基本”真的意味着很基本 - 将矩阵乘以一个向量。 因此,BLAS不是像LinearSolve
这样的函数可以调用的求解器。 LinearSolve
将(根据参数的确切形式)调用LAPACK命令,该命令是建立在BLAS之上的更高级别的包。 因此,要真正将GotoBLAS(或任何BLAS)链接到Mathematica中,实际上需要重新编译整个内核。
当然,可以编写一个针对GotoBLAS编译的C / Fortran程序,然后将其链接到Mathematica中。 在运行任何你已经链接到Mathematica的特定命令时,所得到的程序只会使用GotoBLAS,然而,它却错过了BLAS的全部要点。
Wolfram内核(Mathematica)已经与高度优化的英特尔数学核心库链接,并随Mathematica一起发布。 MKL是多线程和矢量化的,所以我不确定GotoBLAS会改进什么。
链接地址: http://www.djcxy.com/p/35581.html上一篇: How can this linear solver be linked within Mathematica?