工程学院HPC

HPC访问指令

什么是高性能计算?

工程学院(CoE)高性能计算(HPC)系统是一种计算系统 系统具有强大的多核多插座服务器,高性能存储, gpu和大量内存,通过超高速互连连接在一起 network. 它的设计允许HPC支持一些最大的计算和内存 今天开发的强化课程. 而HPC集群一般是为 软件跨多个节点工作,集群中的每个节点都是一个功能强大的节点 能够满足大多数用户计算需求的机器.

CoE HPC集群是一种Linux分布式集群,具有大量节点的特点 拥有领先的英特尔处理器,通过非常高速的网络紧密集成 通信网络. 节点的一个子集有额外的内存(每个节点256 GB) 和加速器(NVIDIA P-100 gpu),使它们适合一些最苛刻的 计算任务.

  • 计算基础设施:  各种配置共36个节点,共1008个计算核 由Intel至强E5-2660 v4(代号Broadwell)提供.0GHz, 35M Cache)处理器, 通过56gbps的高速内部网络进行通信. 该系统提供100 峰值性能的TFlop/s. 其中15个节点包含1个NVIDIA Tesla P100 12gb gpu, 1有2个NVIDIA Tesla P100 gpu. GPU子系统提供68.6 TFlop/s 总体100 TFlop/s峰值性能.
  • Memory: 20个节点(计算节点)有128 GB的内存,16个节点(GPU和共管节点)的功能 256 GB. 系统总内存为6.7 TB.
  • SSD输入/输出: 所有GPU和共管节点都配备了固态硬盘(ssd),以实现超高性能 输入/输出(I / O).  系统SSD总容量为12.8 TB.
  • 并行文件系统: HPC有110 TB的主目录和数据存储空间,所有人都可以使用 节点通过/home和/data. 此外,高性能计算具有高吞吐量光泽并行 可用空间为0的文件系统.541 PB,可通过/scratch获得. 每组将 在/data和/scratch中有他们可以写入的子目录吗.

如何接入高性能计算

HPC只能在连接到校园网时访问,即.e., 菠菜网lol正规平台_premier WiFi,校内局域网端口,或者VPN. 如果从校外连接,你需要 首先建立VPN连接. 设置VPN的说明 您可以使用菠菜网lol正规平台One凭据来建立连接.

HPC系统主要通过终端接口和我们的许多用户访问 有能力编写自定义程序来运行复杂的分析. 在未来, 我们也可以通过Jupyter notebook提供对HPC系统的交互式访问 或其他互动选项.

如果您从运行Windows操作系统的计算机连接,则需要下载 and install PuTTY. OSX和Linux不需要额外的软件来连接.

Windows

通过PuTTY连接 to coe-hpc1.hongyangditan.com.

Linux

打开终端app,输入:

ssh 菠菜网lol正规平台_ID@coe-hpc.hongyangditan.com
Or ssh 菠菜网lol正规平台_ID@coe-hpc1.hongyangditan.com 如果前面的命令通过VPN给您超时错误

Please note:

  • 系统将提示您输入密码. 输入您的菠菜网lol正规平台One密码,然后按ENTER. 当您输入密码时,终端将不会显示您的密码. HPC不存储您的 密码,也不会在本地验证您的密码. 因此,如果你被告知你的 HPC帐号已创建,您无法登录,请再次检查您的密码 通过另一个通道登录到菠菜网lol正规平台One.g., one.sjsu.来证明你 记住正确的密码,然后再试一次.
  • 第一次登录HPC系统时,系统会询问您是否愿意 缓存服务器指纹. 输入yes并按ENTER.
  • 现在,您已连接到HPC登录节点. 从这里你可以编译程序,提交 作业,或请求交互节点.

请求HPC帐户/访问

CoE HPC仅供CoE教师和学生使用. However, only 教师可以要求访问HPC. 需要访问研究项目的学生 或者一个班级应该要求他们的研究顾问或班级教授请求HPC访问 通过此表格,也可以在计算机工程系的网站上找到 site here. 课程项目的访问期限为6个月,课程项目的访问期限为1年 或研究项目,并无限期地给予教员. 学生访问权限可以是 通过在后续学期提交额外的访问请求来更新/延长.

访问HPC资源

HPC系统是一个社区资源,由许多学生和教师共享 工程学院. 因此,它使用一个叫做SLURM的资源调度程序, 确保所有用户都能公平地使用计算资源. Slurm允许请求 交互计算和批处理模式的资源.e.,一系列命令 会在分配资源时自动执行吗. 

