千家信息网

Slurm集群搭建的教程

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,本篇内容主要讲解"Slurm集群搭建的教程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Slurm集群搭建的教程"吧!一、系统环境a) Centos 7.
千家信息网最后更新 2024年12月13日Slurm集群搭建的教程

本篇内容主要讲解"Slurm集群搭建的教程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Slurm集群搭建的教程"吧!

一、系统环境

a) Centos 7.8b) 两台机器规划IP 分别为10.10.0.20 与10.10.0.21c) 机器主机名分别为node1、node2d) 均关闭了防火墙以及selinuxe) 已经配置好SSH 免密、NIS、NFS

二、配置munge 及Slurm

a) 安装依赖        yum install -y epel-release        yum install -y gtk2 gtk2-devel munge munge-devel python python3b) 配置munge #两台机器均要配置        chown slurm:slurm /etc/munge        chown slurm:slurm /var/run/munge        chown slurm:slurm /var/lib/munge        chown slurm:slurm /var/log/munge        create-munge-key #此步骤只在node1 节点做即可        scp /etc/munge/munge.key node2:/etc/munge/        chown slurm:slurm /etc/munge/munge.key        su - slurm #所有节点使用slurm 用户启动munged        mungedc) 配置Slurm #所有节点配置相同        tar xvf slurm-20.11.5.tar.bz2        cd slurm-20.11.5/        ./configure        make -j3        make install -j3        cp etc/{slurmctld.service,slurmdbd.service,slurmd.service}        /usr/lib/systemd/system        vi /usr/local/etc/slurm.conf #配置文件附在PS 中        scp /usr/local/etc/slurm.conf node2:/usr/local/etc/        chown slurm:slurm /var/spool/        systemctl start slurmctld #主节点启动slurmctld、slurmd        systemctl start slurmd #从节点只需启动slurmd 即可

三、测试

a) 系统命令测试        [root[@node1](https://my.oschina.net/u/4273199) ~]# sinfo        PARTITION AVAIL TIMELIMIT NODES STATE NODELIST        control up infinite 1 idle node1        compute* up infinite 2 idle node[1-2]        [root[@node1](https://my.oschina.net/u/4273199) ~]# srun -N 2 -l hostname # -N 2 执行的节点数        0: node1        1: node2        至此Slurm 集群搭建完成b) mpi 测试        vi test.c #测试程序在PS 中        mpicc -o test test.c #编译mpi 程序        vi tj.sh #作业脚本在PS 中        sbatch tj.sh #提交作业        squeue #查看作业状态        [root[@node1](https://my.oschina.net/u/4273199) ~]# cat test.out #查看作业结果        node2: Hello world from process 2        number of processes: 4        ...node1: Hello world from process 0        node2: Hello world from process 3        node1: Hello world from process 1

四、PS

a) tj.sh 作业脚本        #!/bin/sh        #SBATCH -o /root/test.out #结果输出到test.out        #SBATCH --nodes=2 #节点数:2        #SBATCH --ntasks-per-node=2        mpirun /root/testb) slurm.conf 配置文件        SlurmctldHost=node1 #主节点        MpiDefault=none        ProctrackType=proctrack/pgid #通过网站配置注意修改        ReturnToService=1        SlurmctldPidFile=/var/run/slurmctld.pid        SlurmctldPort=6817        SlurmdPidFile=/var/run/slurmd.pid        SlurmdPort=6818        SlurmdSpoolDir=/var/spool/slurmd        SlurmUser=slurm #slurm 管理用户        StateSaveLocation=/var/spool        SwitchType=switch/none        TaskPlugin=task/affinity        InactiveLimit=0        KillWait=30        MinJobAge=300        SlurmctldTimeout=120        SlurmdTimeout=300        Waittime=0        SchedulerType=sched/backfill        SelectType=select/cons_tres        SelectTypeParameters=CR_Core        AccountingStorageType=accounting_storage/none        AccountingStoreJobComment=YES        ClusterName=siton #集群名        JobCompType=jobcomp/none        JobAcctGatherFrequency=30        JobAcctGatherType=jobacct_gather/none        SlurmctldDebug=info        SlurmdDebug=info        NodeName=node1,node2 CPUs=4 RealMemory=2 Sockets=4 CoresPerSocket=1 ThreadsPerCore=1 State=UNKNOWN                /*节点名称,CPUs 核数,corepersocket,threadspersocket,使用lscpu 查看,realmemory 实际分配给slurm 内存,procs 是实际CPU 个数,/proc/cpuinfo 里查看state=unknown是启动集群的时候为unknown,之后会变成idle*/        PartitionName=control Nodes=node1 Default=YES MaxTime=INFINITE State=UP             PartitionName=compute Nodes=node1,node2 Default=YES MaxTime=INFINITE State=UP                /*partitionname 是分成control 和compute,default=yes 是说这个用来计算*/                可以通过https://slurm.schedmd.com/configurator.html 生成配置文件c) mpi 测试程序        #include         #include         #include         #include         int main(int argc, char* argv[])        {        int myid, numprocs, namelen;        char processor_name[MPI_MAX_PROCESSOR_NAME];        MPI_Init(&argc, &argv);        MPI_Comm_rank(MPI_COMM_WORLD, &myid);        MPI_Comm_size(MPI_COMM_WORLD, &numprocs);        MPI_Get_processor_name(processor_name, &namelen);        if (myid == 0) printf("number of        processes: %d\n...", numprocs);        printf("%s: Hello world from process %d \n",        processor_name, myid);        MPI_Finalize();        return 0;        }

五、进阶(GPU)

修改slurm.conf 文件GresTypes=gpuNodeName=slave3 Sockets=2 Procs=32 CoresPerSocket=8 ThreadsPerCore=2RealMemory=3000 Gres=gpu:tesla:2 State=UNKNOWN NodeAddr=10.135.12.29此外,slave3 这个机器需配置GPU 信息,编辑/usr/local/etc/gres.conf 文件Name=gpu Type=tesla File=/dev/nvidia0Name=gpu Type=tesla File=/dev/nvidia1slurm 脚本中添加gres 指定gpu 资源#SBATCH --gres=gpu:tesla:2

到此,相信大家对"Slurm集群搭建的教程"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0