任務並行

任務並行(英語:Task parallelism),也稱為功能平行(function parallelism)或控制平行(control parallelism),是平行計算程式設計模型的一種。在這個模型中,每一個執行緒執行一個分配到的任務,而這些執行緒則被分配(通常是作業系統核心)到該並行計算體系的各個計算節點中去。

任務並行是並行計算程式設計模型的一種。在這個模型中,每一個執行緒執行一個分配到的任務,而這些執行緒則被分配(通常是作業系統核心)到該並行計算體系的各個計算節點中去。

基本介紹

  • 中文名:任務並行
  • 外文名:Task parallelism
  • 性質並行計算程式設計模型的一種
  • 方法分類:進程同步、數據同步
  • 定義:同時運行的一個或多個任務
簡介,說明,多處理器調度,同步,

簡介

任務並行(也稱為功能並行控制並行)是一種形式的並行化的計算機代碼在多個處理器並行計算環境。任務並行性側重於分配不同處理器上的進程執行緒同時執行的任務。與涉及在不同數據組件上運行相同任務的數據並行性相反,通過在同一數據上同時運行許多不同任務來區分任務並行。一種常見類型的任務並行是流水線操作,它包括通過一系列單獨的任務移動單個數據集,其中每個任務可以獨立於其他任務執行。

說明

在多處理器系統中,當每個處理器對相同或不同的數據執行不同的執行緒(或進程)時,可以實現任務並行。執行緒可以執行相同或不同的代碼。在一般情況下,不同的執行執行緒在工作時相互通信,但不是必需的。作為工作流程的一部分,通常通過將數據從一個執行緒傳遞到下一個執行緒進行通信。
舉一個簡單的例子,如果系統在並行環境中的雙處理器系統(CPU“a”和“b”)上運行代碼,並且我們希望執行“A”和“B”任務,則有可能告訴CPU“a”執行任務“A”和CPU“b”同時執行任務“B”,從而減少執行的運行時間。這些任務可以使用條件語句進行分配,如下所述。
任務並行強調處理(即執行緒)的分散式(並行)本質,而不是數據(數據並行)。大多數真正的程式都位於任務並行和數據並行之間的連續體上。
執行緒級並行TLP)是一次運行多個執行緒的應用程式固有的並行性。這種類型的並行性主要出現在為商業伺服器(如資料庫)編寫的應用程式中。通過一次運行多個執行緒,這些應用程式能夠承受其工作負載可能產生的大量I / O和記憶體系統延遲 - 當一個執行緒延遲等待記憶體或磁碟訪問時,其他執行緒可以執行有用的工作。
隨著多核微處理器的出現,執行緒級並行的開發也開始進入桌面市場。出現這種情況的原因是,出於各種原因,增加單個核心的時鐘速度或每個時鐘的指令越來越不切實際。如果這種趨勢繼續下去,那么新的應用程式將不得不被設計為利用多執行緒來從潛在計算能力的增加中受益。這與以前的微處理器創新形成對比,現有代碼通過在更新/更快的計算機上運行而自動加速。

多處理器調度

一般任務在處理器上的調度是通過用戶執行緒(User Thread,相對於核心執行緒 - Kernel Thread 而言)實現的。作業系統核心通過操縱調度器(Scheduler)對執行緒進行調度從而將任務映射到各個處理器上。這種調度方式一般不能滿足用戶自由安排分配任務的要求:通常需要作業系統提供一個用戶模式下的調度器來完成這個任務。調度器的任務就是儘可能合理的將任務分配和均衡到個處理器上。

同步

 同步是任務並行里涉及到最重要的任務之間通信的方法,分為進程同步(或者執行緒同步)和 數據同步進程同步主要研究如何確定數個進程之間的執行順序和避免數據競爭(Data race condition)的問題。避免數據競爭的主要方法是在程式中設立臨界區,即一次只允許一個執行緒執行的一段代碼,通常用於保護重要的公共變數。然而也有理論研究一次允許數個執行緒執行臨界區代碼的一般情況,稱為l-exclusion問題。
就編程方法來說,保持進程間同步的主要方法有記憶體屏障(Memory barrier),互斥鎖(Mutex),信號量(Semaphore)和(Lock),管程(Monitor),訊息(Message),管道(Pipe)。
數據同步則是研究如何保證在一個變數的多個副本之間保持一致性的問題。數據同步通常涉及到的話題有Cache一致性(Cache Coherence),數據複製(Data replication)等等。
數據同步進程同步的目的是為了使程式在多處理器執行的條件下保持一定的記憶體模型。

相關詞條

熱門詞條

聯絡我們