深入理解 STAPL pView:并行编程的关键利器
1. 引言
在通用编程中,将数据结构和算法解耦是一种常见做法。C++ 标准模板库(STL)通过迭代器实现了这种抽象,迭代器为算法提供了访问容器中数据的通用接口,使得同一算法可以操作多个容器。不过,迭代器主要提供遍历容器数据的机制,其功能存在一定局限性。
而标准模板自适应并行库(STAPL)为编写并行程序提供了构建块,包括并行算法(pAlgorithms)、并行和分布式容器(pContainers)以及用于抽象对 pContainers 数据访问的 pViews。STAPL pView 对迭代器概念进行了扩展,它对应于一组元素,为其所代表的数据提供抽象数据类型(ADT),并提供了多种操作,这些操作由 ADT 定义,例如 size() 操作可提供 pView 所代表的元素数量。
STAPL pView 的关键特性包括:
- 泛化迭代器概念:pView 对应一组元素,并为其所代表的数据提供 ADT。
- 支持并行性:通过提供对元素的随机访问,以及管理视图的表达性和并行执行性能之间的权衡来实现并行性。
2. STAPL 概述
STAPL 是一个用于并行 C++ 代码开发的框架,其核心是并行算法库(pAlgorithms)和分布式数据结构库(pContainers),这些库的接口与 C++ 标准库(STL)类似。与 STL 算法使用迭代器类似,STAPL pAlgorithms 基于 pViews 编写,使得同一算法可以操作多个 pContainers。
以下是 STAPL 的整体架构: