LabVIEW為自動化測試應用提供了獨特的、易于使用的圖形化編程環境。然而,真正改善在多核處理器上的執行速度,卻是其動態分配代碼到各種CPU核的能力。本文將學習如何利用并行編程技術以優化LabVIEW應用。
目錄
- 多線程編程的挑戰
- 實現并行測試算法
- 配置定制的并行測試算法
- 優化硬件在環應用
- 總結
多線程編程的挑戰
迄今,處理器技術領域中的創新已經使得計算機具備了工作于更高時鐘速率的中央處理器單元(CPU)。然而,隨著時鐘速率逼近其理論上的物理極限,具有多個(而不是單個)處理核的新型處理器正處于研發之中。利用這些新型多核處理器,自動化測試應用利用并行編程技術,便可以達到最佳性能和最高吞吐量。Edward Lee博士——加州大學伯克利分校電氣與計算機工程系的杰出教授——這樣描述并行處理的技術優勢:
“許多技術專家預言,回應摩爾定律的終結的將是日趨并行的計算機架構。如果我們希望繼續提高計算性能,計算機程序必須能夠利用這種并行機制?!?/P>
而且,利用多核處理器的編程應用是一個巨大的編程挑戰,這是廣為接受的。比爾蓋茨——微軟公司的締造者——關于這一挑戰有這樣一段話:
“要想充分利用并行工作的處理器的威力,…軟件必須能夠處理并發性問題。但正如任何一位編寫過多線程代碼的開發者告訴你的那樣,這是編程領域最艱巨的任務之一?!?/P>
幸運的是,LabVIEW為多核處理器提供了一個理想的編程環境,因為它為創建并行算法提供了一個直觀的環境,而且它可以動態指派多個線程至一項給定的應用。事實上,利用多核處理器的自動化測試應用,可以方便地被優化以獲取最佳性能。而且,PXIe模塊化儀器增強了這一技術優勢,因為PCIe總線使高數據傳輸速率成為可能。從多核處理器和PXIe儀器的兩個具體應用是:多通道信號分析和線上處理(硬件在環)。在本文的后續部分,我們將評估各種并行編程技術,并刻畫每項技術所帶來的性能優勢。
實現并行測試算法
得益于并行處理的一項常見自動化測試應用(ATE),便是多通道信號分析。由于頻率分析是一項占有處理器較多的操作,通過并行化處理測試代碼使得每個通道的信號處理被分配至多個處理器核,可以提高執行速度。從編程人員的角度來看,為獲得這一技術優勢,所需的唯一改變便是僅僅重構測試算法。
為描述這一過程,我們將比較用于多通道頻率分析(傅立葉變換或FFT)的兩個算法的執行時間,它們分別位于一個高速數字化儀的兩個通道上。在該測試中,我們使用PXIe-5122 14-位高速數字化儀的兩個通道,以最高采樣率(100 MS/s)采集信號。首先,我們這一操作在LabVIEW中的傳統的順序編程模型。
?
圖1。利用順序執行的LabVIEW代碼
在上述模塊框圖中,兩個通道的頻率分析均在一個FFT快速VI中完成,它順序分析每個通道信號。雖然上述算法也可以在多核處理器中有效執行,但仍存在通過并行處理每個通道提高算法性能的可能。
如果我們剖析上述算法,我們會發現完成FFT所需的時間要比從高速數字化儀采集數據長得多。通過每次獲取一個通道的數據并并行執行兩次FFT,我們可以顯著降低處理時間。下圖表示了一個采用并行方法的新的LabVIEW模塊框圖。
?
圖2。利用并行執行的LabVIEW代碼
如上面代碼所示,將順序獲取數字化儀的每個通道的數據。注意,如果兩次數據獲取均來自不同的儀器,那么完全可以并行完成這些操作。然而,由于傅立葉變換占用大量的處理器時間,我們仍可以僅通過將信號處理并行化改善性能。故而減少了總的執行時間。兩種實現的執行時間如下所示:
?
圖3。順序算法與并行算法(時間)的執行時間比較
如上圖所示,隨著數據塊大?。看潍@取的采樣數)的增加,通過并行處理節約的處理時間愈為顯著。事實上,對于更大的數據塊,并行算法實現近2倍的性能改進。下圖描述了性能增長的精確百分比隨采集數據塊大?。ㄒ圆蓸訑禐閱挝唬┑淖兓?。
?
[+] 放大圖片
圖4。并行算法帶來的性能增長(百分比)
圖4顯示,當數據塊大于1百萬采樣(100 Hz精度帶寬)時,并行方式實現80%或更高的性能增長。
在多核處理器之上,我們可以方便地實現自動化測試應用的性能改進,因為LabVIEW動態地分配每一個線程。事實上,用戶不需要創建特殊的代碼以支持多線程,而是通過最少的編程調整,并行測試應用便可以獲益于多核處理器。
配置定制的并行測試算法
將信號處理并行化的技術優勢在于它支持LabVIEW在多個處理器核中劃分CPU的用度。在下圖中,我們描述了CPU處理算法每一部分的次序。
?
圖5。CPU的處理執行
如圖所示,LabVIEW能夠并行處理許多采集數據,從而節省了執行時間。對于LabVIEW,并行處理的需求之一便是拷貝(或克?。┟總€信號處理子例程。缺省情況下, LabVIEW的許多信號處理算法配置為“重入執行”。這就意味著LabVIEW將動態分配每個子例程的一個不同實例,包括獨立線程和存儲空間。因而,定制子例程必須被配置為工作于重入方式。這可以通過LabVIEW中一個簡單的配置步驟完成。欲設置這一屬性,選擇文件菜單下VI屬性并選中“執行”欄;然后,選中“重入執行”標記(如下所示)。
??
圖6。在LabVIEW中配置重入執行屬性
通過上圖所示的簡單步驟,我們可以并行執行多個定制子例程,就如同標準LabVIEW分析函數那樣。因此,在多核處理器之上,自動化測試應用通過簡單的編程技術就可以實現性能的改進。
優化硬件在環應用
得益于并行信號處理技術的又一個應用便是為同時輸入與輸出使用多個儀器。一般,這些應用被稱為硬件在環(HIL)或在線處理應用。在此場景下,高速數字化儀或高速數字I/O模塊用于信號采集,其軟件執行數字信號處理算法。最后,通過另一個模塊化儀器生成結果。其典型模塊框圖如下所示:
?
圖7。在線信號處理(HIL)模塊框圖
常見HIL應用包括在線數字信號處理(濾波、插值等)、傳感器仿真和定制組件模擬。在這篇特別準備的白皮書中,我們將探究用于在在線數字信號處理應用中獲得最佳吞吐量的技術。
通常可以使用兩種基本的編程結構,單循環結構和帶有隊列的管道式多循環結構。單循環結構實現簡單,對于小數據塊具有低時延。相比之下,多循環結構能夠支持高得多的吞吐量,因為它們能夠更好地利用多核CPU。
對于傳統的單循環方式,一個高速數字化儀的讀函數、信號處理算法和高速數字I/O順次組織。如下面模塊框圖所示,這些子例程中的每一個都必須按照LabVIEW數據流編程模型確定的順序執行。
?
圖8。在循環中依單循環方式進行處理
單循環結構受限于幾個因素。由于順序執行每一環節,處理器在處理數據的同時受限無法執行儀器I/O。在這種方式下,由于處理器一次只能執行一個函數,所以無法有效利用多核CPU。因而,在應用中僅使用了多核CPU的一個核。雖然單循環結構足以處理較低的采集速率,但是要想得到較高的數據吞吐量仍需要采用多循環方式。
多循環架構使用隊列結構實現while循環間的數據傳遞。下面,我們展開論述在while循環間采用一個隊列結構進行數據流編程的概念。
?
圖9。隊列結構支持多循環間的數據共享
如圖所示,隊列支持多個循環間的數據共享。上圖所表示的是典型的所謂生產者/消費者循環結構。這里,在一個循環中,一個高速數字化儀持續采集數據,并在每次迭代中將新的數據集傳遞至FIFO隊列。消費者循環僅需監視隊列的狀態,當每個數據集可用時將其寫入磁盤。采用隊列的意義在于這兩個循環均可相互獨立執行。在上例中,高速數字化儀可以持續采集數據,即使這些數據寫入磁盤時存在一定的延遲。與此同時,其它的采樣僅需存儲在FIFO隊列中。通常,生產者/消費者管道式方法,通過支持更有效的處理器利用率,使更高的數據吞吐量成為可能。這一技術優勢在多核處理器中甚至更為顯著,因為LabVIEW可以動態分配CPU線程至每個處理器核。
對于一項在線信號處理應用,我們可以使用三個獨立的while循環和兩個隊列結構,實現其間的數據傳遞。在此應用場景下,一個循環將從一臺儀器采集數據,一個循環將專門執行信號處理,而第三個循環將數據寫入到另一臺儀器。描述這一方式的LabVIEW模塊框圖如下所示:
?
圖10。具有多個循環和排隊結構的管道式信號處理
在上圖中,最上面的循環是一個生產者循環,它從一個高速數字化儀采集數據,并將其傳遞至第一個隊列結構(FIFO)。中間的循環同時作為生產者和消費者工作。每次迭代中,它從隊列結構中卸載(消費)若干個數據集,并以管道的方式獨立對其進行處理。這種管道方式通過支持高達四個數據集的獨立處理,實現了多核處理器環境下的性能改進。注意,中間的循環同時也作為一個生產者工作,將處理后的數據傳遞至第二個隊列結構。最后,最下面的循環將處理后的數據寫入至高速數字I/O模塊。
并行處理算法改善了多核CPU的處理器利用率。事實上,總吞吐量有賴于兩個因素,處理器利用率和總線傳輸速度。通常,CPU和數據總線在處理大數據塊時工作效率最高。而且,我們可以進一步使用具有更快傳輸速度的PXIe儀器,縮減數據傳輸時間。因而,我們通過依采集數據大?。ㄒ圆蓸訑涤嫞┳兓牟蓸勇拭枋鲎畲笸掏铝?,如下所示:
?
圖11。多循環結構與單循環結構的吞吐量比較
該圖中所描述的所有標定都是圍繞16-位采樣進行的。此外,所采用的信號處理算法為一個截至頻率為采樣率的0.45倍的7階巴特沃茲低通濾波器。如數據顯示,4階段管道式(多循環)方式支持最大數據吞吐量。注意,2階段信號處理方式獲得了比單循環方式(順序)更好的性能,但其CPU的利用不及4階段方式有效。上面所列的采樣率為PXIe-5122高速數字化儀和PXIe-6537高速數字I/O模塊的輸入和輸出的最大采樣率。注意,當采樣率為20 MS/s時,應用總線的輸入和輸出的數據傳輸率均為40 MB/s,所以總的總線帶寬為80 MB/s。
應當考慮的是,管道式處理方式在輸入與輸出之間確實引入了時延。所引入的時延取決于幾個因素,包括數據塊的大小和采樣率。下表比較了單循環和4階段多循環架構中實測所得的時延隨數據塊大小和最大采樣率的變化情況。
??????
表1和2。單循環和4階段管道的時延標定
正如人們可以預知的,當CPU的使用率接近100%時時延也隨之增加。這一點在采樣率為20 MS/s的4階段管道范例中尤為明顯。相比之下,任何一個單循環范例的CPU使用率都幾乎不會超過50%。
總結
基于PC的儀器系統,如PXI和PXIe模塊化儀器,從多核處理器技術的進步和數據總線速度的提高中獲益匪淺。當新型CPU通過添加多個處理核改進性能時,并行或管道式處理結構成為最大化CPU效率所必需。幸運的是,LabVIEW通過將處理任務動態分配至單個處理核;為這一編程挑戰提供了一種上佳的解決方案。如上面數據顯示,將LabVIEW算法結構化以利用并行處理,可以帶來顯著的性能提高。
評論
查看更多