为了交作业注册服务器,使用Job Manager向远程服务器上提交作业_weixin_39897267的博客-程序员宅基地

技术标签: 为了交作业注册服务器  

使用Job Manager向远程服务器上提交作业

概述

从2015版开始,Job Manager支持设置设置远程服务器提交任务,该方法的特点是:

安全:仅使用SSH端口的加密通信;服务器端无需后台进程,无需单独开放其他端口,有效保障安全性,特别适合公共服务器上部署计算;

简单:支持自动创建任务文件夹和提交脚本,不需要终端登录服务器进行任务提交;

强壮:任务成功提交之后,即可断开与服务器的连接;不必担心网络问题造成的计算中断;无后台进程、数据库等复杂配置,更强壮;

便捷:随时可以联机查看即可查看任务、下载计算结果。

设置使用Job Manager远程提交并查看任务分为两步:

设置无密码SSH通信

设置提交服务器信息

第一步:设置ssh无密码通信(以远程服务器为Linux系统为例)

基本原理

SSH无密码通信的基本原理是,针对本机客户端生成一个特定的加密密钥,将密钥的private key保存在本机上,将密钥的public key保存于服务器的用户的authroized_keys里;这样以后登录服务器就不必再每次验证用户密码,而是直接验证密钥即可登录。

情况1.本机为Linux、Unix、Mac等系统

在本机输入命令:ssh-keygen -t rsa -C “MyMachine” (MyMachine可以改成便于标识本机客户端的字符,一直回车结束)

输入命令:cat ~/.ssh/id_rsa.pub(显示public key,拷贝下)

登录到远程服务器,检查是否存在 ~/.ssh/authorized_keys,若不存在创建此文件,将上一步拷贝的public key粘贴并保存;如果文件存在,则将上一步拷贝的public key粘贴在文件尾并保存。

情况2.本机为Windows系统

e8fc9cbcec9a41cbf88fd9607967a92b.png2ebfafdf80f383a9d4030335be48faa4.png

拷贝public_key的字符串;登录到远程服务器,检查是否存在 ~/.ssh/authorized_keys,若不存在创建此文件,将上一步拷贝的public key粘贴并保存;如果文件存在,则将上一步拷贝的public key粘贴在文件尾并保存。

a4a93bd6c0a98c662c8162b386b55be3.png

使用菜单中conversions将private key转换保存为文件名VNL_rsa到一固定的目录下(例如用户目录下的.vnl目录下,在下一步中需要填入这个目录);

348babe5839e88db8abe034a7aeab17a.png

aa70d3982b6840b669dbe06ab98a4409.png

测试无密码登录

VNL 2016版开始在Job Manager图形界面上直接提供测试诊断功能,方便易用。

测试设置是否正确,可使用以下脚本尝试ssh登录是否正常(以下脚本中的key_dir、hostname、username要按实际情况修改):

from NL.ComputerScienceUtilities.SSHConnection import SSHConnection

import os

# -------------------------------------- #

# Edit only these 3 settings

# -------------------------------------- #

key_dir = 'path_to_SSH_keys'

hostname = 'HOST.CLUSTER.EDU'

username = 'my_user_name'

# -------------------------------------- #

port = 22

ok = os.path.isdir(key_dir)

if ok:

print "Sucessfully found local dir with SSH keys."

con = SSHConnection(hostname, port, username, key_dir)

con.connect()

ok = con.isConnected()

if ok:

print "Connection succesful."

else:

print "Error: Could not find local dir with SSH keys."

# -------------------------------------- #

将以上脚本保存,在editor中修改上面提到的三行,打开Windows的cmd窗口,输入命令:

atkpython test_ssh.py

ssh无密码连接设置成功则会显示:

Sucessfully found local dir with SSH keys.

Connection succesful.

第二步:在QuantumATK中添加Job Manager中添加远程服务器

目前QuantumATK中支持Direct和PBS两种服务器提交方式:

Direct:即服务器上没有PBS等队列系统,提交的计算直接在登录的主机上运行。这种方法常试用于单节点的服务器。

PBS:即QuantumATK将通过PBS系统提交任务。

这里以比较复杂的PBS为例:

点击“New”选择“Remote PBS”

