TBB #06: C++ Optimized Memory Allocators and Thread-Safe Concurrent Containerss
How to build TBB enabled optimized C++ program using tbb allocator, scalable allocator, cache aligned allocator, and how to use thread-safe containers such as concurrent_vector.
We will also learn how to build debugging build for TBB enabled application with tbb.lib, tbbmalloc.lib, -ltbb -ltbbmalloc, etc.
For release build with optimization switch -O3
clang++ -std=c++17 -O3 alloc.cpp -ltbb -ltbbmalloc -o c.exe
g++ -std=c++17 -O3 alloc.cpp -ltbb -ltbbmalloc -o g.exe
For debugging build without optimization, debugging switch -g
clang++ -std=c++17 -O0 -g -DTBB_USE_DEBUG=1 alloc.cpp -ltbb_debug -ltbbmalloc_debug -o c.exe
g++ -std=c++17 -O0 -g -DTBB_USE_DEBUG=1 alloc.cpp -ltbb_debug -ltbbmalloc_debug -o g.exe
For Microsoft compiler optimized release build
cl /EHsc /std:c++17 /MD /O2 /DTBB_SUPPRESS_DEPRECATED_MESSAGES tbbmalloc.lib alloc.cpp /Fe: m.exe
For Microsoft Compiler for debugging build
cl /EHsc /std:c++17 /MDd /D_DEBUG /DTBB_SUPPRESS_DEPRECATED_MESSAGES tbbmalloc_debug.lib alloc.cpp /Fe: m.exe
Download Source Code:
http://www.TalkPlayFun.com/download/tbb_linear_algebra/06-Allocators.zip
References:
Threading Building Blocks (TBB)
https://www.threadingbuildingblocks.org/intel-tbb-tutorial
Documentation, Training, & Code Samples
https://software.intel.com/en-us/tbb/documentation#training
Allocator Concept
https://software.intel.com/en-us/node/506256
tbb::tbb_allocator - https://software.intel.com/en-us/node/506257
Template class for scalable memory allocation if available; possibly non-scalable otherwise.
tbb::scalable_allocator - https://software.intel.com/en-us/node/506258
A scalable_allocator allocates and frees memory in a way that scales with the number of processors. A scalable_allocator models the Allocator Concept. Using a scalable_allocator in place of std::allocator may improve program performance.
tbb::cache_aligned_allocator - https://software.intel.com/en-us/node/506260
Template class for allocating memory in a way that avoids false sharing. A cache_aligned_allocator allocates memory on cache line boundaries, in order to avoid false sharing.
tbb::zero_allocator - https://software.intel.com/en-us/node/506261
A zero_allocator allocates zeroed memory. A zero_allocator can be instantiated for any class A that models the Allocator concept. The default for A is tbb_allocator. A zero_allocator forwards allocation requests to A and zeros the allocation before returning it.
Containers - https://software.intel.com/en-us/node/506169
tbb::concurrent_vector - https://software.intel.com/en-us/node/506203
Template class for a vector that can be concurrently grown and accessed.
TBB #01: Installing C++ Compilers and Environment Settings
https://www.youtube.com/watch?v=W8t3yJC05lk&list=PL1_C6uWTeBDFvAj45SFsdM98mESge4zm_&index=2
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «TBB #06: C++ Optimized Memory Allocators and Thread-Safe Concurrent Containerss», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.