使用超级计算机进行科学研究的研究人员通常不会将自己限制在一个系统中。他们将项目转移到任何可用的资源上,通常同时使用许多不同的系统,在他们的实验室、校园集群、高级计算中心(如TACC)和云计算中。
 
这并不是缺乏忠诚,这只是研究生活中的一个事实——机会在变化,饥饿的科学家们找到了他们完成研究所需要的东西。
 
不过,研究人员使用的系统不一定相同。它们可能包含具有不同架构的不同硬件,以及不同的编译器或库。
 
这种机会主义的计算范式为计算科学家和系统管理员带来了大量额外的工作——调整旧代码以适应新系统或多次安装软件包。随着操作系统的发展,支持在不赞成的环境中开发的代码成为了一个可重现性的挑战。
 
近年来,出现了一种新的解决方案。它通常被称为“容器”,它涉及一种隔离形式,在这种隔离形式中,研究人员的代码与所有软件依赖项打包在一起,这样它就可以在许多站点上运行,而不需要重新编译。通过将应用程序的许多依赖项合并到自持续映像中,容器避免了许多问题。
 
在2013年Docker的普及下,容器很快被商业和学术计算领域所接受。TACC早期采用者,2016年开始启用集装箱科学——首先通过码头工人,并通过奇点,最近2015年发布的一个研究小组在劳伦斯伯克利国家实验室,是特别适合于高性能计算机,包含成千上万的紧密相连的处理器。
 
容器科学
TACC系统容器的用户有Thomas Hughes,航空航天工程和工程力学教授,是得克萨斯大学奥斯汀分校和国家科学与工程学院的一员,还有David Kamensky,现在加州大学的助理教授。他们利用容器来建立冠状动脉血流的预测模型并研究湍流。
 
“我们开始使用容器的原因是在Stampede2上运行数值PDE(偏微分方程)软件FEniCS,”Kamensky说。FEniCS是一个复杂的软件,有很多依赖项,安装起来很困难。
 
当需要在FEniCS上执行等几何分析时,他们将FEniCS项目团队维护的Docker图像转换为一个Singularity图像,最终在Stampede2上使用了超过1000个节点小时。
 
他们与科罗拉多大学博尔德分校(CU Boulder)的约翰·埃文斯(John Evans)合作进行了一项湍流模型研究,由于集装箱化,他们能够轻松地从Stampede2转换到CU Boulder的网络基础设施。
 
“我认为超级计算机中心维护和调试所有不同的软件来满足每个科学家的需求是不现实的,”Kamensky说。“有了Singularity,他们只需要维护一个软件。”
 
Sharon Glotzer,密歇根大学的一位化学工程教授和美国国家科学院的一员和国家工程院,还使用奇点TACC和其他几个中心学习如何从液体到固体物质的积木转变为了更好地理解如何设计新材料。
 
特别是,她的团队使用HOOMD-Blue(一种通用的粒子模拟工具包),利用分子模拟来研究大量硬粒子的组装行为。
 
“我们利用XSEDE上的计算资源——包括Stampede2、Comet和Bridges——Oak Ridge Leadership计算设施的Summit,以及本地集群,”研究领域专家Joshua Anderson说,他为Glotzer的小组构建和维护容器映像。“Singularity容器允许我们在所有这些系统中使用相同的软件环境,这样我们就可以很容易地在它们之间转换我们的工作流程。”
 
系统之间的转换并不总是那么简单。移动使用消息传递接口(Message Passing interface, MPI)来利用超级计算机的并行计算能力的工作流仍然是研究人员在不同集群上使用容器时面临的最大挑战。
 
Anderson说:“每个都需要在容器中有自己兼容的MPI和用户空间驱动程序堆栈。”为了解决这个问题,Anderson基于相同的容器配方为每个系统构建专门的映像。在2019年,他们的团队在Stampede2和其他系统上使用了超过5300个节点小时。
 
Anderson说:“每个都需要在容器中有自己兼容的MPI和用户空间驱动程序堆栈。”为了解决这个问题,Anderson基于相同的容器配方为每个系统构建专门的映像。在2019年,他们的团队在Stampede2和其他系统上使用了超过5300个节点小时。
 
