日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

并行计算部分总结

發(fā)布時(shí)間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 并行计算部分总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1。計(jì)算機(jī)的峰值為主頻x4。
2。計(jì)算機(jī)讀取數(shù)組時(shí),一次會(huì)讀入一行,要最大限度的利用已讀入的數(shù)據(jù),減少頻繁讀寫的次數(shù)。
3。多線程內(nèi)存共享,多進(jìn)程需要消息傳遞來交換變量。
4。利用管道在不同程序之間傳遞內(nèi)容(可以是管道符|或mkfifo mypipe)
5。平均不同節(jié)點(diǎn)的計(jì)算量,盡量做到負(fù)載平衡。
6。數(shù)據(jù)分塊是每塊大小盡可能為cache的1/3。
7。MPI_CHAR 為一個(gè)字符,但不一定是一個(gè)字節(jié)。
8。在MPI_Init()之后再處理命令行參數(shù)。
9。MPI_Recive()出現(xiàn)在MPI_Send()前一定阻塞。
10。讓計(jì)算和通信重疊進(jìn)行,通常先等待receive的完成,然后做計(jì)算,再等待send的完成。
11。采用MPI_Test()檢測(cè)傳輸是否結(jié)束時(shí),需要再調(diào)用MPI_Wait()或MPI_Request_free(),指針釋放后要置為空指針。
12。在分析復(fù)雜問題時(shí),可簡化為有限元分析。
13。分析并行程序要有并行的思想,看多個(gè)并發(fā)的結(jié)果,要考慮不同進(jìn)程的速度對(duì)結(jié)果的影響。
14。盡量避免多個(gè)進(jìn)程同時(shí)讀寫同一個(gè)變量,常用解決辦法是加鎖。
15。對(duì)于危險(xiǎn)區(qū)域(可能涉及到多個(gè)進(jìn)程的變量)要加上個(gè)障礙,然后看看去掉障礙后有什么影響。
16。保證等號(hào)左邊的變量在任何進(jìn)程是唯一的。
17。MPI無全局變量,各個(gè)變量分布在不同節(jié)點(diǎn)上,屬于節(jié)點(diǎn)私有。因此在矩陣存儲(chǔ)后,索引會(huì)發(fā)生變化。
18。ps auwx | grep myc可獲得進(jìn)程號(hào) gdb myc pid(進(jìn)程號(hào))
19。c的程序可打印出進(jìn)程號(hào)以便調(diào)試getpid() or getppid()。
20。在共享內(nèi)存的并行機(jī)中所有的全局變量由不同的處理器共享,要避免對(duì)同一個(gè)變量的同一讀寫,加鎖,柵欄。
21。柵欄能夠使不同的進(jìn)程同步,當(dāng)一個(gè)進(jìn)程到達(dá)柵欄時(shí),它等待所有的相關(guān)進(jìn)程到達(dá)柵欄再繼續(xù)執(zhí)行,避免了不同程序的賽跑比賽。
22。并行程序多為數(shù)據(jù)并行,程序中的循環(huán)是并行的出發(fā)點(diǎn),有時(shí)候循環(huán)中的并行需要通過轉(zhuǎn)換才比較明顯,要有好的任務(wù)調(diào)度。
23。降低進(jìn)程中依賴性的方法:采用局部變量,代碼轉(zhuǎn)換,采用特殊的調(diào)度技術(shù)。
24。數(shù)組間接索引時(shí)不能保證數(shù)組的元素不具有重復(fù)。
25。MPI編程子程序會(huì)被拷貝到每個(gè)處理器上。
26。定義數(shù)據(jù)類型可以使數(shù)據(jù)作為一個(gè)整體進(jìn)行發(fā)送,減少通信開銷。
27。數(shù)據(jù)在內(nèi)存中存放時(shí)按塊進(jìn)行,內(nèi)存線讀取數(shù)據(jù)時(shí)也是讀取一定寬度的數(shù)據(jù)。因此要保證數(shù)據(jù)存放在一個(gè)快中。
28。32位系統(tǒng)double的對(duì)界量是4。
29。定義結(jié)構(gòu)體時(shí),讓長數(shù)據(jù)類型在前,短數(shù)據(jù)類型最好為4的倍數(shù)。
30。MPI_Aint一種數(shù)據(jù)類型,
31。兩個(gè)數(shù)據(jù)等效是指這兩個(gè)數(shù)據(jù)在內(nèi)存中分布相同,上下界一樣。
32。prev = (nprocs + myrank - 1) % nprocs; next = (myrank + 1) % nprocs;(myrank為當(dāng)前進(jìn)程號(hào),nprocs為總進(jìn)程數(shù))
33。并行計(jì)算的效率達(dá)到100%甚至更高時(shí)的原因是減少了數(shù)據(jù)在硬盤個(gè)內(nèi)存中多次讀取,利用并行機(jī)的大內(nèi)存節(jié)省時(shí)間。
34。SMP(shared memory processors)共享內(nèi)存的并行機(jī)上并行的關(guān)鍵是減少同步、負(fù)載平衡。
35。數(shù)據(jù)類型的域表示數(shù)據(jù)被訪問一次之后在內(nèi)存中的偏移量,與數(shù)據(jù)類型的大小沒有直接關(guān)系,可通過MPI_UB的偏移量來設(shè)定域指定數(shù)據(jù)的相對(duì)移動(dòng)。

