操作系统的选择对科学计算代码的性能有多重要?

计算科学 表现 基准测试
2021-12-07 11:22:12

普遍的说法是 Linux 更快,而且有充分的理由。但正如标题所述,操作系统的选择对科学计算代码的性能有多大影响?对于操作系统更直接涉及的事情(例如玩游戏或视频渲染),肯定会有区别。但是,如果我在 MATLAB 中运行一些代码,在 Julia 中求解偏微分方程,或者在使用 CUDA 在 GPU 上做一些线性代数:Windows、MacOS 和 Linux 之间实际上是否存在可测量的性能差异?

我想知道是否有人进行了基准测试以查看是否存在这种差异。由于使用的编译器不同,在使用 MATLAB 等软件时可能存在差异?或者,一个操作系统的 CUDA 驱动程序可能比另一个操作系统快得多?还是操作系统有时会像WDDM CUDA 问题那样干扰?

注意:我知道选择操作系统还有其他原因超出了这个问题的范围。我特别想知道性能。

2个回答

我记得两三年前读过关于全球 500 台最快计算机列表的操作系统分布统计数据。基于 Linux/unix 的运行计算机数量为 498,基于 Windows 的计算机数量为 2,没有 MacOS。不幸的是,我未能再次获得统计数据。维基百科的超级计算机文章只是指出:

“尽管大多数现代超级计算机使用 Linux 操作系统,但每个制造商都有自己特定的 Linux 衍生产品,并且不存在行业标准,部分原因是硬件架构的差异需要更改操作系统以优化每个硬件设计的操作系统” .

即使这篇文章没有给出分布的数量,它至少给出了基于 Linux 的计算机的一个明显趋势。在一个每一点性能都很重要的领域(并且使系统适应超级计算机规范所需的资金很可能不会,所以我不认为开源性质是这里的主要好处)。

在相当普通的工作站上,Linux 往往也有更好的资源管理,例如更少的内存使用,并且往往更稳定。然而,这是我个人的经验,背后没有统计数据,不应该在没有确认的情况下一概而论(Win 7 vs Ubuntu 14.04)。

原则上应该没有什么不同,因为底层工具包通常是相似的,如果不相同的话:库、编译器(和硬件)。在实践中,使用“瘦”节点可能会有所改进。这不是 GUI,没有在后台运行的电子邮件或操作系统可能用于促进用户体验的其他许多进程中的任何一个。直接从标准发行版在 linux 中设置“服务器”操作系统会更容易,这可能会导致运行浮点密集型代码的机器更精简。即使这样,只要在运行代码之外没有用户活动,优势也不会很明显。