并行計(jì)算基礎(chǔ)知識(shí)講座2

上傳人:gu****n 文檔編號(hào):243225676 上傳時(shí)間:2024-09-18 格式:PPT 頁(yè)數(shù):72 大?。?98KB
收藏 版權(quán)申訴 舉報(bào) 下載
并行計(jì)算基礎(chǔ)知識(shí)講座2_第1頁(yè)
第1頁(yè) / 共72頁(yè)
并行計(jì)算基礎(chǔ)知識(shí)講座2_第2頁(yè)
第2頁(yè) / 共72頁(yè)
并行計(jì)算基礎(chǔ)知識(shí)講座2_第3頁(yè)
第3頁(yè) / 共72頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《并行計(jì)算基礎(chǔ)知識(shí)講座2》由會(huì)員分享,可在線閱讀,更多相關(guān)《并行計(jì)算基礎(chǔ)知識(shí)講座2(72頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、,,,,,,,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,*,*,,基于,MPI,的并行程序設(shè)計(jì),王振海,,西北工業(yè)大學(xué)理學(xué)院,,西北工業(yè)大學(xué)高性能計(jì)算研究與發(fā)展中心,2024/9/18,1,,MPI,并行編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),,主要內(nèi)容,2024/9/18,2,,目前,高性能并行機(jī)主要可以分為對(duì)稱(chēng)多處理共享存儲(chǔ)并行機(jī)(,SMP, Symmetric,MultiProcessor,)、,分布式共享存儲(chǔ)多處

2、理機(jī) (,DSM,,Distributied,Shared Memory)、,大規(guī)模并行處理機(jī)(,MPP, Massively Parallel Processor),和微機(jī)機(jī)群(,Cluster),等四類(lèi)。在這些并行機(jī)上,并行程序設(shè)計(jì)平臺(tái)主要可分為消息傳遞、共享存儲(chǔ)和數(shù)據(jù)并行三類(lèi),其中消息傳遞具有很好的可移植性,它能被所有這些類(lèi)型的并行機(jī)所支持,而共享存儲(chǔ)只能在在,SMP,和,DSM,并行機(jī)中使用,數(shù)據(jù)并行只能在,SMP,DSM,和,MPP,并行機(jī)上使用。,并行編程,環(huán)境簡(jiǎn)介,2024/9/18,3,,消息傳遞并行編程環(huán)境(,MPI:Message Passing Interface),是目

3、前國(guó)際上最流行、可移植性和可擴(kuò)展性很好的并行程序設(shè)計(jì)平臺(tái),并被當(dāng)前流行的所有高性能并行機(jī)所支持。它是在標(biāo)準(zhǔn)串行程序設(shè)計(jì)語(yǔ)言(,C,F(xiàn)ortran,C++),的基礎(chǔ)上,再加入實(shí)現(xiàn)進(jìn)程間通信的,MPI,消息傳遞庫(kù)函數(shù),就構(gòu)成了,MPI,并行程序設(shè)計(jì)所依賴(lài)的并行編程環(huán)境。,,MPI,已經(jīng)在,Windows,系列的非,Unix、Linux,平臺(tái)上實(shí)現(xiàn),其程序設(shè)計(jì)語(yǔ)言支持,C, Fortran,和,Java。,在國(guó)產(chǎn)的三大并行機(jī)系列神威、銀河和曙光上也都實(shí)現(xiàn)了對(duì),MPI,和支持。,MPI,并行編程,環(huán)境,2024/9/18,4,,MPI,并行,環(huán)境的應(yīng)用現(xiàn)狀,,MPI,是全球工業(yè)、政府和科研部門(mén)聯(lián)合推出

4、的適合進(jìn)程間進(jìn)行標(biāo)準(zhǔn)消息傳遞的并行程序設(shè)計(jì)平臺(tái),最初版,MPI 1.0,本于,1994,年,6,月推出,目前最新的為,MPI 2.0,版,于,1998,年10月推出。,,MPI,的,具體實(shí)現(xiàn),:,MPICH,和,LAMMPI,,目前均已實(shí)現(xiàn),MPI 1.2,版,適用于任何并行計(jì)算平臺(tái);部分并行機(jī)已實(shí)現(xiàn),MPI 2.0,版。,,MPI,是目前應(yīng)用最廣的并行程序設(shè)計(jì)平臺(tái),幾乎被所有并行計(jì)算環(huán)境(共享和分布式存儲(chǔ)并行機(jī)、,MPP、,機(jī)群系統(tǒng)等)和流行的多進(jìn)程操作系統(tǒng)(,UNIX、Windows NT),所支持,基于它開(kāi)發(fā)的應(yīng)用程序具有最佳的可移植性。,2024/9/18,5,,MPI,并行,環(huán)境的應(yīng)

5、用現(xiàn)狀(續(xù)),,目前高效率的超大規(guī)模并行計(jì)算(,1000,個(gè)處理器)最可信賴(lài)的平臺(tái)。,,工業(yè)、科學(xué)與工程計(jì)算部門(mén)的大量科研和工程軟件(氣象、石油、地震、空氣動(dòng)力學(xué)、核等)目前已經(jīng)移植到,MPI,平臺(tái),發(fā)揮了重要作用。,,,MPI,的,優(yōu)點(diǎn),:(1)具有很好的可移植性,幾乎被所有的并行環(huán)境支持;(2)具有很好的可擴(kuò)展性,是目前高效率的大規(guī)模并行計(jì)算最可信賴(lài)的平臺(tái);(3)比其它消息傳遞系統(tǒng)好用;(4)有完備的異步通信功能;(5)有精確的定義,從而為并行軟件產(chǎn)業(yè)的發(fā)展提供了必要的條件。,2024/9/18,6,,MPI,并行,環(huán)境的應(yīng)用現(xiàn)狀(續(xù)),,MPI 2.0,版在1.0版的基礎(chǔ)上,增加了如下的

