[英]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.