python中如何移动图形工作站_工作站使用方法

工作站使用方法

登录到工作站

你需要一个账号才能登录到工作站。如何登录

提交前准备

在你准备提交任务之前,你需要额外进行如下的工作。

将本地文件上传至服务器

你需要将任务的源码以及所需的输入文件上传至服务器,通常情况下,由于系统环境不同,服务器不能直接运行从本地上传的可执行文件,因此编译的工作必须在服务器上重新执行一次。

Linux

启动一个新的终端,在新终端下使用scp命令来远程复制文件或文件夹。代码中‘$’是Shell提示符,使用时无需输入,此后不再说明。

复制文件(将本地文件复制到你的Home文件夹下,需要输入你的登录密码,username为用户名。)

$ scp 本地文件 username@ip_address:/public/home/username

复制文件(将服务器文件复制到你当前计算机的当前目录下,需要输入你的登录密码,username为用户名。)

$ scp username@ip_address:/public/home/username/远程文件 .

复制文件夹(将本地文件夹复制到你的Home文件夹下,需要输入你的登录密码,username为用户名。)

$ scp -r 本地文件夹 username@ip_address:/public/home/username/

复制文件夹(将服务器文件夹复制到你当前计算机的当前目录下,需要输入你的登录密码,username为用户名。)

$ scp -r username@ip_address:/public/home/username/远程文件夹 .

如果不想使用 scp 命令,可以利用 sshfs 将服务器的 home 目录挂载到本地。这并不会消耗你本地的存储空间。

首先,使用如下命令安装 sshfs 应用

$ sudo apt-get install sshfs

其中 apt-get 是 ubuntu/debian 的安装包管理器,如果你在使用其它 linux 发行版,请使用相应的安装包管理器进行安装。

安装完毕后,在你喜欢的本地目录下建立挂载点,为了方便,可以选择个人的本地 home 文件夹。

$ mkdir workstation

其中workstation为挂载点的名称,可以随意填写。

最后,将服务器端的 home 文件夹挂载到本地

$ sshfs username@ip_address:/public/home/username/ workstation

其中username为你用户名,ip_address为服务器的地址。上面命令的最后一个 workstation 表示将服务器文件夹挂载到刚创建的挂载点 workstation 上。使用时请将其替换成你实际创建挂载点的路径。

挂载成功后,你可以从挂载点处(在本说明中为个人 home 文件夹下的 workstation 目录)直接访问你的服务器远端的目录,非常方便。

当你不需要使用服务器文件时,需要将服务器挂载目录卸载。命令为

$ fusermount -u workstation

其中 workstation 为你事先创建好的挂载点。

Mac OS

在 Mac OS 中,同样可以使用 scp 命令进行本地和服务器之间的文件传输,使用方法同 Linux 下的 scp。

Windows

使用 WinSCP 图形客户端。下载地址

在下图中分别输入服务器IP,用户名,密码。

在 WinSCP 中同样可以配置 SSH 无密码登录,点击“高级”即可进行类似设置(需要 ppk 文件:生成方法)。

进入传输面板进行操作即可。

配置运行环境

将源码编译成可执行文件

使用C/C++等语言编写的程序时,需要在服务器上对源码进行编译,尽量不要在本地编译,否则你的程序可能因为库版本不一致而导致无法运行。目前管理员正在编写可简单编译 C 程序的脚本。

指定 gcc 编译环境

服务器安装了多个 gcc 编译工具的版本,在使用 gcc 编译工具时需要配置 gcc 的编译环境。

使用

$ module avail

可以列出所有可用的运行环境模块。执行此语句之后可以看到服务器中的所有 gcc 版本。

从服务器中已有的 gcc 版本中,选择你需要的版本作为你的编译器。例如,更改当前 gcc 版本为 4.8.5

$ module add gcc/4.8.5

有关配置服务器运行环境的详细说明,请参考这里。

使用Intel MKL

使用Intel MKL进行计算时,需要使用gcc/g++编译工具,并将MKL链接到你的目标文件上。

MKL Link Line Advisor 工具需要用户指定选项才可正确完成链接命令的生成。各个选项的含义如下:

Select Intel product: Intel MKL 2017,选择这个选项即可。MKL 链接的命令在各个版本中的区别不大。

Select OS: 一定要选择 Linux,这是服务器的操作系统。

Select usage model of Intel Xeon Phi Coprocessor: 选择 None 即可,我们暂时用不到这个特殊的设定。

Select compiler: 根据个人使用的编译器自行选择。例如程序使用 gcc 编译,则此项需要选择 GNU C/C++。

Select architecture: 选择 Intel 64,我们的系统是 64 位系统。

Select dynamic or static linking: 选择库类型,是静态库还是动态库。一般情况下建议选择动态库 dynamic,极少数情况(例如编译 MATLAB 的 MEX 文件)可能需要静态库 static。