当用户第一次访问HPC(例如通过ssh或putty)时,用户登录 到同一台服务器 login node. 此节点可用于编写脚本和代码,编译程序,测试执行 你的小数据程序. 然而,它不应该被大规模使用 计算,因为它会对其他用户访问和的能力产生负面影响 使用高性能计算系统. 相反,用户应该调度由slurin执行的作业 资源可用时的批处理模式(preferred)或请求交互资源来执行必要的计算.

Batch Jobs

批处理作业是简单的Linux Bash脚本,其中包含一个或多个应该执行的命令 由Slurm执行. 脚本的顶部必须包含Slurm的说明 批调度程序,以注释的形式,它将规定的类型和数量 正在请求的资源. 下面列出了一个这样的脚本示例.

#!/bin/bash
#
# SBATCH——作业名= pl2ap
# = pl2ap-srun SBATCH——输出.log
#
# SBATCH——ntasks = 1
= 1 # SBATCH——节点
# SBATCH——cpus-per-task = 4
# SBATCH——时间= 10
# SBATCH——mem-per-cpu = 1000
# SBATCH——邮件用户= username@hongyangditan.com
# SBATCH——邮件类型=结束
出口OMP_NUM_THREADS = 4
出口OMP_PLACES =核
出口OMP_PROC_BIND =传播
/home/david/programs/pl2ap/build/pl2ap.9 /home/david/data/WikiWords200.csr

上面的示例脚本使用以下命令执行一个名为pl2ap的多线程OpenMP程序 1个节点4核. SBATCH行告诉Slurm需要哪些资源(1个任务, 运行在1个节点上,请求4个核心和每个核心1GB RAM,持续10分钟) 并提供运行作业的其他选项(作业名称、作业日志文件应该是什么) be named). 需要注意的是,计算节点的时间限制不超过24小时 Gpu节点48小时. 所有节点的默认时间为4小时. 公寓节点没有 有时间限制. mail-user和mail-type参数指定HPC应该 当作业完成(或已经结束)时,发送电子邮件到提供的地址给用户 其他原因,e.g.,如果时间不够的话). The OMP_NUM_THREADS, OMP_PLACES, and OMP_PROC_BIND 环境变量用于确保线程与物理内核的关联. Note 程序和数据存储在用户的主目录(/home/david/). 主目录是登录和所有其他可用的并行数据资源 nodes. 在引用所执行的程序时,应该始终包含完整路径, 它们需要的数据,以及程序应该写入的日志文件.

假设上面的脚本存储在一个名为myscript的文件中.嘘,你可以安排 通过执行:

sbatch myscript.sh

执行man sbatch获取有关批处理中可以包含的选项的详细信息 script. 更多的Slurm帮助和教程可以在以下网站找到:

互动的工作

通过指定一个伪终端,可以通过srun命令请求交互式资源 任务应该在中执行,这可以通过使用-pty标志来完成.

Srun——ntasks 1——nodes 1——cpu -per-task 4——pty /bin/bash

这就等于,

srun -n 1 -n 1 -c 4——pty /bin/bash

GPU是一种只能在支持GPU的节点(GPU和condo分区)上使用的资源。. 它们只有在使用-gres标志请求时才可用.

Srun -p gpu——gres=gpu——pty /bin/bash

分区/队列

有几个队列或节点分区可用于提交作业. 计算分区包含所有计算节点(128GB内存,无图形处理器)和图形处理器 分区包含所有通用GPU编程能力节点(256GB RAM, NVIDIA P100) GPU). condo分区是一个特殊的分区,其中包含属于condo的节点 工程学院的研究实验室. 这些节点可以被一般人使用 用户,只要他们不被他们的所有者使用. 如果公寓节点业主 请求其节点上的资源时,任何当前正在运行的作业将被抢占到 允许访问节点所有者. 注意,每个队列都有一组不同的限制 关于请求资源. 您可以在其中找到节点的当前限制和状态 通过执行sinfo命令进行分区.

PARTITION AVAIL TIMELIMIT NODES STATE NODELIST  
compute* up 1-00:00:00 20 idle c[1-20]  
gpu up 2-00:00:00 15 idle g[1-15]  
interactive up 8:00:00 35 idle c[1-20],g[1-15]  
condo up infinite 1 idle condo1  