6、消息傳遞功能,:(1)并行,I/O:,允許多個(gè)進(jìn)程同時(shí)讀寫(xiě)同一個(gè)文件;(2)線程安全:允許,MPI,進(jìn)程的多個(gè)線程執(zhí)行,即支持與,OpenMP,的混合并行編程;(3)動(dòng)態(tài)進(jìn)程管理:允許并行應(yīng)用程序在執(zhí)行過(guò)程中,動(dòng)態(tài)地增加和刪除進(jìn)程個(gè)數(shù);(4)單邊通信:允許某個(gè)進(jìn)程對(duì)其它進(jìn)程的局部?jī)?nèi)存單元直接執(zhí)行讀寫(xiě)訪問(wèn),而步需要對(duì)方進(jìn)程的顯式干預(yù);(5)并行應(yīng)用程序之間,的動(dòng)態(tài)互操作:允許各個(gè),MPI,并行應(yīng)用程序之間動(dòng)態(tài)地建立和刪除消息傳遞通道。,,目前,各類(lèi)并行機(jī),特別式微機(jī)機(jī)群,只實(shí)現(xiàn)了,MPI 2.0,的部分功能。本中心機(jī)群所支持的為,MPI 1.2.5,版本。,2024/9/18,7,,MPI,并行

7、編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),2024/9/18,8,,單個(gè)進(jìn)程(,process,),進(jìn)程,是一個(gè)程序,同時(shí)包含它的執(zhí)行環(huán)境(內(nèi)存、寄存器、程序計(jì)數(shù)器等),是操作系統(tǒng)中獨(dú)立存在的可執(zhí)行的基本程序單位。,,通俗理解:串行應(yīng)用程序編譯形成的可執(zhí)行代碼,分為“指令”和“數(shù)據(jù)”兩個(gè)部分,并在程序執(zhí)行時(shí)“獨(dú)立地申請(qǐng)和占有”內(nèi)存空間,且所有計(jì)算均局限于該內(nèi)存空間。,進(jìn)程,1,,內(nèi)存,,進(jìn)程,2,,2024/9/18,9,,單機(jī)內(nèi)多個(gè)進(jìn)程,,多個(gè)進(jìn)程可以,同時(shí)存在于單機(jī)內(nèi)同一

8、操作系統(tǒng),:,由操作系統(tǒng)負(fù)責(zé)調(diào)度分時(shí)共享處理機(jī)資源(,CPU,、,內(nèi)存、存儲(chǔ)、外設(shè)等)。,,進(jìn)程間相互獨(dú)立,(,內(nèi)存空間不相交),:,在操作系統(tǒng)調(diào)度下各自獨(dú)立地運(yùn)行,例如多個(gè)串行應(yīng)用程序在同一臺(tái)計(jì)算機(jī)中運(yùn)行,。,,進(jìn)程間可以相互交換信息,:例如數(shù)據(jù)交換、同步等待,,消息,是這些交換信息的基本單位,,消息傳遞,是指這些信息在進(jìn)程間的相互交換,是實(shí)現(xiàn)進(jìn)程間通信的唯一方式,。,2024/9/18,10,,最基本的消息傳遞操作,:發(fā)送消息(,send,)、,接受消息(,receive,)、,進(jìn)程同步(,barrier,)、,規(guī)約(,reduction,),。,,消息傳遞的實(shí)現(xiàn),:共享內(nèi)存或信號(hào)量,用戶(hù)

9、不必關(guān)心,。,單機(jī)內(nèi)多個(gè)進(jìn)程(續(xù)),2024/9/18,11,,包含于通過(guò)網(wǎng)絡(luò)聯(lián)接的不同計(jì)算機(jī)的多個(gè)進(jìn)程,,進(jìn)程獨(dú)立存在,:進(jìn)程位于不同的計(jì)算機(jī),由各自獨(dú)立的操作系統(tǒng)調(diào)度,享有獨(dú)立的,CPU,和內(nèi)存資源。,,進(jìn)程間相互信息交換,:消息傳遞,。,,消息傳遞的實(shí)現(xiàn),:基于網(wǎng)絡(luò),socket,機(jī)制,,,用戶(hù)不必關(guān)心。,2024/9/18,12,,消息傳遞庫(kù)函數(shù),,應(yīng)用程序接口,(,API):,提供給應(yīng)用程序(,FORTRAN、C、C++,語(yǔ)言)的可直接調(diào)用的完成進(jìn)程間消息傳遞的某項(xiàng)特定功能的函數(shù)。,,消息傳遞庫(kù),:,所有定義的消息傳遞函數(shù)編譯形成的軟件庫(kù),調(diào)用其內(nèi)部函數(shù)的應(yīng)用程序,通過(guò)與之聯(lián)接,即可

10、成為可并行執(zhí)行的程序。,,目前流行的消息傳遞函數(shù)庫(kù),:,PVM 3.3.11、,MPICH 1.2,、LAMMPI 6.4,等。,2024/9/18,13,,標(biāo)準(zhǔn)消息傳遞界面,MPI,MPI,標(biāo)準(zhǔn),:根據(jù)應(yīng)用程序?qū)ο鬟f功能的需求,全球工業(yè)、應(yīng)用和研究部門(mén)聯(lián)合推出標(biāo)準(zhǔn)的消息傳遞界面函數(shù),不考慮其具體實(shí)現(xiàn),以保證并行應(yīng)用程序的可移植性,。,,MPI,的具體實(shí)現(xiàn),:消息傳遞庫(kù)函數(shù),目前有影響的為,MPICH,和,LAMMPI,,,我們注重,MPICH,系列,。,2024/9/18,14,,基于消息傳遞的并行程序執(zhí)行模式,,SPMD,模式:?jiǎn)纬绦蚨鄶?shù)據(jù)流,2024/9/18,15,,基于消息傳遞的

11、并行程序執(zhí)行模式(續(xù)),,MPM,模式,:多程序多數(shù)據(jù)流,除初始啟動(dòng)多個(gè)可執(zhí)行代碼,其余與,SPMD,模式一致。,2024/9/18,16,,共享存儲(chǔ)與分布式存儲(chǔ),,屬于并行機(jī)體系結(jié)構(gòu)的范疇,與消息傳遞并行程序設(shè)計(jì)平臺(tái)無(wú)關(guān),。,2024/9/18,17,,消息傳遞是相對(duì)于,進(jìn)程間通信方式,而言的,與具體并行機(jī)存儲(chǔ)模式無(wú)關(guān),任何支持進(jìn)程間通信的并行機(jī),均可支持消息傳遞并行程序設(shè)計(jì),。,,幾乎所有共享和分布存儲(chǔ)并行計(jì)算環(huán)境均支持進(jìn)程間的消息傳遞通信,。,共享存儲(chǔ)與分布式存儲(chǔ)(續(xù)),,2024/9/18,18,,MPI,并行編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI

12、,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),2024/9/18,19,,MPI,并行程序設(shè)計(jì)平臺(tái)由,標(biāo)準(zhǔn)消息傳遞函數(shù)及相關(guān)輔助函數(shù),構(gòu)成,多個(gè)進(jìn)程通過(guò)調(diào)用這些函數(shù)(類(lèi)似調(diào)用子程序),進(jìn)行通信。,,SPMD,執(zhí)行模式,:一個(gè)程序同時(shí)啟動(dòng)多份,形成多個(gè)獨(dú)立的進(jìn)程,在不同的處理機(jī)上運(yùn)行,擁有獨(dú)立的內(nèi)存空間,進(jìn)程間通信通過(guò)調(diào)用,MPI,函數(shù)來(lái)實(shí)現(xiàn)。,,每個(gè)進(jìn)程開(kāi)始執(zhí)行時(shí),將獲得一個(gè)唯一的序號(hào)(,rank)。,例如啟動(dòng),P,個(gè)進(jìn)程,序號(hào)依次為0,1,…,,P-1。,MPI,并行程序,2024/9/18,20,,MPI,并行程序,例,1,進(jìn)程0發(fā)送一個(gè)整數(shù)給進(jìn)程1

13、;進(jìn)程1將該數(shù)加1,傳遞給進(jìn)程2;進(jìn)程2再將該數(shù)加1,再傳遞給進(jìn)程3;依次類(lèi)推,最后,進(jìn)程,P-1,將該數(shù)傳遞給進(jìn)程0,由進(jìn)程0負(fù)責(zé)廣播該數(shù)給所有進(jìn)程,并打印輸出。,program example1,,include “,mpif,.h” !! MPI,系統(tǒng)頭文件,,,integer status(MPI_STATUS_SIZE), my_rank,p,,integer source,,dest,,tag,,ierr,,data,,c,2024/9/18,21,,MPI,并行程序,例,1(續(xù)),c-------,進(jìn)入,MPI,系統(tǒng),,,call MPI_Init(,ierr

14、,),,call MPI_,Comm,_rank(MPI_COMM_WORLD,my_rank,,ierr,),,call MPI_,Comm,_size(MPI_COMM_WORLD,p,,ierr,),,c-------,數(shù)據(jù)交換,,,data=0,,tag = 5,,source= my_rank-1,,if(source.,eq,.-1) source=p-1,,,dest,=my_rank+1,,if(,dest,.,eq,.p),dest,=0,2024/9/18,22,,,if(my_rank.,eq,.0) then,,call MPI_Send(data,1,MPI_IN

15、TEGER,,dest,,tag,MPI_COMM_WORLD,,ierr,),,call MPI_,Recv,(data,1,MPI_INTEGER,source,tag,MPI_COMM_WORLD,status,,ierr,),,else,,call MPI_,Recv,(data,1,MPI_INTEGER,source,tag,MPI_COMM_WORLD,status,,ierr,),,data=data+1,,call MPI_Send(data,1,MPI_INTEGER,,dest,,tag,MPI_COMM_WORLD,,ierr,),,,endif,,c,,MPI,并行程

16、序,例,1(續(xù)),2024/9/18,23,,c-------,廣播數(shù)據(jù),,,call MPI_,Bcast,(data,1,MPI_INTEGER,0,MPI_COMM_WORLD,,ierr,),,c------,打印輸出,,,if(my_rank.,eq,.0) then,,if(data.,eq,.p-1) then,,print *,”Successful, data=”,data,,else,,print *,”Failure, data=”,data,,,endif,,endif,,c,,call MPI_Finalize(,ierr,),,end,MPI,并行程序,例,1(續(xù))

17、,2024/9/18,24,,MPI,并行程序的運(yùn)行,MPI,編譯命令,:,mpif77 -o exam.e example.f,,運(yùn)行命令,:,mpirun,–,np,4 exam.e,,運(yùn)行效果,:,MPI,系統(tǒng)選擇相同或不同的4個(gè)處理機(jī),在每個(gè)處理機(jī)上運(yùn)行程序代碼,exam.e。,,運(yùn)行結(jié)果,:,Successful, data=3,,2024/9/18,25,,運(yùn)行分析,2024/9/18,26,,MPI,重要概念,進(jìn)程序號(hào),(,rank),:,各進(jìn)程通過(guò)函數(shù),MPI_,Comm,_rank(),獲取各自的序號(hào)。,,消息號(hào),:,消息的標(biāo)號(hào)。,,通信器,(,Communicato

18、r),:,1),理解為一類(lèi)進(jìn)程的集合,且在該集合內(nèi),進(jìn)程間可以相互通信;類(lèi)比:郵局、電話局、國(guó)際網(wǎng);,2),任何,MPI,通信函數(shù)均必須在某個(gè)通信器內(nèi)發(fā)生;,3),MPI,系統(tǒng)提供省缺的通信器,MPI_COMM_WORLD,,,所有啟動(dòng)的,MPI,進(jìn)程通過(guò)調(diào)用函數(shù),MPI_Init(),包含在該通信器內(nèi);,4),各進(jìn)程通過(guò)函數(shù),MPI_,Comm,_size(),獲取通信器包含的,(,初始啟動(dòng),),的,MPI,進(jìn)程個(gè)數(shù)。,2024/9/18,27,,消息,:,分為,數(shù)據(jù)(,data,),和,包裝(,envelope,),兩個(gè)部分,其中,包裝由,接收進(jìn)程序號(hào),、,發(fā)送進(jìn)程序號(hào),、,消息標(biāo)號(hào),和,

