【scratch 源码生成】【android动漫源码】【caffe 源码架构】slurm源码

1.Auto-FEP for Gromacs
2.Centos7+Torque+Maui安装
3.HPC Resolution 之 Slurm (1)

slurm源码

Auto-FEP for Gromacs

       本篇内容旨在提供使用 Gromacs 实现自由能微扰 (FEP) 的自动化脚本,以简化繁杂的批处理流程。FEP 是在经典物理领域计算自由能最准确的方法,而 Gromacs 已经支持 FEP 的计算。然而,使用 Gromacs 进行 FEP 计算时,scratch 源码生成仍存在一定的批处理复杂性。为了解决这一问题,本文提供了一系列 shell 脚本,包括基于服务器(使用 slurm 调度系统)和基于个人电脑的脚本,以方便用户在不同环境下的 FEP 计算需求。若在使用过程中遇到任何问题,请联系作者以获取支持。

       在进行 FEP 计算前,请确保您的系统满足以下要求:

       Gromacs 安装(版本应新于 5.0.0)。

       Alchemical-analysis 安装,遵循其官网教程,使用已修改过的源代码以解决潜在问题。

       接下来是操作流程,请遵循以下步骤:

       准备工作:

       在主文件夹中,将所有配置好的文件(如 .top、.itp、.ndx、.mdp、.gro 等)和根据任务自定义修改后的 .mdp、.ndx 等文件复制到主目录中。确保只有一个 .gro 文件,以便脚本正确识别。

       如果使用的是自定义力场,请将相关 .ff 文件一同复制到主目录。android动漫源码

       将所有脚本(根据设备环境选择 PC 脚本或服务器脚本)复制到主目录。

       操作流程:

       1. 主文件夹配置:在此步骤中,需在主目录中准备所有必要的文件和脚本,确保每个文件都已正确设置和准备用于 FEP 计算。

       2. 运行脚本:根据设备环境选择相应的脚本,进行自动化 FEP 计算。

       PC 脚本:一键运行,但未测试过,可能存在错误或效率问题。

       服务器脚本:分为多个阶段,包括:

       Prepare.sh:配置 个窗口的子文件夹,并在每个窗口中修改参数和复制文件。

       Minimization.sh:依次运行能量最小化任务,这些任务时间极短,因此在当前终端执行。

       Npt.sh 和 Npt_sub.sh:Npt_sub.sh 检查每个窗口中的最小化任务是否成功,如果成功,则通过 gmx grompp 和 npt.sh 进行后台提交。需注意手动调整部分脚本以适应特定任务需求,并优化 mdrun 命令。

       Md.sh 和 Md_sub.sh:与 Npt 同理,用于提交分子动力学模拟任务。

       Collect.sh:在主目录下运行,收集并分析 dhdl 文件。

       未来规划:计划实现一键分析功能,以提高使用效率。以下为当前的自动化流程示意图,具体步骤请参照上述说明。

Centos7+Torque+Maui安装

       前言

       作业调度系统对于学科计算至关重要,caffe 源码架构它优化计算资源分配与管理用户作业,提升效率。常见调度软件有Torque、MAUI、SGE、slurm、HTcondar、openPBS等。本文记录了多次成功安装Torque与MAUI的步骤,供参考。

       特别提示:在执行所有命令前,请确保在解压源码文件并进入文件夹。

       下载

       访问Torque官网和MAUI下载页面,或使用GitHub下载。

       单机安装过程

       确认网络与DNS配置:使用ping命令检查主机外网可达性与DNS设置。

       系统环境确认与软件包安装

       以root用户登录,确保网络配置正确,执行yum命令检查与配置yum文件,安装所有所需软件与库。

       主机名确认与修改

       主机名需正确以供作业调度使用。使用hostname命令确认主机名,若主机名以数字开头,需更改为字母开头。修改主机名后,同步修改/etc/hosts文件与/var/spool/torque/server_name文件。

       查看主机与IP对应关系

       使用cat命令查看/etc/hosts文件,确认主机名与IP对应关系。对于单机安装,确保对应网卡状态激活;集群使用时,仿ping源码管理节点主机名应选计算IP对应的主机名。

       确认IP地址与开始编译安装Torque

       解压Torque源码包,执行预编译命令。通过参数指定安装路径、作业调度命令与管理主机,最后执行编译与安装。

       添加库到系统与作业调度服务

       将安装的库添加至系统,并将Torque服务拷贝到/etc/init.d/目录,使环境生效。

       初始化与启动服务

       运行初始化与启动命令,完成Torque服务的安装。

       添加计算节点与系统自动启动服务

       在安装完成后,添加计算节点资源至配置文件。确认所有节点均已完成安装与配置,系统自动启动服务。

       安装验证

       重启系统后,使用qnodes命令验证安装成功。

       单机MAUI的安装

       MAUI作为功能丰富的集群任务调度器,适合中小集群使用。解压源码包,执行预编译命令,配置MAUI安装路径,完成安装。

       集群安装过程

       集群安装与单机安装类似,增加了计算节点安装Torque客户端过程。收集集群信息,确认/etc/hosts文件包含所有计算节点的IP与主机名对照表。

       安装验证与集群Torque管理节点安装

       参照单机安装步骤完成管理节点的安装与验证。通过复制安装包与配置文件,外汇技术源码完成计算节点的安装。

       Torque与MAUI编译安装完成后的作业调度

       详细介绍了Torque与MAUI的安装过程,并提供了作业调度常用命令与作业脚本的编写指南,包括作业队列的创建与管理、常用命令介绍以及作业脚本范例。

