Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
2466 Discussions

std::map with tbb scalable allocator and tbbmalloc_proxy

SATI__RAJAT
Beginner
892 Views

While profiling my application I found that a lot of time was being spent on the memory allocation and deallocation so I switched to tbb scalable allocator which helped a lot. I have not explicitly changed the code to allocate the memory through scalable allocator but I am linking my application with tbbmalloc_proxy.so library which is doing its job.  But still, the profiling tool shows some red areas where I am inserting some data into a map.
So my questing is that, do I need to explicitly define custom memory allocator for map e.g

std::map<const key,T,scalable_allocator<std::pair<const Key, T>> 

or just linking to the tbbmalloc_proxy.so library will do the job?

 

0 Kudos
1 Reply
Nikita_P_Intel
Employee
892 Views

Hi,

You are using it right. Linking to tbbmalloc_proxy.so library will substitute all standard allocation routines to tbb ones, and that is enough. However, I recommend to try LD_PRELOAD option as described here. It just ensures that tbbmalloc_proxy.so symbols for malloc/free will be loaded firstly.

On the other hand, you can try one of our concurrent containers, if you faced insertion bottleneck.

- Nikita

0 Kudos
Reply