D 的快速线性系统求解器?

发布于 2024-10-16 11:48:37 字数 1540 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法唧唧 2024-10-23 11:48:37

如果您不喜欢 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文