新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > NIDays2008多核技術下LabVIEW編程

        NIDays2008多核技術下LabVIEW編程

        作者: 時間:2008-11-27 來源:網絡 收藏

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

        現在我們使用的處理器很多已經是雙核了,這就意味著我們寫應用程序的時候得考慮怎樣充分的使用雙核這個特性來優化程序,同時,我們也得考慮由雙核所帶來的搶資源,死鎖等并發問題。但正如任何一位便寫過多線程代碼的開發者告訴我們的那樣,這是編程領域的最艱巨的任務。
        LabVIEW是門圖形語言,它是基于數據流的多線程的語言,所以編寫多線程的程序是一件非常容易的事情,比如圖(1):

        在這個程序中,獨立的任務是自動進行并行的運行。從表面上看來,它的執行過程是同步的。從cpu的執行過程來看就不一定完全同步了。當cpu只是單核的情況下,cpu在執行這段程序的時候,其實是分了三個線程在執行的。也就是說,除非在cpu是3核,或是3個單核cpu的情況下,這段程序才可以真真的是“完全的”同時執行。
        很多人做的程序遇到過流水線模式,例如:數據采集,分析與記錄。當只是單核的時候,程序如圖(2)所示:

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

        每個Step使用的數據是由前一個Step在上一次Loop中生成的。在這個模式中,我們得注意的有一下幾點:
        1)在程序開始和結束時,4各模塊的處理,因為當第一次循環的時候,只有完成了step1 “采集”的工作,而下面的step2,step3,step4由于沒有數據輸入而沒有執行。一直到第四次循環的時候,4個step才同時開始正常執行;同理,再結束循環的時候,采集結束了,可是下面的是step2,step3,step4還沒有完成相應的處理。所以開頭結尾的地方得進行特別的處理。
        2)當CPU沒有達到4核的情況下,該程序在執行的過程中會出錯,比如雙核,每次只能處理其中的2個step,不能同時處理4個,在進行一次loop的時候,不能保證4個step產生新的數據,也不能保證上個loop產生的數據在這次loop都能進行處理。
        在程序中涉及到多線程的時候,得考慮到該計算機中core的數量,資源利用及程序開始和結束時相應的處理。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泰顺县| 五大连池市| 大港区| 红河县| 商水县| 修水县| 晋宁县| 澜沧| 营口市| 德阳市| 鄂温| 孟村| 白银市| 吉木萨尔县| 临沭县| 乳山市| 上高县| 文水县| 潞西市| 绵竹市| 广灵县| 杂多县| 兰考县| 嫩江县| 昔阳县| 通江县| 山东省| 松桃| 广饶县| 色达县| 读书| 贵港市| 沙田区| 万安县| 辉县市| 天全县| 东源县| 荔波县| 蒲江县| 夏邑县| 萍乡市|