f38599b3494727dc50e2bf5dd91a53bf.png

在Settings里设置名称、IP地址(或主机名、域名)、端口(SSH默认为22),登录的用户名、存储ssh private key的目录、队列名称、PBS(或Torque)命令位置等。

c6e8882e622ef91569bc78379637c99f.png

在Environment中设置保存计算任务的文件夹、mpi执行命令、要source的脚本(根据服务器一般提交任务的脚本进行设置,建议将mpi PATH等环境变量放在这里)、要export的环境变量(变量前不用加export命令)、Modules to load等。

877353cae5918810fbe0ce03c45c3925.png

在Resources里设置任务使用的计算资源

005c3fd23efd3af551ba6ec9063f9e49.png

计算资源页面的几个设置都对应了PBS脚本中的一些资源请求和使用的参数,可以参考它自动创建的提交任务的pbs脚本中的内容:

例如:

Number of nodes 为 X,Number of cores per nodes 为 Y,对应于PBS脚本中

#PBS -l nodes=X:ppn=Y

Number of MPI processes 为 x,Number of MPI processes per nodes 为 y,对应了PBS脚本中的

…/mpirun -np x -ppn y xxxxx/atkkpython *.py

这个页面的设置按照硬件和计算体系大小的情况来进行设置:

一般来说,一个core对应一个MPI process,所以应满足

X*Y=x

Y=y

不勾选 Enable MKL_DYNAMIC

但是对于特别大(具体和一个计算节点的可用内存有关)的体系,如果内存有问题,则可能需要设置一个CPU对应一个MPI process,加入一个节点有2个CPU,这时:

X*2=x

y=2

勾选 Enable MKL_DYNAMIC (需测试此项的加速效果来决定是否勾选)

更大的体系,甚至可以一个节点对应于一个MPI process,这时

x=X

Y=1

勾选 Enable MKL_DYNAMIC(需测试此项的加速效果来决定是否勾选)

跨节点并行的还要注意网络选择等问题,详细情况参见QuantumATK并行计算。设置好之后可以看到所有的设置:

c737b990d45395e56e79d493780f6685.png

注意

当有任务提交之后,可能无法编辑服务器设置,需要先将任务从该服务器下删除(不会删除服务器上的任务文件夹和已经下载的数据)。

提交任务

如果以上设置没有问题,可以尝试提交任务。将作业脚本发送至job manager,选择相应的队列,点击开始按钮即可开始提交计算。

计算一旦开始排队或运行,VNL即可关闭,并断开网络连接。下次连接时,VNL会自动检测作业进度并下载文件。

自定义任务的计算设置

在提交任务时,用户仍有机会修改每个提交任务的计算设置,方法是:

向队列提交任务后不立即点击“开始运行按钮”,此时可以点击Job Setting按钮修改计算设置:

974d13af2c3b48e626f8929563069fdb.png

在Resource选项卡中可以临时修改此计算任务的计算资源(与上面队列设置类似):

94634441f10a862104e15a5968d6cfff.png

在IO选项中可以临时设定此计算任务的目录:

26a29def64780875522f0a93144b7480.png

提示

由于为了防止重名覆盖,Job Manager会在设定的目录下自动为每个作业生成随机的文件夹名称,这为用户手动查找作业目录带来了一定的麻烦。为此,建议在提交任务时,为每个作业添加一个有意义的子目录(如上图中作业队列默认的目录为/home/ddong/atkjobs,提交任务时可以要求job manager创建子目录sic_bandstructures),这样便于管理计算作业的文件夹。

问题排除

提交任务遇到问题时,需要针对具体问题编辑设置。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39897267/article/details/119306761

智能推荐

Numpy中bool式条件索引【Python琐碎知识点】_MarToony|名角的博客-程序员宅基地_numpybool索引

