作者kasase (King)
看板C_and_CPP
標題Re: [問題] OpenMP + STL一問
時間Fri Sep 18 21:58:26 2009
43
依照你的描述是希望有多個thread同時執行一個for迴圈
所以應該要寫#pragma omp parallel for private(it, newit)
不然語意是各個thread跑自己的for
※ 引述《DRLai (蘇打)》之銘言:
: #pragma omp parallel private(it, newit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: for( it = myArray.begin() ; it != myArray.end() ; ++it ) {
: // convert (*it) to new myclassB
: newit = convert( (*it) );
: if( myArray2.find( newit ) != myArray2.end() ) {
: // 如果轉換後可以在myArray2找到,則新增資料到myArray3
: newArray3.id = idCounter++;
: myArray3.insert( newArray3 );
: }
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.244.158
推 DRLai:我嘗試過加上for..但是compiler會顯示錯誤@@ 09/19 00:35
→ kasase:另外,compile的時候有加-fopenmp吧? 09/19 06:58
推 DRLai:有加入,其他地方也使用平行處理是OK的,只是這一段沒辦法 09/19 08:54
→ kasase:錯誤的訊息可以貼一下嗎 09/19 10:23
推 DRLai:invalid type for iteration variable 'it' 09/19 10:56
→ DRLai:invalid controlling predicate 09/19 10:56
→ DRLai:invalid increment expression 09/19 10:56
→ DRLai:如果加上for會有上面三個錯誤...如果把for拿掉就沒事@@ 09/19 10:56
→ DRLai:請問這該怎麼處理咧@@~~~ 09/19 10:56
我查了一下,openmp不支援用iterator的loop,index必須是int或long的標準型態
※ 編輯: kasase 來自: 140.112.244.158 (09/19 11:28)