新聞中心

        EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > NIDays2008新技術(shù)新體會(huì)――多核技術(shù)下LabVIEW編程

        NIDays2008新技術(shù)新體會(huì)――多核技術(shù)下LabVIEW編程

        作者: 時(shí)間:2012-06-13 來(lái)源:網(wǎng)絡(luò) 收藏

        于11月18日在上海舉行,課題涉及了很多方面。作為與非網(wǎng)特約工程師,我全程參加了主題演講和專題講座。本文只對(duì)專題二的 編程技巧下的“多核技術(shù)下編程的參考模式”做一些討論。對(duì)這個(gè)問(wèn)題的心得,是我在本屆上最大的收獲之一。

        本文引用地址:http://www.104case.com/article/193744.htm

        現(xiàn)在我們使用的處理器很多已經(jīng)是雙核了,這就意味著我們寫(xiě)應(yīng)用程序的時(shí)候得考慮怎樣充分的使用雙核這個(gè)特性來(lái)優(yōu)化程序,同時(shí),我們也得考慮由雙核所帶來(lái)的搶資源,死鎖等并發(fā)問(wèn)題。但正如任何一位便寫(xiě)過(guò)多線程代碼的開(kāi)發(fā)者告訴我們的那樣,這是編程領(lǐng)域的最艱巨的任務(wù)。

        是門(mén)圖形語(yǔ)言,它是基于數(shù)據(jù)流的多線程的語(yǔ)言,所以編寫(xiě)多線程的程序是一件非常容易的事情,比如圖(1):

        11.jpg

        在這個(gè)程序中,獨(dú)立的任務(wù)是自動(dòng)進(jìn)行并行的運(yùn)行。從表面上看來(lái),它的執(zhí)行過(guò)程是同步的。從cpu的執(zhí)行過(guò)程來(lái)看就不一定完全同步了。當(dāng)cpu只是單核的情況下,cpu在執(zhí)行這段程序的時(shí)候,其實(shí)是分了三個(gè)線程在執(zhí)行的。也就是說(shuō),除非在cpu是3核,或是3個(gè)單核cpu的情況下,這段程序才可以真真的是“完全的”同時(shí)執(zhí)行。

        很多人做的程序遇到過(guò)流水線模式,例如:數(shù)據(jù)采集,分析與記錄。當(dāng)只是單核的時(shí)候,程序如圖(2)所示:

        22.jpg

        但是當(dāng)我們的CPU的core大于4時(shí),我們就可以做成圖(3)的模式了。

        33.jpg

        每個(gè)Step使用的數(shù)據(jù)是由前一個(gè)Step在上一次Loop中生成的。在這個(gè)模式中,我們得注意的有一下幾點(diǎn):

        1)在程序開(kāi)始和結(jié)束時(shí),4各模塊的處理,因?yàn)楫?dāng)?shù)谝淮窝h(huán)的時(shí)候,只有完成了step1 “采集”的工作,而下面的step2,step3,step4由于沒(méi)有數(shù)據(jù)輸入而沒(méi)有執(zhí)行。一直到第四次循環(huán)的時(shí)候,4個(gè)step才同時(shí)開(kāi)始正常執(zhí)行;同理,再結(jié)束循環(huán)的時(shí)候,采集結(jié)束了,可是下面的是step2,step3,step4還沒(méi)有完成相應(yīng)的處理。所以開(kāi)頭結(jié)尾的地方得進(jìn)行特別的處理。

        2)當(dāng)CPU沒(méi)有達(dá)到4核的情況下,該程序在執(zhí)行的過(guò)程中會(huì)出錯(cuò),比如雙核,每次只能處理其中的2個(gè)step,不能同時(shí)處理4個(gè),在進(jìn)行一次loop的時(shí)候,不能保證4個(gè)step產(chǎn)生新的數(shù)據(jù),也不能保證上個(gè)loop產(chǎn)生的數(shù)據(jù)在這次loop都能進(jìn)行處理。

        在程序中涉及到多線程的時(shí)候,得考慮到該計(jì)算機(jī)中core的數(shù)量,資源利用及程序開(kāi)始和結(jié)束時(shí)相應(yīng)的處理。



        關(guān)鍵詞: LabVIEW NIDays 2008 新技術(shù)

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 洞口县| 桃园市| 涞源县| 玉龙| 邻水| 桐庐县| 斗六市| 泰兴市| 洱源县| 柯坪县| 黎川县| 丹巴县| 麦盖提县| 惠来县| 平凉市| 留坝县| 梁河县| 大足县| 东方市| 汝南县| 平舆县| 宜兴市| 苏尼特右旗| 宝山区| 杭锦旗| 泾阳县| 厦门市| 宝坻区| 德江县| 弋阳县| 麦盖提县| 贵港市| 鞍山市| 古蔺县| 浮山县| 郯城县| 米易县| 尼玛县| 财经| 抚远县| 舞钢市|