地球物理学教授迈克尔•格尼斯和加州理工学院地震实验室的主任,使用容器Stampede2开发俯冲和地幔流计算模型,执行大量并行计算网格搜索,并探索参数空间的一阶影响地球的进化使用地球动力学的代码,Underworld2。
 
将Underworld2配置为docker映像允许Gurnis的团队绕过依赖包的安装,根据需要配置环境,并轻松地在Stampede2上运行代码。
 
Ian Wang是TACC的高性能计算性能与架构组的研究助理,他与黑社会软件的开发人员一起将工具封装起来。“我认为这是第一个使用MPI在Singularity容器中大规模运行的应用程序,”王说。“实际上,用户和开发人员帮助我识别了Singularity中的一个bug,这个bug只在大规模的MPI运行时出现。”
 
到目前为止,格尼斯的团队已经在集装箱中使用了11000个节点小时,预计还会继续使用。“有了拉出的映像和Singularity,我们就可以避免安装相关包和配置环境的麻烦。容器化使得在Stampede2上安装和运行大型代码变得很容易,”Gurnis小组的研究生Yida Li说。
 
容器有助于社区计算工作
生物学和生物信息学是采用容器化的两个领域。这些学科相对来说是HPC领域的新手,该领域新代码和工具的开发速度非常快。这导致了一些问题。
 
“最近的一项研究发现,在过去10年发布的生物信息学软件中,有50%无法安装,”TACC生物信息学专家、生命科学计算小组成员格雷格·琴达(Greg Zynda)说。“它们是为传统操作系统设计的,无法在今天的超级计算机上运行。我们试图用容器来解决这个问题。”
 
Zynda领导了TACC的一项工作,使TACC的超级计算机上可以使用16000个生物容器,从而消除了生命科学研究人员对该领域的每一个软件进行打包和维护的需要。
 
TACC最大的两个协作软件服务项目——DARPA的协作发现与设计(SD2E)项目和Cyverse——也广泛地利用了容器。
 
SD2E使用自动化和机器学习来加速发现底层模型没有被很好理解的领域。该项目汇集了美国各地具有互补能力的研究实验室和公司,并利用TACC的网络基础设施简化了它们之间的交互,包括:用于共享、起源和发现的集中式数据存储库和数据目录;Tapis api支持使用云和HPC后端硬件的自动化、事件驱动的数据分析;以及一个由命令行工具、版本控制和持续集成组成的开发人员生态系统。
 
“这个平台非常强大和灵活,几乎每个组件都使用Docker容器作为核心构件,”TACC生命科学计算组中管理新兴技术的John Fonner说。“分析工具、持久服务甚至api本身几乎完全由容器组成。”
 
Cyverse是一个由nsf资助的项目,它帮助生命科学家使用网络基础设施来处理庞大的数据集和复杂的分析,从而支持数据驱动的发现。CyVerse包括一个数据存储设施,一个交互式的、基于web的分析平台,以及用于计算、分析和存储的云基础设施——其中大部分是在TACC构建和维护的。
 
“Docker容器是Cyverse研究人员将定制应用程序集成到平台中的主要方式,”Fonner说。“这包括非交互式云计算和高性能计算应用程序,以及交互式‘副’应用程序,如Jupyter笔记本。”
 
Zynda说,虽然容器常常被当作灵丹妙药,但是使用容器也要做一些权衡。容器并不总是尽可能地优化性能,而且一旦创建它们,它们就会是静态的,不容易更改。
 
“但一旦发布了一个容器并能够解决问题,可能就不需要更改了,”他说。
 
TACC不仅支持使用容器,还积极开发使容器更容易使用的工具。这方面的一个例子是移动式龙门起重机(RGC)——得名于从港口卸集装箱的机器。研资局将货柜整合至TACC的环境模组系统(Lmod),以提供熟悉的互动,使货柜系统变得透明。
 
TACC还通过频繁的研讨会、网络研讨会和与TACC研究所的整合来培训研究人员使用容器。
 
Fonner说:“我们相信软件容器是可再生计算的重要组成部分。”“我们所有的HPC集群和云基础设施都支持容器。在内部,我们在标准开发实践中大量使用Docker,并将映像部署到同时使用Docker和Singularity来计算资源。在很短的时间内,容器已经成为TACC支持科学的核心部分。”
 
原文:https://www.tacc.utexas.edu/-/supporting-portable-reproducible-computational-science