Open 648trindade opened 5 years ago
I believe the issue is that commmap
is modified concurrently by multiple threads, which isn't officially supported by the C++ standard, but seems to work when preallocating the slots.
Can you try increasing the preallocation in numalize.cpp
, line 611, to something like 1000*1000*1000
? (You are currently seeing a crash just above the current preallocation of 100*1000*1000
).
Computer: NUMA 8 nodes with 1 Intel Xeon E5-4617 each (48 threads in total), 488GB DRAM OS: Debian Stretch Software: GCC 7.3, Intel Pin 3.7, Ondes3D 1.0 (OpenMP version) Also tested with GCC 6, Intel Pin 3.2 and 3.6, LBM 2D, LULESH and CoMD applications
By running the tool for trace communications (-c) from Ondes3D application (cell grid size 500x500x500), the application is killed with the following message:
By attaching gdb I can get the following stack trace when the error occours:
The source line from numalize is always the same (line 101):
Always happens when the tool is inserting a new entry to the map (when there is no mapped value for key
line
on thecommmap
). The size ofcommmap
at time of the crash has a few variations: 100663361 to 100663365 elements in some executions I made with Ondes3D. The tool works fine if the application uses smaller grid parametersI believe that the error is in the STL port from Intel PIN, the tool code looks ok. Changing
commmap
fromunordered_map
tomap
only changes the content of stack trace: the tool keeps crashing.