工程学院HPC
HPCBET9九州体育登陆官方指令
什么是高性能计算?
工程学院高性能计算(HPC)系统是一个由强大的多核多插槽服务器、高性能存储、gpu和大量内存组成的计算系统,通过超高速互连网络连接在一起。它的设计允许HPC支持当今开发的一些最计算和内存密集型程序。虽然HPC集群通常是为跨多个节点工作的软件设计的,但集群中的每个节点都是一台功能强大的机器,可以满足大多数用户的计算需求。
CoE HPC集群是一个Linux分布式集群,具有大量具有领先英特尔至强处理器的节点,这些节点通过非常高速的InfiniBand网络紧密集成。节点的一个子集具有额外的内存(每个节点256 GB)和NVIDIA gpu,使它们适合一些最苛刻的计算任务。
- 计算基础设施:共有44个不同配置的节点,共有1232个计算核,由Intel至强处理器提供。系统提供100 TFlop/s的峰值性能。
-
NVidia GPU A100 H100 钠 V100 P100 #节点 18 5 1 3 17 - 内存:20个节点(计算节点)有128gb内存,24个节点(GPU和共管节点)有256gb内存。系统总内存为8.7 TB。
- SSD输入/输出:所有GPU和condo节点都配备固态硬盘(SSD),实现超高性能的I/O输入/输出。系统SSD总容量为12.8 TB。
- 并行文件系统:COE HPC有一个524TB的Lustre文件系统作为高性能IO的临时磁盘。此外,每个HPC节点共享一个/home和/data目录,每个目录都有100TB的容量,可通过高速、低延迟的InfiniBand网络BET9九州体育登陆官方。
如何接入高性能计算
HPC只能连接到校园网,即九州体育_premier WiFi,校内LAN端口或VPN。如果从校外连接,你需要首先建立一个VPN连接。设置VPN的说明,您可以使用九州体育One凭据建立连接。
HPC系统主要通过终端接口BET9九州体育登陆官方,我们的许多用户都有能力编写自定义程序来运行复杂的分析。将来,我们还可能通过Jupyter notebook或其他交互选项提供对HPC系统的交互式BET9九州体育登陆官方。
如果是Windows操作系统,则需要下载并安装PuTTY。OSX和Linux不需要额外的软件来连接。
窗户
通过PuTTY连接到coe-hpc1.sjsu.edu。
Linux
打开终端app,输入:
ssh 九州体育_ID@coe-hpc.sjsu.edu或ssh 九州体育_ID@coe-hpc1.sjsu.edu如果前面的命令通过VPN给您超时错误
请注意:
- 系统将提示您输入密码。输入您的九州体育One密码,然后按ENTER。当您输入密码时,终端将不会显示您的密码。HPC不会存储您的密码,也不会在本地验证您的密码。因此,如果您被告知您的HPC帐户已被创建并且无法登录,请通过另一个通道(例如,one.sjsu.edu)登录九州体育One,再次检查您的密码,以验证您记住了正确的密码,然后再试一次。
- 第一次登录HPC系统时,系统会询问您是否要缓存服务器指纹。输入yes并按ENTER。
- 现在,您已连接到HPC登录节点。在这里,您可以编译程序、提交作业或请求交互式节点。
请求HPC帐户/BET9九州体育登陆官方
CoE HPC仅供CoE教师和学生使用。但是,只有教师可以请求BET9九州体育登陆官方HPC。需要BET9九州体育登陆官方研究项目或课程的学生应向他们的研究顾问或课程教授请求BET9九州体育登陆官方HPC,这也可以在计算机工程系网站上找到。课程项目最多可获得6个月的BET9九州体育登陆官方权限,顶点项目或研究项目可获得1年的BET9九州体育登陆官方权限,教职员工可获得无限期BET9九州体育登陆官方权限。学生可以通过在后续学期提交额外的BET9九州体育登陆官方请求来更新/延长BET9九州体育登陆官方权限。
BET9九州体育登陆官方HPC资源
HPC系统是一个社区资源,由工程学院的许多学生和教师共享。因此,它使用一个称为SLURM的资源调度程序来确保所有用户对计算资源的公平BET9九州体育登陆官方。Slurm允许在交互式计算和批处理模式下请求资源,即,在分配资源时将自动执行一系列命令。
当用户第一次BET9九州体育登陆官方HPC(例如通过ssh或putty)时,登录到同一台服务器,即登录节点。该节点可用于编写脚本和代码,编译程序,在小数据上测试程序的执行情况。但是,它不应该用于大规模计算,因为它会对其他用户BET9九州体育登陆官方和使用HPC系统的能力产生负面影响。相反,当资源可用时(首选),用户应该安排作业由slurm以批处理模式执行,或者请求交互式资源用于执行必要的计算。
批处理作业
批处理作业是简单的Linux Bash脚本,其中包含一个或多个应该由Slurm执行的命令。脚本的顶部必须以注释的形式包含Slurm Batch调度器的指令,这些指令将指示所请求的资源的类型和数量。下面列出了一个这样的脚本示例。
#!/bin/bash # #SBATCH——job-name=pl2ap #SBATCH——output=pl2ap-srun.log # #SBATCH——ntasks=1 #SBATCH——nodes=1 #SBATCH——cpu -per-task=4 #SBATCH——memm -per-cpu=1000 #SBATCH——邮件-user=username@sjsu.edu #SBATCH——邮件-type=END export OMP_NUM_THREADS=4 export OMP_PLACES=cores export OMP_PROC_BIND=spread /home/大卫/程序/pl2ap/build/pl2ap pl2ap -t 0.9 /home/大卫/数据/ wikiwords200 .csr
上面的示例脚本在一个节点上使用4个内核执行一个名为pl2ap的多线程OpenMP程序。SBATCH行告诉Slurm需要哪些资源(1个任务,在1个节点上运行,请求4个内核和每个内核1GB RAM,持续10分钟),并提供运行作业的其他选项(作业名称、作业日志文件名称)。计算节点最长为24小时,gpu节点最长为48小时。所有节点的默认时间为4小时。公寓节点没有任何时间限制。mail-user和mail-type参数指定,当作业完成时(或由于某些其他原因而结束,例如,如果它已经超时),HPC应该通过提供的地址向用户发送电子邮件。使用OMP_NUM_THREADS、OMP_PLACES和OMP_PROC_BIND环境变量来确保线程与物理内核的亲缘性。注意,程序和数据存储在用户的主目录(/home/david/)中。主目录是登录节点和所有其他节点上可用的并行数据资源。在引用要执行的程序、它们需要的数据和程序应该写入的日志文件时,应该始终包含完整路径。
假设上面的脚本存储在一个名为myscript.sh的文件中,您可以通过执行以下命令来调度作业:
sbatch myscript.sh
执行man sbatch获取批处理脚本中可包含的选项的详细信息。更多的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), GPU分区包含所有通用GPU编程节点(256GB内存,NVIDIA P100、A100、H100 GPU)。公寓分区是一个特殊的分区,包含属于工程学院研究实验室的节点。这些节点可以被普通用户使用,只要它们不被其所有者使用。如果condo节点所有者请求其节点上的资源,则任何当前正在运行的作业将被抢占以允许BET9九州体育登陆官方节点所有者。请注意,每个队列对请求资源都有不同的限制。您可以通过执行sinfo命令来查找这些分区中节点的当前限制和状态。
分区 | 期限(天) | 节点 | 节点列表 | |
计算 | 12 | 17 | c [1 - 14, 18 - 20) | |
GPU (H100) | 7 | 2 | g (2,6) | |
GPU (A100) | 7 | 2 | 13 g(7日) | |
GPU (P100) | 7 | 10 | g (1 3-5.9.11-12 14 - 16) | |
公寓 | 21 | 4 | 公寓(3 - 4,6 - 7) |
此外,可以使用程序挤压来查找有关Slurm队列中当前作业状态的更多详细信息。
公寓/节点队列
公寓节点由CoE中的特定教员拥有。但是,节点的配置和BET9九州体育登陆官方方式与任何其他HPC计算/gpu节点相同。当共管公寓节点不被其所有者使用时,任何用户都可以使用它,但需要注意的是,他们的工作可能随时被抢占。当所有者(或其组中的某个人)请求BET9九州体育登陆官方其共管公寓节点上的资源时,当前使用节点上这些资源的任何作业都将被警告(通过信号),需要停止,并在5分钟内强制停止,以便将资源提供给共管公寓所有者。
Condo节点应该尽可能地彼此同构,以支持潜在的并行计算工作负载,并减少为不同类型的硬件架构创建(和维护)自定义节点映像的负担。因此,公寓节点每年最多购买一次。一封电子邮件将发送给所有CoE教员,提供有关当前公寓节点模型的详细信息,让他们有机会购买公寓队列。
模块化的软件
大量用于并行计算和科学计算的软件已经预装,并通过模块提供。要查看可用模块,执行:
模块效果
并使用load命令使这些模块对脚本可用。
模块加载python3 python -V
更多细节可以在Lmod的用户指南中找到。
通过Jupyter Notebook进行交互数据科学
HPC配备了几个版本的Python和一些在数据挖掘、机器学习和数据科学中有用的库。此外,Jupyter Notebook在HPC上的每个模块化Python版本中都可用。下面的教程将向您展示如何在HPC上建立交互式会话,并通过SSH隧道从计算机的浏览器BET9九州体育登陆官方该会话。说明将只提供给Linux。请阅读相应的手册或查找通过PuTTY建立SSH隧道的在线说明。
首先,解释这个过程是如何工作的。我们将创建两个单独的到HPC的SSH会话。第一个将用于建立交互式HPC会话。第二个SSH会话将打开一个隧道,并从具有ID的端口转发流量,该端口将是您在10000到63999之间选择的一个数字。如果带有该编号的端口已经在使用中,则需要选择另一个端口ID。然后,我们将打开从HPC登录节点到分配给您的HPC交互节点的另一条隧道,使用相同的端口。最后,在HPC交互节点上,我们将启动Jupyter Notebook,并使用提供的令牌/链接从浏览器BET9九州体育登陆官方Notebook会话。
下面将“九州体育_ID”、“PORT_ID”和“NODE_ID”替换为相应的值。
- 连接到HPC并请求交互式会话。您可以根据任务的需要定制交互式会话请求。详细信息请参见Slurm手册。注意会话开始所在的交互节点。例如,您可以在c1或g5上获得会话。在下面的步骤3中为NODE_ID使用此值。保持终端窗口打开(您可以最小化它)。ssh 九州体育_ID@coe-hpc.sjsu.edu srun -n 1 -n 1 -c 1——pty /bin/bash
- 在另一个终端窗口(或Putty会话)中,启动到HPC的隧道,转发端口PORT_ID。ssh -L PORT_ID:localhost:PORT_ID 九州体育_ID@coe-hpc.sjsu.edu
- 启动从HPC登录节点到HPC交互节点转发端口的隧道。参见步骤1中的注释。ssh -L PORT_ID:localhost:PORT_ID 九州体育_ID@NODE_ID
- 在HPC交互节点上启动Jupyter Notebook。您可以自定义要加载哪个版本的Python(请参阅上面的“模块”部分)。执行以下命令后,您将获得一个带有令牌ID的链接,该链接将允许您BET9九州体育登陆官方Jupyter Notebook。复制链接。模块加载python3 jupyter notebook——no-browser——port=PORT_ID
- 将上一步中的Notebook链接粘贴到浏览器中,然后按ENTER。享受吧!
- 在会话结束时,记得关闭Jupyter Notebook(保存您的笔记本,然后在交互式节点终端窗口中单击CTRL+C,然后键入y和ENTER),然后关闭到HPC的两个SSH会话(在终端窗口中键入exit,然后按ENTER)。
如何安装X版本的Y软件?
简单地说,你需要自己去做。HPC是由计算机工程系的教师建立和维护的,我们没有时间或资源来支持帮助用户安装软件或在某些教师需要新软件时修改HPC环境。您可以按照制作/编译软件的说明在您的主目录中安装大多数软件。此外,HPC提供多种选择来帮助您安装自定义软件:
- 许多软件可以通过Python模块使用pip或Anaconda安装(参见下面的Tensorflow示例)。
- Java程序可以从主目录结构运行。
- 如果需要低级库,并且不能在你的主目录本地编译,可以考虑使用sigular,这是一个类似Docker的应用程序,可以通过模块加载奇点在HPC上使用。Singularity提供了构建小型/最小容器的功能,并将这些容器作为单个应用程序环境运行。
如何安装Tensorflow?
Tensorflow对Python和CUDA的版本非常挑剔。使用没有gpu的Tensorflow是非常简单的。执行以下命令,将Python版本替换为所需的Python版本。
模块加载python3 python -m PIP安装tensorflow
如果您需要将Tensorflow与gpu一起使用,请继续阅读。
为Python 3.6安装Tensorflow-gpu
#首先,在正确的Python安装中安装tensorflow-gpu。coe-hpc1:~$ module load python3/3.6.6 coe-hpc1:~$ module load cuda/10.0 coe-hpc1:~$ python -m pip install——user tensorflow-gpu #现在测试tensorflow是否工作。-hpc1:~$ srun -p gpu——gres=gpu -n 1 -n 1 -c 2——pty /bin/bash g1:~$ module load python3/3.6.6 g1:~$ module load cuda/10.0 g1:~$ ipython Python 3.6.6(默认,2018年9月1日,23:40:54)输入“copyright”,“credits”或“license”获取更多信息ipython 6.5.0—增强的交互式Python。类型的?请求帮助。In [1]: import tensorflow as tf In [2]: sess =tf. session (config=tf. configproto (log_device_placement=True)) 2019-08-22 01:13:56.622426: I tensorflow/core/platform/cpu_feature_guard. cn你的CPU支持指令,这个TensorFlow二进制文件没有编译使用:AVX2 FMA[…][2019-08-22 01:13:56.903809: I tensorflow/core/common_runtime/gpu/gpu_device. io]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,名称:Tesla P100-PCIE-12GB, pci总线id: 0000:03:00.0,计算能力:6.0
通过Anaconda安装Python 3.7中的Tensorflow-gpu
首先,安装Anaconda(如果还没有安装)。在Linux环境中安装Anaconda的其他详细信息。
- 下面的示例使用Python 3.7版本Anaconda 2019.07的Linux安装程序。-hpc1:~$ wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh
- 通过比较其sha256和Anaconda发布的sha256和来检查下载的文件是否合法。所有包的哈希值。我们下载的特定包的地址是https://docs.anaconda.com/anaconda/install/hashes/Anaconda3-2019.07-Linux-x86_64.sh-hash/。下面的命令应该产生与网页上相同的哈希值。. exe -hpc1:~$ sha256sum Anaconda3-2019.07-Linux-x86_64.sh
- 执行安装程序core -hpc1:~$ sh Anaconda3-2019.07-Linux-x86_64.sh
- 安装程序提示“为了继续安装过程,请查看许可协议。”单击“Enter”查看许可条款。
- 滚动到许可条款的底部,输入“Yes”表示同意。
- 单击Enter接受默认安装位置。
- 安装程序提示“您是否希望安装程序通过运行conda init来初始化Anaconda3 ?”选择“是”。
- 退出HPC并重新登录以激活Anaconda。如果您在第7步中选择了no,那么当您重新登录时,Anaconda将不会被激活。为了初始化anaconda,运行‘ source /bin/activate ’,然后运行‘ conda init ’。
现在为您的项目设置一个环境并激活它。将来,在登录到HPC或节点后,您必须运行‘ conda activate tf-gpu ’才能使用已安装的库。此外,在环境中安装tensorflow-gpu和ipython(用于命令行的jupyter notebook的前身)。目前,TF 1.14不能与Python 3.7一起工作,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 ippython
如果提示,更新Anaconda。(base) -hpc1:~$ conda update -n base -c defaults conda
测试TF-gpu是否工作。注意,TF-gpu只会在gpu/condo节点上工作,如果你已经请求并被授予对gpu资源的BET9九州体育登陆官方权限。会在登录节点或计算节点上产生错误。(base) core -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 activate tf-gpu
Conda可能已经在你的系统路径列表中添加了一个来自其他Python安装(例如,系统上的基本Python 3安装)的站点包路径。如果发生这种情况,TF将失败并产生错误。仔细检查系统路径列表,必要时进行更正。(tf-gpu) g1:~$ ipythpython 3.7.4(默认值,2019年8月13日,20:35:49)输入“copyright”,“credits”或“license”以获取更多信息ipyth7.7.0—增强的交互式Python。类型的?请求帮助。[1]中:导入sys。[2]中:导入sys。路径[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 /大卫。local / lib / python3.7 /网站”,“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python3.7 /网站”,“/ home /大卫/ anaconda3 / env / tf-gpu / lib / python3.7 /网站/ IPython /扩展',' / /大卫回家。在[3]中:sys.path.remove('/home/david/.local/lib/python3.7/site-packages‘)在[5]中:import tensorflow as tf在[5]中:sess =tf. session (config=tf. configproto (log_device_placement=True)) 2019-08-22 10:47:10.502572: I tensorflow/core/platform/cpu_feature_guard. exe ’)你的CPU支持指令,这个TensorFlow二进制文件没有编译使用:SSE4.1 SSE4.2 AVX AVX2 FMA[…][2019-08-22 10:47:10.667236: I tensorflow/core/common_runtime/gpu/gpu_device. io]P100-PCIE-12GB major: 6 minor: 0 memoryClockRate(GHz): 1.3285 pciBusID: 0000:03:00.0 totalMemory: 11.91GiB freemmemory: 11.66GiB[…]/job:localhost/replica:0/task:0/device:XLA_GPU:0 -> device:XLA_GPU device
通过Anaconda安装Python 3.6中的Tensorflow-gpu
如果需要,请按照“通过Anaconda在Python 3.7中安装Tensorflow”教程中的步骤安装和初始化Anaconda。
创建Python 3.6 Anaconda环境并安装tensorflow-gpu和ippython。(base) coe-hpc1:~$ module load cuda/10.0 (base) coe-hpc1:~$ conda create -n py36 python=3.6 tensorflow-gpu pypython
测试TF-gpu是否工作。注意,TF-gpu只会在gpu/condo节点上工作,如果你已经请求并被授予对gpu资源的BET9九州体育登陆官方权限。会在登录节点或计算节点上产生错误。(base) core -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 activate py36 (py36) g1:~$ ipython Python 3.6.9 |Anaconda, Inc.|(默认值,2019年7月30日,19:07:31)输入‘copyright’, ‘credits’或‘license’获取更多信息ipython 7.7.0—增强的交互式Python。类型的?请求帮助。In [1]: import tensorflow as tf In [2]: sess =tf. session (config=tf. configproto (log_device_placement=True)) 2019-08-22 10:54:23.302337: I tensorflow/core/platform/cpu_feature_guard. cn你的CPU支持指令,这个TensorFlow二进制文件没有编译使用:AVX2 FMA[…][2019-08-22 10:54:23.516445: I tensorflow/core/common_runtime/gpu/gpu_device. io]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,名称:Tesla P100-PCIE-12GB, pci总线id: 0000:03:00.0,计算能力:6.0