NUIST HPC使用讲座 —— 作业提交 刘建宇 2015-05-05.

Slides:



Advertisements
Similar presentations
中科院昆明动物研究所培训 云南昆明 售前工程师:张希韬 TEL:
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
上課教材 Database Slide Windows筆電 (32 bit)
第七章 操作系统接口 7.1 联机用户接口 7.2 Shell命令语言 7.3 系统调用 7.4 UNIX系统调用 7.5 图形用户接口.
Linux并行计算平台搭建及应用 王彦棡 2010年5月.
集群作业管理系统简介 报告人:罗正平 导 师:肖炳甲研究员.
作业调度系统 曙光信息产业(北京)有限公司.
認識拿破崙˙波拿巴 關於一位運氣很差的矮子的趣事兩三件 我不是矮子!! 本日主角 重點不是這個吧? 惡搞人員:橘蘋3顆和一隻小精靈.
宁波材料所高性能计算集群普通用户培训 曙光公司.
NUIST HPC使用讲座 —— 用户环境设置 刘建宇
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
System Administration Practice Homework 2: Shell Programming
NUIST HPC使用讲座 ——代码调试 刘建宇
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
台灣大學計算機及資訊網路中心 教學研究組 張傑生
OpenMP简介和开发教程 广州创龙电子科技有限公司
Shell Script 程式設計.
Shell程序设计 曙光信息产业股份有限公司.
第五章 shell 编程 shell 编程的基本过程分为三步: 1. 建立 shell 文件 包含任意多行操作系统命令或shell命令的文本
第二讲 搭建Java Web开发环境 主讲人:孙娜
曙光信息产业(北京)有限公司 技术支持中心 戴荣 2007年12月
SOA – Experiment 3: Web Services Composition Challenge
大学计算机基础 典型案例之一 构建FPT服务器.
曙光集群简明使用手册 技术支持中心.
SVN服务器的搭建(Windows) 柳峰
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
SPI驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.
曙光信息产业有限公司 技术支持中心 赵崇山 PBS作业调度系统 曙光信息产业有限公司 技术支持中心 赵崇山
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
大型机使用手册.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
北京师范大学并行计算实验室 作业调度.
第四章 附件 (应用程序软件包).
供应商登录CJLR SRM系统入口 CJLR供应商仅可以在互联网上访问SRM系统,无法在CJLR内网登录SRM系统.
作业调度系统常用命令.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Remote Access 主动设置方法 First let’s try the initiative activate.
第六章 shell 程序调试 一. 程序执行状态跟踪 程序: -n 读取命令, 但不执行. 主要用于跟踪程序流程是
如何有效率的學習Linux 培養組合能力 多用程式, 少寫程式 從錯誤訊息中學習 養成略讀 “各種文件” 加強英文基本閱讀能力 勤作筆記
河南理工大学HPC集群使用培训 Henan Polytechnic University 现代教育技术中心 高性能计算平台.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
BESIII 计算环境&DST数据 报告人:文硕频 物理软件组 2019年4月23日.
姚金宇 MIT SCHEME 使用说明 姚金宇
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Chapter 11 使用者資料包通訊協定.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
信号量(Semaphore).
解决“最后1公里”问题.
Compute System Administration Homework 2: Shell Script
豪雅科技股份有限公司 iSeries Professional Consultant P. 1
iSIGHT 基本培训 使用 Excel的栅栏问题
1.3操作系统提供的服务和用户接口 操作系统提供的用户接口 程序接口与系统调用 操作接口与系统程序
教育部特殊教育通報網 學生異動、接收操作說明.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
GPU实验上机介绍 国家高性能计算中心(合肥).
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
24 or 1024? PWN Jawbone Up24 手环.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
实验六静态路由.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Primary introduction to docker
Presentation transcript:

NUIST HPC使用讲座 —— 作业提交 刘建宇 2015-05-05

!!!声明!!! ftp://202.195.238.13/Public/submit_job.pdf 仅校内可访问 这里讨论的用户环境设置是基于目前(2014年)的NUIST HPC的配置上进行的 相关的用法、设置方式等有一定的普遍性,也有本地局限性 这里讨论的用法、设置方式,在不同的系统及配置下可能不适用 这里讨论的用法、设置方式,可能有不全面或不足之处 仅供参考,谨慎使用 ftp://202.195.238.13/Public/submit_job.pdf 仅校内可访问

