• <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 - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

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

            1)CPU核數(shù)擴展性問題

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

            2)方便性問題

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

            3)可移植性問題

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

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

            1OpenMP并行程序設計(一)

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

            2OpenMP并行程序設計(二)

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

            3OpenMP中的數(shù)據(jù)處理子句

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

            4OpenMP中的任務調(diào)度

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

            5OpenMP創(chuàng)建線程中的鎖及原子操作性能比較

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

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

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

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

            【1】 Ananth Grama, Anshul Gupta,“并行計算導論”,張武等譯,機械工業(yè)出版社,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規(guī)范 http://www.openmp.org/

            【11】 OpenMP2.5規(guī)范 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等,“多核程序設計技術-通過軟件多線程提升性能”,電子工業(yè)出版社,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)多核分布式隊列的實現(xiàn):“偷”與“自私”的運用

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

            7)多核編程的四層境界

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

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

            10)多核編程文章匯總

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

            posted on 2011-03-20 14:44 小果子 閱讀(658) 評論(0)  編輯 收藏 引用
            2021久久精品国产99国产精品| 国产精品一区二区久久精品涩爱| 国产呻吟久久久久久久92| 久久发布国产伦子伦精品| 99久久久国产精品免费无卡顿| avtt天堂网久久精品| 久久综合九色综合欧美狠狠| 伊人久久大香线蕉影院95| 久久无码精品一区二区三区| 久久国产影院| 国产偷久久久精品专区 | 久久综合狠狠综合久久| 国产综合久久久久| 欧美日韩精品久久久久| 久久精品青青草原伊人| 久久精品免费观看| 久久精品国产日本波多野结衣| 97久久综合精品久久久综合| 精品久久久久久久久久中文字幕| 久久天天躁狠狠躁夜夜不卡| 久久国产精品无码一区二区三区 | 国产激情久久久久影院老熟女免费| 久久久久免费视频| 99精品久久精品| 久久天天躁狠狠躁夜夜avapp| 国产精品日韩深夜福利久久| 亚洲国产欧洲综合997久久| 久久精品国产一区二区三区不卡| 亚洲va中文字幕无码久久| 久久精品亚洲福利| 国产福利电影一区二区三区久久久久成人精品综合 | 7777久久亚洲中文字幕| 久久综合鬼色88久久精品综合自在自线噜噜 | 久久婷婷国产麻豆91天堂| 久久久久亚洲精品日久生情| 伊人色综合久久天天人守人婷| 久久综合久久综合九色| 国产色综合久久无码有码| 久久久精品免费国产四虎| 久久精品aⅴ无码中文字字幕不卡| 亚洲午夜久久久久久久久电影网|