碩士課程輔導
并行編程模型是硬件和內存架構的抽象。實際上,這些模型并不涉及特定的機器類型或內存架構;至少在理論上,它們可以在任何類型的機器上實現。與前一種區別相比,這些編程模型是在更高層次上創建的,代表了軟件應如何實現并行計算。 每種模型都有自己訪問內存和與其他處理器共享信息以分配工作的方式。
沒有哪種編程模型絕對更好,最佳的實施模型在很大程度上取決于程序員需要解決的問題。最常用的并行編程模型有共享內存模型、多線程模式、消息傳遞模型、并行數據模型。
在這種模型中,任務共享一個共同的內存區域,對共享資源(讀寫數據)的訪問是異步的。程序員可以通過鎖和 Semaphores 等機制來控制對共享內存的訪問。這種模式的優點是,程序員不必對任務間的通信作出明確規定。性能方面的一個主要缺點是很難理解和管理數據局部性。將數據保持在執行該數據的處理器本地,可以節省內存訪問、緩存更新和總線流量,否則多個處理器使用相同數據時就會出現這些問題。
在這種模式下,一個進程可以有多個執行線程。例如,先創建一個順序部分,然后創建一系列可并行執行的任務。這種模式通常用于共享內存架構。因此,管理在共享內存中運行的線程之間的同步非常重要,程序員必須確保多個線程不會同時更新同一位置。目前的處理器既有基于軟件的多線程,也有基于硬件的多線程;Posix 線程是基于軟件實現多線程的典型例子;英特爾的超線程技術允許兩個線程在一個線程崩潰或等待 I/O 時進行切換。該模型通過在硬件中實現多線程,當一個線程停滯或等待 I/O 時,在兩個線程之間進行切換。有了這種模型,即使數據放置是非線性的,也能實現并行性。
當每個處理器都有自己的內存(分布式內存系統)時,通常會使用消息傳遞模型。多個任務可能存在于同一臺物理機器上,也可能存在于任意數量的機器上。程序員負責定義并行性和通過消息進行的數據交換。實現這種模式的并行編程需要在代碼中使用(特別的)軟件庫。盡管自 20 世紀 80 年代以來,已經有許多消息傳遞模型的實現方法,也有一些實例,但直到 20 世紀 90 年代中期才創建了一個標準化模型,并以消息傳遞接口(MPI)的名稱成為事實上的標準。MPI 模型顯然是為分布式內存而設計的,但與并行編程模型一樣,它也可以在具有共享內存的機器上使用。
在這種模式下,我們有多個任務處理相同的數據結構,但每個任務處理數據的不同部分。在共享內存架構中,所有任務都通過共享內存架構訪問數據,而在分布式內存架構中,數據結構是分布式的,位于每個任務的本地內存中。要實現這種模式,開發人員必須開發一個應用程序來決定數據的分配和對齊。目前新一代的 GPU 在對齊數據的情況下可連續高速運行。
海馬課堂專業課程輔導,2300+嚴選碩博學霸師資,針對學生的薄弱科目和學校教學進度,匹配背景相符的導師,根據學生情況進行1V1專屬備課,上課時間靈活安排,中英雙語詳細講解課程中的考點、 難點問題,并提供多方位的課后輔導,輔助學生掌握全部課程知識,補足短板。如果你對此還有疑問,或者有更多關于學業輔導方面需求的話,可以添加微信號:hmkt131聯系海馬課堂的Joye老師哦。
相關熱詞搜索: