PGAS 模型编程语言
进入多核时代以后,充分利用CPU的并行处理能力,是一个较大的挑战。由单机运行变为集群运行又是一个较大的挑战。传统上开发单机并行程序,我们使用多线程的方式。而开发集群运行的程序则多使用mpi或者hadoop体系的技术工具。简化开发的复杂度无疑是一个非常值得研究的方向。PGAS(partitioned global address space:PGAS)似乎是一个不错的方向。
“PGAS模型试图将针对分布式内存系统的如MPI那样的SPMD编程样式,和共享内存系统的数据参照语义二者的好处结合起来。PGAS模型相较分布式共享内存有所创新,共享内存空间的一部分可以对特定线程或进程有“亲和性”,从而利用上参照局部性。这也比传统共享内存方式的一个平直地址空间要更具现实性,因为特定于硬件的数据局部性比如NUMA,可以在划分地址空间中进行建模。
PGAS模型是SHMEM[2]、Unified Parallel C、Coarray Fortran、Chapel、X10、Fortress、Split-C、Global Arrays、UPC++、Coarray C++、DASH的基础。自从Fortran 2008,这个模型被集成为标准Fortran语言的一部分。
PGAS模型的一个变体是异步分区全局地址空间(asynchronous partitioned global address space:APGAS),它允许创建局部和远程异步任务二者[3]。使用了这个模型的两个编程语言是Chapel和X10。“
版权声明: 本文为 InfoQ 作者【星际行者】的原创文章。
原文链接:【http://xie.infoq.cn/article/8020ca793ff26f02658dff74e】。文章转载请联系作者。
评论