并行編程模型是硬件和內(nèi)存架構(gòu)的抽象。實(shí)際上,這些模型并不涉及特定的機(jī)器類(lèi)型或內(nèi)存架構(gòu);至少在理論上,它們可以在任何類(lèi)型的機(jī)器上實(shí)現(xiàn)。與前一種區(qū)別相比,這些編程模型是在更高層次上創(chuàng)建的,代表了軟件應(yīng)如何實(shí)現(xiàn)并行計(jì)算。 每種模型都有自己訪問(wèn)內(nèi)存和與其他處理器共享信息以分配工作的方式。
沒(méi)有哪種編程模型絕對(duì)更好,最佳的實(shí)施模型在很大程度上取決于程序員需要解決的問(wèn)題。最常用的并行編程模型有共享內(nèi)存模型、多線程模式、消息傳遞模型、并行數(shù)據(jù)模型。

1.共享內(nèi)存模型
在這種模型中,任務(wù)共享一個(gè)共同的內(nèi)存區(qū)域,對(duì)共享資源(讀寫(xiě)數(shù)據(jù))的訪問(wèn)是異步的。程序員可以通過(guò)鎖和 Semaphores 等機(jī)制來(lái)控制對(duì)共享內(nèi)存的訪問(wèn)。這種模式的優(yōu)點(diǎn)是,程序員不必對(duì)任務(wù)間的通信作出明確規(guī)定。性能方面的一個(gè)主要缺點(diǎn)是很難理解和管理數(shù)據(jù)局部性。將數(shù)據(jù)保持在執(zhí)行該數(shù)據(jù)的處理器本地,可以節(jié)省內(nèi)存訪問(wèn)、緩存更新和總線流量,否則多個(gè)處理器使用相同數(shù)據(jù)時(shí)就會(huì)出現(xiàn)這些問(wèn)題。
2.多線程模式
在這種模式下,一個(gè)進(jìn)程可以有多個(gè)執(zhí)行線程。例如,先創(chuàng)建一個(gè)順序部分,然后創(chuàng)建一系列可并行執(zhí)行的任務(wù)。這種模式通常用于共享內(nèi)存架構(gòu)。因此,管理在共享內(nèi)存中運(yùn)行的線程之間的同步非常重要,程序員必須確保多個(gè)線程不會(huì)同時(shí)更新同一位置。目前的處理器既有基于軟件的多線程,也有基于硬件的多線程;Posix 線程是基于軟件實(shí)現(xiàn)多線程的典型例子;英特爾的超線程技術(shù)允許兩個(gè)線程在一個(gè)線程崩潰或等待 I/O 時(shí)進(jìn)行切換。該模型通過(guò)在硬件中實(shí)現(xiàn)多線程,當(dāng)一個(gè)線程停滯或等待 I/O 時(shí),在兩個(gè)線程之間進(jìn)行切換。有了這種模型,即使數(shù)據(jù)放置是非線性的,也能實(shí)現(xiàn)并行性。
3.消息傳遞模型
當(dāng)每個(gè)處理器都有自己的內(nèi)存(分布式內(nèi)存系統(tǒng))時(shí),通常會(huì)使用消息傳遞模型。多個(gè)任務(wù)可能存在于同一臺(tái)物理機(jī)器上,也可能存在于任意數(shù)量的機(jī)器上。程序員負(fù)責(zé)定義并行性和通過(guò)消息進(jìn)行的數(shù)據(jù)交換。實(shí)現(xiàn)這種模式的并行編程需要在代碼中使用(特別的)軟件庫(kù)。盡管自 20 世紀(jì) 80 年代以來(lái),已經(jīng)有許多消息傳遞模型的實(shí)現(xiàn)方法,也有一些實(shí)例,但直到 20 世紀(jì) 90 年代中期才創(chuàng)建了一個(gè)標(biāo)準(zhǔn)化模型,并以消息傳遞接口(MPI)的名稱(chēng)成為事實(shí)上的標(biāo)準(zhǔn)。MPI 模型顯然是為分布式內(nèi)存而設(shè)計(jì)的,但與并行編程模型一樣,它也可以在具有共享內(nèi)存的機(jī)器上使用。
4.并行數(shù)據(jù)模型
在這種模式下,我們有多個(gè)任務(wù)處理相同的數(shù)據(jù)結(jié)構(gòu),但每個(gè)任務(wù)處理數(shù)據(jù)的不同部分。在共享內(nèi)存架構(gòu)中,所有任務(wù)都通過(guò)共享內(nèi)存架構(gòu)訪問(wèn)數(shù)據(jù),而在分布式內(nèi)存架構(gòu)中,數(shù)據(jù)結(jié)構(gòu)是分布式的,位于每個(gè)任務(wù)的本地內(nèi)存中。要實(shí)現(xiàn)這種模式,開(kāi)發(fā)人員必須開(kāi)發(fā)一個(gè)應(yīng)用程序來(lái)決定數(shù)據(jù)的分配和對(duì)齊。目前新一代的 GPU 在對(duì)齊數(shù)據(jù)的情況下可連續(xù)高速運(yùn)行。
海馬課堂專(zhuān)業(yè)課程輔導(dǎo),2300+嚴(yán)選碩博學(xué)霸師資,針對(duì)學(xué)生的薄弱科目和學(xué)校教學(xué)進(jìn)度,匹配背景相符的導(dǎo)師,根據(jù)學(xué)生情況進(jìn)行1V1專(zhuān)屬備課,上課時(shí)間靈活安排,中英雙語(yǔ)詳細(xì)講解課程中的考點(diǎn)、 難點(diǎn)問(wèn)題,并提供多方位的課后輔導(dǎo),輔助學(xué)生掌握全部課程知識(shí),補(bǔ)足短板。如果你對(duì)此還有疑問(wèn),或者有更多關(guān)于學(xué)業(yè)輔導(dǎo)方面需求的話,可以添加微信號(hào):hmkt131聯(lián)系海馬課堂的Joye老師哦。