这种类似流水线的并行化方法是否有名称?

时间:2015-01-15 00:58:41

标签: multithreading performance optimization

最近,我试图优化单线程循环,其核心归结为类似

while (true)
{
   a = A(x)
   b = B(a)
   c = C(b)
}

换句话说,每一步都取决于上一步的结果。这些功能中的每一个都执行CPU密集型操作。

我最终创建了2个队列和2个新线程并将其解耦,以便原始线程

/* on existing thread */ while (true) queue1.Enqueue(A(x))
/* on new thread #1 */   while (true) queue2.Enqueue(B(queue1.Dequeue()))
/* on new thread #2 */   while (true) c = B(queue2.Dequeue()))

现在3个函数可以并行运行,更好地利用多个核心。

看起来很基本,必须有一个名字。我找不到它。它非常类似pipelining所做的,只有这是线程的并行化技术。

1 个答案:

答案 0 :(得分:1)

更彻底的网络搜索显示它被称为管道并行 by some。这是一个描述性名称。

在上面链接的其中一个页面上,还有一个直观的方法可视化:

Pipeline Parallelism