Re: [問題] OpenMP + STL一問

看板C_and_CPP作者 (King)時間14年前 (2009/09/18 21:58), 編輯推噓3(306)
留言9則, 2人參與, 最新討論串2/2 (看更多)
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

09/19 00:35, , 1F
我嘗試過加上for..但是compiler會顯示錯誤@@
09/19 00:35, 1F

09/19 06:58, , 2F
另外,compile的時候有加-fopenmp吧?
09/19 06:58, 2F

09/19 08:54, , 3F
有加入,其他地方也使用平行處理是OK的,只是這一段沒辦法
09/19 08:54, 3F

09/19 10:23, , 4F
錯誤的訊息可以貼一下嗎
09/19 10:23, 4F

09/19 10:56, , 5F
invalid type for iteration variable 'it'
09/19 10:56, 5F

09/19 10:56, , 6F
invalid controlling predicate
09/19 10:56, 6F

09/19 10:56, , 7F
invalid increment expression
09/19 10:56, 7F

09/19 10:56, , 8F
如果加上for會有上面三個錯誤...如果把for拿掉就沒事@@
09/19 10:56, 8F

09/19 10:56, , 9F
請問這該怎麼處理咧@@~~~
09/19 10:56, 9F
我查了一下,openmp不支援用iterator的loop,index必須是int或long的標準型態 ※ 編輯: kasase 來自: 140.112.244.158 (09/19 11:28)
文章代碼(AID): #1Aiv855P (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Aiv855P (C_and_CPP)