我有一个 Matlab 代码计算特征值 PDE 的解决方案。它由两部分组成:刚度/刚度矩阵的组装和解决广义特征值问题。我提到组装是使用 Matlab 中的矢量化代码完成的。我可能需要在一个相当大的测试用例数据库(几百万个案例)上运行该程序。在这种情况下,计算时间方面的性能变得明显。
我想知道如果我尝试用 C/C++ 编写算法会有什么好处?(不确定我是否有能力...... :) 但我想权衡潜在的好处)
我猜组装可能会更快,但特征值求解器在 Matlab 中非常有效。
你对这样的情况有什么经验?与 Matlab 相比,使用更快的语言进行编码可以显着减少计算时间吗?
根据要求提供有关该问题的更多详细信息:
- Laplace-Beltrami 算子在球体的一部分上的特征值计算
- 我在表面域的三角形网格上使用拉格朗日 P1 有限元
- 大约 780000 个点(自由度)的 Matlab 计算时间示例:装配 3 秒,特征值计算 26 秒
显然,计算的重要部分是找到特征值。也许使用 SlepC 可以帮助解决这个问题……(在一些旧手册中,我看到了 Matlab 的 SlepC 接口,但在新手册中没有……)