只需 5 分钟即可在 Linux 超级计算机上启动 16,384 个 Windows 应用程序
- 麻省理工学院的研究人员开发了一种模型,可在 5 分钟内在 Linux 超级计算机上同时运行 16,384 个 Windows 应用程序。
- 为此,他们使用了林肯实验室 LLMapReduce 技术以及 Wine Windows 兼容层。
由于摩尔定律的步伐正在放缓,因此有必要使用并行处理来提高应用程序性能。神经网络、物理模拟和数据分析应用程序正在以显着的速度发展,它们利用并行处理的力量来实现其性能目标。
要运行此类数据密集型应用程序,您需要一些基于某些操作系统的软件,例如 Microsoft Windows,它在实现并行计算方面拥有丰富的经验。
然而,世界排名前 500 名的超级计算机都在 Linux 上运行,它们能够在数秒内在数千个内核上执行交互式应用程序。通常,虚拟机(VM)用于在Linus计算机上运行Windows程序,这给应用程序带来了很大的开销。
每个虚拟机在超级计算机上执行多个虚拟机可能需要几秒钟(有时是几分钟)。将它们扩展到现有超级计算机中的数千个内核肯定会提高效率和性能问题,使得在超级计算机上同时运行大量 Windows 应用程序变得困难。
现在,麻省理工学院的一组研究人员提出了一种新技术,可以在现代超级计算机上的数千个处理器上快速启动和执行 Windows 应用程序。特别是,他们演示了在 5 分钟内启动 16,000 个 Windows 应用程序(每个应用程序由一个核心处理)。
它是如何工作的?
为了在 Linux 超级计算机上快速启动 Windows 应用程序,研究人员使用了 Lincoln Lab LLMapReduce(多级映射缩减)技术以及 Wine Windows 兼容层。对于高性能计算,多级调度稍微改变了分析代码,以通过单个作业启动来处理大量数据集。
MIT SuperCloud 软件堆栈配备了一个易于使用的界面,可以访问 LLMapReduce,在集群上高效运行数千个任务,将复杂的并行调度、依赖关系解析和任务提交作业减少到一行代码,同时通过最小化每个任务的延迟来提高任务性能。
由于 LLMapReduce 不基于任何特定语言,因此它可以与任何可执行文件配合使用,这使得它非常适合同时启动多个 Wine 实例。
SLURM 调度程序的组件 |由研究人员提供
他们使用名为 Slurm Workload Manager 的开源作业调度程序来快速识别资源,将它们分配给任务,在分配的资源上安排任务执行,启动它们,在任务运行时监视任务,并在任务终止时执行 Epilog 清理。
参考:arXiv:1808.04345
结果
Windows实例的启动时间和启动率
研究人员在一台包含 648 个计算节点(每个节点不少于 64 个 Xeon Phi 处理核心)的超级计算机上实现了他们的系统,总共有 41,472 个核心。他们在 1,2,4,8…256 个节点上执行了单个 Window 实例,然后在 256 个节点上的每个节点上执行了 2,4,8…64 个实例,这使得它们总共有 16,384 个并发实例。
阅读:内存处理单元可以有效地实现人工智能算法
所有这些实例的执行时间接近 5 分钟,从而在超级计算机上支持各种可执行的 Windows 应用程序。该团队计划将此功能扩展到更多数量的处理器,执行更多样化的程序。
工业技术