19、通信器,四部分組成,數(shù)據(jù)包含用戶(hù)將要傳遞的內(nèi)容,。,,進(jìn)程組,:,一類(lèi)進(jìn)程的集合,在它的基礎(chǔ)上,可以定義新的通信器。,,基本數(shù)據(jù)類(lèi)型,:,對(duì)應(yīng)于,FORTRAN,和,C,語(yǔ)言的內(nèi)部數(shù)據(jù)類(lèi)型(,INTEGER,REAL,DOUBLE PRECISION,COMPLEX,LOGICAL,CHARACTER),MPI,系統(tǒng)提供已定義好的對(duì)應(yīng)數(shù)據(jù)類(lèi)型(,MPI_INTEGER,MPI_REAL,MPI_DOUBLE_PRECISION,MPI_COMPLEX,MPI_LOGICAL,MPI_CHARACTER),。,MPI,重要概念(續(xù)),2024/9/18,28,,MPI,重要概念(續(xù)),自定義數(shù)據(jù)

20、類(lèi)型,:,基于基本數(shù)據(jù)類(lèi)型,用戶(hù)自己定義的數(shù)據(jù)類(lèi)型(后面介紹),。,,MPI,對(duì)象,:,MPI,系統(tǒng)內(nèi)部定義的數(shù)據(jù)結(jié)構(gòu),包括數(shù)據(jù)類(lèi)型、進(jìn)程組、通信器等,它們對(duì)用戶(hù)不透明,在,FORTRAN,語(yǔ)言中,所有,MPI,對(duì)象均必須說(shuō)明為“整型變量,INTEGER”,。,,MPI,聯(lián)接器(,handle,),:,聯(lián)接,MPI,對(duì)象和用戶(hù)的橋梁,用戶(hù)可以通過(guò)它訪問(wèn)和參與相應(yīng),MPI,對(duì)象的具體操作;例如,,MPI,系統(tǒng)內(nèi)部提供的通信器,MPI_COMM_WORLD;,在,FORTRAN,語(yǔ)言中,所有,MPI,聯(lián)接器均必須說(shuō)明為“,整型變量,INTEGER,”,。,2024/9/18,29,,MPI,重要概

21、念(續(xù)),進(jìn)程拓?fù)浣Y(jié)構(gòu),:,進(jìn)程組內(nèi)部進(jìn)程之間的一種相互連接結(jié)構(gòu),如,3,?,3,網(wǎng)格,將在后面介紹,。,,,,,3×3,網(wǎng)格拓?fù)浣Y(jié)構(gòu),,靜態(tài)進(jìn)程個(gè)數(shù),:,進(jìn)程數(shù)由命令“,mpirun,–,np xxx,”,初始確定為,xxx,個(gè),程序執(zhí)行過(guò)程中,不能動(dòng)態(tài)改變,進(jìn)程的個(gè)數(shù) 。,2024/9/18,30,,MPI,重要概念(續(xù)),消息緩存區(qū),:,應(yīng)用程序產(chǎn)生的消息包含的數(shù)據(jù)所處的內(nèi)存空間,。,,標(biāo)準(zhǔn)輸入,:所有進(jìn)程的標(biāo)準(zhǔn)輸入,read(*,*),均省缺為當(dāng)前終端屏幕,且只能由0號(hào)進(jìn)程執(zhí)行該操作,其他進(jìn)程需要這些輸入?yún)?shù),只能由0號(hào)進(jìn)程執(zhí)行數(shù)據(jù)廣播操作。,,標(biāo)準(zhǔn)輸出,:,所有進(jìn)程可以獨(dú)立執(zhí)行標(biāo)準(zhǔn)

22、輸出,write(*,*),,但其省缺為當(dāng)前終端屏幕。,2024/9/18,31,,MPI,函數(shù)格式,FORTAN,語(yǔ)言中,最后一個(gè)參數(shù)為該函數(shù)調(diào)用是否成功的標(biāo)志:0表示成功,其它表示各種可能的錯(cuò)誤。,,C,語(yǔ)言中,該標(biāo)志有函數(shù)參數(shù)返回。,,C :,ierr,=MPI_,Comm,_rank(,myrank,),,F : MPI_,Comm,_rank(,myrank,,,ierr,),2024/9/18,32,,MPI,函數(shù)的使用查詢(xún),,由函數(shù)名查詢(xún):,man,,函數(shù)名 (,MPI_,Xxxx,),,注意大小寫(xiě),例如,,man MPI_,Comm,_rank,,man MPI

23、_Send,,man MPI_,recv,2024/9/18,33,,MPI,函數(shù)的學(xué)習(xí)與使用,,注重,MPI,函數(shù)的各類(lèi)功能,由應(yīng)用程序的通信需求出發(fā),尋找匹配的函數(shù)類(lèi)型,在查找具體函數(shù)名,采用,man,命令可以查詢(xún)?cè)摵瘮?shù)的具體參數(shù)含義和使用方法。,2024/9/18,34,,一般的,MPI,程序設(shè)計(jì)流程圖,程序參數(shù)說(shuō)明,Call MPI_Init ( ),進(jìn)入,MPI,系統(tǒng),通信器,MPI_COMM_WORLD,形成,,Call MPI_,Comm,_rank ( ),,Call MPI_,Comm,_size ( ),建立新的通信器、定義新的數(shù)據(jù)類(lèi)型和進(jìn)程拓?fù)浣Y(jié)構(gòu),2024/9/18,

