Private unordered map in openMP

Hi everyone, I am trying to assign one private unordered map per thread. As you know, I cannot declare a new array inside the parallel section and make it private. So I declared a map: typedef boost::unordered_map<int, int> Map_t; ... Map_t localMap; and passed it to the parallel section as private (please see http://www.nabble.com/file/p25088091/doesnotwork.cc doesnotwork.cc ) #pragma omp parallel default(shared) private(iam, i, localMap) { ... } I got the following error: openmptry.cc: In function ‘int main(int, char**)’: openmptry.cc:0: internal compiler error: in lower_stmt, at gimple-low.c:282 Please submit a full bug report, ... ... I can solve this problem by declaring a map pointer, creating local copies using 'new' and changing "++(*localMap)[iam]" to "++localMap[iam]" "localMap->begin()" to "localMap.begin()" etc... (please see http://www.nabble.com/file/p25088091/works.cc works.cc ) But these changes will require lots of editing in the code. So, is there a way to use the map directly? Thanks so much in advance! PS: desired output for these test codes is (in arbitrary order): 2: 2 -> 1 7: 7 -> 1 5: 5 -> 1 6: 6 -> 1 4: 4 -> 1 1: 1 -> 1 3: 3 -> 1 0: 0 -> 1 -- View this message in context: http://www.nabble.com/Private-unordered-map-in-openMP-tp25088091p25088091.ht... Sent from the Boost - Users mailing list archive at Nabble.com.
participants (1)
-
MeMooMeM