複製鏈接
請複製以下鏈接發送給好友

任務並行

鎖定
任務並行(英語:Task parallelism),也稱為功能平行(function parallelism)或控制平行(control parallelism),是平行計算程序設計模型的一種。在這個模型中,每一個線程執行一個分配到的任務,而這些線程則被分配(通常是操作系統內核)到該並行計算體系的各個計算節點中去。
任務並行是並行計算程序設計模型的一種。在這個模型中,每一個線程執行一個分配到的任務,而這些線程則被分配(通常是操作系統內核)到該並行計算體系的各個計算節點中去。
中文名
任務並行
外文名
Task parallelism
性    質
並行計算程序設計模型的一種
方法分類
進程同步、數據同步
定    義
同時運行的一個或多個任務

任務並行簡介

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

任務並行説明

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

任務並行多處理器調度

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

任務並行同步

 同步是任務並行裏涉及到最重要的任務之間通信的方法,分為進程同步(或者線程同步)和 數據同步進程同步主要研究如何確定數個進程之間的執行順序和避免數據競爭(Data race condition)的問題。避免數據競爭的主要方法是在程序中設立臨界區,即一次只允許一個線程執行的一段代碼,通常用於保護重要的公共變量。然而也有理論研究一次允許數個線程執行臨界區代碼的一般情況,稱為l-exclusion問題。
就編程方法來説,保持進程間同步的主要方法有內存屏障(Memory barrier),互斥鎖(Mutex),信號量(Semaphore)和(Lock),管程(Monitor),消息(Message),管道(Pipe)。
數據同步則是研究如何保證在一個變量的多個副本之間保持一致性的問題。數據同步通常涉及到的話題有Cache一致性(Cache Coherence),數據複製(Data replication)等等。
數據同步進程同步的目的是為了使程序在多處理器執行的條件下保持一定的內存模型。 [1] 
參考資料
  • 1.    王蕾, 崔慧敏, 陳莉,等. 任務並行編程模型研究與進展[J]. 軟件學報, 2013, 24(1):77-90.
  • 2.    徐曉東, 趙建亭, 許春雷. 實時多任務並行計算系統的容錯技術[J]. 計算機工程與應用, 2013, 49(9):33-36.