NIDays2008多核技術(shù)下LabVIEW編程

發(fā)布時(shí)間:2011-1-20 20:45    發(fā)布者:techshare
關(guān)鍵詞: 2008 , LabVIEW , NIDays , 編程
NIDays 2008 于11月18日在上海舉行,課題涉及了很多方面。作為與非網(wǎng)特約工程師,我全程參加了主題演講和專(zhuān)題講座。本文只對專(zhuān)題二的LabVIEW 編程技巧下的“多核技術(shù)下LabVIEW編程的參考模式”做一些討論。對這個(gè)問(wèn)題的心得,是我在本屆NIDays上最大的收獲之一。

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







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






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






每個(gè)Step使用的數據是由前一個(gè)Step在上一次Loop中生成的。在這個(gè)模式中,我們得注意的有一下幾點(diǎn):
1)在程序開(kāi)始和結束時(shí),4各模塊的處理,因為當第一次循環(huán)的時(shí)候,只有完成了step1 “采集”的工作,而下面的step2,step3,step4由于沒(méi)有數據輸入而沒(méi)有執行。一直到第四次循環(huán)的時(shí)候,4個(gè)step才同時(shí)開(kāi)始正常執行;同理,再結束循環(huán)的時(shí)候,采集結束了,可是下面的是step2,step3,step4還沒(méi)有完成相應的處理。所以開(kāi)頭結尾的地方得進(jìn)行特別的處理。
2)當CPU沒(méi)有達到4核的情況下,該程序在執行的過(guò)程中會(huì )出錯,比如雙核,每次只能處理其中的2個(gè)step,不能同時(shí)處理4個(gè),在進(jìn)行一次loop的時(shí)候,不能保證4個(gè)step產(chǎn)生新的數據,也不能保證上個(gè)loop產(chǎn)生的數據在這次loop都能進(jìn)行處理。
在程序中涉及到多線(xiàn)程的時(shí)候,得考慮到該計算機中core的數量,資源利用及程序開(kāi)始和結束時(shí)相應的處理。
本文地址:http://selenalain.com/thread-50344-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页