此外,程序挤压可用于查找有关状态的更多细节 当前在Slurm队列中的作业数量.

公寓/节点队列

公寓节点由CoE中的特定教员拥有. 但是,节点已配置完成 并以与任何其他HPC计算/gpu节点相同的方式访问. 当公寓节点 如果不是由其所有者使用,则任何用户都可以使用它,但要注意 他们的工作随时可能被取代. 当主人(或某人)在他们的 组)请求访问其共管节点上的资源,当前正在使用的任何作业 节点上的这些资源将收到警报(通过信号),告知它们需要停止并停止 在5分钟内强制停止,以便向公寓提供资源 owner.

公寓节点应该尽可能地彼此同构,以实现潜力 并行计算工作负载以及减少创建(和维护)的负担 为不同类型的硬件架构定制节点映像. 因此,condo 每年最多购买一次节点. 我们会给所有CoE教员发邮件 关于当前共管公寓节点模式的详细信息,让他们有机会买入 去排队买公寓.

模块化的软件

大量用于并行计算和科学计算的软件已经预装 并且可以通过模块获得. 要查看可用模块,执行:

module avail

并使用load命令使这些模块对脚本可用.

模块加载python3
python -V

更多详情可浏览 Lmod用户指南.

通过Jupyter Notebook进行交互数据科学

HPC配备了几个版本的Python和一些有用的库 数据挖掘,机器学习和数据科学. 此外,木星笔记本 在HPC上的每个模块化Python版本中都可用. 下面的教程 将向您展示如何在HPC上建立交互式会话并访问该会话 从您的计算机浏览器通过SSH隧道. 只提供指示 for Linux. 请阅读相应的手册或查找在线设置说明 通过PuTTY打开SSH隧道.

首先,解释这个过程是如何工作的. 我们将创建两个独立的SSH会话 to the HPC. 第一个将用于建立交互式HPC会话. The second SSH会话将打开一条隧道,并从带有ID的端口转发流量 在10000到63999之间任选一个数字. 如果这个端口已经 在使用时,您需要选择另一个端口ID. 然后我们再开一条隧道 从HPC登录节点到分配给您的HPC交互节点,使用相同的方法 port. 最后,在HPC交互节点上,我们将启动Jupyter Notebook并使用 提供的令牌/链接,以便从浏览器访问Notebook会话.

下面将“菠菜网lol正规平台_ID”、“PORT_ID”和“NODE_ID”替换为相应的值.

  1. 连接到HPC并请求交互式会话. 您可以自定义交互 根据任务的需要请求会话. 详细信息请参见Slurm手册. Take note 会话开始所在的交互节点的. 例如,你可能会得到一个会话 on c1 or g5. 在下面的步骤3中为NODE_ID使用此值. 离开终端窗口 打开(可以最小化).
    ssh 菠菜网lol正规平台_ID@coe-hpc.hongyangditan.com
    srun -n 1 -n 1 -c 1——pty /bin/bash
  2. 在不同的Terminal窗口(或Putty会话)中,启动到HPC的隧道,转发 port PORT_ID.
    ssh -L PORT_ID:localhost:PORT_ID 菠菜网lol正规平台_ID@coe-hpc.hongyangditan.com
  3. 启动从HPC登录节点到HPC交互节点转发端口的隧道 . 参见步骤1中的注释.
    ssh -L PORT_ID:localhost:PORT_ID 菠菜网lol正规平台_ID@NODE_ID
  4. 在HPC交互节点上启动Jupyter Notebook. 您可以自定义哪个版本 你想加载的Python文件(参见上面的模块部分). 执行下面的命令后,您可以 将获得一个带有令牌ID的链接,该令牌ID将允许您访问Jupyter Notebook. Copy the link.
    模块加载python3
    jupyter notebook——no-browser——port=PORT_ID
  5. 将上一步中的Notebook链接粘贴到浏览器中,然后按ENTER. Enjoy!
  6. 在您的会话结束时,记得关闭Jupyter Notebook(保存您的笔记本, 然后,在交互式节点终端窗口中,点击CTRL+C,然后输入y和ENTER), 然后关闭到HPC的两个SSH会话(在终端窗口中,键入exit,然后) press ENTER).

如何安装X版本的Y软件?

简单地说,你需要自己去做. 高性能计算已经建成并正在建设中 由计算机工程系的教员维护,我们没有 可用的时间或资源来支持帮助用户安装软件或 当某些院系需要新软件时,修改HPC环境. You can 按照制作/编译的说明在主目录中安装大多数软件 the software. 此外,HPC还提供了多种替代方案来帮助您进行安装 定制软件:

  • 很多软件都可以通过使用pip或Anaconda的Python模块安装(参见示例) 下图为Tensorflow).
  • Java程序可以从主目录结构运行.
  • 如果需要低级库,并且不能在主目录中本地编译, 可以考虑使用类似Docker的应用程序sigular,它可以在HPC上使用 模块负载奇异性. Singularity提供了构建小型/最小化的功能 容器,并将这些容器作为单个应用程序环境运行. 

如何安装Tensorflow?

Tensorflow对Python和CUDA的版本非常挑剔. 使用没有gpu的Tensorflow是非常简单的. 执行以下命令,进行替换 你想要的Python版本.

模块加载python3
Python -m PIP安装tensorflow

如果您需要将Tensorflow与gpu一起使用,请继续阅读.

安装Tensorflow-gpu for Python 3.6

#首先,在正确的Python安装中安装tensorflow-gpu.
-hpc1:~$ 模块加载python3/3.6.6
~$模块加载cuda/10.0
~$ python -m PIP install——user tensorflow-gpu
#现在测试tensorflow是否工作.
~$ srun -p gpu——gres=gpu -n 1 -n 1 -c 2——pty /bin/bash
~$ 模块加载python3/3.6.6
G1:~$ module load cuda/10.0
g1:~$ ipython
Python 3.6.6(默认,2018年9月1日,23:40:54) 
Type 'copyright', 'credits' or 'license以获取更多信息
IPython 6.5.0——增强的交互式Python. Type '?' for help.在[1]中:导入tensorflow为tf
在[2]中:sess = tf.会话(config =特遣部队.ConfigProto (log_device_placement = True))
2019-08-22 01:13:56.622426: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU支持指令,这个TensorFlow二进制文件没有编译使用:AVX2 FMA
[...]
2019-08-22 01:13:56.903809: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] 找到带有属性的设备0: 
名称:Tesla P100-PCIE-12GB major: 6 minor: 0 memoryClockRate(GHz): 1.3285
pciBusID: 0000:03:00.0
[...]
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla P100-PCIE-12GB, Pci总线id: 0000:03:00.0,计算能力:6.0

在Python 3中安装Tensorflow-gpu.7 via Anaconda

首先,安装Anaconda(如果还没有安装). 更多详情 在Linux环境中安装Anaconda.

  1. 下载首选的Anaconda环境 下面的示例使用Python 3的Linux安装程序.7版本的蟒蛇 2019.07.
    -hpc1:~$ wget http://repo.anaconda.com/archive/anaconda3 - 2019.07-Linux-x86_64.sh
  2. 通过比较其sha256和一个来检查下载的文件是否合法 由蟒蛇出版社出版. The 所有包的哈希值. 我们下载的特定包的地址是http://docs.anaconda.com/anaconda/install/hashes/anaconda3 - 2019.07-Linux-x86_64.sh-hash/. 
    下面的命令应该产生与网页上相同的哈希值.
    -hpc1:~$ sha256sum Anaconda3-2019.07-Linux-x86_64.sh
  3. 执行安装程序 
    ~$ sh Anaconda3-2019.07-Linux-x86_64.sh
  4. 安装程序提示“为了继续安装过程,请检查。 许可协议.单击Enter查看许可条款.
  5. 滚动到许可条款的底部,输入“Yes”表示同意.
  6. 单击Enter接受默认安装位置.
  7. 安装程序提示“您是否希望安装程序通过运行Anaconda3来初始化Anaconda3” conda init?" Choose "yes".
  8. 退出HPC并重新登录以激活Anaconda. 如果你在第7步选择不, 当你重新登录时,蟒蛇将不会被激活.  为了初始化anaconda, 运行' source /bin/activate ' 
    然后运行' conda init '.

现在为您的项目设置一个环境并激活它. 在以后的日志中 进入HPC或节点,你必须运行' conda激活tf-gpu '才能 使用已安装的库. 另外,安装tensorflow-gpu和ippython(前身) 以jupyter笔记本为命令行)中的环境. 目前,TF 1.14 does 不能使用Python 3.7, 
在Anaconda中安装的Python版本是什么. 因此,我们必须安装TF 1.13 instead.
(base) core -hpc1:~$ module load cuda/10.0
(base) core -hpc1:~$ conda create——name tf-gpu tensorflow-gpu=1.13 ipython

