mpi與openmp并行程序設(shè)計(jì) 如何利用VS的代碼優(yōu)化和openmp并行計(jì)算提高程序運(yùn)行速度?
如何利用VS的代碼優(yōu)化和openmp并行計(jì)算提高程序運(yùn)行速度?代碼優(yōu)化:屬性->配置屬性->C/C->代碼生成:?jiǎn)⒂迷鰪?qiáng)指令集,流處理SIMD擴(kuò)展2(/拱門(mén):SSE2) (/ 拱門(mén):SSE
如何利用VS的代碼優(yōu)化和openmp并行計(jì)算提高程序運(yùn)行速度?
代碼優(yōu)化:
屬性->配置屬性->C/C->代碼生成:?jiǎn)⒂迷鰪?qiáng)指令集,流處理SIMD擴(kuò)展2(/拱門(mén):SSE2) (/ 拱門(mén):SSE2)流處理SIMD擴(kuò)展2(/拱門(mén):SSE2) (/ 拱門(mén):SSE2)為了加速浮點(diǎn)模型,您可以選擇fast(/FP:fast)來(lái)加速浮點(diǎn)數(shù)據(jù)運(yùn)算
屬性->配置屬性->C/C->優(yōu)化:可以選擇速度最大化(/O2)進(jìn)行優(yōu)化。整個(gè)程序的優(yōu)化選擇是(/GL),不能在調(diào)試版本中設(shè)置,但必須在發(fā)布版本中設(shè)置
MPI(MPI是一個(gè)標(biāo)準(zhǔn),有不同的具體實(shí)現(xiàn),如MPICH等)是一個(gè)多主機(jī)聯(lián)網(wǎng)協(xié)作并行計(jì)算的工具。當(dāng)然,它也可以用于單主機(jī)上的多核/多CPU并行計(jì)算,但效率較低。它可以協(xié)調(diào)多臺(tái)主機(jī)之間的并行計(jì)算,因此并行計(jì)算的規(guī)模具有很強(qiáng)的可擴(kuò)展性,它可以在超級(jí)計(jì)算機(jī)上使用,從個(gè)人電腦到世界前十名。缺點(diǎn)是利用進(jìn)程間通信來(lái)協(xié)調(diào)并行計(jì)算,導(dǎo)致并行效率低,內(nèi)存開(kāi)銷(xiāo)大,不直觀,編程麻煩。換言之,OpenMP更適合在一臺(tái)計(jì)算機(jī)的共享內(nèi)存結(jié)構(gòu)上進(jìn)行并行計(jì)算。由于使用線(xiàn)程間共享內(nèi)存來(lái)協(xié)調(diào)并行計(jì)算,因此多核/多CPU結(jié)構(gòu)效率高,內(nèi)存開(kāi)銷(xiāo)低,編程語(yǔ)句簡(jiǎn)單直觀,易于編程實(shí)現(xiàn)編譯器(C,C,F(xiàn)ORTRAN編譯器基本上有內(nèi)置的OpenMP支持)。然而,OpenMP最大的缺點(diǎn)是它只能在單個(gè)主機(jī)上工作,不能用于多個(gè)主機(jī)之間的并行計(jì)算!如果您想使用OpenMP進(jìn)行多主機(jī)聯(lián)網(wǎng)(如在超級(jí)計(jì)算機(jī)上),則必須借助其他工具,如MPI和OpenMP混合編程。或者將多臺(tái)主機(jī)虛擬化到一個(gè)共享內(nèi)存環(huán)境中(英特爾有這樣一個(gè)平臺(tái)),但這并不像混合編程那樣高效。唯一的優(yōu)點(diǎn)是程序員不必學(xué)習(xí)MPI編程。
MPI和OPENMP哪個(gè)簡(jiǎn)單?
OpenMP很簡(jiǎn)單,并且很容易修改現(xiàn)有的大型代碼。基本上,OpenMP只需要在現(xiàn)有程序的基礎(chǔ)上添加并行語(yǔ)句。有時(shí)MPI甚至需要從基本的設(shè)計(jì)思想出發(fā)重寫(xiě)整個(gè)程序,MPI的調(diào)試難度更大,這涉及到局域網(wǎng)通信的不確定性因素。當(dāng)然,OpenMP雖然簡(jiǎn)單,但只能用于單機(jī)多CPU/多核并行,MPI是多主機(jī)超級(jí)計(jì)算機(jī)集群的強(qiáng)大工具,當(dāng)然也很復(fù)雜。
MPI和OPENMP哪個(gè)簡(jiǎn)單?
OpenMP和MPI是兩種并行編程方法。比較如下:OpenMP:線(xiàn)程級(jí)(并行粒度);共享存儲(chǔ);隱式(數(shù)據(jù)分配);可擴(kuò)展性差;MPI:進(jìn)程級(jí);分布式存儲(chǔ);顯式;可擴(kuò)展性好。OpenMP使用共享存儲(chǔ),這意味著它只適用于SMP和DSM機(jī)器,而不適用于集群。MPI適用于各種機(jī)器,但其編程模型復(fù)雜:需要對(duì)應(yīng)用問(wèn)題進(jìn)行分析和劃分,并將問(wèn)題映射到分布式進(jìn)程集;需要解決通信延遲和負(fù)載不平衡兩個(gè)主要問(wèn)題;MPI程序調(diào)試麻煩;MPI程序可靠性差,一個(gè)過(guò)程有問(wèn)題,整個(gè)程序都會(huì)出錯(cuò);第二個(gè)問(wèn)題讓人感覺(jué)很深。每次聽(tīng)我們部門(mén)平行組的匯報(bào),總聽(tīng)到他們?cè)诮鉀Q通信時(shí)延大、負(fù)載不平衡的問(wèn)題。并行算法的質(zhì)量取決于它能否解決這兩個(gè)問(wèn)題。與OpenMP和MPI相比,MapReduce有哪些優(yōu)點(diǎn)?自動(dòng)并行;容錯(cuò);MapReduce的低學(xué)習(xí)閾值。附件:SMP(對(duì)稱(chēng)多處理),共享總線(xiàn)和內(nèi)存,單操作系統(tǒng)映像。它在軟件上是可擴(kuò)展的,但在硬件上不是。DSM(分布式共享內(nèi)存),SMP的擴(kuò)展。物理分布式存儲(chǔ);單一內(nèi)存地址空間;不一致內(nèi)存訪(fǎng)問(wèn);單一操作系統(tǒng)映像。