• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

            進入多核時代后,必須使用多線程編寫程序才能讓各個CPU核得到利用。在單核時代,通常使用操作系統提供的API來創建線程,然而,在多核系統中,情況發生了很大的變化, 如果仍然使用操作系統API來創建線程會遇到一些問題。具體來說,有以下三個問題:

            1)CPU核數擴展性問題

            多 核編程需要考慮程序性能隨CPU核數的擴展性,即硬件升級到更多核后,能夠不修改程序就讓程序性能增長,這要求程序中創建的線程數量需要隨CPU核數變 化,不能創建固定數量的線程,否則在CPU核數超過線程數量上的機器上運行,將無法完全利用機器性能。雖然通過一定方法可以使用操作系統API創建可變化 數量的線程,但是比較麻煩,不如OpenMP方便。

            2)方便性問題

            在 多核編程時,要求計算均攤到各個CPU核上去,所有的程序都需要并行化執行,對計算的負載均衡有很高要求。這就要求在同一個函數內或同一個循環中,可能也 需要將計算分攤到各個CPU核上,需要創建多個線程。操作系統API創建線程時,需要線程入口函數,很難滿足這個需求,除非將一個函數內的代碼手工拆成多 個線程入口函數,這將大大增加程序員的工作量。使用OpenMP創建線程則不需要入口函數,非常方便,可以將同一函數內的代碼分解成多個線程執行,也可以 將一個for循環分解成多個線程執行。

            3)可移植性問題

            目前各個主流操作系統的線程API互不兼容,缺乏事實上的統一規范,要滿足可移植性得自己寫一些代碼,將各種不同操作系統的api封裝成一套統一的接口。OpenMP是標準規范,所有支持它的編譯器都是執行同一套標準,不存在可移植性問題。

            綜上所述,在多核編程中,使用OpenMP就很有必要,下面列出以前發表在我的CSDN博客中的OpenMP文章,供大家參考。

            1OpenMP并行程序設計(一)

            介紹OpenMP程序在并行計算時的效率,在雙核CPU上效率增加了整整一倍。 閱讀全文

            2OpenMP并行程序設計(二)

            1、fork/join并行執行模式的概念 2、OpenMP指令和庫函數介紹 3、parallel 指令的用法 4、for指令的使用方法 5 sections和section指令的用法。閱讀全文

            3OpenMP中的數據處理子句

            本文主要介紹了OpenMP中的private、firstprivate、lastprivate、threadprivate、reduction、copyin、copyprivate等數據處理子句的用法。 閱讀全文

            4OpenMP中的任務調度

            本文主要介紹了OpenMP中任務調度子句schedule的使用方法。閱讀全文

            5OpenMP創建線程中的鎖及原子操作性能比較

            主 要比較了原子操作,Windows CriticalSection, OpenMP庫帶的鎖在單任務運行情況下和多任務運行情況下的性能情況,在多核CPU上,多任務的鎖競爭花費的時間是單任務時的鎖運行花費時間的18倍。 鎖競爭帶來的效率下降完全出乎意料之外,由此也可見多核編程和單核多線程編程是有很大區別的。 閱讀全文

            6OpenMP程序設計的兩個小技巧

            講述了如何動態設置線程數量以適應硬件和軟件的擴展性,如何將嵌套循環并行化的技巧。 閱讀全文

            上面列出的這些OpenMP知識,屬于初步的入門知識,如果需要進一步深入掌握OpenMP或者了解其實現原理,則需要看更多的參考文獻。下面列出我寫的《多核計算與程序設計》一書的第3章OpenMP程序設計中的參考文獻,供需要深入掌握的人參考。其中的文獻【2】講解了OpenMP的實現原理。

            【1】 Ananth Grama, Anshul Gupta,“并行計算導論”,張武等譯,機械工業出版社,2005.01

            【2】 Barbara Chapman, “How OpenMP is Compiled ”,http://cobweb.ecn.purdue.edu/ParaMount/iwomp2008/documents/chapman-underthehood

            【3】 Bruce McMillin等,“Parallel Algorithm Fundamentals and Analysis”,http://citeseer.ist.psu.edu/mcmillin93parallel.html

            【4】 Common Language Infrastructure (CLI) Partitions I to VI http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.pdf

            【5】 Introduction to OpenMP,A Directive-based API for Parallel Processing on Shared-memory Computers,http://scv.bu.edu/documentation/tutorials/OpenMP/

            【6】 Michael J. Quinn, “MPI與OpenMP并行程序設計”,陳文光等譯,清華大學出版社,2004.10

            【7】 Mitsuhisa Sato, Shigehisa Satoh, Kazuhiro Kusano and Yoshio Tanaka, “Design of OpenMP Compiler for an SMP Cluster”,

            http://www.hpcs.is.tsukuba.ac.jp/~msato/pdplab/papers/ewomp99.pdf

            【8】 MSDN幫助材料

            ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vclang/html/652414c5-78ed-4b7f-8283-1a9fe4c5e78d.htm

            【9】 Omni OpenMP compiler, http://phase.hpcc.jp/omni/home.html.

            【10】 OpenMP2.0規范 http://www.openmp.org/

            【11】 OpenMP2.5規范 http://www.openmp.org/

            【12】 OpenMP: Simple, portable, scalable SMP Programming, http://www.OpenMP.org.

            【13】 Rudolf Eigenmann and Timothy G. mattson. “OpenMP tutorial, part 2: Advanced OpenMP.”, http://www.cise.ufl.edu/research/ParallelPatterns/sc01-omp-tut-advanced.ppt.

            【14】 Ruud van der Pas ,“An Introduction Into OpenMP”,http://www.nic.uoregon.edu/iwomp2005/iwomp2005_tutorial_openmp_rvdp.pdf

            【15】 Sanjiv Shah, Grant Haab, Paul Petersen, & Joe Throop,“Flexible Control Structures for Parallelism in OpenMP”,http://www.it.lth.se/ewomp99/papers/grant.pdf

            【16】 Shameem Akhter等,“多核程序設計技術-通過軟件多線程提升性能”,電子工業出版社,2007.03

            【17】 Special issue on OpenMP and its applications. Scientific Programming, 11(2),2003.

            【18】 Y. Charlie Hu, Honghui Lu, Alan L. Cox, and Willy Zwaenepoel. “OpenMP for networks of SMPs”,In Proceedings of 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing, page 302-310. IEEE Computer Society, 1999.

            多核編程相關文章:

            1)用原子操作解決多線程退出問題

            2)原子操作在多核編程中的使用

            3)多核編程偽共享問題及其對策

            4)多核編程鎖競爭問題及其對策

            5)多核分布式隊列的實現:“偷”與“自私”的運用

            6)多核編程中的條件同步模式

            7)多核編程的四層境界

            8)“老子”是偉大的多核計算科學家

            9)程序員的十層樓(1~3層)

            10)多核編程文章匯總

            11)并行順序搜索及終止檢測

            posted on 2011-03-20 14:44 小果子 閱讀(653) 評論(0)  編輯 收藏 引用
            2019久久久高清456| www亚洲欲色成人久久精品| 合区精品久久久中文字幕一区| 国产成人AV综合久久| 欧美日韩精品久久久免费观看| 伊人久久成人成综合网222| 久久久老熟女一区二区三区| 久久本道伊人久久| 亚洲国产精品无码久久青草| 91精品国产9l久久久久| 亚洲精品97久久中文字幕无码| 久久精品人人做人人爽电影蜜月| 国产精品美女久久久免费| 国产成人久久精品一区二区三区 | 亚洲嫩草影院久久精品| 久久久久99精品成人片三人毛片| 久久久久久国产精品无码下载| 高清免费久久午夜精品| 久久精品国产免费观看三人同眠| 精品久久久久久无码人妻热| 精品久久久久久无码专区| 久久成人小视频| 久久久久久久亚洲精品| 狠狠综合久久综合中文88 | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 99久久精品国产麻豆| 久久精品国产久精国产果冻传媒| 久久夜色精品国产亚洲av| 麻豆精品久久精品色综合| 色综合久久综合中文综合网| 久久婷婷五月综合97色直播| 亚洲欧美日韩精品久久亚洲区| 久久精品国产清自在天天线| 日本精品久久久中文字幕| 精品国产91久久久久久久| 国产精品9999久久久久| 国产精品99久久久久久人| 久久精品99久久香蕉国产色戒| 亚洲欧美成人综合久久久| 久久久久亚洲AV无码永不| 精品国产乱码久久久久久1区2区 |