文章目录
前言
上完高性能实验课,答应了老师写一个关于devcloud的博客,就简单介绍下平台如何使用吧。
总体来说devcloud非常方便,在devcloud平台上已经配置好了上机所需要的集群环境,省去配置环境的时间,只要了解下平台上的命令便可以开始实验,下面会介绍下平台如何使用以及常用命令。
一、devcloud平台是什么?
Intel® DevCloud平台为每个注册用户提供独立的沙箱运行环境,并构建了完整的软件栈,开发者登录后不需要对环境做任何配置,不用担心软件之间的兼容问题,即可使用浏览器随时随地访问Intel® DevCloud上的算力资源、官方提供的丰富教程和参考实例。
具体的介绍和注册可以参考因特尔发布的博客:
https://blog.csdn.net/gc5r8w07u/article/details/124330276
二、使用步骤
1.进入到devcloud平台
首先按照上面完成devcloud平台的注册,然后进入到https://devcloud.intel.com/oneapi/。
1)切换到Get Started
2)点击Launch JupyterLab进入devcloud平台
向下翻到底,点击Launch JupyterLab就可以进入devcloud平台(这一过程很慢,需要多等一会儿)。
2.编译和执行代码
1)打开终端并切换到对应路径
首先点击上方加号,按照图片点击Terminal就可以进入终端。
切换路径命令(HPC为代码所在文件夹):
cd HPC
2)激活环境
执行下面命令激活环境:
source /opt/intel/inteloneapi/setvars.sh > /dev/null 2>&1
3)编译代码
首先编写相关代码,对应代码的编译和执行命令如下:
1.pthread的编译和执行命令:
icpx -fsycl pthread.c -lpthread -o pthread
./pthread
2.openmp的编译和执行命令:
icpx -fsycl omp.c -fopenmp -o omp
./omp
3.mpi的编译和执行命令:
mpiicpc -cxx=icpx -fsycl mpi.c -o mpi.x
mpirun -np 4 ./mpi.x
4.opencl的编译和执行命令:
icpx -fsycl opencl.cpp -lOpenCL -o opencl
./opencl
5.sycl的编译和执行命令:
icpx -fsycl -opencl matrix_mul_sycl.cpp
./pencl
3.启动和管理作业
对于上述几个任务如果只在CPU上执行的话没有任何问题,但是如果要在GPU上面执行需要提交作业,具体流程如下:
1)编写.sh文件
按照下面格式编写.sh文件,其中只需要将第四行的命令替换为对应任务的执行命令即可,具体代码如下:
#!/bin/bash
source /opt/intel/inteloneapi/setvars.sh > /dev/null 2>&1
/bin/echo "##" $(whoami) is executing
./opencl
注意:第三行为输出的内容,其中 $(whoami) 为用户信息,后面为要输出的内容。
2)提交批处理作业
按照下面代码提交批处理作业:
qsub -l nodes=1:gpu:ppn=2 -d . launch.sh
注意:-l nodes=1:gpu:ppn=2(小写 L)用于为作业分配一个完整的 GPU 节点。
注意:-d。用于将当前文件夹配置为任务的工作目录。
注意:launch.sh是在计算节点上执行的脚本。
3)请求交互模式
按照下面代码请求交互模式:
qsub -I -l nodes=1:gpu:ppn=2 -d .
注意:-I(大写 i)是用于请求交互式会话的参数。
4)验证作业脚本
按照下面代码验证作业脚本,可以看到程序中的输出,输入exit提前退出:
bash launch.sh
exit
更多相关命令可以访问https://devcloud.intel.com/oneapi/documentation/shell-commands/进行查看。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了devcloud的使用流程以及相关命令。其中在实验时,当时没有提交作业,所以CPU当核心数超过6时便没有作用了。之后为了写这个博客,尝试提交作业后,发现也没有提升,所以大家可以自己再测试测试。
如果上课的话,记得不要说自己的CUDA程序是在devcloud平台下运行的。
第一次写博客,所以写的不太好请大家见谅,有什么错误可以联系我进行修改。