24、35,,一般的,MPI,程序設(shè)計(jì)流程圖(續(xù)),應(yīng)用程序?qū)嶓w:,,.計(jì)算控制程序體;,,.進(jìn)程間通信;,Call MPI_Finalize ( ),End,退出,MPI,系統(tǒng),,2024/9/18,36,,MPI,并行編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),2024/9/18,37,,點(diǎn)對(duì)點(diǎn)通信(,point-to-point),定義,:給定屬于同一通信器內(nèi)的兩個(gè)進(jìn)程,其中一個(gè)發(fā)送消息,一個(gè)接收消息,。,,MPI,系統(tǒng)定義的所有通信方式均建立在點(diǎn)對(duì)點(diǎn)通信之上。,,四種模式,:

25、,標(biāo)準(zhǔn)模式,、緩存區(qū)模式、同步模式、就緒模式。,2024/9/18,38,,標(biāo)準(zhǔn)模式點(diǎn)對(duì)點(diǎn)通信,進(jìn)程可以隨意地發(fā)送(接收)消息,與是否存在匹配的消息接收(發(fā)送)進(jìn)程無(wú)關(guān)。,,發(fā)收匹配:,,發(fā)收不匹配:,,進(jìn)程0,進(jìn)程1,進(jìn)程0,進(jìn)程1,進(jìn)程2,2024/9/18,39,,標(biāo)準(zhǔn)模式點(diǎn)對(duì)點(diǎn)通信,的分類(lèi),阻塞式,:消息發(fā)送函數(shù)返回,用戶(hù)可以對(duì)消息緩存區(qū)進(jìn)行處理,不會(huì)影響已發(fā)送的消息數(shù)據(jù);接收函數(shù)返回,用戶(hù)可以使用接收到的消息數(shù)據(jù),。,,非阻塞式,:發(fā)送和接受函數(shù)返回后,必須調(diào)用另一類(lèi)函數(shù)來(lái)確保它們的正確完成。,2024/9/18,40,,標(biāo)準(zhǔn)模式點(diǎn)對(duì)點(diǎn)通信,的分類(lèi)舉例,2024/9/18,41,,點(diǎn)

26、對(duì)點(diǎn)通信函數(shù)舉例,阻塞式標(biāo)準(zhǔn)消息發(fā)送函數(shù),,MPI_Send(,buf,,count,,datatype,,,dest,,tag,,comm,,,ierr,),,Real*8(integer,…),buf,:,消息發(fā)送緩存區(qū)起始地址,,(,Fortran,,用戶(hù)的待發(fā)送的第一個(gè)數(shù)據(jù)),,integer count :,buf,起始的數(shù)據(jù)單元個(gè)數(shù),,integer,datatype,:,數(shù)據(jù)類(lèi)型(基本或用戶(hù)定義的),,integer,dest,:,接收進(jìn)程序號(hào),,integer tag :,消息的標(biāo)號(hào),,integer,comm,:,通信器,,integer,i

27、err,:,函數(shù)調(diào)用返回錯(cuò)誤碼,2024/9/18,42,,,real *8 a(100,100),,integer b(60,60),,c-----,發(fā)送50個(gè)雙精度數(shù)“,a(5,20) : a(54,20)”,到2號(hào)進(jìn)程,,call MPI_Send( a (5,20),50,MPI_DOUBLE_PRECISION,2,,,& 99999,MPI_COMM_WORLD,,ierr,),,c-----,發(fā)送20個(gè)整型數(shù)“,b(20,40) : b(39,40)”,到5號(hào)進(jìn)程,,call MPI_Send( b (20,40),20,MPI_DOUBLE_PRECI

28、SION,5,,,& 99999,MPI_COMM_WORLD,,ierr,),阻塞式標(biāo)準(zhǔn)消息發(fā)送函數(shù)舉例,2024/9/18,43,,MPI_,Recv,(,buf,,count,,datatype,,,dest,,tag,,comm,,status,,ierr,),,Real*8(integer,…),buf,:,消息接收緩存區(qū)起始地址,,(,Fortran,,用戶(hù)用于接受的第一個(gè)數(shù)據(jù)),,,integer count :,buf,起始的數(shù)據(jù)單元個(gè)數(shù),,,integer,datatype,:,數(shù)據(jù)類(lèi)型(基本或用戶(hù)定義的),,,integer,dest,:

29、,發(fā)送進(jìn)程序號(hào),,,integer tag :,消息的標(biāo)號(hào),,,integer,comm,:,通信器,,,integer status(MPI_STATUS_SIZE) :,接收狀態(tài)數(shù)組;,,,integer,ierr,:,函數(shù)調(diào)用返回錯(cuò)誤碼,阻塞式標(biāo)準(zhǔn)消息接收函數(shù),,2024/9/18,44,,阻塞式標(biāo)準(zhǔn)消息接收函數(shù)舉例,,real *8 a(100,100),,integer b(60,60),,c-----,從2號(hào)進(jìn)程接收50個(gè)雙精度數(shù)到“,a(5,20) : a(54,20)”,,call MPI_,Recv,( a (5,20),50,MPI_DOUBLE_

30、PRECISION,2,,,& 99999,MPI_COMM_WORLD,status,,ierr,),,c-----,從5號(hào)進(jìn)程接收20個(gè)整型數(shù)到“,b(20,40) : b(39,40)”,,call MPI_,Recv,( b (20,40),20,MPI_DOUBLE_PRECISION,5,,,& 99999,MPI_COMM_WORLD,status,,ierr,),其他點(diǎn)對(duì)點(diǎn)通信函數(shù):參考手冊(cè)。,2024/9/18,45,,聚合通信(,Collective Communication),定義,:屬于同一通信器的所有,MPI,進(jìn)程均必須參

31、與的通信操作,。,,參與方式,:調(diào)用同一聚合通信函數(shù)。,,函數(shù)類(lèi)型,:,,同步通信函數(shù),:,所有進(jìn)程在某個(gè)程序點(diǎn)上同步。,,,,MPI_Barrier (,comm,,,ierr,),,全局通信函數(shù),,全局規(guī)約函數(shù),,,2024/9/18,46,,全局通信函數(shù),廣播,:,MPI_,Bcast,(,buf,,count,,dtype,,,root,,,comm,,,ierr,),,root,發(fā)送,,other,接收,,收集,:,MPI_Gather(,bufs,,,bufr,,count,,dtype,,root,,comm,,,ierr,),,all,發(fā)送大小一致的數(shù)據(jù)塊,,root,接收并按

32、序號(hào)連續(xù)存放,,全收集:,MPI_,Allgather,(),,all,發(fā)送,,all,接收,2024/9/18,47,,全局通信函數(shù)(續(xù)),索引收集,:,MPI_,Gatherv,(),,all,發(fā)送大小不等的數(shù)據(jù)塊,,root,接收并按索引間斷存放,,索引全收集,:,MPI_,Allgatherv,(),,all,發(fā)送大小不等的數(shù)據(jù)塊,,all,接收并按索引間斷存放,2024/9/18,48,,全局通信函數(shù)(續(xù)),分散,:,MPI_Scatter(,bufs,,,bufr,,count,,dtype,,root,,comm,,,ierr,),,root,發(fā)送連續(xù)的大小一致的數(shù)據(jù)塊,,all

33、,接收,,索引分散,:,MPI_,Scatterv,(),,root,發(fā)送間斷的的大小不一致的數(shù)據(jù)塊,,all,接收,,全交換,:,MPI_,Scatterv,(),,all,發(fā)送大小一致數(shù)據(jù)塊到各進(jìn)程,,all,接收大小一致數(shù)據(jù)塊并按序號(hào)連續(xù)存放,2024/9/18,49,,全局規(guī)約,(,global reduction),函數(shù),規(guī)約,:,MPI_Reduce(,sbuf,,,rbuf,,count,,dtype,,,op,,,root,,,comm,,,ierr,),,規(guī)約操作類(lèi)型,op,: MPI_SUM, MPI_MIN, MPI_MAX,,,MPI_PROD,等12種。,,全規(guī)約,

34、:,MPI_,Allreduce,(),,除要求將結(jié)果返回到所有進(jìn)程外,與,MPI_Reduce(),一致,,規(guī)約分散,:,MPI_Reduce_scatter(),,將規(guī)約結(jié)果分散到各進(jìn)程。,,,并行前綴計(jì)算,:,MPI_Scan(),2024/9/18,50,,MPI,并行編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),2024/9/18,51,,自定義數(shù)據(jù)類(lèi)型,定義,:,在,MPI,系統(tǒng)已定義的基本數(shù)據(jù)類(lèi)型(,MPI_INTEGER,MPI_REAL,MPI_DOUBLE_P

35、RECISION,MPI_CHARACTER,等)基礎(chǔ)上,用戶(hù)根據(jù)需求,自己定義的數(shù)據(jù)類(lèi)型,。,,在用戶(hù)已定義好的數(shù)據(jù)類(lèi)型基礎(chǔ)上,還可以進(jìn)一步定義新的數(shù)據(jù)類(lèi)型。,,用戶(hù)定義的數(shù)據(jù)類(lèi)型,必須由函數(shù),MPI_Type_Commit(),提交給,MPI,系統(tǒng);此后,就可以象基本數(shù)據(jù)類(lèi)型一樣,在消息傳遞函數(shù)中重復(fù)使用;并由函數(shù),MPI_Type_free(),釋放。,,具體自定義數(shù)據(jù)類(lèi)型函數(shù),請(qǐng)參考手冊(cè)。,2024/9/18,52,,自定義數(shù)據(jù)類(lèi)型(續(xù)),,real a(1000),,,發(fā)送:,a(5:9),,,call MPI_Send(a(5), 5, MPI_ REAL,…..)

36、 OK,,發(fā)送:,a(5),a(7),a(9),a(11),a(13),a(15),,do i=5, 15, 2,,call MPI_Send(a(i),1,MPI_REAL,….) OK,,,enddo,,缺點(diǎn),: 多次發(fā)送,效率低,程序設(shè)計(jì)繁瑣,,改進(jìn),:用戶(hù)定義新的數(shù)據(jù)類(lèi)型,,call MPI_Type_vector(5,1,2,MPI_REAL,,newtype,,,ierr,),,call MPI_Type_commit(,newtype,,,ierr,),提交,,call MPI_Send(a(5), 1,,newtype,,….),,call

37、 MPI_Type_free(,newtype,,,ierr,),釋放,2024/9/18,53,,進(jìn)程拓?fù)浣Y(jié)構(gòu),,定義,:根據(jù)應(yīng)用程序的特征,在進(jìn)程間建立的一種虛擬拓?fù)溥B接方式,以方便并行程序設(shè)計(jì)和提高并行計(jì)算性能。,,例,:二維規(guī)則區(qū)域,3*3 區(qū)域分解,9個(gè)進(jìn)程,建立,Cartesion,坐標(biāo),進(jìn)程(,i,j),的相鄰進(jìn)程為(,i-1,j), (i+1,j), (i,j-1), (i,j+1)。,2024/9/18,54,,并行,I/O,各進(jìn)程可以類(lèi)似于串行程序獨(dú)立地讀,/,寫(xiě),不同,的文件,。,,MPICH 1.2,以上版本支持所有進(jìn)程并行讀寫(xiě)同一個(gè)文件,。,2024/9/18,55,

