我經常讀到關於管道模式作爲利用併發的常見和有用的模式。但是我想知道是否存在與任務並行模式相比並行流水線模式的任何優勢。與並行管道相比,並行管道的優勢是什麼?
假設我們在一個流水線中有三個階段:A,B,C。當需要處理數據A時,處理它並將它交給B.當下一個數據塊進入時,同樣的情況發生A和B同時工作。因此,我們可以並行執行不同階段的流水線,但當我們使用三條流水線並行工作(如任務並行模式)時,我們得到完全相同的圖像。當兩個數據塊一個接一個進入時,第一個塊由Pipeline 1佔用,下一個塊由Pipeline 2佔用,兩個塊同時處理。
此外,我可以很容易地想象並行中的許多問題。流水線:各個階段之間的緩衝區可能會阻塞(或溢出),一個階段在處理速度方面占主導地位,所以在最慢階段之前的所有階段都必須等待。 ..
這些問題在任務並行模式中不存在。此外,這種模式在塊快速到達時比管道的第一階段可以處理它們更快(或者它們可以同時獲取)。
那麼我爲什麼要使用並行流水線模式呢?
在此先感謝您的任何想法!
您不能總是將傳入數據拆分爲獨立的塊,例如當一個元素的處理取決於前一個的結果時。單線程的CPU指令以及CPU內核具有並行級流水線的原因就是這種情況。 – Holger