本文概覽
因為NI LabVIEW是數據流編程語言,開發者們可以編寫并行的應用程序,這些應用程序可以直接映射到并行的硬件(如多核心處理器和FPGA等)上以獲得最優異的性能。這篇白皮書討論了什么是數據流編程以及為什么說NI LabVIEW是多核系統編程的首選。
免費午餐結束了
近幾年來,處理器的速度遭遇到了瓶頸。摩爾定律表明,每隔18~24個月芯片中晶體管的數量就會增加一倍。這在過去的40年里始終是適用的,但是芯片性能卻不再保持線性增加了。過去,芯片生產廠商通過增加處理器的時鐘速度來提高芯片的性能,如從100~200MHz,再到最近的數GHz的范圍。
但是在今天,由于功耗和散熱的限制,通過提高時鐘速度來增加性能的方法行不通了。芯片廠商開始轉向另一種全新的芯片構架,就是在單芯片上集成多個處理器內核。相對于單核處理器,程序員們可以使用多核處理器完成更多的任務。為了充分利用多核處理器,程序員們需要重新考慮開發應用程序的方法。微軟公司的軟件設計師Herb Sutter曾說過,對于那些期望最終用戶簡單的將計算機升級到更快的處理器就可以立即看到軟件程序性能提升的開發者而言,“免費午餐結束了”。簡而言之,在相當長的一段時間里,軟件開發是這樣的,但是現在情況不同了。
正在轉向在單個處理器上集成多個核心的方法。
順序執行的程序在處理器的速度提升后將得到性能的改善,將電腦升級到更快的CPU意味著一個序列中每個單獨的指令都將運行得更快。為了在多核系統中繼續獲得性能提升,你需要設計一個在內核間分配任務的應用程序,從本質上說來就是開發并行應用程序來取代順序執行的程序。
LabVIEW――一種圖形化數據流式編程語言
在LabVIEW中開發應用程序的主要優勢是這種語言有著直觀、圖形化的特點。在LabVIEW中,用戶解決工程問題就像是在紙上畫框圖一樣。現代多核處理器技術使得LabVIEW成為一種更適合的編程工具,因為它有著并行化表達和執行任務的能力。
LabVIEW的數據流特性使得如果連線中存在著分支,或者是框圖中存在并行序列,那么LabVIEW執行機構會嘗試著并行的執行程序。在計算機科學術語中,這稱為“潛在的并行化”,因為你不需要根據并行運行的需要明確地編寫并行代碼,編程語言自己會進行一定程度的并行化。
從單核到雙核計算機,理論上講,獲得的性能應該是原來的兩倍。但是,與這個極限接近的程度取決于用戶應用程序運行的并行化程度。LabVIEW程序員們可以很方便的以并行方式來表示他們的解決方案。對于普通的LabVIEW應用程序而言,如果不考慮多核心編程技術,在不改寫代碼的情況下,與最初的程序相比,可以獲得25%到35%的性能提升,這都是緣于普通LabVIEW程序所具有的并行特性。
圖2是一個簡單的應用程序的例子。其中,LabVIEW代碼中的分支簡化了兩個分析任務――一個濾波器操作和一個快速傅立葉變換(FFT),使它們可以在雙核機器上并行執行。在圖表中沒有顯示的性能測試代碼,它首先在單核模式下(關掉其中的一個核)運行“for loop”一次,然后在雙核的模式下運行。因為這兩項任務都是計算量很高的,利用任務并行化獲得的性能改進為原來的1.8倍。
基于文本的編程語言如C語言等,在代碼中利用特殊標記來表示并行化代碼,創建并行任務(也就是創建獨立的線程)。管理這些多線程的應用程序將是一個挑戰。
在C語言中,用戶必須使用鎖操作、互斥量、原子操作和其他高級編程技術來管理同步。當多線程變得難于跟蹤調試,通常的編程缺陷便出現了,如下所示:
1. 由于線程太多而導致效率低下。
2. 死鎖――線程一直在等待某些而不能進行處理。
3. 競爭狀況- 代碼運行的時序沒有被正確管理,在需要數據時,數據不是沒有準備好就是已經被覆蓋掉了。
4. 存儲器沖突――與代碼中存儲器管理相關的問題。
由于使用C語言進行開發面臨的這些挑戰,LabVIEW程序員們可以獲得比以往更高的效率。
LabVIEW是利用實時SMP支持,處于“Multicore Ready”軟件層的最上層Intel公司定義了用戶需要評估的四個軟件層次來確定多核系統的可用程度。如果所用的應用程序庫和設備驅動不是為多核而設計的,或者操作系統不能夠在多個核心上進行負載均衡,那么并行程序在多核心系統上并不會運行得更快。
審核編輯 黃宇
因為NI LabVIEW是數據流編程語言,開發者們可以編寫并行的應用程序,這些應用程序可以直接映射到并行的硬件(如多核心處理器和FPGA等)上以獲得最優異的性能。這篇白皮書討論了什么是數據流編程以及為什么說NI LabVIEW是多核系統編程的首選。
免費午餐結束了
近幾年來,處理器的速度遭遇到了瓶頸。摩爾定律表明,每隔18~24個月芯片中晶體管的數量就會增加一倍。這在過去的40年里始終是適用的,但是芯片性能卻不再保持線性增加了。過去,芯片生產廠商通過增加處理器的時鐘速度來提高芯片的性能,如從100~200MHz,再到最近的數GHz的范圍。
但是在今天,由于功耗和散熱的限制,通過提高時鐘速度來增加性能的方法行不通了。芯片廠商開始轉向另一種全新的芯片構架,就是在單芯片上集成多個處理器內核。相對于單核處理器,程序員們可以使用多核處理器完成更多的任務。為了充分利用多核處理器,程序員們需要重新考慮開發應用程序的方法。微軟公司的軟件設計師Herb Sutter曾說過,對于那些期望最終用戶簡單的將計算機升級到更快的處理器就可以立即看到軟件程序性能提升的開發者而言,“免費午餐結束了”。簡而言之,在相當長的一段時間里,軟件開發是這樣的,但是現在情況不同了。
正在轉向在單個處理器上集成多個核心的方法。
順序執行的程序在處理器的速度提升后將得到性能的改善,將電腦升級到更快的CPU意味著一個序列中每個單獨的指令都將運行得更快。為了在多核系統中繼續獲得性能提升,你需要設計一個在內核間分配任務的應用程序,從本質上說來就是開發并行應用程序來取代順序執行的程序。
LabVIEW――一種圖形化數據流式編程語言
在LabVIEW中開發應用程序的主要優勢是這種語言有著直觀、圖形化的特點。在LabVIEW中,用戶解決工程問題就像是在紙上畫框圖一樣。現代多核處理器技術使得LabVIEW成為一種更適合的編程工具,因為它有著并行化表達和執行任務的能力。
LabVIEW的數據流特性使得如果連線中存在著分支,或者是框圖中存在并行序列,那么LabVIEW執行機構會嘗試著并行的執行程序。在計算機科學術語中,這稱為“潛在的并行化”,因為你不需要根據并行運行的需要明確地編寫并行代碼,編程語言自己會進行一定程度的并行化。
從單核到雙核計算機,理論上講,獲得的性能應該是原來的兩倍。但是,與這個極限接近的程度取決于用戶應用程序運行的并行化程度。LabVIEW程序員們可以很方便的以并行方式來表示他們的解決方案。對于普通的LabVIEW應用程序而言,如果不考慮多核心編程技術,在不改寫代碼的情況下,與最初的程序相比,可以獲得25%到35%的性能提升,這都是緣于普通LabVIEW程序所具有的并行特性。
圖2是一個簡單的應用程序的例子。其中,LabVIEW代碼中的分支簡化了兩個分析任務――一個濾波器操作和一個快速傅立葉變換(FFT),使它們可以在雙核機器上并行執行。在圖表中沒有顯示的性能測試代碼,它首先在單核模式下(關掉其中的一個核)運行“for loop”一次,然后在雙核的模式下運行。因為這兩項任務都是計算量很高的,利用任務并行化獲得的性能改進為原來的1.8倍。
基于文本的編程語言如C語言等,在代碼中利用特殊標記來表示并行化代碼,創建并行任務(也就是創建獨立的線程)。管理這些多線程的應用程序將是一個挑戰。
在C語言中,用戶必須使用鎖操作、互斥量、原子操作和其他高級編程技術來管理同步。當多線程變得難于跟蹤調試,通常的編程缺陷便出現了,如下所示:
1. 由于線程太多而導致效率低下。
2. 死鎖――線程一直在等待某些而不能進行處理。
3. 競爭狀況- 代碼運行的時序沒有被正確管理,在需要數據時,數據不是沒有準備好就是已經被覆蓋掉了。
4. 存儲器沖突――與代碼中存儲器管理相關的問題。
由于使用C語言進行開發面臨的這些挑戰,LabVIEW程序員們可以獲得比以往更高的效率。
LabVIEW是利用實時SMP支持,處于“Multicore Ready”軟件層的最上層Intel公司定義了用戶需要評估的四個軟件層次來確定多核系統的可用程度。如果所用的應用程序庫和設備驅動不是為多核而設計的,或者操作系統不能夠在多個核心上進行負載均衡,那么并行程序在多核心系統上并不會運行得更快。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
FPGA
+關注
關注
1660文章
22411瀏覽量
636266 -
芯片
+關注
關注
463文章
54009瀏覽量
465969 -
LabVIEW
+關注
關注
2017文章
3688瀏覽量
347084 -
C語言
+關注
關注
183文章
7644瀏覽量
145579 -
編程
+關注
關注
90文章
3716瀏覽量
97184
發布評論請先 登錄
相關推薦
熱點推薦
揭秘!三步讓Debian系統編譯速度起飛,告別重復下載資源的煩惱
在 Debian 系統編譯的過程中,重復構建系統和動態下載相關資源往往會消耗大量時間,拖慢開發和部署進度。今天,我們就通過分析一組代碼修改,來探索如何優化 Debian 系統編譯,實現高效編譯,減少不必要的時間浪費。
C語言嵌入式系統編程注意事項-內存操作
C語言嵌入式系統編程注意事項之內存操作
在嵌入式系統的編程中,常常要求在特定的內存單元讀寫內容,匯編有對應的MOV指令,而除C/C++以外的其它編程語言基本沒有直接訪問絕對地址的能力
發表于 01-04 07:31
京微齊力亮相2025國際現場可編程技術大會
12月2日-5日,2025年國際現場可編程技術大會(FPT)在上海成功舉辦,京微齊力應邀參加此次行業盛會,與全球領先的行業專家學者,共同探討可編程技術的創新與發展。
一張表看懂:邁威選擇性波峰焊視覺編程系統的“快、準、穩”
、定位偏差等導致的精度問題。 邁威選擇性波峰焊視覺編程系統以創新的實時在機視覺編程技術,徹底改變了這一現狀。該系統通過高精度工業相機直接對已裝夾的PCB板進行快速掃描與成像,使
思爾芯邀您共聚 FPT 2025,賦能可編程技術新未來
可編程技術盛會,聚焦可重構計算設備與系統、現場可編程器件等關鍵領域。FPT不僅是技術交流的平臺,更是推動產學研深度融合、激發創新靈感的重要契機。思爾芯作為國內首家數
一文了解Mojo編程語言
編程能力
允許直接進行系統調用和文件操作,提供類似 Rust 的內存安全機制(所有權和借用檢查),避免運行時錯誤。
支持零成本抽象,開發者無需犧牲性能即可編寫高層代碼。
并行與異構計算
內置對多核
發表于 11-07 05:59
告別 “人工盯防”!RFID 技術重構載體管控新范式——淺談RFID技術在載體管控中的應用
告別 “人工盯防”!RFID 技術重構載體管控新范式——淺談RFID技術在載體管控中的應用 直擊傳統管控痛點問題,RFID 技術精準破局 在政府機關、金融機構、科研單位及各類企事業單位
請問系統編程 (ISP) 工具支持哪些接口進行系統升級?
ISP工具支持多種接口進行系統升級,包括UART、USB、I2C、SPI、CAN、RS485、I/O和以太網,并提供開源代碼供用戶修改以符合自己的系統環境。
發表于 08-18 07:40
【老法師】多核異構處理器中M核程序的啟動、編寫和仿真
有很多研究單片機的小伙伴在面對多核異構處理器時,可能會對多核的啟動流程感到困惑——因為不熟悉GCC編程和GDB調試,所以也無法確定多核異構處理器的程序是否能像單片機那樣方便地編寫和仿真
熱成像儀為何都在瘋狂卷多核處理器?“多核大戰”背后的真相你知道嗎?
熱成像儀進入“多核”時代,這不是噱頭,而是需求在變。 從黑夜中識別生命體,到復雜地形中實現熱源追蹤,過去主要用于軍事和工業的熱成像儀,如今正越來越多地進入民用市場。而隨著使用場景的復雜化,“看得見
全志科技多核異構SoC助力行業智能化創新
近日, “第十二屆開源操作系統年度技術會議”在北京舉行,全志科技受邀參會。會上,全志進行了題為《多核異構SoC在行業應用中軟件方案的思考與實踐》的分享。分享從市場和技術洞察、方案設計創
淺談直流有刷電機驅動及調速技術
,圖1 為 H 橋電機驅動 電路示意圖 :
圖1 H橋電機驅動電路示意圖
點擊下方附件查看全文*附件:20250307_淺談直流有刷電機驅動及調速技術.docx
發表于 03-07 15:24
淺談多核系統編程技術
評論