美章網(wǎng) 資料文庫 并行排序算法的設計范文

并行排序算法的設計范文

本站小編為你精心準備了并行排序算法的設計參考范文,愿這些范文能點燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。

并行排序算法的設計

《電腦與信息技術雜志》2014年第三期

1并行算法

1.1并行算法分類并行算法的種類非常多,分類標準也均有所不同。按照基礎運算對象進行分類,有數(shù)值和非數(shù)值兩周并行算法。按照并行運算過程中,各進程的執(zhí)行時間進行分類,有同步、異步和獨立三種不同的并行算法。按照進程處理機中,它們各自承擔所要計算任務量進行分類,有大粒度、中粒度和小粒度三種并行算法。

1.2并行算法設計方法并行算法的設計需要參照系統(tǒng)類型以及系統(tǒng)的特征,對某一問題針對性在處理機上進行并行解決。并行算法的設計一般有三種辦法:對已有的串行算法進行檢查,對算法中的并行性進行開發(fā),并加以優(yōu)化;根據(jù)問題本身的特征出發(fā),設計一個完全不同的并行算法;在已有算法的基礎上,根據(jù)問題的特征進行修改,處理類似的問題;第一種設計方法中,如若該串行算法已經(jīng)有內(nèi)在相關順序性,就非常難做并行的優(yōu)化;第二種設計方法中,對現(xiàn)有算法進行修改,則要熟知問題的特殊性;第三種設計方法,憑空創(chuàng)新設計出一個算法,技巧性非常強,不但沒什么章法,而且技術水平達不到。針對并行算法的設計,目前最為普遍的設計方法有平衡樹技術、分治策略技術、流水線技術以及倍增技術等等。

1.3并行算法計算模型并行計算模型是指從所有并行機中,把共性存在的基本特征分離出來,最終形成一個抽象的并行計算處理機,且要在具體并行機至上。它與順序計算中的VonNeumann模型非常相似。根據(jù)普渡報告分析,并行計算模型,必須能夠保證并行計算處理機針對哪種計算,表現(xiàn)出超強的計算能力。并行計算的模型、算法設計以及并行機的相互關系,如圖1所示:并行計算模型在并行算法中,有著至關重要的作用。它作為一種常見物質(zhì)基礎提供給并行算法,進行相關研究;它還可以拿出一個簡單便利的框架結(jié)構(gòu),用于并行算法的設計以及開發(fā)分析;因其適用性較強,看適用在許多種類的并行處理機上,使得新的并行算法充滿生命力。

2并行排序的基本思想

并行排序算法是參照快速排序算法的分治方法,首先在主進程內(nèi),把其宿主機上等待排序的某一數(shù)組分割為n塊,文件的大小決定n的值。然后再把n塊數(shù)據(jù)推送到對應數(shù)量的從進程中,從進程對其已經(jīng)接受的數(shù)據(jù)在宿主機上進行串行排序,最后所有從進程將已排好序的數(shù)據(jù)回傳給主進程,同時數(shù)據(jù)要放回到原數(shù)值的位置上,完成了并行排序。按照此思想進行排序,缺點是不能確定算法的性能。可以借鑒負載均衡的思想,對該算法做出一些改進。從進程接受到數(shù)據(jù)后,不再對數(shù)據(jù)進行劃分,只需要將其分為相同大小的n塊,并將n塊推送到對應的n個從進程中,由從進程來對分到的數(shù)據(jù)進行排序操作,排序完成后將已排序的數(shù)據(jù)傳回給主進程。最后主進程只需要對接收到的n塊排序數(shù)據(jù)進行歸并排序,至此就完成了數(shù)據(jù)的排序工作。

3算法設計

3.1算法基本思想本文并行排序的算法思想是,首先形成部分有序的數(shù)據(jù)庫,然后依次讀入將數(shù)據(jù)順序分成的數(shù)據(jù)塊,快的大小不能超出內(nèi)存的大小。最后再對每一個小塊進行排序,排序的結(jié)果保存到臨時的文件中。

