Towards Efficient OpenMP Strategies for Non-Uniform Architectures
并行处理被认为是当今和未来提高计算机性能的趋势。从小型嵌入式系统到大型计算机集群的计算设备都依赖于并行化应用程序来减少执行时间。许多当前的计算系统依赖于基于非均匀存储器访问(NUMA)的处理器架构。在这些体系结构中,分析和考虑非均匀性对于提高系统的可扩展性具有重要意义。在本文中,我们分析和开发了一个基于NUMA的方法的OpenMP并行编程模型。我们的技术采用了智能线程分配方法和先进的任务调度策略,以减少远程内存访问,从而减少额外的时间消耗。我们在NANOS运行时系统中实现了我们的方法。使用BOTS基准进行了一组测试,结果表明,我们的技术在提高OpenMP应用程序的性能,特别是那些处理大量数据的能力。
2014-11-26 cs.DC
Optimizing ccNUMA locality for task-parallel execution under OpenMP and TBB on multicore-based systems
OpenMP任务构造或某些英特尔线程构建块(TBB)组件所采用的任务并行性虽然非常适合处理不规则问题或典型的生产者/消费者方案,但如果数据访问的局部性很重要(ccNUMA系统上的内存受限代码通常就是这种情况),则可能会出现性能瓶颈。我们提出了一个薄的软件层,改善了动态任务分配的不利影响,通过将任务排序到本地队列中,每个队列最好由属于同一本地域的线程处理。动态调度是完全保留在每个域,并优于可能的负载不平衡,即使需要非本地访问,使这种策略非常适合典型的多核多插槽系统。该方法的有效性是通过使用一个阻塞的六点模板求解器作为一个玩具模型。
2010-12-30 cs.DC
An OpenMP translator for the GAP8 MPSoC
采用并行计算的障碍之一是其编程的固有复杂性。开放式多处理(OpenMP)应用编程接口(API)促进了这样的实现,提供了高抽象级别的指令。在另一方面,已经开发了旨在低能耗的新架构,例如Greenwaves Technologies GAP 8,一种基于并行超低功耗(PULP)平台的多处理器片上系统(MPSoC)。GAP 8具有8核群集和结构控制器(FC)主核。使用GAP 8进行并行编程在效率方面非常有前途,但其最近的发展以及缺乏强大的操作系统来处理线程和核心调度,使OpenMP API的简单实现变得复杂。该项目实现了一个源代码到源代码的翻译,解释了一组有限的OpenMP指令,并能够生成并行微控制器代码直接操纵核心。在这项工作中获得的初步结果表明,减少的代码大小,如果与基本实现相比,证明该项目的效率,以减轻编程的GAP 8。为了实现更多的OpenMP指令,需要进一步的工作。
2020-07-20 cs.DC
Hierarchical Dynamic Loop Self-Scheduling on Distributed-Memory Systems Using an MPI+MPI Approach
计算密集型循环是科学应用中并行性的主要来源。这样的循环通常是不规则的,并且它们的循环迭代的平衡执行对于实现高性能是至关重要的。然而,有几个因素可能导致不平衡的负载执行,例如问题特征、算法和系统变化。动态循环自调度(DLS)技术的目的是减轻这些因素,从而提高应用程序的性能。在分布式存储器系统上,DLS技术可以使用分层的主-工作者执行模型来实现,因此被称为分层DLS技术。这些技术在两个硬件并行级别上自调度循环迭代:跨计算节点和计算节点内。结合消息传递接口(MPI)和开放多处理(OpenMP)的混合编程方法主导了分层DLS技术的实现。MPI-3标准包括在MPI进程之间共享内存区域的特性。该特性引入了MPI+MPI方法,简化了并行科学应用程序的实现。本工作设计和实现分层DLS技术,利用MPI+MPI的方法。四个众所周知的DLS技术被认为是在这里提出的评估。结果表明,所提出的方法相比,混合MPI+OpenMP方法的某些性能优势。
2019-03-22 cs.DC
An Introduction to hpxMP: A Modern OpenMP Implementation Leveraging HPX, An Asynchronous Many-Task System
异步多任务(AMT)运行时系统由于细粒度任务运行时系统提供的性能改进而在HPC社区中获得越来越多的接受。与此同时,C++标准化工作的重点是创建更高级别的接口,以取代现代C++代码中的OpenMP或OpenACC。这些更高级别的函数已经在符合标准的运行时系统(如HPX)中采用,使用户能够在自己的代码中简单地利用fork-join并行性。尽管在运行时系统和标准化工作方面有创新,但用户在移植遗留应用程序时仍面临巨大挑战。用户不仅必须移植自己的代码,而且通常依赖于高度优化的库,如BLAS和LAPACK,它们使用OpenMP进行并行化。当前创建平滑迁移路径的努力一直在努力应对这些挑战,特别是AMT库的线程系统经常与OpenMP的线程系统竞争。为了克服这些问题,我们的团队开发了hpxMP,这是一种OpenMP标准的实现,它利用底层AMT系统来调度和管理任务。这种方法利用了HPX公开的C++接口,并允许用户在AMT系统上执行他们的应用程序,而无需更改他们的代码。在这项工作中,我们比较hpxMP与Clang的OpenMP库与Blaze C++库的四个线性代数基准。虽然hpxMP往往无法达到相同的性能,我们证明了可行性,为应用程序提供一个顺利的迁移,但必须扩展到受益于更一般的基于任务的编程模型。
2019-07-05 cs.DC
Enabling performance portability of data-parallel OpenMP applications on asymmetric multicore processors
针对非对称多核处理器上数据并行OpenMP应用的负载不平衡问题,提出新型循环调度方法AID,在libgomp中实现并使性能较传统策略最高提升56%。
2024-02-12 cs.DC cs.OS
Auto-tuning of dynamic scheduling applied to 3D reverse time migration on multicore systems
逆时偏移(RTM)是一种广泛应用于石油和天然气工业的地震数据处理算法。这是一个计算密集型的任务,非常适合并行计算机。诸如RTM的方法可以通过将并行循环的迭代调度到线程而在共享存储器系统中并行化。然而,几个方面,如内存大小和层次结构,核心数量和输入大小,使最佳调度非常具有挑战性。在本文中,我们介绍了一种运行时策略,自动调整并行循环迭代的动态调度迭代应用程序,如RTM,在多核系统。所提出的方法旨在减少此类应用程序的执行时间。为了找到最佳的粒度,我们提出了一种基于耦合模拟退火(CSA)的自动调整策略,该策略可以调整OpenMP并行循环在3D RTM应用程序初始化过程中动态分配给工作线程的工作块大小。不同的计算系统和输入大小进行的实验表明,该方法始终优于默认的OpenMP编译器,静态,自动和引导,使应用程序的速度提高了33%。我们表明,这种性能的可能原因是减少高速缓存未命中,主要是L3级,和低开销,低于2%。已经证明对于3D RTM是鲁棒的和可扩展的,所提出的方法还可以提高类似的基于波的算法的性能,例如全波形反演(FWI)和其他迭代应用。
2020-07-05 cs.DC
Multithreaded Fine-Grained Asynchronous BSP for Integer Sorting with LCI and OpenMP
Advanced Micro Devices, Inc.(超威半导体公司)
针对BSP模型在非规则负载下的通信瓶颈,提出结合LCI和OpenMP的多线程细粒度异步BSP方法,通过细粒度零拷贝主动消息实现计算通信重叠,在NAS整数排序基准测试中显著优于传统同步MPI实现。
2026-05-25 cs.DC
Task-Graph Scheduling Extensions for Efficient Synchronization and Communication
任务图已经被研究了几十年,作为调度不规则并行应用程序的基础,并被纳入编程模型,如OpenMP。虽然许多高性能并行库都是基于任务图的,但它们也有额外的调度要求,例如来自内部数据并行的同步和内部阻塞通信。在本文中,我们扩展了任务图调度,以支持有效的同步和任务内的通信。我们的调度程序避免了死锁和超额认购的工作线程,并细化牺牲选择,以增加兄弟任务的重叠。据我们所知,我们的方法是第一个在单个运行时中结合组调度和工作窃取。我们的方法已被评估的SLATE高性能线性代数库。相对于LLVM OMP运行时,我们的运行时在不同配置下分别对LU、QR和Cholesky进行了性能提升,分别提高了13.82%、15.2%和36.94%。
2020-11-06 cs.DC
A Probabilistic Machine Learning Approach to Scheduling Parallel Loops with Bayesian Optimization
提出了一种新的并行循环调度策略-贝叶斯优化增广因子分解自调度(BO FSS)。BO FSS是因子分解自调度(FSS)算法的自动调整变体,基于贝叶斯优化(BO),一种黑盒优化算法。其核心思想是通过BO求解一个优化问题来自动调整FSS的内部参数。调优过程只需要在线测量目标循环的执行时间。为了应用BO,我们使用两个高斯过程(GP)概率机器学习模型来建模执行时间。值得注意的是,我们提出了一个局部感知的GP模型,它假设时间局部性效应类似于一个指数递减函数。通过精确地建模的时间局部性效应,我们的本地感知GP模型加速BO的收敛。我们实现了BO FSS上的GCC实现的OpenMP标准,并评估其性能对其他调度算法。此外,为了量化我们的方法在不同工作负载上的性能变化,或者用我们的术语来说,工作负载鲁棒性,我们测量了极大极小遗憾。根据极大极小遗憾性,BO FSS算法比其他算法表现出更好的一致性。在考虑的工作负载中,BO FSS平均将FSS的执行时间缩短了22%和5%。
2022-06-12 cs.DC cs.PF
A Parallel Simulated Annealing Approach for the Mirrored Traveling Tournament Problem
巡回赛问题(TTP)是运动调度中的一个基准问题,近年来得到了广泛的研究。奇迹旅行锦标赛问题(mTTP)是TTP的变体,代表某些类型的体育调度问题,其主要目标是最小化所有参赛队的总行程。在本文中,我们测试了一种并行模拟退火方法,用于解决mTTP共享内存系统上使用OpenMP,我们发现,这种方法是优越的,特别是相对于每秒探测的解决方案实例的数量。我们还看到,在单位时间内探索的解决方案数量方面,速度显著提高了1.5 - 2.2倍。
2013-11-08 cs.DC
Parallel Paradigms in Modern HPC: A Comparative Analysis of MPI, OpenMP, and CUDA
本文比较了MPI、OpenMP和CUDA三种HPC并行模型,分析其架构、性能与适用性,指出混合方法在异构环境中效果最佳,选择需依应用、硬件和开发约束而定。
2025-06-18 cs.DC
An Interrupt-Driven Work-Sharing For-Loop Scheduler
在本文中,我们提出了一种并行for循环调度器,该调度器基于工作窃取原则,但在完全协作的方案下运行。空闲线程使用POSIX信号来中断留下的工作线程,这些工作线程决定将其工作负载的哪一部分分配给请求者。我们称之为中断驱动的工作共享(IDWS)。本文介绍了IDWS的工作原理,如何将其集成到任何符合POSIX的OpenMP实现中,以及用户如何在现有的符合POSIX的C++应用程序中手动将OpenMP并行for循环替换为IDWS。此外,我们使用具有不同的工作负载分布在迭代空间中的合成基准测试和Sandy Bridge和Xeon Phi系统上的实际应用程序来测量其性能。无论工作负载分布和底层硬件如何,IDWS始终是最好的或性能最好的策略之一,为选择两难困境提供了一个很好的全面解决方案。
2015-05-18 cs.DC
An Adaptive Self-Scheduling Loop Scheduler
许多共享内存的并行不规则应用程序,如稀疏线性代数和图形算法,依赖于有效的循环调度(LS)在fork-join方式,尽管每个循环迭代的工作可以根据应用程序和输入有很大的不同。由于其重要性,许多不同的方法,例如,工作负载感知自调度和参数,例如,块大小,以实现需要关于应用和输入的专家先验知识的合理性能。这项工作提出了一种新的LS方法,需要很少的专家知识,以实现加速接近那些调整LS方法的自我管理块大小的基础上的启发式的工作量的变化和使用工作窃取。该方法名为\ichunk,已在libgomp中实现以供测试。它针对OpenMP的引导,动态和taskloop方法进行了评估,并针对BinLPT和一系列应用程序的通用工作窃取进行了评估,这些应用程序包括:合成基准,广度优先搜索,K-Means,分子动力学代码LavaMD和稀疏矩阵向量乘法。在28线程Intel系统上,\ichunk是唯一一个始终是三大LS方法之一的方法。在所有应用程序中,平均而言,\ichunk是最好的方法的5.4%以内,甚至能够优于其他LS方法的广度优先搜索和K均值。
2021-10-28 cs.DC
Accelerating Fortran Codes: A Method for Integrating Coarray Fortran with CUDA Fortran and OpenMP
本研究提出融合Intel Coarray Fortran、Nvidia CUDA Fortran与OpenMP的并行编程方法,优化内存管理、CPU-GPU亲和性等,经并行泊松求解器验证,其性能与MPI相近且更易实现,可助力新老代码高效迁移至并行计算。
2024-09-03 astro-ph.IM astro-ph.SR cs.DC
Rethinking Thread Scheduling under Oversubscription: A User-Space Framework for Coordinating Multi-runtime and Multi-process Workloads
Barcelona Supercomputing Center(巴塞罗那超级计算中心)
本文提出用户空间调度框架USF和SCHED_COOP,通过减少线程切换干扰提升多进程在超订情况下的性能表现。
2026-01-28 cs.DC cs.OS
Scheduling Languages: A Past, Present, and Future Taxonomy
本文梳理调度语言的起源、共性与现状,提出分类框架,并呼吁围绕统一基础设施提高抽象、实用性与可移植性。
2024-10-25 cs.DC cs.PF cs.PL
How Workflow Engines Should Talk to Resource Managers: A Proposal for a Common Workflow Scheduling Interface
针对 SWMS 与资源管理器职责重叠、接口不统一导致的可移植性差和次优调度问题,论文提出通用 REST 调度接口,并通过 Nextflow/Kubernetes 实现验证其可显著降低工作流完工时间。
2023-07-13 cs.DC
GTaP: A GPU-Resident Fork-Join Task-Parallel System with a Pragma-Based Interface
The University of Tokyo(东京大学)
GTaP 是一种 GPU 常驻的 fork-join 任务并行运行时,通过 pragma 基于接口实现任务并行,支持线程块和单个线程两种工作粒度,采用持续内核模型和工作窃取机制,提升 GPU 上 fork-join 任务并行效率。
2026-08-25 cs.DC
Client-side Straggler-Aware I/O Scheduler for Object-based Parallel File Systems
基于对象的并行文件系统已经成为高性能计算(HPC)系统的有前途的存储解决方案。尽管对象存储提供了灵活的接口,但调度访问大量对象的高度并发I/O请求仍然是一个具有挑战性的问题,特别是在系统中存在落后者(存储服务器比其他服务器慢得多)的情况下。高效的I/O调度器需要避免可能的掉队者,以实现低延迟和高吞吐量。在本文中,我们介绍了一个日志辅助的离散感知的I/O调度,以减轻存储服务器离散的影响。这项研究的贡献有三个方面。首先,我们介绍了一个客户端,日志辅助,落伍者意识的I/O调度架构,以解决在HPC系统中的存储落伍的问题。其次,我们提出了三种调度算法,可以有效地调度I/O的决策,同时避免基于这样的架构的掉队者。第三,我们使用模拟评估所提出的I/O调度器,模拟结果证实了新引入的落伍者感知的I/O调度器的承诺。
2018-05-16 cs.DC
Distributed Incremental SAT Solving with Mallob: Report and Case Study with Hierarchical Planning
本报告扩展了Mallob平台以支持增量SAT求解,并在层次规划案例中验证,通过并行处理587个规划实例,在多个领域显著加速了求解过程。
2025-05-24 cs.DC cs.LO
NBI-Slurm: Simplified submission of Slurm jobs with energy saving mode
Quadram Institute Bioscience(夸德姆研究所生命科学);Center for Microbial Interactions(微生物相互作用中心)
NBI-Slurm通过提供Perl模块和命令行工具简化SLURM集群作业管理,支持图形界面、工具封装及节能模式,帮助科研机构减少计算碳足迹。
2026-04-06 cs.DC