--------2010。06。08更新--------------

36。MPI_Sendrecv(dst,src)的dst是指本進(jìn)程發(fā)送出去的目的地,src是指本進(jìn)程接收數(shù)據(jù)的源地址。

37。發(fā)送連續(xù)的數(shù)據(jù)類型時(shí),下個(gè)數(shù)據(jù)的起始為緊鄰前一個(gè)數(shù)據(jù)末尾的后一個(gè)元素。
----------------------------------------------------------------
MPI
20。阻塞型函數(shù)需要等待指定操作的實(shí)際完成,或至少涉及的數(shù)據(jù)已被MPI系統(tǒng)安全地備份后才返回。MPI_Send調(diào)用返回時(shí)表明數(shù)據(jù)已被發(fā)出或被MPI系統(tǒng)復(fù)制,隨后對(duì)發(fā)送緩沖區(qū)的修改不會(huì)改變所發(fā)送的數(shù)據(jù)。而MPI_Recv返回時(shí)表明數(shù)據(jù)接收已經(jīng)完成。阻塞型函數(shù)的操作是非局部的,它的完成可能需要與其它進(jìn)程進(jìn)行通信。阻塞型函數(shù)使用不當(dāng)容易引起死鎖。非阻塞型函數(shù)的調(diào)用總是立即返回,而實(shí)際操作則由MPI系統(tǒng)在后臺(tái)進(jìn)行。用戶必須隨后調(diào)用其它函數(shù)來等待或查詢操作的完成情況。在操作完成前對(duì)相關(guān)數(shù)據(jù)區(qū)的操作是不安全的,因?yàn)殡S時(shí)可能與正在后臺(tái)進(jìn)行的操作發(fā)生沖突。非阻塞型函數(shù)的調(diào)用是局部的,因?yàn)樗耐瓿刹恍枰c其它進(jìn)程進(jìn)行通信。可以實(shí)現(xiàn)計(jì)算與并行的重疊進(jìn)行。
21。一個(gè)MPI數(shù)據(jù)類型由兩個(gè)n元序列構(gòu)成,n為正整數(shù),第一個(gè)序列包含一組數(shù)據(jù)類型,稱為類型序列Typesig = {type0,type1,……,typen}.第二個(gè)序列包含一組整數(shù)位移,稱為位移序列Typedisp = {disp0,disp1,……,dispn}。位移序列中位移總是以字節(jié)為單位計(jì)算的。類型序列刻劃了數(shù)據(jù)的類型特征,位移序列刻劃了數(shù)據(jù)的位置特征。類型序列和位移序列的元素一一配對(duì)構(gòu)成的序列Typemap = {(type0,disp0),(type1,disp1),……,(typen,dispn)}稱為類型圖。假設(shè)數(shù)據(jù)緩沖區(qū)的起始地址為buff,則由上述類型圖所定義的數(shù)據(jù)類型包含n+1快數(shù)據(jù),第i塊的地址為buff+dispi,類型為typei。
22。位移序列中的位移不必是單調(diào)上升的,表明數(shù)據(jù)類型中的數(shù)據(jù)塊不要求按順序存放。位移也可以是負(fù)的,即數(shù)據(jù)類型中的數(shù)據(jù)可以位于緩沖區(qū)起始地址之前。
23。數(shù)據(jù)類型的大小指該數(shù)據(jù)類型中包含的數(shù)據(jù)長度(字節(jié)數(shù)),它等于類型序列中所有基本數(shù)據(jù)類型的大小之和。數(shù)據(jù)類型的大小就是消息傳遞時(shí)需要發(fā)送或接收的數(shù)據(jù)長度。
24。數(shù)據(jù)類型的下界定義為數(shù)據(jù)的最小位移。數(shù)據(jù)類型的上界定義為數(shù)據(jù)的最大位移加1,再加上個(gè)使得數(shù)據(jù)類型滿足操作系統(tǒng)地址對(duì)界要求的修正量。數(shù)據(jù)類型的域定義為上界與下界之差。
25。一個(gè)數(shù)據(jù)類型的對(duì)界量定義如下:原始數(shù)據(jù)類型的對(duì)界量由編譯系統(tǒng)決定,而復(fù)合數(shù)據(jù)類型的對(duì)界量則定義為它的所有基本數(shù)據(jù)類型的對(duì)界量的最大值。地址對(duì)界要求指一個(gè)數(shù)據(jù)類型在內(nèi)存中的(字節(jié))地址必須是它的對(duì)界量的整數(shù)倍。
26。MPI_Type_vector和MPI_Type_hvector唯一的區(qū)別是前者的stride以oldtype的域?yàn)閱挝?#xff0c;后者以字節(jié)為單位。前者的可移植性更強(qiáng)。
27。以字節(jié)作位移通常是不可移植的,用字節(jié)作位移單位時(shí)使用MPI_Aint,是相對(duì)于緩沖區(qū)的偏移量。
28。MPI_Type_indexed與MPI_Type_vector的區(qū)別在于每個(gè)數(shù)據(jù)塊的長度可以不同,數(shù)據(jù)塊間也可以不等距。
29。MPI_Type_struct與MPI_Type_hindexed的區(qū)別在于各數(shù)據(jù)塊可以由不同的數(shù)據(jù)類型構(gòu)成,處理不同類型時(shí)只能用struct。
30。數(shù)據(jù)類型使用之前要提交,用完要釋放。中間類型可不用提交,同時(shí)一旦創(chuàng)建了下一個(gè)數(shù)據(jù)類型,即可將其依賴類型釋放。
31。相鄰兩個(gè)數(shù)據(jù)塊的位移差為兩個(gè)數(shù)據(jù)塊頭到頭的位移差。
32。MPI_Pack常用于少量的混亂的發(fā)送次數(shù)少的數(shù)據(jù),數(shù)據(jù)在打包、拆包前position都需要初始化為零。
33。經(jīng)過MPI_Pack打包后的數(shù)據(jù)發(fā)送時(shí)MPI_Send中的count為緩沖區(qū)的字節(jié)數(shù)。
34。MPI_Pack_size返回一個(gè)數(shù)據(jù)打包后的大小,可用來計(jì)算所需的緩沖區(qū)的長度。
35。聚合通信函數(shù)要求所有進(jìn)程都調(diào)用。
36。MPI_Gather中recvcount為每個(gè)進(jìn)程收到的數(shù),而不是全體進(jìn)程count求和。
37。MPI_Alltoall相當(dāng)于將數(shù)據(jù)/進(jìn)程進(jìn)行依次轉(zhuǎn)置。假設(shè)一個(gè)二維數(shù)組按行分塊存儲(chǔ)在各個(gè)進(jìn)程中,則調(diào)用該函數(shù)可很容易地將它變成按列分塊存儲(chǔ)在各進(jìn)程中。

總結(jié)

以上是生活随笔為你收集整理的并行计算部分总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。