我正在学习计算材料物理学课程。教授用fortran编码,用lapack解决特征值问题。到目前为止,我只知道 C++。有一个与 LAPACK 相同但在 c++ 中的等效库?哪个是最好的?我应该更喜欢使用 fortran 而不是 c++ 作为我的范围吗?谢谢
C++ 上的 LAPACK 等效项,哪个是最好的?
计算科学
C++
正则
拉帕克
2021-12-08 08:22:21
1个回答
绝对使用 C++ 和Eigen。原因:
- 听起来它最适合您的情况。
- Eigen 使用优化标志 (
-O3) 和良好的编译器(GCC、Clang)击败了 LAPACK。至少对于我最近执行的大多数测试(密集线性代数) - 一旦你调试了你的应用程序,使用
-ffast-math编译器标志来获得巨大的加速,但测试你的输出,看看它是否仍然正确。我注意到这对 Eigen 特别有用。 - C++ 是一种积极发展的高性能语言。Eigen 利用其高级功能来优化您的代码并使大多数事情在编译时和 SIMD/矢量化。
- 实际上,Eigen 优于 LAPACK 的唯一缺点是 LAPACK 具有标准化的 API。在某些情况下,您可以切换到另一个 LAPACK 库以获得更高的性能。
- 不过,请密切关注 LAPACK,以了解 Eigen 中任何不能很好地为您服务的例程。
- 我见过的许多生产代码(计算机视觉、增强现实等)都在使用 Eigen,之前使用的是 LAPACK。
- 当您想更密切地关注您的教授并与 Eigen 进行比较以成为一名好学生时,您始终可以将 LAPACK 与您的 C++ 代码一起使用。但是如果你只是想跟着教授,不考虑最好的选择,你还不如学习Fortran。
- 请参阅:Eigen 与 BLAS/LAPACK 相比如何
也就是说,Fortran 在常用用法中比 C++ 更简单、更快。请参阅此视频的开头和此 stackoverflow 帖子的第一个答案。
其它你可能感兴趣的问题