a = np.arange(24).reshape(2,3,4)a"""array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]])"""[a>13]"""[array([[[False, False, False, False]

DDD领域驱动设计实战-分层架构及代码目录结构,2021年腾讯Java高级面试题及答案_普通网友的博客-程序员宅基地

该层指的是服务端用于适配端侧的部分,而非端侧本身。因为该层本就依赖应用层,无人使用接口在这里做依赖倒置,所有又被称作主动适配。1.1 细分结构assembler、dto 和 façadefacade提供较粗粒度的调用接口,将用户请求委派给一个或多个应用服务进行处理。比如调用应用层创建用户的方法。dto数据传输的载体,内部不存在任何业务逻辑,可以通过DTO把内部的领域对象与外界隔离。比如接收请求传入的数据CustomerDTO。不同的对象在不同的层转换。用户接口层DTO和DO转换,应用

Topcoder SRM 716 Hard_wxh010910的博客-程序员宅基地

链接:https://community.topcoder.com/stat?c=problem_statement&pm=14600&rd=16931题意:初始有N个区间[i, i],你可以进行k次操作,每次可以将两个已有区间的并(要求也是个区间)加入已有区间,最后考虑每一个合法区间[i, j],记f(i, j)表示覆盖它最少需要的区间数(区间可以相交),记c = max(f(i, j)),

Python版本升级后出现的一些问题及解决方案_Python少年班的博客-程序员宅基地

Python版本升级后终端打不开,即使运行也会报各种错误ModuleNotFoundError: No module named 'gdbm' 或者ImportError: cannot import name '_gi'解决办法# 1. 使用键盘 Ctrl+Alt+F1进入命令行模式,并输入账号密码登录终端# 2. 下载缺少的模块sudo apt-get install pyt...

ABAP数字类型负号前置_yp736628082的博客-程序员宅基地_abap 负号前置

1、建立自定义函数浮点数显示FUNCTION conversion_exit_zsign_output.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" REFERENCE(INPUT)*" EXPORTING*" REFERENCE(OUTPUT)*"----------------------------...

JVM第二章:类加载子系统_为人师表好少年的博客-程序员宅基地

来源:尚硅谷宋红康老师授课资料类加载子系统概述完整图如下如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常

随便推点

C++11并发学习(线程总结)_土戈的博客-程序员宅基地

1.与C++11多线程相关的头文件<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。<atomic>:主要声明了两个类, std::atomic和std::atomic_flag,另外还声明了一套C风格的原子类型和与C兼容的原子操作的函数。<thre...

SolidEdge C#.NET 二次开发系列教程(三)判断当前 SolidEdgeDocument 文件的类型_三好学生~的博客-程序员宅基地_solidedge二次开发教程

try { // Register with OLE to handle concurrency issues on the current thread. SolidEdgeCommunity.OleMessageFilter.Register(); // Connect to Solid Edge. application = SolidEdge...

Oracle导入db2报错,oracle 12c数据泵导入报错KUP-11014错误解决办法_我就是月下的博客-程序员宅基地

将10.2.0.5的一个大表导入到12.1.0.2的时候,导出参数是:[[email protected] tmp]$ cat expdp.paruserid='/ as sysdba'DIRECTORY=DUMPDIRdumpfile=mytable_%U.dmptables=schema.mytablelogfile=mytable.logjob_name=mytableparallel=8fi...

R语言中不能进行深度学习?_weixin_34260991的博客-程序员宅基地

更多深度文章,请关注:https://yq.aliyun.com/cloud众所周知,R语言是统计分析最好用的语言。但在Keras和TensorFlow的帮助下,R语言也可以进行深度学习了。在机器学习的语言的选择上,R和Python之间选择一直是一个有争议的话题。但随着深度学习的爆炸性增长,越来越多的人选择了Python,因为它有一个很大的深度学习...

c语言转换成32位汇编语言怎么看,浅谈单片机中C语言与汇编语言的转换_冯小僧的博客-程序员宅基地

一、单片机课设题目要求与软件环境介绍做了一单片机设计,要用C语言与汇编语言同时实现,现将这次设计的感受和收获,还有遇到的问题写下,欢迎感兴趣的朋友交流想法,提出建议。单片机设计:基于51单片机的99码表设计软件环境:Proteus8.0+ Keil4要求:1,开关按一下,数码管开始计时。2,按两下,数码管显示静止。3,按三下,数码管数值清零。二、C语言程序1 #include2 #define ...

cheap and safe eso power leveling with guidepowerlevel.com_congteng7634的博客-程序员宅基地

cheap and safe eso power leveling with guidepowerlevel.com1. Once your order is completed, please change you...

推荐文章

热门文章

相关标签