登入平台,选择高性能计算HPC,可以看到有两个选项,一个是控制台,一个是登录节点。其中,控制台是启动超算代码运行的入口,在里面我们可以编写运行模板,指定需要的计算资源及运行代码入口等;登录节点是我们对代码进行编译的地方。
进入控制台:
在控制台中最为主要的工作就是编写运行模板:
选择进入登入节点:
=======================================
首先给出 C 运行环境的配置:
demo代码,hello.c
#include "mpi.h"
#include <stdio.h>
#include <math.h>
int main (int argc, char **argv)
{
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &myid);
MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name (processor_name, &namelen);
fprintf (stderr, "Hello World! Process %d of %d on %s\n", myid, numprocs, processor_name);
MPI_Finalize ();
return 0;
}
在编译前设置环境,编译后设置运行权限:(在登录节点中的操作)
MPI_CC=/home/HPCBase/compiler/bisheng-compiler-2.1.0-aarch64-linux/bin
MPI_LIB=/home/HPCBase/HMPI/hmpi/lib/
export PATH=$MPI_CC:$PATH
export LD_LIBRARY_PATH=$MPI_LIB:$LD_LIBRARY_PATH
clang hello.c -fPIC -lmpi -o hello -I /home/HPCBase/HMPI/hmpi/include -L /home/HPCBase/HMPI/hmpi/lib/
chmod a+x hello
./hello
在登录节点运行结果(编译结果):
在登录节点编译后,并进行了简单的测试,证明编译的代码没有问题。编译好代码后回到控制台编写运行作业。
提交作业后,运行成功:
=======================================
需要注意的是这里只是给出了基础的操作,所运行的C语言代码只实现了单机运行,关于其他的作业参数本文并没有给出具体介绍,余下的介绍留给后文。
知识点:
关于超算的MPI进程的启动需要知道的是共有两种启动方式,一个是在控制台中填写作业模板中的参数并提交;另一个方法是在登录节点直接调用作业提交命令dsub来进行提交。
关于超算平台的物理结构:(下图)
需要注意的是:
1. 我们的控制节点和登录节点都是这个master服务器;
2. master服务器并不应该进行任何计算,不过对于C语言来说依旧可以在master节点上进行编译的,当然理论上也不建议在master节点上进行大规模的编译工作,因为这个master节点的算力有限而且是公用的;
3. slave节点才是正在进行运行的节点,虽然master节点也可以进行单机运行,但是如果你敢在master节点上长时间运行代码要小心管理员找你细谈;
4. 我们使用者只能通过ssh或者web ssh访问master节点,并不能直接访问slave节点;
5. master节点通过dsub作业提交程序和所有slave节点进行连通,master节点不能通过ssh访问slave节点,也就是说master节点和slave节点是做了一定的隔离的;
6. master节点通过dsub与所有slave节点连接,所有slave节点彼此通过ssh互相连接(因为mpirun --host 就是通过ssh连接的);
7. 我们在master节点上上传的代码和数据以及作业其路径在master节点和slave节点上都是相同的,master节点和slave节点的磁盘结构和内容可以看做是相同的,slave节点相当于master节点的镜像(搞过Hadoop的人估计好理解这一点);
=======================================