HPC/MPI
文章平均质量分 79
东北豆子哥
多年HPC开发经验,熟悉多线程、集群分布式、GPU高性能开发技术,熟悉C/C++, Fortran, CUDA,Python,Matlab等开发工具语言;数年油气地震资料成像开发经验;数年CAE工业软件开发经验
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SLURM: sbatch的hint参数介绍和解释
参数用于向调度器提供关于 CPU 资源绑定(CPU affinity)或硬件特性的提示,帮助 Slurm 更智能地分配计算资源,尤其是在多核、NUMA 或异构架构系统中。是 Slurm 作业调度系统中用于提交批处理作业的命令。是互斥的,不能同时指定。原创 2026-01-03 19:51:46 · 579 阅读 · 0 评论 -
SLURM: sbatch脚本调试
目标方法验证参数是否合法(不提交)查看实际生效的 Slurm 环境变量提交一个的轻量作业调试脚本中的参数在脚本中加入和env。原创 2026-01-03 09:39:08 · 587 阅读 · 0 评论 -
MPI: PMIx标准化进程管理接口
现代 MPI 实现(如 Open MPI ≥ v4.0、MPICH ≥ v4.0)默认通过 PMIx 获取作业信息,无需用户干预。PMIx(Process Management Interface for Exascale)是一个为。(如 MPI 实现、OpenSHMEM、任务调度器等)之间提供统一、可扩展、高效的通信机制。注意:Open MPI 默认已编译 PMIx 支持;)会在作业启动时自动与 PMIx 服务通信。(特别是 Exascale 级别)设计的。(如 Slurm、PBS、LSF)与。原创 2026-01-03 08:10:45 · 384 阅读 · 0 评论 -
High Performance Computing Center North(HPC2N),瑞典超算中心
该中心依托瑞典北部的高校与研究机构合作建立,旨在聚合区域优势资源,为全国科研与产业用户提供先进的计算基础设施与专业技术支持。,即“高性能计算中心北区”,是瑞典国家级的高性能计算(HPC)中心,位于瑞典北部,由多所大学和研究机构联合组成。的应用场景,反映了现代科研对多样高性能计算资源的需求。HPC2N 支持的计算应用不仅包括传统的。原创 2025-12-13 16:53:54 · 227 阅读 · 0 评论 -
Linux系统多线程上下文切换(context switch)的 CPU 时钟耗时
/ 两个线程通过 pipe 或 futex 互相唤醒,测量切换延迟 // 参考:https://github.com/lemire/contextswitch。原创 2025-12-10 19:17:13 · 323 阅读 · 0 评论 -
CPU跳转指令的时钟开销
跳转类型预测成功开销预测失败开销无条件直接跳转~0 周期不适用条件跳转(预测正确)~0 周期条件跳转(预测错误)10~20 周期在高性能代码中(如 HPC、数值模拟),避免不可预测的分支是关键优化方向(例如用查表、位运算、SIMD 掩码替代条件跳转)。原创 2025-12-10 17:52:26 · 235 阅读 · 0 评论 -
汇编级别调用一个函数call指令的开销
情况时钟周期(cycles)最佳(直接调用、预测命中、小函数)1–3典型(有栈操作、常规调用)3–10最坏(间接调用、预测失败、cache miss)20–100+原创 2025-12-10 17:29:38 · 364 阅读 · 0 评论 -
Hyper-Threading(超线程,HT)技术介绍和应用场景
应用类型是否建议开启 HT计算密集 + 低内存压力可能无收益,可关闭内存访问密集(尤其大容量、非局部)通常不建议开启I/O 密集 / 轻量线程 / 混合负载建议开启实时/低延迟系统建议关闭最佳实践实测!在目标硬件和典型负载下对比 HT 开启/关闭的性能(如运行时间、IPC、内存带宽利用率),再做决策。如你使用 Intel OneAPI 或 MPI+OpenMP 混合并行,可配合或OMP_PLACES控制线程绑定,避免逻辑核心冲突。原创 2025-12-05 09:31:02 · 979 阅读 · 0 评论 -
PETSc: PCMPI介绍和使用
【代码】PETSc: PCMPI介绍和使用。原创 2025-12-03 14:44:40 · 417 阅读 · 0 评论 -
Chombo:AMR结构化网格PDE求解框架介绍
特性说明结构化网格仅支持矩形块(Box),不支持非结构网格AMR 支持强大,但也可完全关闭用于静态网格并行能力基于 MPI + domain decomposition数据布局是核心容器I/O支持 HDF5 格式输出(通过语言C++(模板-heavy,需熟悉 RAII 和句柄模式)原创 2025-12-02 10:30:59 · 919 阅读 · 0 评论 -
Parthenon: AMR框架介绍
使用。原创 2025-12-01 16:03:46 · 896 阅读 · 0 评论 -
t8code:树状自适应网格(Tree-based Adaptive Meshes)管理工具
是由德国航空航天中心(DLR)开发的一个开源 C 库,用于高效、可扩展的。(因为 2 层八叉树在立方体中有 (8^2 = 64) 个六面体单元):创建一个 3D 均匀八叉树网格,并在多个 MPI 进程上分布。,尤其适用于涉及复杂几何、多物理场耦合或需要高分辨率局部区域的。(如计算流体力学 CFD、电磁学、地球物理等)。原创 2025-12-01 14:01:52 · 782 阅读 · 0 评论 -
Intel MPI(Intel® MPI Library)的环境变量
Intel MPI(Intel® MPI Library)提供了丰富的环境变量,用于控制运行时行为、性能调优、调试、资源分配等。调试级别(0-1000+),值越高输出越详细。是否尊重作业调度器的进程放置(SLURM 等)。指定 mpirun 启动进程时使用的网络接口。手动指定进程绑定到的 CPU 列表(如。启用兼容模式(如与 MPICH 兼容)。指定 TCP 通信使用的网络接口(如。控制共享内存通信的大消息传输机制(如。设置进程绑定的 CPU 域(如。启用动态日志(用于性能分析)。原创 2025-11-29 20:34:28 · 962 阅读 · 0 评论 -
VS2022: CMake项目中使用MPI模块
来查找 MPI(如 Microsoft MPI 或 Intel MPI),你可以通过以下方式正确引用 MPI 的头文件和链接库。在 Visual Studio 2022 中开发基于 CMake 的项目,并使用。这种方式会自动处理头文件路径、链接库和必要的编译/链接标志,更简洁且跨平台。(或类似命令)在 PATH 中,且 CMake 能找到 MPI。)已设置,CMake 通常也能自动识别。,需确保其环境变量(如。原创 2025-11-26 17:14:16 · 256 阅读 · 0 评论 -
Thrust: OpenMP做后端执行策略
Vector 类型内存位置是否使用 OpenMP 多线程(当后端为 OMP)Host✅ 是(算法并行)Host*✅ 是(算法并行;*实际也在 Host)⚠️ 注意:OpenMP 后端下的并不意味着 GPU 或其他加速器;它只是 Thrust 抽象接口的统一命名。设置并用htop或perf观察多线程;或在代码中打印。如需进一步控制并行粒度或调度策略,建议显式使用或结合 OpenMP 环境变量调优。原创 2025-11-26 16:24:18 · 442 阅读 · 0 评论 -
巴塞罗那超级计算中心(Barcelona Supercomputing Center)介绍
采用 BSD、Apache 或 MIT 等宽松许可证,代码托管于 GitHub(如 https://github.com/bsc-pm、https://github.com/bsc-tools)。BSC 是欧洲高性能计算(HPC)领域的重要研究机构之一,隶属于西班牙国家研究委员会(CSIC)、加泰罗尼亚政府和 UPC 的三方合作。,部署于 2023 年底),在全球 Top500 排名中常年位居前列。)是西班牙国家级超级计算中心,成立于2005年,位于巴塞罗那的。BSC 不仅在硬件部署方面领先,还在。原创 2025-11-24 16:16:33 · 600 阅读 · 0 评论 -
问题: 如何在多CPU Socket节点上将多个MPI任务分散运行在不同的Socket上
这样可以确保每个MPI进程都在不同的Socket上运行,充分利用NUMA架构的优势,避免跨Socket的内存访问延迟。原创 2025-11-20 11:33:04 · 311 阅读 · 0 评论 -
Extrae 高性能计算(HPC)环境设计的分布式性能分析工具介绍
Extrae 是面向大规模、混合并行、生产级 HPC 应用的“手术刀级”分析工具。相比 Tracy(开发者调试)或 perf(系统级热点),它更适合涉及 MPI + 大规模结构体数据、需要深入理解并行行为与通信模式的数值模拟场景。虽然配置和学习成本较高,但其提供的事件级时空分析能力,是优化复杂并行程序不可或缺的手段。原创 2025-11-19 11:33:48 · 1323 阅读 · 0 评论 -
PETSc: 多重网格预处理器介绍
在深入 PETSc 的具体实现之前,我们先快速回顾一下多重网格的核心思想。基本问题:传统的迭代求解器(如雅可比、高斯-塞德尔)在求解线性方程组Ax = b时,能够快速地消除误差中的高频分量(振荡剧烈的部分),但对于低频分量(平滑的部分)收敛极其缓慢。多重网格的洞察:低频误差在细网格上是“平滑”的,但在粗网格上就变成了“高频”的。因此,多重网格的核心思想是使用一系列由粗到细的网格层次。平滑:在细网格上进行几次迭代,消除高频误差。限制:将细网格上的残差转移到更粗的网格上。粗网格求解。原创 2025-11-17 16:25:16 · 930 阅读 · 0 评论 -
PETSc: 释稀疏矩阵和向量的串行与分布式布局
对象类型串行布局分布式布局向量 (VecVECSEQ: 单进程上的完整连续数组。VECMPI: 按连续索引区间分区,每个进程持有本地连续数组。矩阵 (MatMATSEQAIJ: 单进程上的完整CSR格式。MATMPIAIJ: 按行分区,每个进程持有:1.对角块(本地列) -MATSEQAIJ2.非对角块(外部列) -MATSEQAIJ编程启示数据设置: 使用或时,你既可以使用全局索引,也可以使用本地索引(通过或ADD_VALUES模式)。原创 2025-11-17 16:17:31 · 965 阅读 · 0 评论 -
TAU (Tuning and Analysis Utilities) 高性能计算(HPC)性能分析工具介绍
TAU (Tuning and Analysis Utilities) 是一个功能强大的高性能计算(HPC)性能分析工具套件,专为分析大规模并行应用程序(如使用 MPI、OpenMP、Pthreads、Kokkos、CUDA 等的程序)而设计。它能提供细粒度的性能数据,帮助定位性能瓶颈,尤其适合您所从事的数值模拟和大规模数据处理工作。这是关键一步,TAU 通过包装器自动在代码中插入性能测量代码。命令运行编译好的程序,并指定性能数据的收集方式。程序运行完毕后,会生成一个或多个。),用于替代标准的编译器。原创 2025-11-16 18:56:54 · 864 阅读 · 0 评论 -
Tracy实时性能分析工具介绍
/ 命名区域,便于搜索++i) {// 内嵌区域// 处理单个结构体// 实时消息// 一亿条数据return 0;按名称搜索区域。查看该函数的总耗时、平均耗时、调用次数。拖动选择时间段,查看特定区间的性能瓶颈。原创 2025-11-16 17:34:32 · 1074 阅读 · 0 评论 -
Kokkos介绍和使用
当您需要处理亿级甚至十亿级的数据数组(如您提到的包含四个整数的结构体),并在不同架构(例如从 CPU 迁移到 GPU)上追求极致性能时,Kokkos 是一个理想的选择。它可以与您熟悉的 MPI 和 TBB 结合使用,例如在节点间用 MPI 通信,在节点内用 Kokkos 实现高效的并行计算。Kokkos 是一个由美国能源部(DOE)支持的 C++ 性能可移植并行编程框架,专为高性能计算(HPC)环境设计,旨在在多种异构架构(如 CPU、GPU、加速器)上实现高效、可移植的并行代码,而无需重写核心算法。原创 2025-11-16 06:20:15 · 982 阅读 · 0 评论 -
Chapel 并行编程语言介绍
chpl编译器作用: 这是 Chapel 的核心编译器,负责将.chpl源代码文件编译成可执行文件。使用: 通过命令行调用,例如来编译源文件hello.chpl,生成名为hello的可执行文件。chpl编译器支持多种后端,可以将代码编译为 C,然后利用系统上的 C 编译器(如 GCC、Clang)进行最终链接。它还支持针对不同目标架构(如单节点、多节点集群、GPU)的编译选项。运行时系统 (Runtime System)作用。原创 2025-11-16 06:17:34 · 662 阅读 · 0 评论 -
OpenMP: Task构造,使用和介绍
提供了一种创建可被线程池中任意线程执行的、可延迟执行(deferred execution)的工作单元的机制。它非常适合处理具有动态并行性(dynamic parallelism)或不规则结构(irregular structure)的问题,例如递归算法、分治算法、图遍历(如深度优先搜索)、动态规划等,其中并行任务的数量和结构在运行时才能确定。是 OpenMP 中一个强大而灵活的工具,适用于解决具有动态特性的并行问题,但正确使用(尤其是处理共享变量和依赖关系)可能比。好的,我们来介绍 OpenMP 中的。原创 2025-11-10 18:15:45 · 781 阅读 · 0 评论 -
Intel TBB中flow_graph介绍和使用
Intel TBB (Threading Building Blocks) 的 是一个强大的高级并行编程组件,它使用有向图(Directed Acyclic Graph, DAG)的模型来表达任务间的依赖关系,非常适合构建复杂的并行流水线和异步处理网络。 的核心思想是将计算任务表示为图中的节点(nodes),节点之间的数据流或控制流通过边(edges)来表示。 会自动管理节点的执行顺序和线程调度,开发者只需关注逻辑本身,而无需手动处理线程创建、同步和负载均衡等底层细节。节点(Nodes): 图的基本单元,原创 2025-11-10 16:42:59 · 1041 阅读 · 0 评论 -
Intel TBB介绍和使用
Intel Threading Building Blocks (TBB) 是一个 C++ 模板库,旨在简化并行编程。它由 Intel 开发,提供了一组高级抽象,允许开发者专注于任务本身,而不是底层的线程管理细节(如线程创建、同步、负载均衡等)。TBB 的核心思想是任务并行,它将工作分解为可以并行执行的任务,并由运行时系统动态地调度这些任务到可用的处理器核心上。核心优势可组合性 (Composability)原创 2025-11-10 16:39:33 · 1225 阅读 · 0 评论 -
OpenMP: API函数介绍
这些函数构成了 OpenMP 编程的基础,允许开发者有效地控制并行执行、同步线程、管理设备等。这些函数用于管理加速器设备(如 GPU)。OpenMP 提供了基本锁和嵌套锁。这些函数用于获取并行环境的信息。用于设置和管理线程。原创 2025-11-10 16:07:41 · 413 阅读 · 0 评论 -
Intel oneAPI介绍
Intel oneAPI 不仅是一组编译器,更是一个完整的高性能计算生态系统。对于您这样处理超大规模数据、依赖 MPI 并行、关注性能优化的开发者,oneAPI 提供了从底层编译优化、数学库加速、并行算法库到高级性能分析的全套工具,是提升您软件性能和开发效率的强大选择。原创 2025-11-09 19:50:36 · 1123 阅读 · 0 评论 -
MPI基准测试工具库: OSU-MB和Intel IMB
特性OSU MBIntel IMB开发方俄亥俄州立大学Intel体积小,易部署较大,功能全测试范围基础通信原语基础 + 复杂 + 混合并行易用性极高,适合快速验证中等,适合深度分析推荐场景学术研究、教学、快速调优企业级系统评测、性能调优报告。原创 2025-11-09 17:59:53 · 866 阅读 · 0 评论 -
MPI 程序调试方法和开源工具
调试 MPI 程序是高性能计算中的关键环节,由于其并行、分布式特性,调试比串行程序更具挑战性。这些工具和方法可显著提升 MPI 程序的开发效率与稳定性。原创 2025-11-08 14:44:49 · 831 阅读 · 0 评论 -
OpenMPI:相关环境变量介绍和使用
OpenMPI 是一个广泛使用的开源消息传递接口(MPI)实现,用于在分布式内存系统上进行并行计算。为了正确配置和运行 OpenMPI 程序,需要设置一些关键的环境变量。:大多数情况下,OpenMPI 能自动检测最佳配置。仅在遇到性能瓶颈、网络错误或绑定问题时才需手动调整这些环境变量。如需进一步优化(如 CPU 绑定、NUMA 感知),可结合。)来临时覆盖,而非全局设置环境变量。原创 2025-11-08 14:40:06 · 968 阅读 · 0 评论 -
OpenMP的环境变量, Intel 专有扩展环境变量
Intel OpenMP(即 Intel 的 OpenMP 运行时库,通常随 Intel oneAPI 或 Intel C++/Fortran 编译器提供)支持一系列环境变量,用于控制并行执行行为、线程绑定、调度策略、调试输出等。这些环境变量与标准 OpenMP 环境变量兼容,同时 Intel 也扩展了一些专有变量。Intel OpenMP 使用。原创 2025-10-22 17:25:33 · 1137 阅读 · 0 评论 -
PETSc: 调试程序
编译 PETSc,否则 Valgrind 可能报告大量“未初始化”误报。,它们支持并行程序的断点、内存检查和 PETSc 数据结构可视化。),这会启用额外的断言、边界检查和错误信息。,可高效检测内存越界、使用释放后内存等问题。在编译 PETSc 和你的程序时加入。为每个进程启动一个 GDB 实例。使用专门的 MPI 调试器如。在配置 PETSc 时使用。(若可用)验证数据结构。原创 2025-10-20 16:36:40 · 790 阅读 · 0 评论 -
Ubuntu 20.04 系统上,在内网离线环境中从源码编译安装 GCC/GFortran 4.9.4
中从源码编译安装 GCC/GFortran 4.9,需要提前在有网络的环境中准备好所有依赖和源码包,然后拷贝到目标机器进行编译安装。确保准备源码的机器与目标 Ubuntu 20.04 机器架构一致(如 x86_64)。等,configure 会自动使用源码目录下的 gmp/mpfr/mpc。⏱️ 编译 GCC 4.9 在现代机器上可能需要 30 分钟到 1 小时。自带了 gmp/mpfr/mpc 源码,编译时会使用内置版本。在 Ubuntu 20.04 系统上,在。GCC 编译需要以下依赖库(通常通过。原创 2025-10-15 16:08:01 · 764 阅读 · 0 评论 -
如何使用 OpenMPI 时指定特定版本的 GCC/GFortran 编译器
场景方法编译安装 OpenMPI 时指定编译器使用已安装 OpenMPI 编译程序时指定编译器设置OMPI_CCOMPI_FC等环境变量。原创 2025-10-15 15:36:39 · 746 阅读 · 0 评论 -
PhysBAM(Physics-Based Animation Library)介绍
高精度物理模拟:支持刚体、柔性体、流体(液体/气体)、布料、毛发、火焰、烟雾等复杂物理现象。基于网格的数值方法:主要使用有限差分法(FDM)和水平集方法(Level Set)进行界面追踪。模块化设计:库结构清晰,分为几何、场、动力学、渲染等多个模块。高性能计算支持:支持多线程、并行计算(OpenMP),部分模块支持GPU加速。科研导向:很多算法直接来自SIGGRAPH等顶级图形学论文,适合前沿研究。算法先进,精度高,适合科研和电影级特效。代码结构清晰,模块化强,易于扩展。原创 2025-09-07 08:06:58 · 850 阅读 · 0 评论 -
FEM: Deal.II 有限元工具库简介
开源免费:基于 LGPL 许可证,可自由用于学术和商业项目。面向对象设计:模块化结构,易于扩展和维护。支持自适应网格:h-细化(网格加密)、p-细化(提高多项式阶数)、hp-自适应。并行计算支持:通过 MPI 实现分布式内存并行,支持多线程(TBB/pthreads)。高阶单元支持:支持从线性到高阶(>10阶)的拉格朗日、Nédélec、Raviart-Thomas 等单元。维度无关:同一套代码可运行于 1D、2D、3D。丰富的文档和教程:官方提供 80+ 个逐步教程(原创 2025-09-06 22:09:22 · 895 阅读 · 0 评论 -
OpenMP : 进行多线程并行编程时,如何合理设置线程数和 CPU 亲和性,以充分发挥计算工作站的性能
项目推荐设置线程数计算密集型:物理核心数;避免盲目启用超线程NUMA 管理尽量让线程和内存在同一个 NUMA 节点亲和性使用或固定线程到核心编译器Intel 编译器对 OpenMP 优化更好;GCC 需手动调优测试验证通过perfnumastatlscpu验证性能和绑定效果。原创 2025-09-04 15:40:59 · 1314 阅读 · 0 评论 -
OpenMP: 串行与并行混合的多段循环中,实现性能最大化建议
技巧说明✅ 复用parallel区域避免线程创建开销✅ 使用nowait消除不必要的同步✅ 合理schedule匹配负载特性✅reductionprivate避免数据竞争✅singlemaster控制串行段执行✅提高代码安全性通过以上方法,可以在串行与并行混合的多段循环中,实现OpenMP 性能最大化,同时保证正确性和可维护性。原创 2025-09-04 15:34:45 · 891 阅读 · 0 评论
分享