HPC Resolution 之 Slurm (1)

       纲要:本文介绍slurm之以下几个方面:

       一、Slurm概述

       1.1 概念

       Slurm(Simple Linux Utility for Resource Management),是一个开源、容错、高可伸缩的集群管理和大型小型 Linux 集群作业调度系统。

       1.2 主要功能

       a. slurm可在一段时间内为用户分配独占或者非独占的计算资源,以便他们能够执行工作任务;

       b. slurm提供一个框架,以便管理并行任务在节点上的启动、执行和监视;

       c. slurm通过管理挂起的工作队列,来仲裁资源争夺。

       1.3 特性

       a. 简单:源码简单,可以让用户理解其源码并添加功能;

       b. 开源:任何一个使用者都可以在网上免费下载;

       c. 便携:Slurm用C语言编写的,可以移植于任何一个类UNIX系统上;

       d. 可扩展:可搭载于数十个节点的小集群,也可搭载于数千个节点的大集群上。

       二、Slurm架构

       2.1 网络架构

       a.三维环面结构

       Cray XT和XE支持此模式,此模式不需要作业在物理上相邻节点执行。在此模式下,Slurm使用希尔伯特曲线将节点从三维空间映射到一维空间。

       b.层次网络结构

       此模式下,slurm网络拓扑结构为一棵树,非叶子节点为交换机,叶子节点为计算节点,如图2.1所示,Slurm使用最佳匹配算法来选择最低层的交换机,使得此交换机层下面的叶子层资源满足作业需求。

       其网络拓扑结构需在topology.conf文件中明确写出。图2.1所对应的topology.conf如图2.2所示。

       2.2 资源管理架构

       如图2.3所示,slurm资源管理架构主要包括四部分。

       管理员———slurmctld

       计算节点——slurmd

       数据库———slurmdbd

       用户————用户命令

       2.2.1 slurmctld

       slurmctld (Slurm Central Daemon)为多线程进程,支持对多种数据结构的读写锁机制,当该进程启动时,它会读取slurm.conf文件,根据文件对系统进行配置。Slurmctld包含三大部分:Node Manager:负责监视集群中每个节点的状态,周期性地检查slurmd的信息,并异步地从slurmd接受更新后的配置信息。Partition Manager:依据节点和分区的状态为作业分配分区。Job Manager:接受用户的作业请求,并根据调度算法和优先级决定是否对作业执行挂起、执行、完成等操作。

       2.2.2 slurmd

       slurmd(Slurm local daemon)是一个运行在每个compute node上的多线程进程,负责通知central daemon此节点处于等待、执行、返回等状态。如图2.4所示,slurmd主要包含5个功能。

       Machine and Job Status Services:周期性地向slurmctld反馈节点和作业的状态信息。Remote Execution:在user执行完命令或slurmctldf指定完任务后,对该任务执行开始、监视和清除操作。其中开始执行进程之前要设置进程的limits,设置实际和有效的user id,建立环境变量,设置工作目录,设置核心文件路径、初始化Stream Copy Service等。Stream Copy Service:负责处理输入输出流重定向。Job Control:负责将Job终端请求传递给任何一组本地管理进程。

       2.3 slurm 安全认证机制

       Slurm提供了一个简单的安全模型:

       a.任何一个用户可以提交、执行和删除自己的任务;

       b.任何一个用户可以查看slurm configuration and state information

       c.只有授权用户可以更改slurm configuration and cancel any jobs

       其认证原理如图2.5所示。

       Slurm采用munge机制进行安全认证:

       a.Munge 进程运行在每一个节点上,通过getpeername()函数来确认用户信息,并产生一个凭证信息。该凭证信息包括:user ID,组ID,时间戳,生命周期,伪随机数等。

       b.Munge利用私钥生成一个MAC(Message Authentication Code)用于认证。

       c.然后Munge 用公钥加密包含MAC信息的认证。

       d.Slurm进程之间互相传递加密后的认证信息,并将自己接受到的认证信息发送给自己的munge。

       e.Munge利用自己的私钥去解密认证,获得user ID,group ID等信息。

       三、Slurm提交作业模式与原理

       3.1 Job Initiation Survey

       如图3.1所示。

       1. Srun进程连接slurm central daemon并请求资源和作业步初始化信息(包括job ID,可分配节点列表,job认证以及该作业是否可以被授权执行);

       2. Slurmctld issue 一个应答给srun,该应答包括节点列表和作业认证

       3. Srun 为每个任务初始化一个监听端口,并向slurmd发送一个message,要求该节点做初始化准备

       4. Slurmd初始化作业步,并连接srun等待输入流

       3.2 Three Modes for Submission of Jobs

       3.2.1 Interactive Mode

       如图3.2所示,交互模式以用户运行srun开始执行。Srun会向slurmctld发送一个信息,来请求资源和作业步的初始化。由于资源分配优先级的问题,srun可能不会立即得到回应。当资源可用时,slurmctld向srun发送回应信息,该信息包括作业步的认证,可用节点列表等。收到回复信息后srun向slurmd发送作业步初始化请求,slurmd判断收到的请求作业是否合法,然后回复srun。每一个slurmd调用一个作业线程来处理请求,对每一个请求返回一个任务线程,任务线程连接srun主机的端口来准备stdout和stderr线程。一旦此连接成功,任务线程便开始初始化用户在计算节点上的运行环境,工作目录和所需资源等。一旦用户进程退出,任务线程便记录退出时状态然后发送任务结束信息给srun,当所有的进程结束,作业线程便退出。当所有任务完成,srun便向slurmctld发送信息释放资源。当slurmctld确认srun不在需要资源,便向slurmd发送执行epilog命令。Slurmd向slurmctld发送epilog运行成功信息后,所有资源才会被归还到分区中。

       3.2.2 Batch Mode

       如图3.3所示,一旦batch作业提交,srun给slurmctld发送一个batch作业请求,该请求包含作业input/output的位置,当前工作目录环境,请求的节点数。Slurmctld将所有的请求按照某种优先级队列规则对他们进行排序。一旦资源满足并且作业优先级当前可以执行,slurm central daemon将给该作业分配资源并且告诉第一个被分配的节点该作业可以开始执行。此时作业为一个包含多个srun命令的作业脚本。计算节点上的slurmd应答slurmctld的运行作业请求、初始化作业线程、任务线程。脚本中的srun进程检测到分配给它的资源,然后开始初始化作业步,准备执行。当作业步执行完毕,脚本中的srun进程通知slurmctld并终止执行。而作业脚本此时继续执行下一条srun进程。一旦作业脚本执行完毕,运行该脚本的任务线程便收集退出状态,将任务退出信息发送给slurm central daemon,slurm central daemon注意到作业执行完毕,要求所有分配的节点执行epilog程序。当所有slurmd回应成功执行完毕epilog后,节点才会被归还给作业分区。

       3.2.3 Allocate Mode

       如图3.4所示,在此模式中,用户希望能申请资源,交互式地在资源上运行任务。Srun给slurmctld发送一个分配请求,如果资源可分配,则slurmctld应答srun。Srun在用户终端产生一个shell以便其使用资源。shell退出,则认定作业执行完毕。Shell中的srun读取环境变量和用户命令,并通知slurmctld,此时执行的作业为当前作业下的一个作业步。Slurmctld记录作业步信息并返回一个作业认证。接下来Srun用和交互模式相同的方法来初始化作业步。当用户退出shell,原始的srun接收到退出状态信息,通知slurmctld作业已完成,并退出。Slurm central daemon在每一个被分配节点上运行epilog程序,当所有被分配节点运行完毕该程序,节点才会被放回分区。

       本文主要参考:

       1. slurm.schedmd.com/quick...

       2. slurm.schedmd.com/slurm...

       3. slurm.schedmd.com/slurm...

       4.Andy B. Yoo, Morris A. Jette, Mark Grondona SLURM: Simple Linux Utility for Resource Management. JSSPP : -.

更多内容请点击【百科】专栏

精彩资讯