Programming Cloud Resource Orchestration Framework: Operations and Research Challenges
过去五年云计算的出现可能是计算计算史上的突破性进展之一。它将硬件和软件资源作为支持虚拟化的服务提供,管理员无需担心低级别的实施或系统管理细节。尽管云计算为用户(例如,应用程序开发人员、政府、新创业公司、管理员、顾问、科学家、业务分析师等)提供了相当多的机会,如无需前期投资、降低运营成本和无限的可扩展性,它有许多独特的研究挑战,需要在未来仔细解决。在本文中,我们提出了一个调查的关键云计算概念,资源抽象,编排资源和相关的研究挑战,只要适用的编程操作。
2012-06-18 cs.DC
Visualizing Multidimensional Linear Programming Problems
本文提出了一个直观表示线性规划问题的n维数学模型。该模型使得用人工神经网络求解多维线性最优化问题成为可能,其可行域是有界非空集。为了使线性规划问题可视化,引入了目标超平面,其方向由线性目标函数的梯度确定:梯度是目标超平面的法线。在搜索最大值的情况下,目标超平面被定位成使得目标函数在其所有点处的值超过可行域的所有点处的目标函数的值,该可行域是有界凸多胞体。对于目标超平面的任意点,确定到多面体上的目标投影:目标投影点越靠近目标超平面,则该点处的目标函数的值越大。基于目标超平面,构造有限的点的正则集,称为感受野。使用客观投影,构造多面体的图像。该图像包括从接收点到多面体表面的对应点的距离。基于所提出的模型,并行算法的可视化线性规划问题的构造。分析估计其可扩展性。信息的软件实现和大规模的计算实验结果确认所提出的方法的效率。
2022-04-06 cs.DC math.OC
Concurrent CPU-GPU Task Programming using Modern C++
在本文中,我们介绍了Heteroflow,一个新的C++库,以帮助开发人员使用任务依赖图快速编写并行CPU-GPU程序。Heteroflow利用了现代C++和基于任务的方法的强大功能来实现异构分解策略的高效实现。我们新的CPU-GPU编程模型允许用户以一种适应有效分离关注点和专业知识封装的方式来表达问题。与现有库相比,Heteroflow在性能扩展、编程效率和解决方案通用性方面更具成本效益。我们已经在VLSI设计自动化的两个实际应用中评估了Heteroflow,并展示了不同CPU-GPU数量和问题大小的性能可扩展性。在百万级任务处理的超大规模集成电路时序分析的一个特定示例中,Heteroflow在具有40个CPU核心和4个GPU的机器上实现了比基线高出7.7倍的运行时速度(99分钟vs 13分钟)。
2022-03-16 cs.DC
FRaGenLP: A Generator of Random Linear Programming Problems for Cluster Computing Systems
本文提出并评价了一种在集群计算系统上生成大规模随机线性规划问题$n$的可扩展FRaGenLP算法。为了保证问题的一致性和可行域的有界性,约束系统包括$2n+1$标准不等式,称为支持不等式。生成新的随机不等式,并以确保约束一致性的方式将其添加到系统中。此外,该算法使用两个相似性度量,以防止增加一个新的随机不等式,这是一个已经存在于约束系统中。该算法还拒绝随机不等式,不能影响的线性规划问题的解决方案的支持不等式的限制。FRaGenLP算法的并行实现在C++中通过并行BSF骨架来执行,该骨架封装了与基于MPI的程序并行化相关的所有方面。我们提供的结果,大规模的计算实验的集群计算系统上研究的可扩展性的FRaGenLP算法。
2021-05-18 cs.DC cs.MS math.OC
OpenMP Parallelization of Dynamic Programming and Greedy Algorithms
多核自出现以来就成为一种典型的体系结构模型,现在已经成为一种标准。趋势是增加核的数量和提高存储系统的性能。为一个重要的算法内核提供一个高效的多核实现是一个真正的贡献。从方法论的角度来看,这应该在基础范式(如果有的话)的级别上完成。在本文中,我们研究的情况下,{ \em动态规划}和{ \em贪心算法},这是两个主要的算法范例。我们专门考虑通过OpenMP基于方向的循环并行化,并研究必要的预转换,以达到一个定期的并行形式。我们评估我们的方法与选择知名的组合优化问题的INTEL Broadwell处理器。可扩展性的关键点之前和之后的实验结果进行了讨论。我们的直接观点是将我们的研究扩展到众核情况,特别关注NUMA配置。
2020-01-20 cs.DC
Proceedings Programming Language Approaches to Concurrency- and Communication-cEntric Software
现代硬件平台,从非常小到非常大,越来越多地为应用程序提供并行和分布式计算资源,以最大限度地提高性能。因此,许多应用程序需要有效利用数十个、数百个甚至数千个计算节点。因此,这种系统中的计算本质上是并发的和以通信为中心的。有效地编程这样的应用程序是具有挑战性的;性能、正确性和可伸缩性很难实现。因此,为这种日益平行的景观制定有效的方案拟订方法,需要探索和理解各种各样的基本和实用的想法。并行和通信中心软件的程序设计语言方法国际研讨会(PLACES)致力于这一领域的工作。该研讨会为来自不同领域的研究人员提供了一个论坛,以交流有关现代和未来编程的这些挑战的新想法,其中并发和分布是规范,而不是边缘问题。本会议录涵盖了第11届PLACES,该会议与ETAPS 2019在捷克共和国布拉格举行。
2019-03-31 cs.DC cs.PL
Proceedings of the 12th International Workshop on Programming Language Approaches to Concurrency- and Communication-cEntric Software
现代硬件平台,从非常小到非常大,越来越多地为应用程序提供并行和分布式计算资源,以最大限度地提高性能。因此,许多应用程序需要有效利用数十个、数百个甚至数千个计算节点。因此,这种系统中的计算本质上是并发的和以通信为中心的。有效地编程这样的应用程序是具有挑战性的;性能、正确性和可伸缩性很难实现。因此,为这种日益平行的景观制定有效的方案拟订方法,需要探索和理解各种各样的基本和实用的想法。并行和通信中心软件的程序设计语言方法国际研讨会(PLACES)致力于这一领域的工作。该研讨会为来自不同领域的研究人员提供了一个论坛,以交流有关现代和未来编程的这些挑战的新想法,其中并发和分布是规范,而不是边缘问题。本卷包含了第12版的地方,这是共同位于ETAPS 2020在爱尔兰都柏林举行的会议记录。
2020-04-01 cs.DC cs.PL
VaLiPro: Linear Programming Validator for Cluster Computing Systems
本文提出并评估了一个可扩展的算法验证集群计算系统上的线性规划问题的解决方案。该方法的主要思想是在一个小半径超球面上生成一个规则的点集(验证集),该超球面以验证下的解的点为中心。目标函数是为验证集中属于可行区域的每个点计算的。如果所有这些值都小于或等于目标函数在验证点的值,则该点是正确的解决方案。VaLiPro算法的并行实现是通过并行BSF骨架在C++中执行的,该骨架封装了与基于MPI的程序并行化相关的所有方面。我们提供了大规模的计算实验的集群计算系统上的结果,研究的可扩展性的VaLiPro算法。
2021-07-05 cs.DC
Parallel Programming Model for the Epiphany Many-Core Coprocessor Using Threaded MPI
Adapteva Epiphany众核架构包括具有最少非核功能的低功耗RISC内核的2D平铺网格片上网络(NoC)。它为整数和浮点计算以及并行可扩展性提供了高计算能效。然而,尽管有有趣的架构特性,一个令人信服的编程模型还没有提出日期。本文展示了一个有效的并行编程模型的Epiphany架构的消息传递接口(MPI)标准的基础上。使用MPI利用了Epiphany架构和传统的并行分布式串行核心集群之间的相似性。我们的方法使MPI代码执行的RISC阵列处理器上的修改很少,并实现高性能。我们报告了四种算法(密集矩阵-矩阵乘法、N体粒子相互作用、五点2D模板更新和2D FFT)的线程MPI实现的基准测试结果,并强调了快速核间通信对架构的重要性。
2015-06-17 cs.DC
Performance Evaluation of Parallel Message Passing and Thread Programming Model on Multicore Architectures
共享内存系统上的多核架构的当前趋势强调了并行性的需求。虽然有一些编程模型来表示并行性,线程编程模型已经成为一个标准,以支持这些系统,如OpenMP,和POSIX线程。MPI(消息传递接口)仍然是当今高性能计算中使用的主要模型,它面临着这一挑战。以前的MPI版本MPI-1没有共享内存的概念,而当前的MPI版本2 MPI-2对共享内存系统的支持有限。在这项研究中,MPI的MPI-2版本将与OpenMP进行比较,看看MPI在多核/ SMP(对称多处理器)机器上的性能如何。将在多核共享内存机器架构上比较用于线程编程模型的OpenMP和用于消息传递编程模型的MPI,以查看谁在速度和吞吐量方面具有更好的性能。用于评估评估并行编程解决方案的可扩展性的应用程序是可定制矩阵维数的矩阵乘法。大量的大规模并行计算的研究都是使用NSA Parallel Benchmark(NPB)等大规模测试标准进行测试的[1]。本文的研究将在一个小规模的并行计算环境下进行,重点是利用自行开发的测试程序对MPI和OpenMPI并行编程模型进行性能评估。
2010-12-10 cs.DC
An Approach for Finding Permutations Quickly: Fusion and Dimension matching
多面体编译器可以执行复杂的循环优化,以提高输入程序中循环的并行性和缓存行为。这些转换在具有大计算能力和深存储层次结构的现代处理器上导致显著的性能增益。论文“Polyhedral Auto-transformation with No Linear Programming”确定了对多面体转换框架的可扩展性产生不利影响的问题;特别是Pluto算法。构造和求解复杂的非线性规划(ILP)问题会显著增加多面体编译器的时间。本文提出了两个正交的想法,共同克服了仿射调度问题的可扩展性问题。它首先将ILP放松为线性规划(LP)问题,从而解决更便宜的算法。为了克服由于这种松弛而出现的次最优性,仿射调度问题被分解为以下三个部分:(1)融合和维度匹配,(2)循环缩放和移位,以及(3)循环偏斜。这个新的自动转换框架pluto-lp-dfp在不牺牲生成代码的性能的情况下,显著提高了Pluto算法所花费的时间。本报告首先提供了证明的理论索赔的文件中周围放松LP制定的冥王星算法。报告的第二部分描述了一种方法,可以找到良好的循环融合(或分布)和循环排列,从而实现平铺性。这份简短的报告是本文的补充材料。
2018-03-28 cs.DC
The OpenMP Cluster Programming Model
尽管有各种研究计划和提出的编程模型,但HPC集群中并行编程的有效解决方案仍然依赖于不同编程模型的复杂组合(例如,OpenMP和MPI)、语言(例如,C++和CUDA)和专用运行时(例如,Charm++和Legion)。另一方面,任务并行性已被证明是一个高效和无缝的集群编程模型。本文介绍了OpenMP集群(OMPC),任务并行模型,扩展了集群编程的OpenMP。OMPC利用OpenMP的卸载标准在分布式系统的节点之间分发带注释的代码区域。为了实现这一点,它将基于MPI的数据分发和负载平衡机制隐藏在OpenMP任务依赖关系后面。由于OMPC与OpenMP兼容,它允许应用程序使用相同的编程模型来利用节点内和节点间的并行性,从而简化了开发过程和维护。我们评估OMPC使用任务工作台,一个综合的基准集中在任务并行性,比较其性能与其他分布式运行时。实验结果表明,OMPC可以提供高达1.53倍和2.43倍的性能比Charm++的CCR和可扩展性实验,分别。实验还表明,OMPC性能弱规模的任务台和现实世界的地震成像应用。
2022-08-13 cs.DC
TaskUniVerse: A Task-Based Unified Interface for Versatile Parallel Execution
基于任务的并行编程在并行编程的效率、性能、生产力和可扩展性等方面都表现出了竞争力。不同的软件开发框架使用不同的方法来向程序员提供这些结果,同时使底层硬件架构对她透明。然而,由于程序在这些框架之间是不可移植的,因此使用一个框架或另一个框架仍然是程序员的重要决定,程序员关心的是程序的可扩展性,自适应性,可维护性和互操作性。在这项工作中,我们提出了一个统一的编程接口,程序员可以使用不同的基于任务的并行框架透明地工作。在这种方法中,我们抽象的任务为基础的并行编程的共同概念,并提供给程序员在一个单一的编程接口统一的所有框架。我们已经通过运行程序来测试该接口,该程序在针对共享和分布式内存架构和加速器进行优化的框架内实现矩阵运算,而框架之间的合作是在外部配置的,无需修改程序。进一步可能的扩展的接口和未来的潜在研究也被描述。
2017-05-08 cs.DC
Regional Consistency: Programmability and Performance for Non-Cache-Coherent Systems
并行程序员面临着可编程性和性能这两个经常不可调和的目标。HPC系统使用分布式存储器来实现可扩展性,从而牺牲了共享存储器编程模型的可编程性优势。此外,异构体系结构的快速采用(通常具有非高速缓存一致性存储器系统)进一步增加了支持共享存储器编程模型的挑战。我们的主要目标是定义一个内存一致性模型,提出了熟悉的基于线程的共享内存编程模型,但允许良好的应用程序性能的非缓存一致性系统,包括分布式内存集群和基于加速器的系统。我们提出了区域一致性(RegC),一个新的一致性模型,实现这一目标。在多达256个处理器的代表性基准测试的结果表明,在我们的原型分布式共享内存系统的背景下,RegC的潜力。
2013-01-18 cs.DC
Scalability Evaluation of Iterative Algorithms Used for Supercomputer Simulation of Physical processes
本文致力于开发一种方法,用于评估计算密集型迭代算法的可扩展性,用于在超级计算机系统上模拟复杂的物理过程。所提出的方法是基于BSF(批量同步农场)并行计算模型,这使得它可以预测迭代算法的可扩展性上限在其设计的早期阶段。BSF模型假设算法的表示形式是使用高阶函数对列表进行操作。考虑两类表示:BSF-M(映射BSF)和BSF-MR(映射缩减BSF)。所提出的方法描述的线性方程组的雅可比方法的解决方案的例子。对于Jacobi方法,构造了两种迭代算法:基于BSF-M表示的Jacobi-M和基于BSF-MR表示的Jacobi-MR。分析估计的加速比,并行效率和上界的可扩展性构造这些算法使用的BSF成本度量的多处理器计算系统与分布式存储器。给出了利用BSF程序框架和MPI并行程序库在C++语言中实现这些算法的信息。在一个集群计算系统上进行了大规模计算实验,并给出了实验结果。基于实验结果,分析的充分性的估计,通过使用的BSF模型的成本度量分析。
2018-11-10 cs.DC
pPython for Parallel Python Programming
pPython试图提供一种并行能力,通过在纯Python中基于文件的消息传递库(PythonMPI)之上实现分区全局数组语义(PGAS),在不牺牲Python编程的易用性的情况下提供良好的加速。pPython中的核心数据结构是一个分布式数值数组,它在多个处理器上的分布是用map构造指定的。分布式阵列之间的通信操作被抽象为远离用户,pPython透明地支持在多达四个维度上的任何块循环重叠分布之间的重新分配。pPython遵循SPMD(单程序多数据)计算模型。pPython可在支持Python的任何异构系统组合上运行,包括Windows、Linux和MacOS操作系统。除了在单节点上透明地运行(例如,笔记本电脑),pPython提供了一个调度器接口,这样pPython就可以在大规模并行计算环境中执行。最初的实现使用Slurm调度器。pPython在HPC Challenge基准测试套件上的性能证明了编程的简易性和可扩展性。
2022-08-31 cs.DC
NB-FEB: An Easy-to-Use and Scalable Universal Synchronization Primitive for Parallel Programming
针对大规模众核体系结构,提出了一种支持可扩展线程同步的通用同步原语。在传统架构(如CAS和LL/SC)中广泛部署的通用同步原语预计将在向具有数千个核的众核架构的演进中达到其可扩展性限制。我们引入了一个非阻塞的满/空位原语,或简称NB-FEB,作为一个有前途的同步原语的并行编程的五月核架构。我们表明,NB-FEB原语是通用的,可扩展的,可行的和方便的使用。NB-FEB与寄存器一起可以解决任意数量进程的一致性问题(普适性)。NB-FEB是可组合的,即其对相同存储器位置的存储器请求可以被组合成仅一个存储器请求,这因此减轻了由于同步“热点”(可扩展性)而导致的性能降级。由于NB-FEB是原始满/空位的变体,其总是返回值而不是等待条件标志,因此它与原始满/空位一样可行,其已经在许多计算机系统中实现(可行性)。原始的满/空位是众所周知的,作为一种特殊用途的原语,用于快速生产者-消费者同步,并已广泛用于特定的应用领域。在本文中,我们表明,NB-FEB可以很容易地部署作为一个通用的原语。利用NB-FEB,我们构造了一个非阻塞的软件事务存储系统NBFEB-STM,它可以方便地处理并发线程。NBFEB-STM是空间有效的:由$N$并发线程/事务更新的每个对象的空间复杂度是最优的$Θ(N)$。
2008-11-09 cs.AR cs.DC cs.DS
A Continuous Energy Ising Machine Leveraging Difference-of-Convex Programming
Indian Institute of Science(印度科学学院)
本文提出基于差分凸优化的连续能量异或机,通过将二进制自旋放松为连续变量并引入吸引势能,设计高效迭代算法,实现大规模异或问题求解。
2025-12-10 cs.DC math-ph math.MP
Bridging HPC Communities through the Julia Programming Language
Julia程序设计语言已经发展成为一种现代化的替代方案,以填补科学计算和数据科学应用中的现有空白。Julia利用统一协调的单一语言和生态系统范例,在不牺牲用户生产力的情况下实现高性能方面有着良好的记录。这些方面使Julia成为高性能计算(HPC)现有的且成本越来越高的多体工作流组合策略的可行替代方案,其中传统HPC语言(例如,Fortran、C、C++)用于模拟,而更高级的语言(例如,Python、R、MATLAB)用于数据分析和交互式计算。Julia在语言能力、包生态系统和社区方面的快速增长使其成为HPC的一种有前途的通用语言。本文介绍了来自学术界、政府和工业界的多学科研究人员的观点,他们倡导一种强调开发人员生产力、工作流可移植性和低准入门槛的HPC软件开发范式。我们相信Julia程序设计语言、它的生态系统和它的社区提供了现代和强大的功能,可以实现这个小组的目标。至关重要的是,我们相信Julia可以提供一种可行且成本更低的方法来编程针对HPC设施的科学应用程序和工作流程。在这项工作中,我们研究了Julia作为一个通用的端到端编程模型的当前实践和作用,以解决科学可重复性,数据驱动的AI/机器学习,协同设计和工作流程,异构计算,网络通信,数据管理和社区教育中的可扩展性和性能可移植性方面的主要挑战。因此,随着越来越多的超级计算中心为艾级时代做准备,当前投资的多样化以满足未来十年的需求至…
2022-11-10 cs.DC
Modular programming of computing media using spatial types, for artificial physics
我们的长期目标是在由数百万个小型相同的处理单元(PE)组成的同构计算介质上执行通用计算。我们通过模拟膜的网络(SDN)的自我发展来进行,这意味着一种能够实现模拟简化的膜代理,分割和分割的人工物理定律的介质。这是一个困难的挑战:我们当前版本的SDN媒体使用具有77位状态和13878个门的PE。这种高层次的复杂性迫使我们制定出一个有效的和富有表现力的计划,为编程的媒介,本文的目标是目前它。PE的通信图是一个最大的平面图。比特场分布在2D中的三个轨迹上:这个平面图的顶点、边和面。它们构成三种数据类型,抽象出PE的集合。位之间的单纯接近度用于定义字段上的操作,从而实现“{ \it空间类型}"。表达式组合操作可以在逻辑电路中转换。由于使用归约运算来组合不同轨迹的场,因此实现了效率。这允许通过利用模拟物理时始终存在的对称性来分解计算。通过允许模块化的过程编程来实现表达能力:我们开发了一个库或可重用的函数,将字段映射到其他字段,而不是直接关注特定的目标更新函数。我们考虑两种极大平面图:具有各向同性分布的PE和具有六角格子结构的PE。第一种与无定形计算介质相比,具有更好的硬件可扩展性潜力;第二种与元胞自动机计算介质相比,具有更高的效率。
2019-04-11 cs.DC
Type oriented parallel programming for Exascale
虽然近年来HPC硬件和软件有了很大的进步,但我们用来编程这些机器的语言和模型仍然更加静态。这并不是因为缺乏努力,而是因为许多程序设计语言构建的基础不足以满足并行工作所需的表达能力。其结果是可编程性和性能之间的隐含权衡,由于许多科学用户是自己领域的专家,而不是HPC专家,这使得情况变得更糟。面向类型的编程通过类型系统编码语言的复杂性来解决这个问题。大多数语言功能都包含在一个松散耦合的类型库中,可以灵活地用于控制许多方面,如并行性。由于这种方法的高级性质,在编译过程中有很多信息可用于优化,并且在没有类型信息的情况下,编译器可以应用合理的默认选项,从而支持专家程序员和新手。我们证明,在没有性能或可扩展性的损失时,运行在高达8196个核心的Cray XE6系统,在这种类型的面向方式编写的代码提供了改进的可编程性。程序员能够在高级别上编写简单的隐式并行HPC代码,然后在需要时通过添加其他类型信息来显式调优。
2016-10-27 cs.DC cs.PL
FooPar: A Functional Object Oriented Parallel Framework in Scala
我们提出了FooPar,在多范式程序设计语言Scala的高效并行计算的扩展。Scala提供了简洁干净的语法,并集成了函数式编程特性。我们的框架FooPar结合了这些功能与并行计算技术。FooPar是模块化设计的,支持轻松访问分布式内存架构的不同通信后端以及高性能数学库。在这篇文章中,我们使用它来并行化矩阵矩阵乘法,并显示其可扩展性的等效率分析。此外,基于两个超级计算机上的实证分析的结果。我们实现接近最佳性能wrt。理论峰值性能。基于这个结果,我们得出结论,与纯粹基于C和MPI的实现相比,FooPar允许完全访问Scala的设计特性,而不会遭受性能下降。
2013-06-13 cs.DC cs.PL
Parsl: Pervasive Parallel Programming in Python
高级程序设计语言(如Python)越来越多地用于为用低级语言编写的库提供直观的接口,并用于从各种组件组装应用程序。这种向编排而不是实现的迁移,加上对并行计算的日益增长的需求(例如,由于大数据和摩尔定律的终结,有必要重新思考如何在程序中表达并行性。在这里,我们介绍了Parsl,一个并行脚本库,它为Python提供了简单、可扩展和灵活的并行编码结构。这些构造允许Parsl构造组件的动态依赖图,然后它可以在一个或多个处理器上有效地执行。Parsl是为可伸缩性而设计的,它有一组可扩展的执行器,可以针对不同的用例进行定制,比如低延迟、高吞吐量或极端规模的执行。通过在Blue Waters超级计算机上的实验,我们表明,Parsl执行器可以允许Python脚本以低至5 ms的开销执行组件,扩展到超过8000个节点上的250 000多个工人,每秒处理1200个任务。Parsl的其他特性通过支持基础设施的弹性配置和扩展、容错执行和集成广域数据管理来简化复合程序的构建和执行。我们表明,这些功能满足了多任务,交互式,在线和机器学习应用程序在生物学,宇宙学和材料科学等领域的需求。
2019-05-18 cs.DC cs.PL