Parallel For Loop

寫過 LabVIEW 程式的使用者應該都知道,如果把兩個 While 迴圈平行放在程式裡的話,他們就會平行的運作。如果您的電腦是多核心的,那這兩個迴圈甚至可以同時的在多核心 CPU 上執行。這樣一來,我們不但可以善用多核心的硬體,同時也讓程式效率更加提升。您接著可能想問,既然 While Loop 可以,那 For Loop 也行嗎? LabVIEW 2009 Parallel For Loops 新功能便可以回答您的問題!

什麼是Parallel For Loop ?
Parallel For Loop 是一個可以讓多顆 CPU 核心執行同一個 For Loop 的新功能。例如說,如果您在一台雙核心的電腦上寫了一個 100 個迴圈的 For Loop,那麼這個功能就可以在 CPU0 上執行 50 次,另 50 次則在 CPU1 上執行。這樣一來,我們便能善用我們的多核心電腦,程式執行的速度就也會跟著大大的提升!

要如何製作Parallel For Loop ?
Parallel For Loop 其實與之前的 For 迴圈是一樣的,唯一不同的地方,就在於它多了一個選項,讓您可以指定要使用幾顆 CPU 核心來執行這個迴圈。您可以選擇是否要打開此功能,如果要打開,您只需要在For 迴圈的邊緣點滑鼠右鍵,選擇 Configure Iteration Parallelism …,設定視窗出現後,您只需要Enable loop iteration parallelism勾選起來就可以了。

設定完畢之後,For 迴圈的左上方就會出現一個新接點 (“P”),您只需要把您想使用的 CPU 核心數目接進去,便可以達到 Parallel For Loop 的功能。

其他版本若升級至LabVIEW 2009,還可使用Tools >> Profile >> Find Parallelizable Loops功能,以判定迴圈是否適合使用 Parallel For Loop,並藉此提升原本的效能。

CPU Information Pallet
如果想要使用 Parallel For Loop 的功能,那您當然必須先知道您的電腦上有幾顆 CPU 核心可以使用。如果要從 LabVIEW 程式裡讀取電腦系統上的資訊,您往往需要使用 Call Library Function Node,寫出較複雜的程式,來讀取 Windows API 的 DLL,以得到此資訊。這就是為什麼 LabVIEW 2009 提供了一個新的 CPU Information API,幫助您能更迅速地得到電腦 CPU 的資訊。

CPU Information.vi 被存放在 Programming >> Applications Control >> CPU Information 的目錄底下,您可以透過此 VI,直接讀取電腦上 CPU 核心的數量。

把 # of logical processors 的輸出接點連接到 Parallel For Loop 上,您就可以指定此 For 迴圈使用的核心數量了。

[小提醒] Parallel For loop 只有多核心電腦可以使用嗎? 其實,Parallel For loop 的功能並沒有限制單核心的電腦不能使用它,但是由於電腦是單核心的,所以使用出來的效果會跟正常的 For loop 一樣。只有再多核心 電腦上才能看到 Parallel For loop 的真正效果。

原文出自於虛擬儀控季刊2009年第四季 “LabVIEW 2009 – 使您的系統效能獲得進一步提升”