38、,MPI,并行編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),2024/9/18,56,,MPI,并行程序,例,2,矩陣乘積,:,A,為,M×N,階矩陣,,B,為,N×L,階矩陣,,C,為,M×L,階矩陣。計(jì)算矩陣乘積,C=AB。,,算法描述,:假設(shè)使用,nprocs,個(gè),MPI,進(jìn)程,為簡(jiǎn)單起見(jiàn)假定,M,和,L,均為,nprocs,的倍數(shù)。,A,和,C,按行等分成子塊分別存儲(chǔ)在不同的進(jìn)程中,而,B,則按列等分成子塊分別存儲(chǔ)在不同的進(jìn)程中。,A,B,和,C,的子塊大小分別為,mlo

39、c,×N,N×,lloc,和,mloc,×L,,其中,mloc,=M/,nprocs,,,lloc,=L/,nprocs,。,具體存儲(chǔ)方式為(,k=0,…,,nprocs,-1):,,,存儲(chǔ)在進(jìn)程,k,的數(shù)組,A,中,,存儲(chǔ)在進(jìn)程,k,的數(shù)組,B,中,,存儲(chǔ)在進(jìn)程,k,的數(shù)組,C,中,2024/9/18,57,,MPI,并行程序,例,2(續(xù)),算法,:矩陣,A,和,C,的子塊不動(dòng),矩陣,B,的子塊在各個(gè)進(jìn)程間循環(huán)移動(dòng)。如圖,是當(dāng),nprocs,=3,時(shí)的計(jì)算流程示意圖。,A0,A1,A2,×,B0,B1,B2,=,A0×B0 A0×B1 A0×B2,C0,A1×B0 A1×B1 A1×B2,C

40、1,A2×B0 A2×B1 A2×B2,C2,A0,,B0,,B2,,B1,A1,,B1,,B0,,B2,A2,,B2,,B1,,B0,進(jìn)程1,進(jìn)程2,進(jìn)程3,2024/9/18,58,,MPI,并行程序,例,2(續(xù)),MPI,并行程序,:主程序負(fù)責(zé)分配存儲(chǔ)單元并生成矩陣,A,和,B,的子塊,然后調(diào)用子程序,matmul,完成矩陣的乘法運(yùn)算。其中,nprocs,為,MPI,進(jìn)程數(shù),,myrank,為當(dāng)前進(jìn)程的,MPI,進(jìn)程號(hào)。數(shù)組,A,B,和,C,分別存儲(chǔ)矩陣,A,B,和,C,的子塊。,work,為工作數(shù)組,大小與數(shù)組,B,一樣。,,乘法子程序使用,MPI_,Sendrecv,_replace

41、。(ex1.f),,使用異步通信函數(shù),MPI_,Isend,/MPI_,Irecv,,,在適當(dāng)?shù)挠布h(huán)境下它可以使得計(jì)算與通信重疊進(jìn)行。(,ex2.f),,調(diào)用,BLAS,庫(kù)函數(shù)完成矩陣子塊的乘積。選用適當(dāng)?shù)?BLAS,庫(kù)可以大幅度提高程序的實(shí)際運(yùn)行性能。注意,編譯該程序時(shí)必須與,BLAS,庫(kù)連接。(,ex3.f),2024/9/18,59,,MPI,并行程序,例3,,一維,Dirichlet,問(wèn)題,:,,,,算法,:均勻網(wǎng)格有限差分離散,,Jacobi,迭代求解。,,區(qū)域分解,:,nproc,=4, n = 21, ns = (n-1)/,nproc,+1 =6,,源程序:1,dpoisso

42、n,.f,2024/9/18,60,,MPI,并行編程,環(huán)境,,進(jìn)程與消息傳遞,,,MPI,并行程序設(shè)計(jì)入門(mén),,初步的,MPI,消息傳遞函數(shù),,先進(jìn)的,MPI,函數(shù),,MPI,并行程序示例,,面向性能的程序設(shè)計(jì),2024/9/18,61,,設(shè)計(jì)高性能并行程序的要點(diǎn)與技術(shù),,劃分階段的性能問(wèn)題,,在多存儲(chǔ)系統(tǒng)中的數(shù)據(jù)訪問(wèn)和通信,,,性能的整合,,,從處理器角度看到的性能因素,,,程序設(shè)計(jì)模型的影響,,2024/9/18,62,,在分解和分配步驟中,我們可以將并行計(jì)算機(jī)系統(tǒng)簡(jiǎn)單地看作是一個(gè)相互合作的處理器集合,不用考慮程序設(shè)計(jì)模型和硬件系統(tǒng)組織。我們只需知道在處理器之間的通信開(kāi)銷(xiāo)是很大的。此時(shí),在

43、算法方面的三個(gè)基本要素是:,,平衡負(fù)載,減少花在等待同步事件上的時(shí)間,,減少通信開(kāi)銷(xiāo),,減少由確定和管理分配所帶來(lái)的附加工作,,不幸的是,即使這三種基本目標(biāo)也是相互沖突的,必須進(jìn)行折衷權(quán)衡。,,劃分階段的性能問(wèn)題,2024/9/18,63,,平衡負(fù)載和減少同步等待時(shí)間的過(guò)程分為四步,在分解中識(shí)別足夠的并發(fā)性(數(shù)據(jù)并行和功能并行);,,決定管理并發(fā)性的方式(,靜態(tài)分配和動(dòng)態(tài)分配的對(duì)比,);,,確定并發(fā)性開(kāi)發(fā)的粒度;,,降低序列化和同步代價(jià)。,,2024/9/18,64,,在多存儲(chǔ)系統(tǒng)中的數(shù)據(jù)訪問(wèn)和通信,多處理器系統(tǒng)也是多存儲(chǔ)器系統(tǒng),多緩存系統(tǒng)。系統(tǒng)這些組成部分的作用對(duì)程序執(zhí)行性能是十分重要的,并

