我正在开发一个应用程序,它可以对图形的每个顶点进行计算。这里的主要问题是延迟,因为每次计算都相当小。例如,每次计算可能需要10ms才能自行执行,因此PGBL不应该为进程添加任何重要的延迟。
我可以编写自己的准系统图例程来完成这项任务。当然,PBGL还有很多其他功能。例如,当延迟不成问题时,我希望甚至可以将一些计算加载到“云”。
基本上,在cpu或多核cpu上跨矢量计算的开销是多少?此外,将来可以将顶点计算卸载到gpu吗?
我从来没有使用过PGBL,而是在升级库中遇到它,它引起了我的注意,除了潜在的延迟问题之外,它可能对我的应用程序来说非常完美。
例如,一个非常简单的树被分成n个分支,每个分支的计算在一个单独的核心上运行与使用PBGL之间的性能差异是什么? (对于小的计算时间,显然计算越大,差异越小)
答案 0 :(得分:1)
Parallel BGL主要是一个分布式内存库。有一个研究版本也包含了共享内存并行性。从长远来看,我们可以添加加速器支持,假设加速器内存模型支持内核中的原子,重叠输出写集以及支持有助于其他类型并行化的图算法所需的其他复杂行为。主要目标是找到一个并行抽象,允许使用它表示的图形算法使用各种硬件进行并行化。
无论如何,听起来你正在寻找一个主要的共享内存并行图库,并行BGL可能不太合适。目前,您必须运行多个MPI排名,这些排名绝对不能满足您的“低延迟”约束。多年来,对BGL的共享内存和/或SIMD版本产生了一些兴趣,但没有任何内容。通过向Boost(Lockfree,各种SIMD实现和容器等)添加更多共享内存并行库,实现某种共享内存并行BGL所需的工作量变得非常低,所以可能会发生这些天