簡體   English   中英

cpp中的並行openMP循環

[英]parallel openMP loop in cpp

我正在嘗試使用cpp中的openMP進行並行化。 我正在使用以下測試示例

 #pragma parallel for num_threads( 4 )
 for ( int i = 0 ; i < N ; i++ ){
     for ( int j = 0 ; j < 100000 ; j++ ){
         data[ i ]  =  data[ i ] + ( double ) i ;
     } 
 }  

我正在使用4個線程; 頂部(在Unix中),然后應該在col%CPU 400%或類似的名稱中看到。 但是我得到100%的串行執行情況。 而且,如果我測量時間,則與串行執行相比沒有速度增益。 我不知道我在做什么錯。

您錯過了pragma指令中的omp

嘗試:

#pragma omp parallel for num_threads( 4 )

如所描述的在這里 ,這是使用OpenMP時最常見的錯誤在C ++中之一。

使用GCC編譯器,可以通過使用-Wall-Wunknown pragmas標志進行編譯來解決此問題。 使用-Wall是一個好習慣,因為它可以避免許多其他本應神秘的問題。 其他編譯器具有類似的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM