Parallel programming remains a daunting challenge, from the struggle to express a parallel algorithm without cluttering the underlying synchronous logic, to describing which devices to employ in a calculation, to correctness. Over the years, numerous solutions have arisen, many of them requiring new programming languages, extensions to programming languages, or the addition of pragmas. Support for these various tools and extensions is available to a varying degree. In recent years, the C++ standards committee has worked to refine the language features and libraries needed to support parallel programming on a single computational node. Eventually, all major vendors and compilers will provide robust and performant implementations of these standards. Until then, the HPX library and runtime provides cutting edge implementations of the standards, as well as proposed standards and extensions. Because of these advances, it is now possible to write high performance parallel code without custom extensions to C++. We provide an overview of modern parallel programming in C++, describing the language and library features, and providing brief examples of how to use them.
翻译:平行编程仍是一项艰巨的挑战,从努力表达平行算法而又不打破基本的同步逻辑,到描述在计算中应使用哪些装置,以纠正错误。多年来,出现了许多解决办法,其中许多需要新的编程语言,编程语言的扩展,或增加实用材料。对各种工具的支持和扩展程度各不相同。近年来,C++标准委员会努力完善支持单一计算节点平行编程所需的语言特征和图书馆。最终,所有主要供应商和编程者都将提供这些标准的强有力和绩效实施。在此之前,HPX图书馆和运行时间提供了标准以及拟议标准和扩展的尖端实施。由于这些进展,现在有可能在不向C++提供定制扩展的情况下编写高性平行代码。我们在C++中概述了现代平行编程,描述了语言和图书馆特征,并简要介绍了如何使用它们。</s>