NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

parallel兩個sub vi同時執行

Dear Sir

           附件Vi執行時間好像相同,有什麼方法可讓兩個sub vi同時執行?

下載全部
0 積分
1 條訊息(共 10 條)
8,277 檢視
0 積分
2 條訊息(共 10 條)
8,272 檢視

Dear Sir

            已經設定為Reentrant,但似乎還是一樣!

0 積分
3 條訊息(共 10 條)
8,268 檢視

從你目前的撰寫方式看起來,你的兩個SubVI應該可以做到"幾乎"同步,

不知道你所謂的同時,準確度要到多少? 1 ms? 1 us? 25 ns?

就PC本身的運作而言,程式執行本來就不可能做到完全的同時。

用硬體電路才有可能做到25 ns的同步等級,而這在你的應用中看起來也是不可能的喔。

0 積分
4 條訊息(共 10 條)
8,261 檢視

Dear Sir

           指運算時間 ,

           vi單獨執行一次運算時間如果為A,

           vi單獨執行二次運算時間如果為A+A

           兩vi同時執行運算時間似乎也趨近於A+A

           運算效能有辦法提升嗎?

0 積分
5 條訊息(共 10 條)
8,259 檢視

不知道你的兩個SubVI裡面是怎麼樣撰寫的,看起來你的兩個SubVI確實是有同時在執行的沒錯,

你是否有在SubVI中用了Vision Assistant? 如果有的話,這樣就很容易造成你所說的問題,

就是兩個VI所需的時間接近A+A,要增進程式效能的話,請避免在平行的架構上使用Vision小幫手。

 

盡量用低階的標準VI來撰寫Vision程式,這樣才不會有程式裡共享資源的狀況發生。

0 積分
6 條訊息(共 10 條)
8,257 檢視

Dear Sir

           附件檔案請幫忙

0 積分
7 條訊息(共 10 條)
8,253 檢視

稍微看了一下你的程式,發現你的IMAQ Create跟Dispose很多都放在SubVI裡面了,

如果你要Benchmark時間的話,通常會把Create跟Dispose都放在外面,要Benchmark的Code只包含影像處理的部分,

我想是因為這個原因造成你的兩個SubVI時間會疊加起來,你如果把Create跟Dispose都拉出來應該就好了。

0 積分
8 條訊息(共 10 條)
8,247 檢視

Dear

       附件為修改後程式,但似乎沒有改善,再請幫忙確認.感謝

0 積分
9 條訊息(共 10 條)
8,238 檢視

你Create影像Array放的是一樣的影像,影像處理的步驟也放多迴圈全部一樣,

同樣的演算法要Benchmark的話在影像處理的部分會用Sequential的寫法,

不會放多迴圈平行的去執行,這樣的寫法Benchmark起來一定不會準的。

 

建議你就是使用Create單一影像,將所需的影像處理一次性的做完,不要放迴圈。

 

大概是像這樣的架構

benchmark.png

 

影像處理的SubVI裡面盡量不要放迴圈,不然會很慢。

0 積分
10 條訊息(共 10 條)
8,236 檢視