PBS作业脚本 PBS作业脚本 PBS指令 含有PBS指令的脚本 用于申请资源、设置作业属性等 放在注释行的位置,使用#PBS作为前缀 #PBS [option] 除-l和-W选项外,其他选项后如果有多个指令,只有最后一个有效

PBS基本指令 #PBS -P project_no 必需设置,项目号 #PBS -q queue 必须设置,队列名 #PBS -l nodes=N:ppn=M #PBS -l select=N:ncpus=M:mpiprocs=P 必须设置, N:节点数, M:每个节点核数,P:MPI任务数/节点 #PBS -N jobname  可选设置,作业名 #PBS -S /bin/bash 可选设置,指定PBS的Shell为bash #PBS -l walltime=hh:nn:mm 可选设置,墙钟限制,不同队列,墙钟限制不一样,

PBS基本指令 #PBS -M me@eartch #PBS -m bea #PBS -V #PBS -o jobname.out 可选设置,作业报告发送电子邮件地址 #PBS -m bea 可选设置,作业报告发送状态 b – 开始,e – 结束, a – 中止 #PBS -V 可选设置,复制用户环境变量 #PBS -o jobname.out 可选设置,标准输出输出文件 #PBS -e jobname.err 可选设置,标准错误输出文件 # PBS -j oe 可选设置,合并标准输出与标准错误

注意事项 注释掉PBS指令 PBS指令后不能跟有注释内容 PBS指令中不能直接使用变量替换 PBS作业脚本中不能含有不可见的ASCII字符 ##PBS -l node=2:ppn=8 PBS指令后不能跟有注释内容 #PBS -l node=2:ppn=8 #2个节点,8个MPI任务/节点 #PBS -l node=2:ppn=8 PBS指令中不能直接使用变量替换 #PBS -l node=$N:ppn=$M PBS作业脚本中不能含有不可见的ASCII字符 ASCII码为0 ~ 31的字符 ASCII码为126以上字符

注意事项 PBS作业脚本中不能有DOS格式的行终结符(CR/LF) dos2unix job_script 在Windows下编辑的文本文件 在FTP上传时使用ASCII方式上传的文本文件 转换CR/LF的方法 dos2unix job_script tr -d '\r' < job_script > job_script.new

注意事项 -l nodes=n:ppn=p为旧格式 -l select=n:ncpus=m:mpiprocs=p为新格式 兼容性好 对作业的控制有限 -l select=n:ncpus=m:mpiprocs=p为新格式 只适用于较新版本的PBS 可以对作业做更多的控制 具体能做的控制依赖于PBS服务的设置 计算节点没有开启超线程 每个节点申请核数最好不要超过12个 ppn、ncpus、 mpiprocs的设置

注意事项 对内存需求大的任务,在申请资源时可采用增加节点数,降低每个节点使用核数的方式来避免在单个节点上内存不足的问题,例如 单个节点内存为24G,12个核 总共需要使用168个核 每个MPI任务需要使用4G nodes=42:ppn=4 在单个节点上的内存使用一般不要超过系统物理内存的90% 为避免在属性为共享的节点上出现多个用户的任务争用内存互相干扰的情况,最好在申请资源时把结点设置为独占方式(机时统计将按节点算) #PBS -l select=42:ncpus=4:mpiprocs=4 #PBS -l place=scatter:excl 如果希望节省资源而申请共享属性的节点,最好在申请时加上对内存的数量的申请,从而避免争夺内存的情况(机时统计将实际使用核数来算) #PBS -l select=42:ncpus=4:mpiprocs=4:mem=16gb #PBS -l place=scatter:free

PBS的环境变量 变 量 名 说 明 登陆SHELL继承来的变量 说 明 登陆SHELL继承来的变量 包括$HOME,$LANG,$LOGNAME,$PATH,$MAIL,$SHELL和$TZ $PBS_O_HOST qsub提交的节点名称 $PBS_O_QUEUE qsub提交的作业的最初队列名称 $PBS_O_WORKDIR qsub提交的作业的绝对路径 $PBS_JOBID 作业被PBS系统指定的作业号 $PBS_JOBNAME 用户指定的作业名 $PBS_NODEFILE PBS系统指定的作业运行的节点名 $PBS_QUEUE PBS脚本在执行时的队列名 !!!PBS的变量只在PBS环境中才可以访问!!!

MPI作业 运行24个MPI任务,使用两个节点,每个节点12个核 #!/bin/bash #PBS -S /bin/bash #PBS -N helloworld #PBS -P P123456789 #PBS -q Regular #PBS -l nodes=2:ppn=12 #PBS -l walltime=00:05:00 cd $PBS_O_WORKDIR nprocs=`cat $PBS_NODEFILE | wc -l` mpirun -np $nprocs ./my_mpi_app.exe

OpenMP作业 只能在一个节点内运行, 最多只能运行12个OpenMP线程 #!/bin/bash #PBS -S /bin/bash #PBS -N helloworld #PBS -P P123456789 #PBS -q Regular #PBS -l nodes=1:ppn=12 #PBS -l walltime=00:05:00 nprocs=`cat $PBS_NODEFILE | wc -l` export OMP_NUM_THREADS=$nprocs cd $PBS_O_WORKDIR ./my_openmp_app.exe

Hybrid作业 进程在同一个节点内使用OpenMP方式,跨节点用MPI方式 #!/bin/bash #PBS -S /bin/bash #PBS -N helloworld #PBS -P P123456789 #PBS -q queue Regular #PBS -l nodes=2:ppn=12 #PBS -l walltime=00:05:00 cd $PBS_O_WORKDIR #每个节点运行4个MPI任务 #每个MPI任务使用3个OpenMP线程 export OMP_NUM_THREADS=3 #OpenMPI #mpirun -np 8 -npernode 4 my_hybrid_app.exe # MVAPICH2 #mpirun -np 8 -ppn 4 my_hybrid_app.exe #每个节点运行1个MPI任务 #每个MPI任务使用12个OpenMP线程 export OMP_NUM_THREADS=12 # OpenMPI #mpirun -np 2 -npernode 1 my_hybrid_app.exe # MVAPICH2 #mpirun -np 2 -ppn 1 my_hybrid_app.exe

串行作业 使用1个节点,4个核运行4个任务 #!/bin/bash #PBS -S /bin/bash #PBS -N helloworld #PBS -P P123456789 #PBS -q queue Regular #PBS -l nodes=1:ppn=4 #PBS -l walltime=00:05:00 cd $PBS_O_WORKDIR ./myapp1.exe & ./myapp2.exe & ./myapp3.exe & ./myapp4.exe # 此处需要设计一段等待脚本保持 # 在所有任务结束之前不退出 如果未等所有任务结束就退出脚本,未结束的任务将失败或变成不可管理的孤儿进程

MPMD(multiple program, multiple data)作业 OpenMPI #!/bin/bash #PBS -S /bin/bash #PBS -N HelloWorld #PBS -P P123456789 #PBS -q Regular #PBS -l nodes=2:ppn=12 #PBS -l walltime=00:05:00 cd $PBS_O_WORKDIR mpirun --app configfile #configfile -np 8 exe1 arg1 arg2 -np 4 exe2 -np 12 exe3

MPMD(multiple program, multiple data)作业 MVAPICH2 #!/bin/bash #PBS -S /bin/bash #PBS -N HelloWorld #PBS -P P123456789 #PBS -q Regular #PBS -l nodes=2:ppn=12 #PBS -l walltime=00:05:00 cd $PBS_O_WORKDIR mpirun -config configfile #configfile -n 8 : exe1 arg1 arg2 -n 4 : exe2 -n 12 : exe3

关联作业 #!/bin/bash job1=`qsub job1.sh` job2=`qsub -W depend=afterok:$job1 job2.sh` job3=`qsub -W depend=afterok:$job2 job3.sh` job4=`qsub -W depend=afterok:$job3 job4.sh` exit 0 afterok:<Job-ID> : 当指定的作业正常退出 afternotok:<Job-ID> :当指定的作业异常退出 afterany:<Job-ID> : 只要指定的作业结束不论正常或异常

作业脚本的额外设置 login shell – CSH login shell – KSH 使用qsub 提交KSH的脚本 设置#PBS -S /bin/bash可避免出现以下信息(需.bashrc与.cshrc的设置一致) e file : tput: No value for $TERM and no -T specified o file : Warning: no access to tty (Bad file descriptor). Thus no job control in this shell. login shell – KSH 设置#PBS -S /bin/bash可避免出现以下信息(需.bashrc与.kshrc的设置一直) /etc/profile[90]: .[5]: .[5]: .[46]: shopt: not found [No such file or directory] 如果需要在作业脚本中使用module命令,则需在作业脚本开头添加以下命令进行ksh的环境初始化 ' . /etc/profile.d/modules.sh ' 使用qsub 提交KSH的脚本

