中国科大超级计算中心用户使用手册¶ 前言 现有超级计算系统 瀚海25超级计算系统 瀚海22超级计算系统 瀚海20超级计算系统 用户登录与文件传输 设置编译及运行环境 串行及OpenMP程序编译及运行 串行C/C++程序的编译 C/C++输入输出文件后缀与类型的关系 串行C/C++程序编译举例 串行Fortran程序的编译 Fortran输入输出文件后缀与类型的关系 串行Fortran程序编译举例 OpenMP程序的编译与运行 OpenMP程序的编译 OpenMP程序的运行 Intel、PGI及GNU C/C++ Fortran编译器介绍 Intel Parallel Studio XE Cluster C/C++ Fortran编译器 简介 编译错误 Fortran程序运行错误 重要编译选项 优化选项 代码生成选项 过程间优化(IPO)选项 高级优化选项 性能分析优化(PGO)选项 优化报告选项 OpenMP和并行处理选项 浮点选项 内联选项 输出、调试及预编译头文件(PCH)选项 预处理选项 C/C++语言选项 Fortran语言选项 数据选项 编译器诊断选项 兼容性选项 链接和链接器选项 其它选项 Intel oneAPI C/C++ Fortran编译器 简介 编译器选项通用规则 C/C++编译器 编译时错误 文件扩展名 输入文件扩展名 输出文件扩展名 重要编译选项 优化选项 高级优化选项 代码生成选项 卸载编译、OpenMP和并行处理选项 过程间优化选项 性能分析引导优化 优化报告选项 浮点数选项 内联选项 输出、调试及预编译头文件选项 预处理选项 组件控制选项 语言选项 数据选项 编译器诊断选项 兼容性选项 链接或链接器选项 杂项选项 过时及废弃的选项 过时的选项 废弃的选项 可移植性与GCC兼容警告选项 Fortran编译器 编译时错误 Fortran程序运行时错误 输入文件后缀 输出文件后缀 编译器限制 重要编译选项 优化选项 高级优化选项 代码生成选项 卸载编译、OpenMP和并行处理选项 过程间优化选项 性能分析引导优化 优化报告选项 浮点数选项 内联选项 输出、调试及预编译头文件选项 预处理选项 组件控制选项 语言选项 数据选项 编译器诊断选项 兼容性选项 链接或链接器选项 杂项选项 过时及废弃的选项 过时的选项 废弃的选项 PGI C/C++ Fortran编译器 编译器简介 编译错误 Fortran程序运行错误 重要编译选项 一般选项 优化选项 调试选项 预处理选项 链接选项 C/C++语言选项 Fortran语言选项 平台相关选项 GNU C/C++ Fortran编译器 GNU C/C++ Fortran编译器简介 编译错误 重要编译选项 控制文件类型的选项 C/C++语言选项 Fortran语言选项 警告选项 调试选项 优化选项 预处理选项 链接选项 i386和x86-64平台相关选项 约定成俗选项 GPU异构计算和CUDA程序简介 背景 GPGPU GPU异构计算 CUDA编程框架 NVCC编译引擎 nvcc预定义宏 支持的输入文件后缀 常用编译选项 一个简单的例子 代码示例 程序解读 编译运行 小结 One More Thing 编译器命令 数学库 常用工具 参考 MPI并行程序编译及运行 简介 MPI并行程序的编译 NVIDIA HPC-X工具集 Mellanox Fabric集合通信加速(Fabric Collective Accelerator, FCA) 采用FCA v4.x (hcoll)运行MPI Open MPI中启用FCA 调整FCA v4.4配置 选择端口及设备 启用卸载MPI非阻塞集合 启用Mellanox SHARP软件加速集合 HCOLL v4.4中的GPU缓存支持 局限性 统一通信-X架构(Unified Communication - X Framework, UCX) OpenMPI中使用UCX 调整UCX UCX特性 硬件标识符匹配(Tag Matching) CUDA GPU 片上内存(MEMIC) 生成Open MPI/OpenSHMEM的UCX统计信息 PGAS共享内存访问(OpenSHMEM) HPC-X Open MPI/OpenSHMEM 采用UCX运行HPC-X OpenSHMEM 采用HPC-X OpenSHMEM与MPI一起开发应用 HPC-X OpenSHMEM调整参数 针对对称堆(Symmetric Heap)应用的OpenSHMEM MCA参数 用于强制连接生成的参数 Open MPI库 Intel MPI库 编译命令 编译命令选项 环境变量 编译环境 I_MPI_ADJUST家族环境变量 调优环境变量 自动调优 GPU支持 GPU固定 GPU缓冲区支持 网络结构控制环境变量 通信网络结构控制 共享内存控制 支持OFI的网络结构控制 用于异步进度控制的环境变量 多端点(Multi-EP)环境变量 Hydra环境、进程固定、NIC绑定等 编译举例 调试 追踪 正确性检查 统计收集 与编译器相关的编译选项 MPI并行程序的运行 程序调试 GDB调试器简介 基本启动方式[gdbstart] 选择启动时文件 记录日志 退出GDB 准备所需要调试的程序 准备调试代码源代码 准备编译器和链接器环境 调试优化编译的代码 准备所需要调试的并行程序 编译所要调试的程序 开始调试程序 显示源代码 运行程序 设置和删除断点 控制进程环境 执行一行代码 执行代码直到 执行一行汇编指令 显示变量或表达式值 传递命令给调试器 命令、文件名和变量补全 自定义命令 调试并行程序 调试OpenMP等多线程程序 调试MPI并行应用 Intel MKL数值函数库 Intel MKL主要内容 Intel MKL目录内容 链接Intel MKL 快速入门 利用-mkl编译器参数 使用单一动态库 选择所需库进行链接 使用链接行顾问 使用命令行链接工具 链接举例 在Intel 64架构上链接 在IA-32架构上链接 链接细节 在命令行上列出所需库链接 动态选择接口和线程层链接 使用接口库链接 使用线程库链接 使用计算库链接 使用编译器运行库链接 使用系统库链接 冗长(Verbose)启用模式链接 特别提示 性能优化等 应用程序的编译与安装 二进制程序的安装 源代码程序的安装 Slurm作业调度系统 简介 基本概念 三种模式区别 基本术语 基本用户命令 常用命令 基本用户命令汇总 显示队列、节点信息:sinfo sinfo主要输出项 sinfo主要选项 查看队列中的作业信息:squeue squeue主要输出项 squeue主要选项 查看详细队列信息:scontrol show partition scontrol show partition主要输出项 查看详细节点信息:scontrol show node scontrol show node主要输出项 查看详细作业信息:scontrol show job scontrol show job主要输出项 查看服务质量(QoS):sacctmgr 查看作业屏幕输出:speek 提交作业 共同说明 主要选项 IO重定向 交互式提交并行作业:srun 主要输入环境变量 主要输出环境变量 多程序运行配置 常见例子 批处理方式提交作业:sbatch 主要输入环境变量 主要输出环境变量 串行作业提交 OpenMP共享内存并行作业提交 MPI并行作业提交 GPU作业提交 作业获取的节点名及对应CPU核数解析 分配式提交作业:salloc 主要选项 主要输入环境变量 主要输出环境变量 例子 将文件同步到各节点:sbcast 主要选项 主要环境变量 例子 吸附到作业步:sattach 主要选项 主要输入环境变量 例子 查看记账信息:sacct 其它常用作业管理命令 终止作业:scancel job_id 挂起排队中尚未运行的作业:scontrol hold job_list 继续排队被挂起的尚未运行作业:scontrol release job_list 重新运行作业:scontrol requeue job_list 重新挂起作业:scontrol requeuehold job_list 最优先等待运行作业:scontrol top job_id 等待某个作业运行完:scontrol wait_job job_id 更新作业信息:scontrol update SPECIFICATION 提问的智慧 LaTeX pdf版 联系方式