亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        并行程序設(shè)計語言中局部性機(jī)制的探討

        2021-09-13 00:58:29王婧
        無線互聯(lián)科技 2021年12期

        王婧

        摘 要:多核CPU的存儲層次越來越深而且越來越復(fù)雜,這已經(jīng)成為優(yōu)化大規(guī)模并行應(yīng)用程序性能的關(guān)鍵瓶頸。目前并行程序設(shè)計語言和多核CPU有兩種局部性設(shè)計方法,一個是橫向局部性,另一個是縱向局部性,通過這兩種視角可以進(jìn)一步了解現(xiàn)在并行程序設(shè)計語言中局部性機(jī)制的特點。文章就并行程序設(shè)計語言中局部性機(jī)制進(jìn)行探討,深入分析其優(yōu)缺點,探究未來并行程序設(shè)計語言設(shè)計的方向,指出新語言可以考慮這兩種局部性設(shè)計機(jī)制,希望能為相關(guān)從業(yè)者帶來一些參考。

        關(guān)鍵詞:并行程序;設(shè)計語言;局部性機(jī)制

        0 引言

        為了解決訪問延遲與處理器速度之間的差距變大的問題,體系架構(gòu)設(shè)計者在硬件上引入了存儲層次概念。同時,想要充分挖掘出存儲層次的硬件設(shè)計優(yōu)點,并行程序設(shè)計語言要具備優(yōu)秀的局部性機(jī)制,才能得到更高的性能。并行程序設(shè)計語言領(lǐng)域中,技術(shù)人員會逐步加入不同的局部性機(jī)制,進(jìn)一步增強(qiáng)語言挖掘局部性的力度。科研人員若要寫出性能高的代碼,需要考慮在并行程序設(shè)計語言和編程模型的設(shè)計中加入局部性的描述和表示機(jī)制,以方便科研人員利用這些機(jī)制來描述和挖掘算法及程序中的局部性[1]。

        1 并行編程語言發(fā)展趨勢

        隨著科技發(fā)展,多路多核處理器的出現(xiàn)使得MPI(Message Passing Interface)在優(yōu)化設(shè)計并行算法時遇到困難,MPI是基于分布式存儲最受歡迎的編程方式。雖然MPI在節(jié)點間運(yùn)行,OpenMP在節(jié)點內(nèi)運(yùn)行,這樣可以實現(xiàn)混合并行,但是這是兩種不一樣的并行語言,設(shè)計人員在設(shè)計時難度會增加。所以新并行編程語言一定要考慮到多層次并行的支持,進(jìn)一步優(yōu)化硬件層次的設(shè)計、訪存的延遲和帶寬等。數(shù)據(jù)局部性會成為重要的因素,新設(shè)計的編程語言要給技術(shù)人員定義數(shù)據(jù)局部性的機(jī)制,盡量減少訪存和通信次數(shù),提高程序運(yùn)行性能。存儲層次的復(fù)雜,使得并行程序設(shè)計語言中局部性機(jī)制更加重要,目前人們?nèi)找骊P(guān)注針對多核的存儲訪問局部性的算法研究,所以未來并行編程語言的研究重點是設(shè)計容易表達(dá)算法局部性的機(jī)制。

        2 新設(shè)計的并行編程語言要具備的要點

        首先要有具備縱向局部性和橫向局部性的顯式管理機(jī)制?,F(xiàn)在并行計算系統(tǒng)的存儲層次越來越復(fù)雜,如果只靠運(yùn)行時系統(tǒng)和編譯器來處理局部性問題和并行性開發(fā),不是最佳的處理方法,還要依靠技術(shù)人員的顯式管理。

        新開發(fā)的并行編程語言要能夠應(yīng)用在不一樣的并行編程模式中,比如任務(wù)并行、數(shù)據(jù)并行等。

        統(tǒng)一管理程序的局部性和并行性,開發(fā)設(shè)計人員利用編程語言可以整體設(shè)計這兩種特性,想辦法減輕人員的工作負(fù)擔(dān),同時又能夠開發(fā)高性能的并行程序,并且保證并行程序可在不同硬件平臺移植。

        與Local View類似,這些方法雖然能夠幫助開發(fā)人員編程的效率,減輕他們的工作負(fù)擔(dān),加快并行程序的開發(fā)進(jìn)程,但是這種固定的處理數(shù)據(jù)方案也限制了更有效設(shè)計并行算法和數(shù)據(jù)劃分,而且也只能支持部分并行模式。雖然并行程序開發(fā)人員管理局部性可以復(fù)用分布類,但其實是有限的,就算是設(shè)計了大量的分布類,都很難高效使用。

        3 并行程序設(shè)計語言中局部性機(jī)制

        并行程序設(shè)計涉及多方面的知識,并非簡單的并行算法的設(shè)計,只有綜合考慮各方面的因素,才能設(shè)計出高效率的并行程序[2]。并行程序設(shè)計語言中局部性機(jī)制分為橫向局部性和縱向局部性兩種。對分布式并行程序設(shè)計而言,利用更多的局部性機(jī)制是橫向局部性,主要考慮怎么樣減少消息傳遞的開銷。而串行程序相反,考慮更多的是縱向局部性,現(xiàn)在已經(jīng)有很多的文獻(xiàn)研究。

        3.1? 并行程序設(shè)計語言中橫向局部性

        橫向局部性是由于存儲位置的分布導(dǎo)致同一內(nèi)存層次上的數(shù)據(jù)通信,例如Jacobi算法就是因為把數(shù)組數(shù)據(jù)分塊造成不同塊間的邊界通信。一般來說數(shù)據(jù)分布如果有不錯的空間局部性,就會有不錯的橫向局部性,但是橫向局部性不只有良好的空間局部性,還包括數(shù)據(jù)通信的開銷。并行程序設(shè)計語言的橫向局部性分為兩種設(shè)計,一種是像OpenMP,編譯器自動劃分和分配數(shù)據(jù),另一種是像HPF,技術(shù)人員管理控制數(shù)據(jù)劃分和分配過程。

        HPF編程模型和OpenMP,MPI都不一樣,前者為了管理并行程序設(shè)計語言中的橫向局部性,設(shè)計定義和它們不一樣的分布類型。在管理橫向局部性方面,顯然HPF優(yōu)勢更大。開發(fā)人員運(yùn)用HPF編寫程序時,一般運(yùn)用編譯制導(dǎo)語句來進(jìn)行數(shù)據(jù)的分塊,并行操作不同數(shù)據(jù)塊則運(yùn)用forall語句,不過HPF描述數(shù)據(jù)局部性較單一。因為有劃分的內(nèi)存地址空間,并行程序設(shè)計語言PGAS改進(jìn)了OpenMP的存儲模型,但是數(shù)據(jù)分塊方法略有差異,思想還是差不多,由開發(fā)人員來管理數(shù)據(jù)分塊,運(yùn)行時系統(tǒng)和編譯器管理線程間的通信。

        3.2? 并行程序設(shè)計語言中縱向局部性

        不同存儲層次之間的局部性就是縱向局部性,比如內(nèi)存和Cache。縱向局部性還可以從時間和空間來分成兩種。隨著科技的發(fā)展,并行計算系統(tǒng)存儲層次越來越復(fù)雜,CPU性能和內(nèi)存訪問性能之間的差距正在擴(kuò)大。想要提高計算程序的性能,就一定要考慮到數(shù)據(jù)的縱向局部性。同時,這種考慮往往不具備可移植性,所以在對并行編程模型重新設(shè)計時,一定要顯式管理存儲層次,尤其是出現(xiàn)多核處理器后,讓并行程序?qū)Υ鎯哟芜M(jìn)行顯式管理,進(jìn)一步優(yōu)化縱向局部性,是一種提升程序性能的重要方法。

        在顯式管理縱向局部性方面,現(xiàn)在已經(jīng)有多個基于Cell處理器的編程模型??v使Cell SDK可以位于Cell核內(nèi)部完成MPI編程,也可以位于獨立地址空間實施Pthread編程,然而Cell SDK在局部性管理上仍有缺陷,橫向局部性管理導(dǎo)致并行編程的難度大大增加,縱向局部性管理也只是實現(xiàn)了不同存儲層次間的通信,擴(kuò)展性和可移植性很差。

        Sequoia是為了應(yīng)對Cell SDK的這些缺陷而出現(xiàn)的,現(xiàn)在是組成Cell的重要部分。開發(fā)人員可以用Sequoia顯式管理存儲層次,設(shè)計出性能更加好的算法。在顯式管理縱向局部性時,Sequoia設(shè)置數(shù)據(jù)傳遞大小會考慮底層硬件平臺的不同存儲層次特征,更好地顯式管理縱向局部性。不過計算機(jī)集群系統(tǒng)卻沒有上面所說的共享機(jī)制,它的計算節(jié)點是經(jīng)由高速網(wǎng)絡(luò)之后連接,Sequoia為實現(xiàn)物理內(nèi)存的抽象特意添加虛擬層。因此Sequoia不管是縱向局部性還是橫向局部性都可以管理,并且應(yīng)該允許技術(shù)人員的繼續(xù)優(yōu)化,不斷提升程序的性能。總之Cell SDK可以顯式管理每個層次,可以看成是具備兩個存儲層次的Sequoia。

        3.3? 綜合兩種局部性

        在算法設(shè)計和并行實現(xiàn)時,想要讓并行程序的性能更高,就需要對縱向局部性和橫向局部性加以考慮。并行編程語言設(shè)計好了關(guān)于橫向局部性的管理機(jī)制,比如PGAS和MPI,不管用哪個通信機(jī)制,都是為了讓開發(fā)人員更好實現(xiàn)對橫向局部性的顯式管理,并且盡量減少通信開銷。當(dāng)并行應(yīng)用程序采用了這些編程語言時,橫向局部性、并行性挖掘和并行模式等都會考慮到,因此可以將并行性完美融合橫向局部性。在縱向局部性方面,由Sequoia設(shè)計出來的task,便于編程語言管理并行和兩種局部性,它既能制定多層次的并行模式,又有管理縱向局部性和橫向局部性的機(jī)制。在開發(fā)新的編程模型時可以考慮以上方式,編寫出更高效和性能更好的應(yīng)用程序。

        4 結(jié)語

        現(xiàn)如今計算機(jī)存儲系統(tǒng)越來越復(fù)雜,尤其是多核處理器的出現(xiàn),系統(tǒng)更加難以開發(fā)局部性,所以更加顯出局部性的描述和表示機(jī)制的優(yōu)勢。局部性機(jī)制可以幫助研究人員寫的代碼性能更好,進(jìn)一步挖掘算法。本文分析了并行程序設(shè)計語言和多核處理器的狀況,探討了未來并行程序設(shè)計語言的發(fā)展趨勢,詳細(xì)分析了并行程序設(shè)計語言中局部性機(jī)制的各種定義和應(yīng)用。并行程序設(shè)計語言中局部性機(jī)制主要是分為縱向局部性和橫向局部性兩種,文章分別從這兩個視角來著重分析了局部性機(jī)制,對設(shè)計并行編程模型的方向更加明確。

        [參考文獻(xiàn)]

        [1]袁良,張云泉,白雪瑞,等.并行程序設(shè)計語言中局部性機(jī)制的研究[J].計算機(jī)科學(xué),2020(1):7-16.

        [2]黃偉文,姚文慶.并行程序設(shè)計[J].寧波職業(yè)技術(shù)學(xué)院學(xué)報,2002(2):87-90.

        (編輯 何 琳)

        又黄又爽又色的视频| 一区二区国产av网站| 久久亚洲色一区二区三区| 日韩插啊免费视频在线观看| 五月丁香六月综合激情在线观看| 国产成人亚洲合色婷婷| 精品亚洲天堂一区二区三区| 中文字幕日韩一区二区不卡| 亚洲综合网在线观看首页| 喷潮出白浆视频在线观看| 亚洲国产成人久久精品一区| 国产福利视频一区二区| 婷婷四房播播| 蜜桃网站在线免费观看视频| 国产一区二区三区我不卡| 亚洲精品乱码8久久久久久日本| 久久免费国产精品| 日本午夜一区二区视频| 免费在线观看av不卡网站| 亚洲人成网址在线播放| 久久狠狠高潮亚洲精品暴力打| 亚洲天堂一二三四区在线| 亚洲 小说区 图片区 都市| 曰批免费视频播放免费直播| 中文字幕亚洲好看有码| 久久国产亚洲精品超碰热| 亚洲精品国产精品系列| 中文字幕亚洲精品一区二区三区 | 色婷婷综合久久久久中文| 中文字幕亚洲无线码高清| 抖射在线免费观看视频网站| 在线观看亚洲av每日更新影片| 中文字幕丰满伦子无码| 亚洲另类欧美综合久久图片区| 国产熟女av一区二区三区四季| 亚洲国产成人久久精品一区| 久激情内射婷内射蜜桃| 国产精品一区二区av片| 亚洲一区免费视频看看| 丰满人妻一区二区三区免费视频| 双腿张开被9个黑人调教影片|