Select interface layer: 选择整数类型。在这里我们选 32-bit integer,即 32 位整数。

Select threading layer: 选择多线程类型。这里需要注意自己程序的用途,如果希望 MKL 仅仅占用 1 个 CPU 核心进行运算,那么需要选择 Sequential。如果希望 MKL 自动利用线程进行并行运算,那么需要选择 OpenMP threading。

Select OpenMP library: 在上一个选项选择 OpenMP threading 之后出现,选择 OpenMP 所使用的库。在这里需要选择编译器对应版本的 OpenMP 库。例如使用 gcc 编译器进行编译,则需要选择 GNU(libgomp)。

Select cluster library: 如果没有使用分布式并行计算的库,无需勾选任何选项。

Select MPI library: 无需设置。

Select the Fortran 95 interfaces: 无需设置。

Link with Intel MKL libraries explicity: 建议勾选以查看详细的链接命令。

按照如上设置完毕后,即可在下方的输出中看到链接选项和编译选项。直接复制到 Makefile 中即可。

注意:使用matlab,python则只需要上传脚本,并指定运行环境即可,不需要编译。

查看可用资源与计算节点状态

在提交任务之前,务必检查一下各个节点的状态,例如资源是否充足,当前有多少正在执行的任务等。

使用

$ pbsnodes -a

命令可以显示所有计算节点的状态,如下图。状态为free时计算机空闲。

提交任务

你需要编写一个PBS脚本来完成任务提交的设置。PBS脚本可以在本地编写后上传,也可以直接在工作站服务器上编辑。如何编辑

编写PBS脚本

一个PBS脚本的模板如下

#!/bin/sh

#PBS -N

#PBS -a

#PBS -l walltime=hh:mm:ss 作业最长运行时间

#PBS -l nodes=X:ppn=Y 在 X 个节点上申请 Y 个 CPU 核心

#PBS -l mem=XXmb 申请最大内存为 XX MB

#PBS -q

#PBS -o

#PBS -e

# 在输入表示计算任务的命令之前,需要强制设置当前的工作路径

cd $PBS_O_WORKDIR

# 设置运行环境

# 输入要执行的Shell脚本

其中,第一行是固定的,表示使用/bin/sh来执行脚本。其余的说明如下

申请资源(例如节点,运行时间等)的选项名为小写的字母‘L’,不是大写字母‘I’。

作业开始运行时间的格式为CCYYMMDDHHMM.SS,为了方便,可以直接写HHMM的部分,这样默认的日期就是当前日期。

总共的节点数为 4,每个节点的最大 CPU 核心数量为 48 个,申请时请不要超过最大值。建议使用pestat命令查看剩余资源数量,在确定申请 CPU 核心数量之前,请确认你的程序是否真的需要这些计算资源。如果程序的并行程度不高,申请过多的 CPU 核心数会造成资源的浪费(多数 CPU 占用率会较低),并且会影响他人使用。在这里我们建议申请的节点数为 1(目前的 MATLAB 不支持跨节点运行),CPU 核心数不超过 24。

当前有两个队列,debug,batch,默认提交到 debug 队列中。

以上的所有#PBS属性均可以不设置,当缺少某属性时,系统将使用默认值。

请在使用时估计自己任务的开销,适量申请计算资源,避免造成资源的浪费。

队列的限制(以下限制均为对每个用户的限制)

队列

优先度

任务最大数

默认运行时间

最长运行时间

备注

debug

2

00:30:00

03:00:00

用于提交短期调试任务或者交互式任务

batch

20

00:30:00

---

用于提交批处理任务

此外,由于我们的计算资源较少,因此我们对每个用户使用的总计算资源也有限制。

CPU核心数:同一时间内,单个用户正在运行的任务占用的总核心数限制为 144 。

一个PBS脚本的例子

#!/bin/sh

#PBS -N test

#PBS -q debug

#PBS -l nodes=1:ppn=1

cd $PBS_O_WORKDIR

module add gcc/4.8.5

./hello

该脚本任务名为 test,加入到 debug 队列中,申请 1 个节点上的一个 CPU 核心,任务内容为运行指定目录下的 hello 程序。此程序的运行环境为 gcc/4.8.5。

使用 MEX 文件

Linux用户可直接将生成的 mexa64 文件上传至服务器,Windows/Mac用户则需要在服务器上编译 mex 文件。在Windows/Mac系统下生成的 mex 文件无法在 Linux 系统下使用。不过,仍然推荐 Linux 用户在服务器上重新编译 mex 文件。

注:以下操作实例仅适用于 MATLAB R2015b 或更低的版本

首先,需要将/public/examples/MATLAB文件夹下的 mexopts.sh 文件复制到个人的工作目录下。

$ cp /public/examples/MATLAB/mexopts.sh workdir

