gpt4 book ai didi

c++ - Fortran 与 C++,如今 Fortran 在数值分析中是否仍然具有优势?

转载 作者:IT老高 更新时间:2023-10-28 13:59:52 25 4
gpt4 key购买 nike

随着 C++ 编译器(尤其是 intel 编译器)的快速发展,以及在 C/C++ 代码中直接应用 SIMD 函数的能力,Fortran 在数值计算领域是否仍然具有真正的优势?

我来自应用数学背景,我的工作涉及大量数值分析、计算、优化等,并具有严格定义的性能要求。

我对 Fortran 几乎一无所知,我在 C/CUDA/matlab 方面有一些经验(如果您一开始就认为后者是一门计算机语言),而且我的日常任务涉及分析非常大的数据(例如 10GB-large矩阵),并且似乎该程序至少花费了 2/3 的时间在内存访问上(这就是为什么我将它的一些工作发送给 GPU),你们认为我尝试 fortran 例程可能值得吗?至少在我的代码的某些性能关键部分上提高我的程序的性能?

因为那里涉及的复杂性和需要完成的事情,如果只有那里有显着的性能优势,我只会执行该例程,在此先感谢。

最佳答案

与 C++ 相比,Fortran 具有严格的别名语义,并且几十年来一直在积极调整数值性能。使用 CPU 处理数据数组的算法通常有可能从 Fortran 实现中受益。

编程语言大战不应被太认真地对待,但在 15 个基准测试中,Fortran 在其中四个(对于英特尔 Q6600 单核)的速度排名第一,超过任何其他单一基准语。您可以看到 Fortran 最出色的基准是大量数值的基准:

反例:

  • k-nucleotide慢 500%(此基准主要关注更复杂的数据结构和字符串处理,这不是 Fortran 的强项)

您还可以看到一个摘要页面“how many times slower”,它显示在所有实现中,Fortran 代码平均最接近每个基准测试的最快实现——尽管分位数条比 C++ 大得多,表明 Fortran 不适合 C++ 擅长的某些任务,但您应该已经知道了。

所以你需要问自己的问题是:

  1. 这个函数的速度是否如此重要,以至于在 Fortran 中重新实现它值得我花时间?

  2. 性能如此重要,以至于我在学习 Fortran 方面的投资会得到返回吗?

  3. 是否可以使用像 ATLAS 这样的库来代替自己编写代码?

回答这些问题需要详细了解您的代码库和业务模型,因此我无法回答这些问题。但是,是的,Fortran 实现通常比 C++ 实现更快。

您做出决定的另一个因素是示例代码的数量和可用引用实现的数量。 Fortran 的悠久历史意味着有大量的数字代码可供下载,甚至可以访问图书馆。与往常一样,您需要筛选它才能找到好东西。

关于c++ - Fortran 与 C++,如今 Fortran 在数值分析中是否仍然具有优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com