我目前正在评估如何在具有大量节点的并行计算机上实现多种算法,每个节点还配备强大的 GPU。事实证明,对于许多算法来说,“仅仅”拥有一个分布在许多节点上的数据结构,并且您可以在其元素上以 for-each 内核的风格运行一个函数,这将是有用的。
最后,它可以归结为 C++ 的 STL 的分布式实现。这也意味着,您可以以熟悉的方式执行算法,并且(大部分)不需要担心并行细节。拥有 Python 绑定也很酷:编写一些高级 Python 代码,低级分布式的东西会神奇地发生。
我对这个方向的现有项目进行了一些研究:
- 例如STAPL,但我真的找不到更多信息,也没有在我的电子邮件中得到回复。
- 有诸如 Trilinos 和 PETSc 之类的线性代数包,但它们主要是为线性代数设计的,它们也是巨大的框架,需要大量的努力才能整合到自己的项目中。
- GPU 支持通常很差(我知道您不能直接将 GPU 用于通用数据结构。)
是否对可用作现有代码并行化基础的分布式通用数据结构进行了认真的努力?我很乐意得到一些参考资料、论文或搜索词。