[問題] OpenMP的parallel for

看板C_and_CPP (C/C++)作者 (熱)時間14年前 (2011/08/05 00:29), 編輯推噓2(209)
留言11則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 4.4.5 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) omp.h 問題(Question): 我其實是想平行處理一個job queue,就是對一個queue能有寫入與取出的動作, 每個thread都可以取出裡面的資料並且可能放新的資料進queue 似乎是個很精典的問題 但用這關鍵字目前一直沒找到想要的資料... 所以寫了一個小測試程式來試,結果也失敗 下面是我的程式碼: vector<unsigned> test_buffer; test_buffer.push_back(20); test_buffer.push_back(30); #pragma omp parallel for for( unsigned i=0; i<test_buffer.size(); ++i ) { printf( "%u\n", test_buffer[i] ); if( i == 0 ) test_buffer.push_back(10); } 希望能印出3個數字20, 30, 10;可是如果用上面的寫法只會得到20, 30 看起來OpenMP切割完工作後就不會再去檢查test_buffer的大小... 不知道有沒有什麼簡單的方法可以解決這問題? (還是說必須要用到像pthread的condition variable之類的方法) 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.189

08/05 01:00, , 1F
我用dev c++ 三個數字都有跑出來耶
08/05 01:00, 1F

08/05 08:37, , 2F
跑出三個數字應該是OPENMP沒發生作用? 未安裝?
08/05 08:37, 2F

08/05 10:53, , 3F
some warnning : loop index must be signed ?
08/05 10:53, 3F

08/05 11:07, , 4F
樓上這個問題要看版本 3.0可以用unsigned 2.5不行
08/05 11:07, 4F

08/05 11:23, , 5F
請教 g 大如何看compiler openmp 版本?vc9 便 < 3.0
08/05 11:23, 5F

08/05 11:53, , 6F
原來是這樣子 感謝二樓
08/05 11:53, 6F

08/05 13:23, , 7F
dev c++有下-fopenmp嗎
08/05 13:23, 7F

08/05 13:47, , 8F
= =?應該很多人都建議不要用dev c++吧.他的gnu很久沒更
08/05 13:47, 8F

08/05 13:47, , 9F
08/05 13:47, 9F

08/05 14:02, , 10F
樓上,他的 gnu 是什麼意思?你要說的是他的 gcc/g++ 吧XD
08/05 14:02, 10F

08/05 14:07, , 11F
恩,我的意思是gcc/g++.
08/05 14:07, 11F
文章代碼(AID): #1EEiZFpo (C_and_CPP)
文章代碼(AID): #1EEiZFpo (C_and_CPP)