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 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.