OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran,OpenMP以线程作为基础,提供了对并行算法的高层抽象描述,具有相对简单、可扩展、移植性好的优势,特别适合在多核CPU机器上的并行程序设计。
OpenMP主要针对细粒度的循环进行并行,即在循环中将每次循环分配给不同的线程执行,MPI主要针对粗粒度级别的并行。调试MPI+OpenMP应用,可进行rank级调试、线程级调试。
参数 |
说明 |
---|---|
远程服务器配置 |
进行HPC并行应用调试的目标服务器。 |
Linux用户名 |
输入启动MPI应用的Linux用户名称。
说明:
root用户拥有最高权限,为了避免给系统带来不必要的风险,建议使用非root用户进行调试。 |
Linux用户密码 |
使用的Linux用户密码。 |
记住密码 |
勾选后可记住当前远程服务器Linux用户密码。 |
SSH端口 |
输入启动MPI应用的服务器SSH端口号。 |
应用程序 |
输入的MPI应用,支持动态检索并显示应用程序路径。
请给Linux用户添加当前MPI应用的可读权限以及应用所在目录的可读、可写和可执行权限。
说明:
|
应用程序参数(可选) |
传递给应用程序运行的参数,若存在多个参数需使用空格隔开。 请给Linux用户添加应用程序所在目录的可读、可写、可执行权限及应用程序所在目录父目录的可执行权限。 |
应用程序源码路径 |
源码和MPI应用存放的共享路径,支持动态检索并显示应用程序源码工作目录。
|
环境变量设置(可选) |
输入运行HPC并行应用所需要的环境变量,有以下3种方式可选,可根据实际情况进行修改。
|
调试启动方式 |
调试启动方式可选:
说明:
MPI命令运行方式使用mpirun运行命令,mpirun是一个重要的工具,用作启动MPI并行应用程序,并提供进程之间的通信和清理工作等功能。 多瑙调度器是华为全自研的HPC集群调度器,提供大规模集群下的高资源利用率、高吞吐量的作业调度能力。 Slurm是一个开源的、高度可定制的、可扩展的、高性能的作业调度系统,它能够很好地提供资源管理和任务调度功能,广泛用于高性能计算、集群计算领域,如物理、化学、生物学、天文学等领域。 |
MPI运行命令行 |
输入的mpirun命令以及对应的命令参数,rank数目为1~2048。 |
多瑙调度器运行命令行 |
输入的多瑙调度器命令以及对应的命令参数。 |
Slurm调度器运行命令行 |
输入的Slurm调度器命令以及对应的命令参数。 |
OpenMP应用 |
勾选后,需要输入OpenMP线程数。 |
OpenMP线程数 |
输入的OpenMP应用thread数量。 |
死锁检测(可选) |
勾选后,需要输入死锁超时时间。 |
死锁超时时间(s)(可选) |
死锁超时时间,默认为10秒,取值范围10~60。 |
操作 |
操作描述 |
---|---|
继续 |
点击执行到下一个断点 |
暂停 |
点击中断正在执行的程序 |
单步跳过 |
点击执行到下一行 |
单步调试 |
点击步入函数 |
单步跳出 |
点击步出函数 |
重启 |
点击后重新启动调试 |
停止 |
点击后停止调试 |
thread状态展示:thread前的点表示当前thread的状态,绿点表示thread停止,红点表示thread正在运行。
支持添加条件断点(表达式、命中次数),条件断点支持修改、启用、禁用和删除。表达式断点是指表达式成立时中断该程序,命中次数断点是指命中指定的次数时中断该程序(当大于等于设置的命中次数时,均可进入断点中)。
鼠标悬浮到菱形上,显示通信子组变化的详细信息。
调试过程中若检测到死锁,提示通信组发生死锁,显示死锁详细信息。
在RANK信息区域,单击按钮,开启后对通信子组的创建和清除进行采集,并在VS Code面板上显示变化概览。
在通信子组变化概览页面中,单击“通信子组创建”、“通信子组清除”或“通信子组创建并清除”,可以不查看对应相关信息。