什麼是平行程式設計

前言 & 概述

本篇文章將會說明什麼是「平行程式設計」(Parallel Programming),並說明其與原來的 (非平行) 程式設計模式有何不同。此外,我們也會了解為什麼需要用到平行程式設計。

單線程程式設計

在了解「平行程式設計」(Parallel Programming) 之前,我們需要先回顧一下原始的 (非平行) 程式設計。

我們從小到大在寫程式時,通常是以「單線程」(Single-Thread) 的角度在撰寫的;也就是說,我們在寫 Code 時,通常是預期處理器會「由上而下」的「一行一行」執行我們的 Code,也就是 Serial Computing 的概念。

更具體來說,在更早的年代,大概是電腦還處於單核心的遠古時期,軟體工程師在寫程式時,通常會將「問題」分解為一系列的「指令」,並預期這些指令會 one-by-one 的被處理器執行。(如下圖所示)

即使現今隨便的一台電腦上就有 4 個或 8 個以上的 core,但是因為我們都是以「單線程」(Single-Thread) 的角度在寫程式,使得在「同一時間」永遠只有 1 個 core 在執行我們的程式,其餘的 core 的運算資源就被閒置,而白白浪費了!

平行化程式設計

平行程式設計 (Parallel Programming) 則是則是在寫 Code 階段加入一些特別的技術,使得程式可以在「同一時間」被多個 core 執行。進行平行程式設計時,軟體工程師通常會將問題拆分成「多組」一系列的「指令」,並把每一組指令交付給一個 core 來執行。

進行平行程式設計時,我們將不同組的指令交給不同的 core 執行,必須先確保不同組的指令之間不具有「相依性」。也就是說,不可以一定要先執行完某一組的指令才能執行另外一組。


「同一時間」執行的概念

在前面的解釋中,我們提到 Parallel Programming 可以使得程式在「同一時間」被許多 core 執行。然而,在資訊工程中針對「同一時間」的執行又分成很多種。

為什麼需要平行程式設計

對於 Parallel Programming 有概念後,我們接下來說明為什麼需要這個技術呢!

結語

在本篇文章中,我們介紹了 Parallel Programming 的基本概念,與原來單線程程式設計的差別,以及為什麼需要用到 Parallel Programming。下一篇文章,我們將會透過一個簡單的例子,說明 Parallel Programming 的運作方式。

⭐️ 如果你也對我的文章感興趣~可以到我的其他頻道逛逛 🥺
👉🏻 DataSci Ocean
👉🏻 YouTube
👉🏻 Instagram