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
Concepts for designing modern C++ interfaces for MPI
Tennessee Technological University(田纳西理工大学);Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室);Pacific Northwest National Laboratory(太平洋西北国家实验室);Karlsruhe Institute of Technology(卡尔斯鲁厄理工学院);Stony Brook University(石溪大学)
本文探讨为MPI设计现代C++接口的概念,聚焦类型系统、对象生命周期和通信缓冲区三个基本方面,并指出MPI规范中的不一致,旨在促进社区讨论。
2025-10-16 cs.DC
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
A Hypergraph-Partitioned Vertex Programming Approach for Large-scale Consensus Optimization
University of Maryland, College Park(马里兰大学帕克分校)
在现代数据科学问题中,从大数据中提取价值的技术需要对异构、不规则结构的数据进行大规模优化。这些数据中的大部分最好表示为多关系图,这使得Pregel和GraphLab等顶点编程抽象非常适合现代大规模数据分析。在本文中,我们描述了一个流行的共识优化技术称为交替方向的乘法器(ADMM)的顶点编程实现。ADMM共识优化允许复杂目标的优雅解决方案,例如丰富概率模型中的推理。我们还介绍了一种新的超图分区技术,提高了国家的最先进的顶点编程分区技术,并显着降低了通信成本,减少了数量级的复制节点的数量。我们在GraphLab中实现了我们的算法,并在各种现实的二分图分布和大型合成选民意见分析应用程序上测量了缩放性能。在我们的实验中,我们能够在运行时间上比当前最先进的GraphLab分区方案提高50%。
2013-08-30 cs.AI cs.DC
Implementing OpenMP for Zig to enable its use in HPC context
本研究针对Zig语言缺乏OpenMP支持的问题,借助LLVM工具链为其添加部分OpenMP支持,验证了性能与传统HPC语言相当甚至更优,证明Zig可用于HPC开发并为后续特性扩展奠基。
2024-08-19 cs.DC
TAPA: A Scalable Task-Parallel Dataflow Programming Framework for Modern FPGAs with Co-Optimization of HLS and Physical Design
本文提出TAPA端到端框架,通过提供便捷API表达任务间通信、在HLS中引入粗粒度布图规划及HBM优化技术,将C++数据流程序编译为高频FPGA加速器,在43个设计中将平均频率提升102%且无吞吐量损失。
2022-09-06 cs.AR cs.DC cs.PF
Adjusted Objects: An Efficient and Principled Approach to Scalable Programming (Extended Version)
本文提出adjusted objects原则,通过为特定用途定制共享对象以提升性能,并引入DEGO库在Java程序中注入此类对象,使标准JDK共享对象性能提升多达两个数量级,基准测试性能提升达1.7倍。
2025-04-29 cs.DC
Exploiting co-execution with oneAPI: heterogeneity from a modern perspective
由于异构系统体系结构的复杂性,高效地对异构系统进行编程是一个重大挑战。英特尔oneAPI是一种基于SYCL构建的全新的、功能强大的标准统一编程模型,可解决这些问题。在本文中,oneAPI提供了协同执行策略,可以在不同设备之间运行相同的内核,从而可以利用静态和动态策略。在此基础上,对静态和动态负载均衡算法进行了综合分析。这项工作使用集成的GPU和CPU评估了一组众所周知的常规和非常规HPC基准测试的性能和能效。实验结果表明,在使用动态算法时,协同执行是值得的,在使用统一共享内存时,协同执行效率更高。
2021-06-12 cs.DC cs.PL
Closing the Performance Gap with Modern C++
在通往Exascale的道路上,程序员面临着越来越大的挑战,即必须从同一代码库支持多种硬件架构。与此同时,随着硬件架构变得越来越多样化,代码的可移植性和性能越来越难以实现。当今的异构系统通常包括两个或更多个完全不同且不兼容的硬件执行模型,诸如GPGPU、SIMD向量单元和通用核,其常规上必须使用表示非重叠编程模型的单独工具链来编程。最近工业界和更广泛的社区对C++语言的兴趣复苏,在并发和并行领域激发了大量的标准化建议和技术规范。这包括最近越来越多的讨论,围绕需要一个统一的,更高层次的抽象和编程模型的并行性在C++标准的目标异构和分布式计算。这种抽象应该与现有的、已经标准化的语言和库功能完美融合,但也应该足够通用,以支持未来的硬件开发。在本文中,我们提出了这样一个更高层次的编程抽象的并行性在C++,其目的是使代码和性能的可移植性在广泛的体系结构和各种类型的并行性的结果。我们提出并比较从运行著名的STREAM基准移植到我们的更高级别的C++抽象与相应的结果从运行它本机获得的性能数据。我们表明,我们的抽象,使性能至少一样好的可比基线基准,同时提供一个统一的编程API的所有比较的目标体系结构。
2022-05-30 cs.DC cs.PL
A Workload and Programming Ease Driven Perspective of Processing-in-Memory
许多现代和新兴的应用程序必须处理越来越大的数据量。不幸的是,流行的计算范例并没有被设计为有效地处理这样的大规模数据:在内存子系统和CPU之间移动这些数据的能量和性能成本现在占了计算的总成本的主导地位。这迫使系统架构师和设计师从根本上重新思考如何设计计算机。内存处理(PIM)是一种计算范例,通过将计算引入数据来避免大多数数据移动成本。现代存储器系统中的新机会使得能够在存储器子系统内执行不同程度的处理的架构成为可能。然而,构建PIM架构必须解决许多实际的系统级问题,包括使工作负载和程序员能够轻松地利用PIM。本文研究了实现PIM架构的实际构建和广泛采用的三个关键领域。首先,我们描述了我们在系统地识别PIM在实际应用中的机会方面的工作,并量化了流行的新兴应用的潜在收益(例如,机器学习、数据分析、基因组分析)。其次,我们的目标是解决几个关键问题,这些程序的PIM架构。第三,我们描述了广泛采用PIM仍然面临的挑战。
2019-07-26 cs.AR cs.DC
Proceedings of the 13th International Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software
硬件和软件基础设施的并发和并行程度越来越高,这就要求探索和理解各种基础和实用的想法。并行和通信软件的程序设计语言方法国际研讨会(PLACES)致力于这一领域的工作。该研讨会为来自不同领域的研究人员提供了一个论坛,以交流有关现代和未来编程的这些挑战的新想法,其中并发和分布是规范,而不是边缘问题。该主题是核心,并与ETAPS的主要会议,特别是与ESOP很好地结合在一起。
2022-03-23 cs.DC cs.LO cs.PL
Parallel Programming Models for Heterogeneous Many-Cores : A Survey
异构多核现在是从嵌入式系统到超级计算机的现代计算系统的组成部分。虽然异构众核设计提供了高能效高性能的潜力,但只有当应用程序适当并行并且可以匹配底层异构平台时,这种潜力才能被释放。在这篇文章中,我们提供了一个全面的调查异构众核架构的并行编程模型,并审查编译技术,提高可编程性和可移植性。我们研究了各种软件优化技术,以最大限度地减少异构计算设备之间的通信开销。我们为各种不同的研究领域提供了路线图。最后,我们对该领域的开放问题和潜在的研究方向进行了讨论。这篇文章既提供了对快速发展的异构编程领域的一个容易理解的介绍,也提供了其主要成就的详细参考书目。
2020-05-05 cs.DC cs.PL
Evaluating the Cost of Atomic Operations on Modern Architectures
原子操作(atomics),如比较和交换(CAS)或提取和添加(FAA)在并行编程中无处不在。然而,这些操作和这些系统的各种特性,如高速缓存的结构之间的性能权衡是不清楚的,并没有得到彻底的分析。在本文中,我们建立了一个评估方法,开发了一个性能模型,并提出了一套详细的基准测试不同的原子的延迟和带宽。我们考虑各种最先进的x86架构:Intel Haswell、Xeon Phi、Ivy Bridge和AMD Bulldozer。结果揭示了令人惊讶的性能之间的关系所考虑的原子和架构属性,如访问的高速缓存行的一致性状态。一个关键的发现是,所有测试的原子都具有可比的延迟和带宽,即使它们的特征是不同的共识数。另一个观点是,即使在发出的操作之间没有依赖关系,原子的硬件实现也会阻止任何指令级并行。最后,我们讨论了在分析的架构中发现的性能问题的解决方案。我们的分析可以实现更简单,更有效的并行编程,并加速在现成的机器和大型计算系统中部署的各种架构上的数据处理。
2020-10-19 cs.AR cs.DC cs.DS
Launchpad: A Programming Model for Distributed Machine Learning Research
DeepMind(深度思维);Google Brain(谷歌大脑)
现代机器学习算法成功背后的一个主要驱动力是它们处理越来越大量数据的能力。因此,在研究和生产中使用分布式系统作为扩展到这种不断增长的数据的手段变得越来越普遍。然而,与此同时,分布式学习过程可能会使即使是简单算法的实现也变得非常复杂。这尤其成问题,因为许多机器学习从业者并不精通分布式系统的设计,更不用说那些具有复杂通信拓扑的系统了。在这项工作中,我们介绍了Launchpad,编程模型,简化了定义和启动分布式系统,是专门针对机器学习观众的过程。我们描述了我们的框架,它的设计理念和实现,并给出了一些常见的学习算法的设计,大大简化了这种方法的例子。
2021-06-07 cs.AI cs.DC cs.LG
Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: programming productivity, performance, and energy consumption
许多现代并行计算系统在其节点级是异构的。这样的节点可以包括通用CPU和加速器(诸如GPU或Intel Xeon Phi),其提供具有合适的能耗特性的高性能。然而,利用异构体系结构的可用性能可能具有挑战性。有各种并行编程框架(例如OpenMP、OpenCL、OpenACC、CUDA),选择适合目标上下文的框架并不简单。在本文中,我们实证研究的特点,OpenMP,OpenACC,OpenCL和CUDA的编程生产力,性能和能源。为了评估编程效率,我们使用了我们自己开发的工具CodeStat,它使我们能够确定使用特定框架并行化代码所需的代码行的百分比。我们使用我们的工具x-MeterPU来评估能耗和性能。实验使用行业标准的SPEC基准测试套件和Rodinia基准测试套件进行,用于在将英特尔至强E5处理器与GPU加速器或英特尔至强融核协处理器相结合的异构系统上进行加速计算。
2017-04-18 cs.DC cs.PF cs.PL