支持分布式内存系统的并行开发模式Concurrent Collections (CnC)
英特尔发布了Concurrent Collections 0.5版本。在这个新版本中提供了一个新的比较吸引人的功能:对分布式内存系统的支持(distCnC)。 现有的大部分并行开发模式都是基于共享内存系统的, 比如openmp, cilk等。 在CnC中实现了对分布式内存系统的支持, 这就允许用户开发一个大型的CnC并行程序并且运行在分布式内存系统中比如用于计算机集群系统。
原则上说, 一个正确运行的共享内存CnC程序同样可以在分布内存CnC中正确的运行。 对于数据的分布几乎完全的被distCnC运行系统内部搞定, 程序员无需知道底层的细节问题。 当然, 为了让一个共享内存的CnC程序正确的在分布式内存系统中, 我们需要做一些小的修改。 一旦做了这些修改, 这样的程序不但可以运行在分布式内存系统, 同样也可以运行在共享内存系统。
理论上说, distCnC可以支持任何类型的网络。但是当前版本的CnC仅仅支持基于socket的通讯模式。 将来可能会支持基于MPI的通讯模式。在最新的CnC0.5版本中已经包含了支持分布式系统所需要的通讯库。这些函数库是在运行时根据需要加载的。 用户不需要链接额外的函数库。
修改现有CnC程序来支持分布式系统也很简单, 只要包含相应头文件以及进行相应初始化即可。
更多的信息请参考CnC文档以及:
http://software.intel.com/en-us/blogs/2010/06/15/introducingconcurrent-collections-for-distributed-memory-systems-distcnc/
下载试用CnC请访问:
http://software.intel.com/en-us/articles/intel-concurrent-collections-for-cc/