如果提示,更新Anaconda.
(base) -hpc1:~$ conda update -n base -c defaults conda

测试TF-gpu是否工作. 注意TF-gpu只能在gpu/condo节点上工作 是否已经请求并被授予对GPU资源的访问权限. 它会产生错误 登录节点或计算节点.
(base) coe-hpc1:~$ srun -p gpu——gres=gpu -n 1 -n 1 -c 2——pty /bin/bash
(base) G1:~$ module load cuda/10.0
(base) g1:~$ conda激活tf-gpu

Conda可能已经从其他Python安装中添加了一个站点包路径 (e.g.(系统上的基本Python 3安装)在系统路径列表中. If 如果发生这种情况,TF将失败并产生错误. 仔细检查系统路径列表并更正 if necessary.
(tf-gpu) g1:~$ ippython
Python 3.7.4(默认,2019年8月13日,20:35:49) 
输入“版权”、“信用”或“许可”获取更多信息
IPython 7.7.0——增强的交互式Python. Type '?' for help.
在[1]中:import sys
In [2]: sys.path 
Out[2]: 
[' / home /大卫/ anaconda3 / env / tf-gpu / bin ',
“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python37.zip',
“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python3.7',
“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python3.7 / lib-dynload ',
'',
'/home/david/.本地/ lib / python3.7 /网站”,
“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python3.7 /网站”,
“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python3.7 /网站/ IPython /扩展”,
'/home/david/.ipython']
In [3]: sys.path.删除(“/ home /大卫/.本地/ lib / python3.7 /网站”)
在[4]中:导入tensorflow为tf
在[5]中:sess = tf.会话(config =特遣部队.ConfigProto (log_device_placement = True)) 
2019-08-22 10:47:10.502572: I tensorflow/core/platform/cpu_feature_guard . I.cc:141] Your CPU支持指令,这个TensorFlow二进制文件没有编译使用:SSE4.1 SSE4.2avx avx2 fma
[...]
2019-08-22 10:47:10.667236: I tensorflow/core/common_runtime/gpu/gpu_device . ini.cc:1433] 找到带有属性的设备0: 
名称:Tesla P100-PCIE-12GB major: 6 minor: 0 memoryClockRate(GHz): 1.3285
pciBusID: 0000:03:00.0
totalMemory: 11.91gb freeMemory: 11.66GiB
[...]
/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device: XLA_GPU device

在Python 3中安装Tensorflow-gpu.6通过蟒蛇

如果有必要,请按照“在Python 3中安装Tensorflow”中的步骤操作.7通过蟒蛇 安装和初始化Anaconda的教程.

创建Python 3.6蟒蛇环境,安装tensorflow-gpu和ippython.
(base) core -hpc1:~$ module load cuda/10.0
(base):~$ conda create -n py36 python=3.6 tensorflow-gpu python

测试TF-gpu是否工作. 注意TF-gpu只能在gpu/condo节点上工作 是否已经请求并被授予对GPU资源的访问权限. 它会产生错误 登录节点或计算节点.
(base) coe-hpc1:~$ srun -p gpu——gres=gpu -n 1 -n 1 -c 2——pty /bin/bash
(base) G1:~$ module load cuda/10.0
(base) g1:~$ conda激活py36
(py36) g1:~$ pypython
Python 3.6.9 |蟒蛇公司.|(默认,2019年7月30日,19:07:31) 
输入“版权”、“信用”或“许可”获取更多信息
IPython 7.7.0——增强的交互式Python. Type '?' for help.
在[1]中:导入tensorflow为tf
在[2]中:sess = tf.会话(config =特遣部队.ConfigProto (log_device_placement = True)) 
2019-08-22 10:54:23.302337: I tensorflow/core/platform/cpu_feature_guard . io.cc:142] Your CPU支持指令,这个TensorFlow二进制文件没有编译使用:AVX2 FMA
[...]
2019-08-22 10:54:23.516445: I tensorflow/core/common_runtime/gpu/gpu_device . ini.cc:1640] 找到带有属性的设备0: 
名称:Tesla P100-PCIE-12GB major: 6 minor: 0 memoryClockRate(GHz): 1.3285
pciBusID: 0000:03:00.0
[...]
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla P100-PCIE-12GB, Pci总线id: 0000:03:00.0,计算能力:6.0