作业脚本的额外设置(续) 把当前脚本中用户环境变量复制到作业脚本运行环境中(1) 在PBS作业脚本中设置#PBS –V #!/bin/bash export work_dir=/blah/blah export data_dir=/blah/blah … … qsub my_job.sh ... … my_job.sh #!/bin/bash #PBS -N check_env #PBS -q Regular #PBS -l node=2:ppn=2 #PBS -l walltime=00:00:05 #PBS -P P000000000 #PBS -V echo work_dir=‘|’$work_dir‘|’ echo data_dir=‘|’$data_dir‘|’

作业脚本的额外设置(续) 把当前脚本中用户环境变量复制到作业脚本运行环境中(2) 在命令行使用“-v variable_list”选项 qsub -v work_dir=/blah/blah, data_dir=/blah/blah my_job.sh qsub -v "var1='A,B,C,D'" job.sh qsub -v a=10, "var2='A,B'", c=20, HOME=/home/zzz job.sh

作业脚本的额外设置(续) 在作业脚本中切换不同的运行环境安全的做法 首先使用module purge清除所有环境设置信息 接着使用module load先加载需要的编译器环境 然后使用module load仅加载运行程序必要的环境 例如, 登录环境为Intel 运行需要PGI环境 则在作业脚本开头加入下面module命令 # KSH Only # . /etc/profile.d/modules.sh module purge module load pgi module load … …

作业管理 删除作业 qdel job_id qdel `qselect -u $USER | cut -d'.' -f1` 查看指定用户的作业 qstat -u $USER

作业管理 qstat -q qstat -n | grep Eco | grep ' Q ' 查看所有队列的情况 查看Economy队列排队的情况 qstat -n | grep Eco | grep ' Q '

作业管理 查看Economy队列资源使用情况 qstat -n | \ grep Eco | \ grep ' R ' | \ awk '{nodes+=$6 ; cores+=$7 } END {printf "Total nodes = %d Total cores = % d \n", nodes, cores }'

作业管理 查看作业详细信息 qstat -n job_id qstat -w job_id qstat -f job_id 查看历史作业信息 qstat -x job_id qstat -fx job_id qstat -x -u $USER qstat -fx -u $USER

作业管理 获取作业ID qselect -u $USER | cut -d'.' -f1 qselect -s R -u $USER | cut -d'.' -f1 获取指定用户运行中的作业ID qselect -s Q -u $USER | cut -d'.' -f1 获取指定用户排队中的作业ID

一些建议 提交正式作业之前,最好做一个简单/快速测试,确保脚本没有问题 根据队列使用情况选择提交的队列 选用较少的资源 只申请一个节点 较小的计算规模 只进行试运行 积分很短的时间 执行简单的命令 根据队列使用情况选择提交的队列 需要资源少、墙钟时间短的作业等待时间相对短

常见问题 ~/.ssh/authorized_keys损坏 Killed by signal 15 Permission denied, please try again. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 如果不清楚如何修复,则请管理员帮忙修复

常见问题 作业脚本含有DOS格式的行终结符号 -bash: /var/spool/PBS/mom_priv/jobs/164168.log05.SC: /bin/bash^M: bad interpreter: No such file or directory 去除CR/LF的方法 dos2unix job_script tr -d '\r' < job_script > job_script.new

常见问题 已设置项目号,但还是提示项目号错误 项目号没有设置对,或 脚本中有错,作业调度服务无法解析脚本

常见问题 作业节点可能有问题 把作业号告诉管理员,请管理员帮忙检查节点 /nuist/u/home/lanlr/.bashrc: line 9: module: command not found /nuist/u/home/lanlr/.bashrc: line 10: module: command not found 把作业号告诉管理员,请管理员帮忙检查节点

常见问题 作业节点可能有问题,或 运行环境设置有问题 loading shared libraries: xxxxx.so: cannot open shared object file: No such file or directory 比较登录节点和计算节点$LD_LIBRARY_PATH的设置 或 把作业号告知管理员,请管理员帮忙检查节点

常见问题 ~/.ssh/known_hosts文件问题 解决方式 删除~/.ssh/known_hosts 文件 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is fe:65:ab:89:9a:23:34:5a:50:1e:05:d6:bf:ec:da:67. Please contact your system administrator. Add correct host key in /user/.ssh/known_hosts to get rid of this message. Offending key in /home/hahn/.ssh/known_hosts:42 RSA host key for requin has changed and you have requested strict checking. Host key verification failed. 解决方式 删除~/.ssh/known_hosts 文件 或在~/.ssh/config中设置 StrictHostKeyChecking no UserKnownHostsFile /dev/null

问题或建议 hpc@nuist.edu.cn