1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      LabVIEW 8.5為開發者帶來多核處理器的強大功能

      更新時間: 2008-01-15 08:43:01來源: 粵嵌教育瀏覽量:979

        根據摩爾定律,芯片上晶體管的數目每隔18~24個月就會翻一番。如同在過去40年里一樣,這個定律現在還是正確的,但是在性能上卻并不再呈現一個線性增強的現象。以前,芯片制造商通過提高處理器時鐘速度使芯片性能翻番——從100MHz到200MHz,直至近來達到吉赫茲。

        然而如今,因為能量消耗和熱量發散的限制,通過增加時鐘速度來提高性能已經不再可行。芯片制造商開始轉向全新的芯片結構,即一個芯片上有多個處理器核。相對于單核,采用多核處理器的程序員們可以完成更多全局工作。然而,要充分利用多核處理器的優點,程序員們必須重新考慮他們該如何開發應用程序。有些程序員,希望在終端客戶將他們的電腦簡單升級到快速處理器的時候,就能立即獲得軟件應用程序性能的增強。按照微軟的軟件工程師Herb Sutter的話來說,對這些程序員“已經沒有免費的午餐”。簡而言之,如今程序員們應當致力于可持續的性能改進。

        提高處理器時鐘速度,則順序程序的性能改進;為電腦升級一個更快速的CPU,意味著每一條獨立指令的運行速度都會加快。要想使用多核系統以繼續提高性能,開發者需要設計應用程序,為每個核分配工作——本質上即是開發一個并行應用程序來取代順序應用程序。

        幸運的是,NI LabVIEW軟件非常適合于工程師和科學家們充分利用多核芯片的處理能力,主要原因有下面三個。

      1 LabVIEW是一種圖形化數據流編程語言

        開發者可在LabVIEW中簡便地實現并行任務,使得開發新的應用程序并更改現存的應用程序以利用多核處理器的優點成為可能。LabVIEW從5.0版本開始就是多線程的,而現在的8.5版本更引進了新的功能,以利用多核處理器的優點。

      2 LabVIEW將多核性能引進嵌入式實時硬件中

        LabVIEW 8.5將桌面操作系統(例如Windows和Linux)的自動多任務處理功能——也就是對稱多處理技術(SMP)——引入確定性的實時系統。

      3 LabVIEW處于“Multicore-Ready”軟件層次的頂層

        LabVIEW應用程序的每一層(例如:LabVIEW應用程序代碼、低層函數、I/O驅動),都是線程安全的,它們可以利用多核處理器的優點。

      LabVIEW是一種圖形化數據流編程語言

        使用LabVIEW開發應用程序的主要好處就是其直觀的、圖形化的語言。在LabVIEW中,解決工程問題就如同在紙上畫方塊圖一樣簡單。由于LabVIEW能夠并行表達和執行任務,所以現代的多核處理器使得LabVIEW成為編程工具的一個更有利的選擇。


      圖1 LabVIEW的代碼固有的并行特性

        LabVIEW的數據流特性意味著不論何時,只要代碼在線上有個分支或在方塊圖上有個并行序列,潛在的LabVIEW編譯器就會嘗試并行執行代碼。用計算機科學的專有名詞來說,這就是“隱并行”,因為你并不需要為了并行執行程序而明確編寫代碼,LabVIEW的圖形化語言將自行實現一定程度的并行性。

        從單核到雙核計算機,理論上的優勢是性能的雙倍改進。但是,如何逼近該極限,則與你能多大程度上并行執行程序有關。LabVIEW程序員自然是并行地編寫其算法。在普通LabVIEW應用程序的初始基準下,若不考慮多核編程技術,不改變代碼,則其性能能夠提高15%~20%。


      圖2 在LabVIEW中,使用“高亮顯示”和“探針”工具來調試并行化代碼,以提高用戶效率

        圖1是一個簡單的應用例子:LabVIEW代碼的一個分支用于兩個分析任務——濾波操作和快速傅里葉變換(FFT)——在雙核機器上并行執行。因為兩個任務計算量都很大,所以采用雙核執行,相對于單核的效率改進是1.8倍。

        采用傳統的基于文本工具的開發者必須使用復雜的編程結構(稱為線程),在這些順序語言中實現并行化。管理這些多線程應用程序可能是一個挑戰。在C語言中,你必須實現鎖定、互斥體、原子突擊和其他編程技術之間的同步。當多線程難以跟進時,就可能出現一些常見的編程缺陷如下。

        ● 由于大量線程導致的程序失效。

        ● 死鎖——線程陷入等待狀態,無法進行處理。

        ● 競態條件——代碼執行時間設置錯誤,或者需要數據的時候無法獲取,或者正確的數據被復寫。

        ● 存儲沖突——多線程企圖同時存取存儲器。

        在代碼開發之后,另一個可以提高工作效率的例子是在LabVIEW中使用高亮顯示執行步驟和探針,實行基本調試的功能,如圖2所示。

        在評價LabVIEW用于多核開發時,Eaton公司的首席產品工程師Scott Sirrine說“LabVIEW是一種自動多線程的數據流語言,這個事實表明了LabVIEW相對于其他編程語言的兩大優點——生產力開發和執行力實現。”


      圖3 利用LabVIEW 8.5 Real-Time的支持功能和Real-Time Execution Trace Toolkit 2.0工具提供的圖形化調試功能

        盡管LabVIEW已經處理了大量多核開發中所面臨的問題,工程師還是可以通過在代碼中引入以下策略來進一步改進系統性能。

        下面是三個示例性的操作命令:

        ● 任務并行化——將程序分成并行執行任務。

        ● 流水線操作——將順序算法分成同級的步驟,分配于多個核中執行。

        ● 數據并行化——將大的數據組分成多個子集,然后并行執行。

        可以在ni.com/multicore上找到所有這些優化方案的例子。

      LabIVEW為實時嵌入式硬件引入多核性能

        一直以來,工程師們使用的工具都不能利用嵌入式多核系統的特性進行化的并行式編程。LabVIEW 8.5軟件為確定性實時系統引入了臺式機的自動多線程調度器(也被稱為SMP)。LabVIEW 8.5的實時模塊加入了的多核系統支持,它有著如下特性:

        ● 在嵌入式實時系統中,在多個核上自動進行負載均衡。

        ● 對于時間關鍵(time-critical)的代碼,可以將定時循環分配到指定的處理器上將定時循環結構中的關鍵代碼與應用程序中的其他代碼隔離開。

        ● 利用Real-Time Execution Trace Toolkit 2.0工具,用戶可以方便地對VI程序運行過程中的線程和處理器核進行圖形化的表示,以便更好地調整實時系統,進而獲得性能。


      表1 LabVIEW是進行并行化編程的理想工具,因為它有著自上而下的multicore-ready軟件層

      LabVIEW處于“Multicore-Ready”軟件層次的頂層

        Intel公司定義了用戶需要評估的四層軟件層次來確定多核系統的可用程度。這四層軟件層次分別是操作系統、設備驅動、應用程序庫和開發工具。如果所用的應用程序庫和設備驅動不是為多核而設計的,或者操作系統不能夠在多個核上進行負載均衡,那么并行化程序在多核系統上是不能夠運行得更快的。

        設備驅動軟件層的一個例子就是NI-DAQmx驅動軟件。傳統的NI-DAQ是“線程安全”的,也就是說在一個NI-DAQ函數被調用時,整個程序庫會阻塞其他調用的線程。從感覺看來,這是非常有邏輯性的,因為NI-DAQ是用來控制硬件的,而硬件通常被認為是單一的源。NI-DAQmx這款重新設計過的新型DAQ驅動程序是可重入的,這意味著多個DAQ任務可以以一種真正并行的方式運行而不再需要阻塞線程。利用這種方法,驅動程序可以使用戶的應用程序在同一塊電路板上并行地運行多個任務,諸如獨立的模擬和數字輸入/輸出等。

      LabVIEW——理想的并行化編程語言

        大多數用戶將會看到多核系統所帶來的好處,它利用改進的性能同時運行多個應用程序(電子郵件、視頻、文字處理等),這也被稱為多任務。但是,對于試圖對單一應用程序進行優化的開發者而言,它所能提供的好處是有限的。

        工程師和科學家們正在為測試需要或者在控制應用中改進的閉環速率而尋找更快的測量儀器。他們需要考慮如何實現并行的應用。LabVIEW軟件就是這樣一種用戶可以借助于它所提供的軟件環境來實現并行應用的有效工具。語言的數據流特性、LabVIEW Real-Time工具對嵌入式平臺開發的多核支持,以及自上而下的為多核而設計的軟件層,使得LabVIEW軟件成為進行并行化編程的。





      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲欧美综合另类 | 亚洲欧美日韩在线综合专区 | 日韩欧美国产精品 | 五月天在线视频亚洲 | 亚洲AV日韩AV不卡在线观看 | 日本一区二区三区精品视频 |