ADCL(Advanced Data-Centric Library)是一个高级数据中心库,是一系列用于处理大规模同构数据的API的集合,提供了一种使得处理程序能够轻松利用现代高性能计算(HPC)系统上的硬件加速器(例如大规模并行性和GPU)的方法化模块化编程模式。
ADCL抽象出类似于MPI的通信子的概念,使得用ADCL编写的应用能够自适应地切换不同的通信策略来适应各种不同的应用场景,使得程序性能得到了最高度的优化。
- ADCL在HPC领域的目标是简化应用程序的编写,并提高程序并行度和性能
- ADCL基于现代硬件和软件架构:一个高效的同构HPC API和大规模并行系统的全面优化
- ADCL重点在于通过“插件式”方法启用运行时策略的自适应实现
- ADCL可在面向任务的并行(如共享内存)和面向通信的并行(如MPI)框架中与其他API一起使用
优点:
- 提供了一个通信子的抽象化概念,使应用程序可以自适应地在不同的模式下以最优性能运行
- 大大简化了程序员的设计难度,使得程序易于维护和debug
- 按照一定的接口规范来实现,因而有良好的可移植性和可扩展性。
缺点:
- ADCL的可移植性和可扩展性,虽然提高了编程效率,但由于这样的特点,其性能相对于其他专门针对某个应用场景开发的类库而言要略低一些。
- 目前的文档不太完善,缺少一些示例和说明。
使用ADCL需要有大规模同构数据的处理经验、一定的并行编程技能,并且了解MPI的API。同时需要熟悉基于C/C++的编程技能,对于Python/R/其他语言的应用也有对应的接口来支持。