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