We don’t allow questions seeking recommendations for software libraries, tutorials, tools, books, or other off-site resources. You can edit the question so it can be answered with facts and citations.
Closed 10 years ago.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
如果您不喜欢 Fortran 代码,一个相当快速的 C++ 密集矩阵库,具有适度的多核支持、编写良好的代码和良好的用户界面,特征。将其代码转换为 D(或从中获取一些算法)应该很简单。
现在我的“考虑一下你的要求”:“每个人”(Mathematica、Matlab、Maple、SciPy、GSL、R、...)使用 ATLAS / LAPACK、UMFPACK、PARDISO、CHOLMOD 等是有原因的。这很难致力于编写快速、多线程、内存高效、可移植且数值稳定的矩阵求解器(相信我,我已经尝试过)。 ATLAS 和其他公司都投入了很多艰苦的工作。
因此,我的方法是根据您的矩阵类型为相关库编写绑定,并从 D 链接到 C 接口。也许 multiarray 中的绑定就足够了(我没有尝试过)。否则,我建议查看另一个 C++ 库,即 uBlas 和各自的绑定 的想法。
If you don't like Fortran code, one reasonably fast C++ dense matrix library with modest multi-core support, well-written code and a good user-interface is Eigen. It should be straightforward to translate its code to D (or to take some algorithms from it).
And now my "think about your requirements": there is a reason why "everyone" (Mathematica, Matlab, Maple, SciPy, GSL, R, ...) uses ATLAS / LAPACK, UMFPACK, PARDISO, CHOLMOD etc. It is hard work to write fast, multi-threaded, memory-efficient, portable and numerically stable matrix solvers (trust me, I have tried). A lot of this hard work has gone into ATLAS and the rest.
So my approach would be to write bindings for the relevant library depending on your matrix type, and link from D against the C interfaces. Maybe the bindings in multiarray are enough (I haven't tried). Otherwise, I'd suggest looking at another C++ library, namely uBlas and the respective bindings for ideas.