这种类似流水线的并行化方法有名称吗?
Is there a name for this pipelining-like parallelization method?
最近,我正在尝试优化一个单线程循环,其核心可归结为
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 所做的非常相似,只是这是一种线程并行化技术。
最近,我正在尝试优化一个单线程循环,其核心可归结为
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 所做的非常相似,只是这是一种线程并行化技术。