看板 C_and_CPP 關於我們 聯絡資訊
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)