执行命令matn,进入matlab命令行模式。在matlab命令行下,输入

>> mex src.cpp

常见的计算软件/软件库的启动命令

以下列出服务器中常见的软件启动命令,可以作为手动编写 PBS 脚本的参考,也可以作为交互式计算的使用参考。

以命令行模式运行 MATLAB

$ matn

使用 MATLAB 运行 m 脚本

$ matbg

在以上命令中将‘matbg’替换为‘matbg-jvm’可以开启 MATLAB 的 jvm,此功能用于作图。

使用 R 运行 R 脚本

Rscript

使用 python 并载入 tensorflow 库

$ module add gcc/4.8.5

$ LD_PRELOAD=/lib64/librt-2.12.so python

第一行的目的是载入 gcc-4.8.5 环境,因为 tensorflow 必须在 C++11 环境下运行,实际使用时也可以替换成更高版本的 gcc。第二行是指定 python 运行的预先载入库,这个库同样也是 tensorflow 需要的。

提交任务

将PBS脚本编写完毕并上传工作站后(或直接在工作站编辑),进入PBS脚本的目录,使用

$ qsub

即可提交任务。

提交 MATLAB 任务

注:此命令近期的用法会有调整

你可以手动编写PBS脚本,然后使用qsub命令手动提交 matlab 任务,但是我们推荐使用如下的脚本命令直接提交 matlab 任务。无需编写PBS脚本和手动调用qsub,此脚本会自动帮你完成,为此,你只需要准备你的 matlab 脚本(M文件)。

$ matpbs.py [-j][-c ][-t ][-o ] -f

此命令的详细用法如下:

-j, --jvm: 启用 jvm,此选项用于输出 matlab 的图形

-h, --help: 显示本命令的帮助

-c, --cpus: 指定使用 CPU 核心数量,默认为 1,允许设置为 1 到 48(具体情况视计算资源而定)

-t, --walltime: 指定作业运行的时间,格式为HH:MM:SS,脚本会根据运行时间来选择合适的队列

-o: 重定向输出文件到某个文件中,此文件中包含输出在 MATLAB 控制台中的所有内容

-f: 指定运行的 m 脚本文件,此参数必须进行设置

一个例子(使用 jvm 功能,申请 12 个 CPU 核心和 2 小时的运行时间,脚本名为 test.m):

$ matpbs.py -j -c 12 -t 2:00:00 -f test

程序执行完毕后,产生的标准输出在名为PBS_MATLAB__的文件夹中。

注意:m 脚本文件必须在当前目录中。

提交 R 任务

注:此命令近期的用法会有调整

你可以手动编写PBS脚本,然后使用qsub命令手动提交 R 任务,但是我们推荐使用如下的脚本命令直接提交 R 任务。无需编写PBS脚本和手动调用qsub,此脚本会自动帮你完成,为此,你只需要准备你的 R 脚本(R文件)。

$ Rpbs.py [-c ][-t ][-o ] -f

此命令的详细用法如下:

-h, --help: 显示本命令的帮助

-c, --cpus: 指定使用 CPU 核心数量,默认为 1,允许设置为 1 到 48(具体情况视计算资源而定)

-t, --walltime: 指定作业运行的时间,格式为HH:MM:SS,脚本会根据运行时间来选择合适的队列

-o: 重定向输出文件到某个文件中,此文件中包含输出在 R 控制台中的所有内容

-f: 指定运行的 R 脚本文件,此参数必须进行设置

一个例子(申请 12 个 CPU 核心和 2 小时的运行时间,脚本名为 test.R):

$ Rpbs.py -c 12 -t 2:00:00 -f test.R

程序执行完毕后,产生的标准输出在名为PBS_R__的文件夹中。

注意:R 脚本文件必须在当前目录中。

查看任务状态

使用qsub命令之后,如果出现如下图的提示

则说明提交成功,左边的数字表示任务的ID,右边表示提交的节点,目前所有用户都只能在admin节点上提交任务。

使用

$ qstat

可以查看当前所有任务的运行状态。

其中,第五列(指标为S)表示运行的状态。R:运行中;C:已完成;H:被挂起;Q:排队中

使用

$ pestat

可以查看当前所有节点的占用状态。

删除任务

$ qdel

注意:用户只能删除自己的作业,不能删除别人的作业。

挂起任务

$ qhold

取消任务挂起

$ qrls

如果忘记作业ID可以使用qstat命令查看。

输出文件

计算时,标准输出流和标准错误流被重定向到文件,因此控制台中不再显示这些输出。当程序结束时,系统默认会将标准输出文件和标准错误文件复制到调用qsub的目录下。如果在PBS脚本中使用了 -o /-e 选项,则这些文件会被复制到用户所指定的目录下。

文件命名规则:

标准输出文件:.o

标准错误文件:.e

如果使用matlab脚本,则标准输出流和标准错误流也会被定向到matbg命令所指定的文件中。

其它功能

用户可以使用工作站的一些其它功能。

交互式计算

使用命令(代码中申请资源数前面的选项为小写的‘L’)

$ qsub -I -l

即可进入交互式计算模式。该模式下,用户将会被自动切换到一个计算节点,此后所有的计算都在这个节点上进行。使用时需要指定申请的资源数,格式为nodes=X:ppn=Y,资源数不能超过剩余资源的最大值。在此节点上计算无需编写PBS脚本,直接执行Shell命令即可。此模式大多用于计算任务需要计时或者实时调试的情况。如果你熟悉UNIX系统,那么这个模式的使用方法和你单独在PC上计算几乎没有区别。在此模式下,不要使用qsub命令提交任务,因此在登出之前,确保你的任务都已经执行完毕。

使用完毕后,请执行

$ exit

命令可以结束该次交互式任务,此命令也用于登出工作站。

注1:交互式模式只能提交到 debug 队列中,因此最大单次占用时间为 3 小时。

注2:严禁在非交互式模式下直接运行计算量大的任务。

VIM 编辑器

为了编写脚本方便,可以直接使用服务器系统的 VIM 编辑器进行对脚本的编辑。

使用

$ vim

可以新建或者打开已有的文本文件。

VIM 编辑器一共有两个主要的编辑模式:普通模式和插入模式。进入 VIM 编辑器后,编辑器处于普通模式。

在普通模式下,VIM编辑器会将按键解释成命令。

:q 如果未修改数据,退出

:q! 取消所有修改,退出

:wq 保存并退出

x 删除当前位置字符

dd 删除当前行

dw 删除当前光标所在单词

d$ 删除当前光标所在位置至行尾的内容

yy 复制当前行

yw 复制当前光标所在单词

y$ 复制当前光标所在位置至行尾的内容

p 粘贴文本至当前位置

i 进入插入模式

在插入模式下,即可插入文本到光标的位置。按下Esc键即可返回普通模式。

常见问题

Q:登录服务器时,输入密码时终端无反应。

A:这是正常现象,请正常输入你的密码然后按下[Enter]登录即可。

Q:在服务器运行编译好的 C 程序或者 MEX 文件时,会报告‘GLIBC version 2.14 not found’的错误。

A:请将源码在服务器上重新编译一遍,因为不同环境下编译出来的二进制可执行文件的运行条件是不同的。

Q:提交任务时,任务显示在‘Q’(排队)状态,但是有空闲的计算资源存在。

A:每个用户提交的任务的数量和占用的核数有一定限制,请查看工作站用户使用限制。

Q:我如何才能保存计算过程中控制台中输出的结果?

A:请使用输出重定向符号‘>’。例如将程序 text 的控制台输出重定向到文件 ‘out.txt’ 中

./test > out.txt

如果使用 matpbs.py 提交任务,则只需要指定 -o 选项即可。

附录

工作站总资源数

以下参数未加说明均表示每台节点的资源。

节点角色

节点数量

CPU 主频

CPU 总核数

内存

管理节点

1

2.60 GHz

32

64 GB

计算节点

4

2.50 GHz

48

128 GB

除此之外,所有节点共享 30 TB 的存储空间。

已经安装的软件/运行环境

软件名称

版本

默认载入

备注

gcc

6.1.0

Yes

不含 gfortran

4.7.4

No

---

4.8.5

No

支持C11

5.3.0

No

支持C11

6.2.0

No

支持C11

gdb

7.12

Yes

C 程序的默认调试工具

Valgrind

3.12.0

Yes

---

MATLAB

R2015b

Yes

---

R2016b

No

北京大学正版软件平台提供,需要联网使用

R

3.2.5

No

---

3.3.2

No

---

Anaconda

2

Yes

内嵌 python 2.7,支持 ipython

3

No

内嵌 python 3.5,支持 ipython

python

2.6

No

官方已经停止维护

3.5

No

与 Anaconda 冲突

JAVA/JDK

1.8.0_91

Yes

---

Intel Composer

15.0.2

Yes

包含 icc/MKL 等工具

OpenMPI

1.8.5

No

提供 mpicc/mpiexec,与其它 MPI 冲突。

mpich

3.2

No

提供 mpicc/mpiexec,与其它 MPI 冲突。

PETSc

3.5.4

No

依赖 mpich/3.2

SLEPc

3.5.4

No

使用时必须和 PETSc 版本一致

fftw

3.3.5

No

支持单精度和双精度版本,并支持 MPI 并行。若使用 MPI 功能时,请载入 mpich/3.2

Eigen

3.3.1

No

使用其 MKL 接口时需要在编译指定 MKL 头文件和库文件的位置

联系管理员

如果有疑问,请联系工作站管理员。

刘浩洋 liuhaoyang@pku.edu.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值