44、且其重要性與程序設(shè)計(jì)模型無(wú)關(guān)(盡管程序設(shè)計(jì)模型可能影響某些性能折衷考慮的特性)。在這里,我們從一種不同的角度來(lái)看多處理器系統(tǒng)。,,多處理器系統(tǒng)看成為擴(kuò)展的存儲(chǔ)層次結(jié)構(gòu),,,在擴(kuò)展的存儲(chǔ)層次中的附加通信,,,用工作集的觀念看人為的通信和數(shù)據(jù)的復(fù)制,2024/9/18,65,,性能的整合,減少人為通信:,開(kāi)發(fā)時(shí)間局部性與空間局部性;,,將通信結(jié)構(gòu)化以降低開(kāi)銷(xiāo):通過(guò)減少通信開(kāi)銷(xiāo)和降低延遲,增加帶寬,減少占有度,提供機(jī)制來(lái)分散沖突,用計(jì)算和通信來(lái)重疊通信 。,2024/9/18,66,,從處理器角度看到的性能因素,,在我們通常的分布存儲(chǔ)并行系統(tǒng)結(jié)構(gòu)上,并行執(zhí)行時(shí)間有五個(gè)分量:,,忙有用,:處理器花在執(zhí)

45、行指令上的時(shí)間,那些指令本來(lái)在串行程序中也是要執(zhí)行的。假設(shè)一個(gè)直接從串行算法中導(dǎo)出的確定性的并行程序,所有處理器的有用忙時(shí)間之和等于串行執(zhí)行的有用忙時(shí)間。,,忙開(kāi)銷(xiāo),:處理器花在執(zhí)行那些在串行程序中不需要的指令上的時(shí)間。這直接對(duì)應(yīng)于并行程序中的額外工作部分。,,數(shù)據(jù)局部,:等待數(shù)據(jù)引用被它自己的存儲(chǔ)系統(tǒng)滿(mǎn)足的時(shí)間;即等待的引用不會(huì)產(chǎn)生和其它節(jié)點(diǎn)的通信,。,,數(shù)據(jù)遠(yuǎn)程,:等待數(shù)據(jù)通信的時(shí)間,無(wú)論是固有通信還是附加通信。這代表處理器看到的通信代價(jià)。,2024/9/18,67,,同步,:等待其它進(jìn)程給出某個(gè)事件發(fā)生的信號(hào),有了該信號(hào),本進(jìn)程才能推進(jìn)。這包括負(fù)載不平衡和程序中的串行化現(xiàn)象,還有實(shí)際花在

46、執(zhí)行同步操作和訪問(wèn)同步變量上的時(shí)間。當(dāng)它等待的時(shí)候,一個(gè)處理器可能重復(fù)檢測(cè)某個(gè)變量的值,直到改變—這就要執(zhí)行指令—或者它停滯等待,這取決于同步的實(shí)現(xiàn)方式。,,,同步、忙開(kāi)銷(xiāo)、遠(yuǎn)程數(shù)據(jù)訪問(wèn)分量是由于并行所引入的開(kāi)銷(xiāo),在串行程序在單處理器上執(zhí)行沒(méi)有。固有通信大多數(shù)包含在遠(yuǎn)程數(shù)據(jù)分量中,它的某些(通常很小)部分可能也在數(shù)據(jù)局部分量中體現(xiàn)出來(lái)。,從處理器角度看到的性能因素(續(xù)),,2024/9/18,68,,程序設(shè)計(jì)模型的影響,經(jīng)驗(yàn)表明,隨著應(yīng)用變得更復(fù)雜和更非規(guī)則,透明命名和復(fù)制的有用性增加,這是傾向于共享存儲(chǔ)的觀點(diǎn)。然而,由于通信自然是細(xì)粒度的(特別是非規(guī)則應(yīng)用),還由于大粒度通信和一致性引起的性

47、能問(wèn)題,支持共享空間就要求有大膽的通信系統(tǒng)結(jié)構(gòu),用硬件來(lái)支持大多數(shù)功能。許多計(jì)算機(jī)公司現(xiàn)在正建造這樣的機(jī)器,作為它們的高端系統(tǒng)。在另一方面,便宜的工作站或者多處理器群也正在逐步流行起來(lái)。這些系統(tǒng)通常是消息傳遞程序設(shè)計(jì)的,這是由于消息傳遞的性能模型比較好定義,可以用大消息來(lái)分?jǐn)傞_(kāi)銷(xiāo),程序員有顯式的控制,以及不同的機(jī)器操作粒度對(duì)性能的相對(duì)影響不大。,2024/9/18,69,,總結(jié)評(píng)述,,我們已經(jīng)看到,性能的方方面面是相互制約的,設(shè)計(jì)好的并行程序的藝術(shù)在于在相互矛盾的要求中獲得適當(dāng)?shù)恼壑浴R愿咝阅転槟繕?biāo)的程序設(shè)計(jì)也是一個(gè)逐步求精的過(guò)程:在后面所發(fā)現(xiàn)的系統(tǒng)或者程序的特點(diǎn),可能導(dǎo)致在前一個(gè)步驟中作的決定被修改。將性能的潛力都發(fā)揮出來(lái)可能需要很大的努力,這取決于應(yīng)用和系統(tǒng)兩個(gè)方面。進(jìn)而,不同技術(shù)一起發(fā)揮作用的程度和方式能夠大大影響表現(xiàn)給系統(tǒng)結(jié)構(gòu)的負(fù)載的特點(diǎn)。,,2024/9/18,70,,問(wèn)題討論,,請(qǐng)聯(lián)系,,王振海、趙俊峰,,Tel:88493550-17 Email:,zhwang,@nwpu.,edu,.,cn,,zhaojf,_77@,2024/9/18,71,,Thanks!,2024/9/18,72,,

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