3.2算法設計假設需要排序的數(shù)據(jù)總量為N,分為n個數(shù)據(jù)塊,每個數(shù)據(jù)塊的數(shù)據(jù)量為A,即N=nA,每一塊數(shù)據(jù)塊進行排序的耗費的時間為t(A)。設立三個A的函數(shù),readblock()讀入數(shù)據(jù)塊、sortblock()數(shù)據(jù)塊的排序、writeblock()保存已排序的數(shù)據(jù)塊,分三個步驟完成數(shù)據(jù)排序。排序耗費的總時間t(A)由三個函數(shù)執(zhí)行總時間的決定,分別記作tr(A)、ts(A)、tw(A)。完成所有數(shù)據(jù)排序的時間為:如果只需要某一個進程對數(shù)據(jù)處理的話,即串行執(zhí)行上述三個步驟,如圖2所示:但是因為readblock()、sortblock()、writeblock()三者在排序的時候所占用的系統(tǒng)資源均不相同。若如想要數(shù)據(jù)讀入readblock()和數(shù)據(jù)保存writeblock()二者同時進行的話,就需要把排序前數(shù)據(jù)和已排序的數(shù)據(jù)分布安防在兩個不同的硬盤上,而且還不會爭奪I/0資源。另外,因為這兩個模塊占用的CPU資源特別少,數(shù)據(jù)排序sortblock()也可以并行運行,互不影響。所以說我們通過使用單機進行數(shù)據(jù)的排序,提高了排序算法的效率。合理的并行算法運行時,必須根據(jù)數(shù)據(jù)塊的特性制定。本文上述三個block相互排斥,在并行運算時,必須遵循以下規(guī)則:第M個數(shù)據(jù)塊的readblock()、sortblock()、writeblock()結(jié)束之后,方能開始第M+1個數(shù)據(jù)塊對應的readblock()、sortblock()、writeblock();第M個數(shù)據(jù)塊的readblock()結(jié)束之后方能開始sortblock();第M個數(shù)據(jù)塊的sortblock()結(jié)束之后,方能開始write-block()。總之,要保證三個進程并行運行完成對數(shù)據(jù)的排序工作,如圖3所示:三個進程并行運行可以充分利用系統(tǒng)的CPU、I/0資源,當開始運行后,任一時間都會有readblock()、sortblock()、writeblock()并行運行。這樣保證了進程運行時不存在等待的情況,同時正好是重要路由算法得的最優(yōu)執(zhí)行方案。在調(diào)用三個進程之前,必須要先創(chuàng)建進程,應用進程創(chuàng)建函數(shù)。程序執(zhí)行時順序完成數(shù)據(jù)的讀入、數(shù)據(jù)排序和數(shù)據(jù)的保存。多次測量執(zhí)行時間后,取平均值,以此為依據(jù)啟動三個進程。最終,多進程的并行排序得以實現(xiàn)。

4結(jié)束語

當前數(shù)據(jù)信息量高速增長,信息化建設也逐步推進,人們對數(shù)據(jù)處理速度提出了更高的要求,計算機速度要求也越來越高,也成為許多學者和專家積極研究探索的重要課題。開發(fā)人員也不再需要考慮進程的通信和控制等問題,僅需要編寫正確的編譯指導語句實現(xiàn)數(shù)據(jù)的并行計算。并行計算中的算法設計和負載均衡等核心問題,需要今后進行進一步的研究,從而提高并行處理的效率。

作者:覃賢立單位:云南師范大學信息學院廣西民族師范學院

主站蜘蛛池模板: 中文字幕在线观看2020| 夜夜爱夜夜爽夜夜做夜夜欢| 任你躁欧美一级在线精品| 亚洲五月激情综合图片区| 成年人免费观看| 亚洲成色www久久网站| 色综合91久久精品中文字幕| 在线观看视频中文字幕| 久久天堂AV综合色无码专区| 真实国产乱子伦在线观看| 国产欧美一区二区精品久久久| 丁香六月婷婷综合| 欧美一级片在线看| 免费观看无遮挡www的小视频 | 成人免费观看高清在线毛片| 亚洲欧美7777| 色综合一区二区三区| 国产精品美女一区二区三区| 中文字幕无码精品亚洲资源网 | 欧美爽爽爽爽爽爽视频| 国产一级毛片卡| 5g影院天天爽天天| 把腿抬起来就可以吃到扇贝了| 亚洲欧洲精品国产区| 老子影院午夜精品欧美视频| 国产精品萌白酱在线观看| 中文字幕丰满伦子无码| 欧美一级黄色片在线观看| 公侵犯玩弄漂亮人妻优| 色综合色综合久久综合频道| 好男人手机在线| 久久精品国产四虎| 污污免费在线观看| 四虎成人永久影院| 人人揉人人爽五月天视频| 天天躁夜夜躁天干天干2020| 久久免费公开视频| 欧美无人区码卡二三卡四卡| 免费黄色a级片| 韩国三级hd中文字幕| 国产精品视频久|