之前就想出一個專題聊聊關於增加程式效率、減少記憶體消耗的專題,不過這議題實在太大,每每理好思緒想開始寫,就會被其他事情羈絆。於是,我決定先將各各小議題先各自寫文章,最後再做統整,今天就使用For loop的Parallel來起手,因為他是最簡單、最快速、最顯著的修改方法。

image

Parallel Foor Loop 大約是2009後的功能,這功能有一段一時間了,但使用的人並不多,一大原因是目前的電腦處理速度很快,普通應用其實並不需要使用這功能。Parallel Foor Loop就如同字面上的英文意思: 同步Foor迴圈,如何做到同步呢?假設處理程式的主機使用的是4核心電腦,如果未開啟這功能時,Foor Loop只會使用單一核心來處理此段程式,但如果開啟此功能,就可以選擇以多核心來處理。當然,此功能有它的限制,下面介紹如何使用後在介紹其限制。

在For Loop 上按右鍵-->Configure Iteration Parallelism 設定並開啟此功能。

image

接著會彈跳出設定視窗

image

設定完後,就可以開始使用了。下面用2個Foor loop使用一樣的程式碼,唯一不同的是上面foor loop將 iteration parallelism功能開啟。

image

將兩段程式計時比較,注意,兩段程式不能同步跑唷,需要disable其中一個,才能精準測試。

image

image

測試後兩個Elapse Time比較,可以發現其顯著的不同!!幾乎差了10^4倍

image

當然使用這parallel會有限制,其限制也跟他的特性有關,因為開啟此功能後會,是多核心同步運行,其資料不會互相傳遞,限制如下:

  1. Feedback node
  2. Shift Register
  3. Conditional Terminal
  4. ....可查如下表

image(此圖截自NI官網)

如果有多個迴圈需要分配時也可以參考下面寫法,達到CPU的分配,

image(此圖截自NI官網)

詳細的使用,包含上面幾個圖的解釋,可以參考NI的白皮書: http://www.ni.com/tutorial/9393/en/

如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

Queue應用

Synchornization學習

Array陣列

檔案讀寫

Listbox、Table元件

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

arrow
arrow

    安伯伯 發表在 痞客邦 留言(0) 人氣()