工程学院HPC

HPC访问指令

什么是高性能计算?

工程学院(CoE)高性能计算(HPC)系统是一种计算系统 系统具有强大的多核多插座服务器,高性能存储, gpu和大量内存,通过超高速互连连接在一起 网络. 它的设计允许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峰值性能.
  • 记忆: 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系统的交互式访问 或其他互动选项.

如果您从运行窗户操作系统的计算机连接,则需要下载 和安装 腻子. OSX和Linux不需要额外的软件来连接.

窗户

通过腻子连接 对coe-hpc1.practicaldrilling.com.

Linux

打开终端app,输入:

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

请注意:

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

请求HPC帐户/访问

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

访问HPC资源

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

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

批处理作业

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

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

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

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

sbatch myscript.sh

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

互动的工作

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

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

这就等于,

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

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

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

分区/队列

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

分区 效果 期限 节点 状态 节点列表  
计算* up 1-00:00:00 20 闲置 c[1-20]  
gpu up 2-00:00:00 15 闲置 g[1-15]  
互动 up 8:00:00 35 闲置 c[1-20],g[1-15]  
公寓 up 无限 1 闲置 公寓1  

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

公寓/节点队列

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

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

模块化的软件

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

模块效果

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

模块加载python3
python - v

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

通过Jupyter 请注意book进行交互数据科学

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

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

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

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

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

简单地说,你需要自己去做. 高性能计算已经建成并正在建设中 由计算机工程系的教员维护,我们没有 可用的时间或资源来支持帮助用户安装软件或 当某些院系需要新软件时,修改HPC环境. 你可以 按照制作/编译的说明在主目录中安装大多数软件 该软件. 此外,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) 
类型的版权', '学分' or '许可证以获取更多信息
IPython 6.5.0——增强的交互式Python. 类型的?寻求帮助.在[1]中:导入tensorflow为tf
在[2]中:sess = tf.会话(config =特遣部队.ConfigProto (日志_device_placement = True))
2019-08-22 01:13:56.622426: I tensorflow/core/platform/cpu_feature_guard.答:142) CPU支持指令,这个TensorFlow二进制文件没有编译使用:AVX2 菲利普-马萨
[...]
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通过蟒蛇

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

  1. 下载首选的Anaconda环境 下面的示例使用Python 3的Linux安装程序.7版本的蟒蛇 2019.07.
    -hpc1:~$ wget http://repo.水蟒.com/archive/水蟒3 - 2019.07-Linux-x86_64.sh
  2. 通过比较其sha256和一个来检查下载的文件是否合法 由蟒蛇出版社出版. 的 所有包的哈希值. 我们下载的特定包的地址是http://docs.anaconda.com/anaconda/install/hashes/水蟒3 - 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?选择“是”。.
  8. 退出HPC并重新登录以激活Anaconda. 如果你在第7步选择不, 当你重新登录时,蟒蛇将不会被激活.  为了初始化水蟒, 运行' source /bin/activate ' 
    然后运行' conda init '.

现在为您的项目设置一个环境并激活它. 在以后的日志中 进入HPC或节点,你必须运行' conda激活tf-gpu '才能 使用已安装的库. 另外,安装tensorflow-gpu和ippython(前身) 以jupyter笔记本为命令行)中的环境. 目前,TF 1.14日是 不能使用Python 3.7, 
在Anaconda中安装的Python版本是什么. 因此,我们必须安装TF 1.13相反.
(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/公寓节点上工作 是否已经请求并被授予对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将失败并产生错误. 仔细检查系统路径列表并更正 如果有必要的话.
(tf-gpu) g1:~$ ippython
Python 3.7.4(默认,2019年8月13日,20:35:49) 
输入“版权”、“信用”或“许可”获取更多信息
IPython 7.7.0——增强的交互式Python. 类型的?寻求帮助.
在[1]中:im港口 sys
在[2]中:sys.路径 
[2]: 
[' / home /大卫/ 水蟒3 / env / tf-gpu / bin ',
“/ home /大卫/ 水蟒3 / env / tf-gpu / lib / python37.邮政”,
“/ home /大卫/ 水蟒3 / env / tf-gpu / lib / python3.7',
“/ home /大卫/ 水蟒3 / env / tf-gpu / lib / python3.7 / lib-dynload ',
'',
“/ home /大卫/.本地/ lib / python3.7 /网站”,
“/ home /大卫/ 水蟒3 / env / tf-gpu / lib / python3.7 /网站”,
“/ home /大卫/ 水蟒3 / env / tf-gpu / lib / python3.7 /网站/ IPython /扩展”,
“/ home /大卫/.ipython ']
在[3]中:sys.路径.删除(“/ home /大卫/.本地/ lib / python3.7 /网站”)
在[4]中:导入tensorflow为tf
在[5]中:sess = tf.会话(config =特遣部队.ConfigProto (日志_device_placement = True)) 
2019-08-22 10:47:10.502572: I tensorflow/core/platform/cpu_feature_guard . I.答:141) 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
total记忆: 11.91gb free记忆: 11.66年镶条
[...]
/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/公寓节点上工作 是否已经请求并被授予对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. 类型的?寻求帮助.
在[1]中:导入tensorflow为tf
在[2]中:sess = tf.会话(config =特遣部队.ConfigProto (日志_device_placement = True)) 
2019-08-22 10:54:23.302337: I tensorflow/core/platform/cpu_feature_guard . io.答:142) CPU支持指令,这个TensorFlow二进制文件没有编译使用:AVX2 菲利普-马萨
[...]
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