tbb_main.cpp
Go to the documentation of this file.
/*
Copyright (c) 2005-2020 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include "tbb/tbb_config.h"
#include "tbb/global_control.h"
#include "tbb_main.h"
#include "governor.h"
#include "market.h"
#include "tbb_misc.h"
#include "itt_notify.h"
namespace tbb {
namespace internal {
//------------------------------------------------------------------------
// Begin shared data layout.
// The following global data items are mostly read-only after initialization.
//------------------------------------------------------------------------
static const char _pad[NFS_MaxLineSize - sizeof(int)] = {};
//------------------------------------------------------------------------
// governor data
basic_tls<uintptr_t> governor::theTLS;
unsigned governor::DefaultNumberOfThreads;
size_t governor::DefaultPageSize;
rml::tbb_factory governor::theRMLServerFactory;
bool governor::UsePrivateRML;
bool governor::is_speculation_enabled;
bool governor::is_rethrow_broken;
//------------------------------------------------------------------------
// market data
market* market::theMarket;
market::global_market_mutex_type market::theMarketMutex;
//------------------------------------------------------------------------
// One time initialization data
atomic<int> __TBB_InitOnce::count;
__TBB_atomic_flag __TBB_InitOnce::InitializationLock;
bool __TBB_InitOnce::InitializationDone;
#if DO_ITT_NOTIFY
static bool ITT_Present;
static atomic<bool> ITT_InitializationDone;
#endif
#if !(_WIN32||_WIN64) || __TBB_SOURCE_DIRECTLY_INCLUDED
static __TBB_InitOnce __TBB_InitOnceHiddenInstance;
#endif
//------------------------------------------------------------------------
// generic_scheduler data
generic_scheduler* (*AllocateSchedulerPtr)( market&, bool );
#if __TBB_OLD_PRIMES_RNG
static const unsigned Primes[] = {
0x9e3779b1, 0xffe6cc59, 0x2109f6dd, 0x43977ab5,
0xba5703f5, 0xb495a877, 0xe1626741, 0x79695e6b,
0xbc98c09f, 0xd5bee2b3, 0x287488f9, 0x3af18231,
0x9677cd4d, 0xbe3a6929, 0xadc6a877, 0xdcf0674b,
0xbe4d6fe9, 0x5f15e201, 0x99afc3fd, 0xf3f16801,
0xe222cfff, 0x24ba5fdb, 0x0620452d, 0x79f149e3,
0xc8b93f49, 0x972702cd, 0xb07dd827, 0x6c97d5ed,
0x085a3d61, 0x46eb5ea7, 0x3d9910ed, 0x2e687b5b,
0x29609227, 0x6eb081f1, 0x0954c4e1, 0x9d114db9,
0x542acfa9, 0xb3e6bd7b, 0x0742d917, 0xe9f3ffa7,
0x54581edb, 0xf2480f45, 0x0bb9288f, 0xef1affc7,
0x85fa0ca7, 0x3ccc14db, 0xe6baf34b, 0x343377f7,
0x5ca19031, 0xe6d9293b, 0xf0a9f391, 0x5d2e980b,
0xfc411073, 0xc3749363, 0xb892d829, 0x3549366b,
0x629750ad, 0xb98294e5, 0x892d9483, 0xc235baf3,
0x3d2402a3, 0x6bdef3c9, 0xbec333cd, 0x40c9520f
};
//------------------------------------------------------------------------
// End of shared data layout
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// Shared data accessors
//------------------------------------------------------------------------
unsigned GetPrime ( unsigned seed ) {
return Primes[seed%(sizeof(Primes)/sizeof(Primes[0]))];
}
#endif //__TBB_OLD_PRIMES_RNG
//------------------------------------------------------------------------
// __TBB_InitOnce
//------------------------------------------------------------------------
void __TBB_InitOnce::add_ref() {
if( ++count==1 )
governor::acquire_resources();
}
void __TBB_InitOnce::remove_ref() {
int k = --count;
__TBB_ASSERT(k>=0,"removed __TBB_InitOnce ref that was not added?");
if( k==0 ) {
governor::release_resources();
ITT_FINI_ITTLIB();
}
}
//------------------------------------------------------------------------
// One-time Initializations
//------------------------------------------------------------------------
void initialize_cache_aligned_allocator();
void Scheduler_OneTimeInitialization ( bool itt_present );
#if DO_ITT_NOTIFY
static __itt_domain *tbb_domains[ITT_NUM_DOMAINS] = {};
struct resource_string {
const char *str;
__itt_string_handle *itt_str_handle;
};
//
// populate resource strings
//
#define TBB_STRING_RESOURCE( index_name, str ) { str, NULL },
static resource_string strings_for_itt[] = {
#include "tbb/internal/_tbb_strings.h"
{ "num_resource_strings", NULL }
};
#undef TBB_STRING_RESOURCE
static __itt_string_handle *ITT_get_string_handle(int idx) {
__TBB_ASSERT( idx >= 0 && idx < NUM_STRINGS, "string handle out of valid range");
return (idx >= 0 && idx < NUM_STRINGS) ? strings_for_itt[idx].itt_str_handle : NULL;
}
static void ITT_init_domains() {
tbb_domains[ITT_DOMAIN_MAIN] = __itt_domain_create( _T("tbb") );
tbb_domains[ITT_DOMAIN_MAIN]->flags = 1;
tbb_domains[ITT_DOMAIN_FLOW] = __itt_domain_create( _T("tbb.flow") );
tbb_domains[ITT_DOMAIN_FLOW]->flags = 1;
tbb_domains[ITT_DOMAIN_ALGO] = __itt_domain_create( _T("tbb.algorithm") );
tbb_domains[ITT_DOMAIN_ALGO]->flags = 1;
}
static void ITT_init_strings() {
for ( int i = 0; i < NUM_STRINGS; ++i ) {
#if _WIN32||_WIN64
strings_for_itt[i].itt_str_handle = __itt_string_handle_createA( strings_for_itt[i].str );
#else
strings_for_itt[i].itt_str_handle = __itt_string_handle_create( strings_for_itt[i].str );
#endif
}
}
static void ITT_init() {
ITT_init_domains();
ITT_init_strings();
}
void ITT_DoUnsafeOneTimeInitialization () {
// Double check ITT_InitializationDone is necessary because the first check
// in ITT_DoOneTimeInitialization is not guarded with the __TBB_InitOnce lock.
if ( !ITT_InitializationDone ) {
ITT_Present = (__TBB_load_ittnotify()!=0);
if (ITT_Present) ITT_init();
ITT_InitializationDone = true;
ITT_SYNC_CREATE(&market::theMarketMutex, SyncType_GlobalLock, SyncObj_SchedulerInitialization);
}
}
extern "C"
void ITT_DoOneTimeInitialization() {
if ( !ITT_InitializationDone ) {
__TBB_InitOnce::lock();
ITT_DoUnsafeOneTimeInitialization();
__TBB_InitOnce::unlock();
}
}
#endif /* DO_ITT_NOTIFY */
void DoOneTimeInitializations() {
suppress_unused_warning(_pad);
__TBB_InitOnce::lock();
// No fence required for load of InitializationDone, because we are inside a critical section.
if( !__TBB_InitOnce::InitializationDone ) {
__TBB_InitOnce::add_ref();
if( GetBoolEnvironmentVariable("TBB_VERSION") )
PrintVersion();
bool itt_present = false;
#if DO_ITT_NOTIFY
ITT_DoUnsafeOneTimeInitialization();
itt_present = ITT_Present;
#endif /* DO_ITT_NOTIFY */
initialize_cache_aligned_allocator();
governor::initialize_rml_factory();
Scheduler_OneTimeInitialization( itt_present );
// Force processor groups support detection
governor::default_num_threads();
// Force OS regular page size detection
governor::default_page_size();
// Dump version data
governor::print_version_info();
PrintExtraVersionInfo( "Tools support", itt_present ? "enabled" : "disabled" );
__TBB_InitOnce::InitializationDone = true;
}
__TBB_InitOnce::unlock();
}
#if (_WIN32||_WIN64) && !__TBB_SOURCE_DIRECTLY_INCLUDED
extern "C" bool WINAPI DllMain( HANDLE /*hinstDLL*/, DWORD reason, LPVOID lpvReserved ) {
switch( reason ) {
case DLL_PROCESS_ATTACH:
__TBB_InitOnce::add_ref();
break;
case DLL_PROCESS_DETACH:
// Since THREAD_DETACH is not called for the main thread, call auto-termination
// here as well - but not during process shutdown (due to risk of a deadlock).
if( lpvReserved==NULL ) // library unload
governor::terminate_auto_initialized_scheduler();
__TBB_InitOnce::remove_ref();
// It is assumed that InitializationDone is not set after DLL_PROCESS_DETACH,
// and thus no race on InitializationDone is possible.
if( __TBB_InitOnce::initialization_done() ) {
// Remove reference that we added in DoOneTimeInitializations.
__TBB_InitOnce::remove_ref();
}
break;
case DLL_THREAD_DETACH:
governor::terminate_auto_initialized_scheduler();
break;
}
return true;
}
#endif /* (_WIN32||_WIN64) && !__TBB_SOURCE_DIRECTLY_INCLUDED */
void itt_store_pointer_with_release_v3( void* dst, void* src ) {
ITT_NOTIFY(sync_releasing, dst);
__TBB_store_with_release(*static_cast<void**>(dst),src);
}
void* itt_load_pointer_with_acquire_v3( const void* src ) {
void* result = __TBB_load_with_acquire(*static_cast<void*const*>(src));
ITT_NOTIFY(sync_acquired, const_cast<void*>(src));
return result;
}
#if DO_ITT_NOTIFY
void call_itt_notify_v5(int t, void *ptr) {
switch (t) {
case 0: ITT_NOTIFY(sync_prepare, ptr); break;
case 1: ITT_NOTIFY(sync_cancel, ptr); break;
case 2: ITT_NOTIFY(sync_acquired, ptr); break;
case 3: ITT_NOTIFY(sync_releasing, ptr); break;
}
}
#else
void call_itt_notify_v5(int /*t*/, void* /*ptr*/) {}
#endif
#if DO_ITT_NOTIFY
const __itt_id itt_null_id = {0, 0, 0};
static inline __itt_domain* get_itt_domain( itt_domain_enum idx ) {
if (tbb_domains[idx] == NULL) {
ITT_DoOneTimeInitialization();
}
return tbb_domains[idx];
}
static inline void itt_id_make(__itt_id *id, void* addr, unsigned long long extra) {
*id = __itt_id_make(addr, extra);
}
static inline void itt_id_create(const __itt_domain *domain, __itt_id id) {
ITTNOTIFY_VOID_D1(id_create, domain, id);
}
void itt_make_task_group_v7( itt_domain_enum domain, void *group, unsigned long long group_extra,
void *parent, unsigned long long parent_extra, string_index name_index ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id group_id = itt_null_id;
__itt_id parent_id = itt_null_id;
itt_id_make( &group_id, group, group_extra );
itt_id_create( d, group_id );
if ( parent ) {
itt_id_make( &parent_id, parent, parent_extra );
}
__itt_string_handle *n = ITT_get_string_handle(name_index);
ITTNOTIFY_VOID_D3(task_group, d, group_id, parent_id, n);
}
}
void itt_metadata_str_add_v7( itt_domain_enum domain, void *addr, unsigned long long addr_extra,
string_index key, const char *value ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id id = itt_null_id;
itt_id_make( &id, addr, addr_extra );
__itt_string_handle *k = ITT_get_string_handle(key);
size_t value_length = strlen( value );
#if _WIN32||_WIN64
ITTNOTIFY_VOID_D4(metadata_str_addA, d, id, k, value, value_length);
#else
ITTNOTIFY_VOID_D4(metadata_str_add, d, id, k, value, value_length);
#endif
}
}
void itt_metadata_ptr_add_v11( itt_domain_enum domain, void *addr, unsigned long long addr_extra,
string_index key, void *value ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id id = itt_null_id;
itt_id_make( &id, addr, addr_extra );
__itt_string_handle *k = ITT_get_string_handle(key);
#if __TBB_x86_32
ITTNOTIFY_VOID_D5(metadata_add, d, id, k, __itt_metadata_u32, 1, value);
#else
ITTNOTIFY_VOID_D5(metadata_add, d, id, k, __itt_metadata_u64, 1, value);
#endif
}
}
void itt_relation_add_v7( itt_domain_enum domain, void *addr0, unsigned long long addr0_extra,
itt_relation relation, void *addr1, unsigned long long addr1_extra ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id id0 = itt_null_id;
__itt_id id1 = itt_null_id;
itt_id_make( &id0, addr0, addr0_extra );
itt_id_make( &id1, addr1, addr1_extra );
ITTNOTIFY_VOID_D3(relation_add, d, id0, (__itt_relation)relation, id1);
}
}
void itt_task_begin_v7( itt_domain_enum domain, void *task, unsigned long long task_extra,
void *parent, unsigned long long parent_extra, string_index name_index ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id task_id = itt_null_id;
__itt_id parent_id = itt_null_id;
if ( task ) {
itt_id_make( &task_id, task, task_extra );
}
if ( parent ) {
itt_id_make( &parent_id, parent, parent_extra );
}
__itt_string_handle *n = ITT_get_string_handle(name_index);
ITTNOTIFY_VOID_D3(task_begin, d, task_id, parent_id, n );
}
}
void itt_task_end_v7( itt_domain_enum domain ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
ITTNOTIFY_VOID_D0(task_end, d);
}
}
void itt_region_begin_v9( itt_domain_enum domain, void *region, unsigned long long region_extra,
void *parent, unsigned long long parent_extra, string_index /* name_index */ ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id region_id = itt_null_id;
__itt_id parent_id = itt_null_id;
itt_id_make( &region_id, region, region_extra );
if ( parent ) {
itt_id_make( &parent_id, parent, parent_extra );
}
ITTNOTIFY_VOID_D3(region_begin, d, region_id, parent_id, NULL );
}
}
void itt_region_end_v9( itt_domain_enum domain, void *region, unsigned long long region_extra ) {
if ( __itt_domain *d = get_itt_domain( domain ) ) {
__itt_id region_id = itt_null_id;
itt_id_make( &region_id, region, region_extra );
ITTNOTIFY_VOID_D1( region_end, d, region_id );
}
}
#else // DO_ITT_NOTIFY
void itt_make_task_group_v7( itt_domain_enum /*domain*/, void* /*group*/, unsigned long long /*group_extra*/,
void* /*parent*/, unsigned long long /*parent_extra*/, string_index /*name_index*/ ) { }
void itt_metadata_str_add_v7( itt_domain_enum /*domain*/, void* /*addr*/, unsigned long long /*addr_extra*/,
string_index /*key*/, const char* /*value*/ ) { }
void itt_relation_add_v7( itt_domain_enum /*domain*/, void* /*addr0*/, unsigned long long /*addr0_extra*/,
itt_relation /*relation*/, void* /*addr1*/, unsigned long long /*addr1_extra*/ ) { }
void itt_metadata_ptr_add_v11( itt_domain_enum /*domain*/, void * /*addr*/, unsigned long long /*addr_extra*/,
string_index /*key*/, void * /*value*/ ) {}
void itt_task_begin_v7( itt_domain_enum /*domain*/, void* /*task*/, unsigned long long /*task_extra*/,
void* /*parent*/, unsigned long long /*parent_extra*/, string_index /*name_index*/ ) { }
void itt_task_end_v7( itt_domain_enum /*domain*/ ) { }
void itt_region_begin_v9( itt_domain_enum /*domain*/, void* /*region*/, unsigned long long /*region_extra*/,
void* /*parent*/, unsigned long long /*parent_extra*/, string_index /*name_index*/ ) { }
void itt_region_end_v9( itt_domain_enum /*domain*/, void* /*region*/, unsigned long long /*region_extra*/ ) { }
#endif // DO_ITT_NOTIFY
void* itt_load_pointer_v3( const void* src ) {
//TODO: replace this with __TBB_load_relaxed
void* result = *static_cast<void*const*>(src);
return result;
}
void itt_set_sync_name_v3( void* obj, const tchar* name) {
ITT_SYNC_RENAME(obj, name);
suppress_unused_warning(obj, name);
}
class control_storage {
friend class tbb::interface9::global_control;
protected:
size_t my_active_value;
atomic<global_control*> my_head;
spin_mutex my_list_mutex;
virtual size_t default_value() const = 0;
virtual void apply_active() const {}
virtual bool is_first_arg_preferred(size_t a, size_t b) const {
return a>b; // prefer max by default
}
virtual size_t active_value() const {
return my_head? my_active_value : default_value();
}
};
class allowed_parallelism_control : public padded<control_storage> {
virtual size_t default_value() const __TBB_override {
return max(1U, governor::default_num_threads());
}
virtual bool is_first_arg_preferred(size_t a, size_t b) const __TBB_override {
return a<b; // prefer min allowed parallelism
}
virtual void apply_active() const __TBB_override {
__TBB_ASSERT( my_active_value>=1, NULL );
// -1 to take master into account
market::set_active_num_workers( my_active_value-1 );
}
virtual size_t active_value() const __TBB_override {
/* Reading of my_active_value is not synchronized with possible updating
of my_head by other thread. It's ok, as value of my_active_value became
not invalid, just obsolete. */
if (!my_head)
return default_value();
// non-zero, if market is active
const size_t workers = market::max_num_workers();
// We can't exceed market's maximal number of workers.
// +1 to take master into account
return workers? min(workers+1, my_active_value): my_active_value;
}
public:
size_t active_value_if_present() const {
return my_head? my_active_value : 0;
}
};
class stack_size_control : public padded<control_storage> {
virtual size_t default_value() const __TBB_override {
return tbb::internal::ThreadStackSize;
}
virtual void apply_active() const __TBB_override {
#if __TBB_WIN8UI_SUPPORT && (_WIN32_WINNT < 0x0A00)
__TBB_ASSERT( false, "For Windows 8 Store* apps we must not set stack size" );
#endif
}
};
static allowed_parallelism_control allowed_parallelism_ctl;
static stack_size_control stack_size_ctl;
static control_storage *controls[] = {&allowed_parallelism_ctl, &stack_size_ctl};
unsigned market::app_parallelism_limit() {
return allowed_parallelism_ctl.active_value_if_present();
}
} // namespace internal
namespace interface9 {
using namespace internal;
using namespace tbb::internal;
void global_control::internal_create() {
__TBB_ASSERT_RELEASE( my_param < global_control::parameter_max, NULL );
control_storage *const c = controls[my_param];
spin_mutex::scoped_lock lock(c->my_list_mutex);
if (!c->my_head || c->is_first_arg_preferred(my_value, c->my_active_value)) {
c->my_active_value = my_value;
// to guarantee that apply_active() is called with current active value,
// calls it here and in internal_destroy() under my_list_mutex
c->apply_active();
}
my_next = c->my_head;
// publish my_head, at this point my_active_value must be valid
c->my_head = this;
}
void global_control::internal_destroy() {
global_control *prev = 0;
__TBB_ASSERT_RELEASE( my_param < global_control::parameter_max, NULL );
control_storage *const c = controls[my_param];
__TBB_ASSERT( c->my_head, NULL );
// Concurrent reading and changing global parameter is possible.
// In this case, my_active_value may not match current state of parameters.
// This is OK because:
// 1) my_active_value is either current or previous
// 2) my_active_value is current on internal_destroy leave
spin_mutex::scoped_lock lock(c->my_list_mutex);
size_t new_active = (size_t)-1, old_active = c->my_active_value;
if ( c->my_head != this )
new_active = c->my_head->my_value;
else if ( c->my_head->my_next )
new_active = c->my_head->my_next->my_value;
// if there is only one element, new_active will be set later
for ( global_control *curr = c->my_head; curr; prev = curr, curr = curr->my_next )
if ( curr == this ) {
if ( prev )
prev->my_next = my_next;
else
c->my_head = my_next;
} else
if (c->is_first_arg_preferred(curr->my_value, new_active))
new_active = curr->my_value;
if ( !c->my_head ) {
__TBB_ASSERT( new_active==(size_t)-1, NULL );
new_active = c->default_value();
}
if ( new_active != old_active ) {
c->my_active_value = new_active;
c->apply_active();
}
}
size_t global_control::active_value( int param ) {
__TBB_ASSERT_RELEASE( param < global_control::parameter_max, NULL );
return controls[param]->active_value();
}
} // tbb::interface9
} // namespace tbb
global_control.h
_tbb_strings.h
__TBB_atomic_flag
__TBB_atomic __TBB_Flag __TBB_atomic_flag
Definition: gcc_generic.h:106
tbb_config.h
__TBB_ASSERT_RELEASE
#define __TBB_ASSERT_RELEASE(predicate, message)
Definition: tbb_stddef.h:134
__TBB_ASSERT
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
__TBB_override
#define __TBB_override
Definition: tbb_stddef.h:240
governor.h
itt_notify.h
_T
#define _T(string_literal)
Standard Windows style macro to markup the string literals.
Definition: itt_notify.h:59
ITT_SYNC_RENAME
#define ITT_SYNC_RENAME(obj, name)
Definition: itt_notify.h:116
ITT_SYNC_CREATE
#define ITT_SYNC_CREATE(obj, type, name)
Definition: itt_notify.h:115
ITT_FINI_ITTLIB
#define ITT_FINI_ITTLIB()
Definition: itt_notify.h:114
ITT_NOTIFY
#define ITT_NOTIFY(name, obj)
Definition: itt_notify.h:112
market.h
tbb_main.h
tbb_misc.h
relation
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation relation
Definition: ittnotify_static.h:207
sync_cancel
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p sync_cancel
Definition: ittnotify_static.h:102
lock
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void * lock
Definition: ittnotify_static.h:121
addr
void * addr
Definition: ittnotify_static.h:91
task
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task * task
Definition: ittnotify_static.h:119
d
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d
Definition: ittnotify_static.h:109
relation_add
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu relation_add
Definition: ittnotify_static.h:207
task_end
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p task_end
Definition: ittnotify_static.h:189
name
void const char const char int ITT_FORMAT __itt_group_sync x void const char * name
Definition: ittnotify_static.h:93
parent
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id parent
Definition: ittnotify_static.h:176
value
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
Definition: ittnotify_static.h:192
domain
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t * domain
Definition: ittnotify_static.h:153
task_begin
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu task_begin
Definition: ittnotify_static.h:187
sync_releasing
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p sync_releasing
Definition: ittnotify_static.h:104
region_begin
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu region_begin
Definition: ittnotify_static.h:176
int
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d int
Definition: ittnotify_static.h:217
metadata_add
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu metadata_add
Definition: ittnotify_static.h:198
key
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle * key
Definition: ittnotify_static.h:198
tbb::internal::NFS_MaxLineSize
const size_t NFS_MaxLineSize
Compile-time constant that is upper bound on cache line/sector size.
Definition: tbb_stddef.h:216
__itt_domain_create
#define __itt_domain_create
Definition: ittnotify.h:1791
__itt_id_make
ITT_INLINE __itt_id ITTAPI __itt_id_make(void *addr, unsigned long long extra) ITT_INLINE_ATTRIBUTE
A convenience function is provided to create an ID without domain control.
Definition: ittnotify.h:1870
__itt_string_handle_create
#define __itt_string_handle_create
Definition: ittnotify.h:1980
__itt_string_handle_createA
__itt_string_handle *ITTAPI __itt_string_handle_createA(const char *name)
Create a string handle. Create and return handle value that can be associated with a string....
__itt_metadata_u64
@ __itt_metadata_u64
Definition: ittnotify.h:2405
__itt_metadata_u32
@ __itt_metadata_u32
Definition: ittnotify.h:2407
__itt_relation
__itt_relation
The kind of relation between two instances is specified by the enumerated type __itt_relation....
Definition: ittnotify.h:2619
tbb
The graph class.
Definition: serial/tbb/parallel_for.h:46
tbb::tchar
char tchar
Unicode support.
Definition: itt_notify.h:57
tbb::internal
Identifiers declared inside namespace internal should never be used directly by client code.
Definition: atomic.h:65
tbb::internal::itt_region_begin_v9
void __TBB_EXPORTED_FUNC itt_region_begin_v9(itt_domain_enum domain, void *region, unsigned long long region_extra, void *parent, unsigned long long parent_extra, string_index name_index)
Definition: tbb_main.cpp:431
tbb::internal::__TBB_load_with_acquire
T __TBB_load_with_acquire(const volatile T &location)
Definition: tbb_machine.h:712
tbb::internal::__TBB_load_ittnotify
int __TBB_load_ittnotify()
tbb::internal::__TBB_InitOnceHiddenInstance
static __TBB_InitOnce __TBB_InitOnceHiddenInstance
Definition: tbb_main.cpp:68
tbb::internal::initialize_cache_aligned_allocator
void initialize_cache_aligned_allocator()
Defined in cache_aligned_allocator.cpp.
Definition: cache_aligned_allocator.cpp:132
tbb::internal::string_index
string_index
Definition: tbb_profiling.h:28
tbb::internal::NUM_STRINGS
@ NUM_STRINGS
Definition: tbb_profiling.h:30
tbb::internal::GetPrime
unsigned GetPrime(unsigned seed)
tbb::internal::stack_size_ctl
static stack_size_control stack_size_ctl
Definition: tbb_main.cpp:508
tbb::internal::itt_relation
itt_relation
Definition: tbb_profiling.h:35
tbb::internal::call_itt_notify_v5
void __TBB_EXPORTED_FUNC call_itt_notify_v5(int t, void *ptr)
Definition: tbb_main.cpp:292
tbb::internal::itt_region_end_v9
void __TBB_EXPORTED_FUNC itt_region_end_v9(itt_domain_enum domain, void *region, unsigned long long region_extra)
Definition: tbb_main.cpp:434
tbb::internal::suppress_unused_warning
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
Definition: tbb_stddef.h:398
tbb::internal::DoOneTimeInitializations
void DoOneTimeInitializations()
Performs thread-safe lazy one-time general TBB initialization.
Definition: tbb_main.cpp:215
tbb::internal::itt_task_end_v7
void __TBB_EXPORTED_FUNC itt_task_end_v7(itt_domain_enum domain)
Definition: tbb_main.cpp:429
tbb::internal::Scheduler_OneTimeInitialization
void Scheduler_OneTimeInitialization(bool itt_present)
Defined in scheduler.cpp.
Definition: scheduler.cpp:52
tbb::internal::max
T max(const T &val1, const T &val2)
Utility template function returning greater of the two values.
Definition: tbb_misc.h:119
tbb::internal::itt_relation_add_v7
void __TBB_EXPORTED_FUNC itt_relation_add_v7(itt_domain_enum domain, void *addr0, unsigned long long addr0_extra, itt_relation relation, void *addr1, unsigned long long addr1_extra)
Definition: tbb_main.cpp:420
tbb::internal::PrintExtraVersionInfo
void PrintExtraVersionInfo(const char *category, const char *format,...)
Prints arbitrary extra TBB version information on stderr.
Definition: tbb_misc.cpp:211
tbb::internal::itt_metadata_str_add_v7
void __TBB_EXPORTED_FUNC itt_metadata_str_add_v7(itt_domain_enum domain, void *addr, unsigned long long addr_extra, string_index key, const char *value)
Definition: tbb_main.cpp:417
tbb::internal::_pad
static const char _pad[NFS_MaxLineSize - sizeof(int)]
Padding in order to prevent false sharing.
Definition: tbb_main.cpp:34
tbb::internal::itt_domain_enum
itt_domain_enum
Definition: tbb_profiling.h:137
tbb::internal::ITT_DOMAIN_ALGO
@ ITT_DOMAIN_ALGO
Definition: tbb_profiling.h:137
tbb::internal::ITT_NUM_DOMAINS
@ ITT_NUM_DOMAINS
Definition: tbb_profiling.h:137
tbb::internal::ITT_DOMAIN_MAIN
@ ITT_DOMAIN_MAIN
Definition: tbb_profiling.h:137
tbb::internal::ITT_DOMAIN_FLOW
@ ITT_DOMAIN_FLOW
Definition: tbb_profiling.h:137
tbb::internal::GetBoolEnvironmentVariable
static bool GetBoolEnvironmentVariable(const char *name)
Definition: tbb_environment.h:38
tbb::internal::min
T min(const T &val1, const T &val2)
Utility template function returning lesser of the two values.
Definition: tbb_misc.h:110
tbb::internal::itt_set_sync_name_v3
void itt_set_sync_name_v3(void *obj, const tchar *name)
Definition: tbb_main.cpp:444
tbb::internal::itt_load_pointer_with_acquire_v3
void *__TBB_EXPORTED_FUNC itt_load_pointer_with_acquire_v3(const void *src)
Definition: tbb_main.cpp:276
tbb::internal::itt_load_pointer_v3
void *__TBB_EXPORTED_FUNC itt_load_pointer_v3(const void *src)
Definition: tbb_main.cpp:438
tbb::internal::allowed_parallelism_ctl
static allowed_parallelism_control allowed_parallelism_ctl
Definition: tbb_main.cpp:507
tbb::internal::itt_make_task_group_v7
void __TBB_EXPORTED_FUNC itt_make_task_group_v7(itt_domain_enum domain, void *group, unsigned long long group_extra, void *parent, unsigned long long parent_extra, string_index name_index)
Definition: tbb_main.cpp:414
tbb::internal::ThreadStackSize
const size_t ThreadStackSize
Definition: tbb_misc.h:54
tbb::internal::itt_store_pointer_with_release_v3
void __TBB_EXPORTED_FUNC itt_store_pointer_with_release_v3(void *dst, void *src)
Definition: tbb_main.cpp:271
tbb::internal::itt_metadata_ptr_add_v11
void __TBB_EXPORTED_FUNC itt_metadata_ptr_add_v11(itt_domain_enum domain, void *addr, unsigned long long addr_extra, string_index key, void *value)
Definition: tbb_main.cpp:423
tbb::internal::itt_task_begin_v7
void __TBB_EXPORTED_FUNC itt_task_begin_v7(itt_domain_enum domain, void *task, unsigned long long task_extra, void *parent, unsigned long long parent_extra, string_index name_index)
Definition: tbb_main.cpp:426
tbb::internal::controls
static control_storage * controls[]
Definition: tbb_main.cpp:510
tbb::internal::__TBB_store_with_release
void __TBB_store_with_release(volatile T &location, V value)
Definition: tbb_machine.h:716
tbb::internal::PrintVersion
void PrintVersion()
Prints TBB version information on stderr.
Definition: tbb_misc.cpp:206
internal
Definition: _flow_graph_async_msg_impl.h:24
tbb::interface9::global_control
Definition: global_control.h:25
tbb::interface9::global_control::parameter_max
@ parameter_max
Definition: global_control.h:30
tbb::interface9::global_control::active_value
static size_t active_value(parameter p)
Definition: global_control.h:59
tbb::interface9::global_control::internal_destroy
void __TBB_EXPORTED_METHOD internal_destroy()
Definition: tbb_main.cpp:539
tbb::interface9::global_control::internal_create
void __TBB_EXPORTED_METHOD internal_create()
Definition: tbb_main.cpp:523
tbb::interface9::global_control::my_next
global_control * my_next
Definition: global_control.h:65
tbb::spin_mutex
A lock that occupies a single byte.
Definition: spin_mutex.h:39
tbb::spin_mutex::scoped_lock
Represents acquisition of a mutex.
Definition: spin_mutex.h:53
tbb::internal::padded
Pads type T to fill out to a multiple of cache line size.
Definition: tbb_stddef.h:261
tbb::internal::governor::release_resources
static void release_resources()
Destroy the thread-local storage key and deinitialize RML.
Definition: governor.cpp:79
tbb::internal::governor::is_rethrow_broken
static bool is_rethrow_broken
Definition: governor.h:68
tbb::internal::governor::print_version_info
static void print_version_info()
Definition: governor.cpp:229
tbb::internal::governor::terminate_auto_initialized_scheduler
static void terminate_auto_initialized_scheduler()
Undo automatic initialization if necessary; call when a thread exits.
Definition: governor.h:144
tbb::internal::governor::acquire_resources
static void acquire_resources()
Create key for thread-local storage and initialize RML.
Definition: governor.cpp:67
tbb::internal::governor::DefaultPageSize
static size_t DefaultPageSize
Caches the size of OS regular memory page.
Definition: governor.h:60
tbb::internal::governor::theTLS
static basic_tls< uintptr_t > theTLS
TLS for scheduler instances associated with individual threads.
Definition: governor.h:54
tbb::internal::governor::default_page_size
static size_t default_page_size()
Definition: governor.h:89
tbb::internal::governor::default_num_threads
static unsigned default_num_threads()
Definition: governor.h:84
tbb::internal::governor::theRMLServerFactory
static rml::tbb_factory theRMLServerFactory
Definition: governor.h:62
tbb::internal::governor::UsePrivateRML
static bool UsePrivateRML
Definition: governor.h:64
tbb::internal::governor::initialize_rml_factory
static void initialize_rml_factory()
Definition: governor.cpp:242
tbb::internal::governor::DefaultNumberOfThreads
static unsigned DefaultNumberOfThreads
Caches the maximal level of parallelism supported by the hardware.
Definition: governor.h:57
tbb::internal::governor::is_speculation_enabled
static bool is_speculation_enabled
Definition: governor.h:67
tbb::internal::market
Definition: market.h:45
tbb::internal::market::theMarket
static market * theMarket
Currently active global market.
Definition: market.h:58
tbb::internal::market::max_num_workers
static unsigned max_num_workers()
Definition: market.h:377
tbb::internal::market::set_active_num_workers
static void set_active_num_workers(unsigned w)
Set number of active workers.
Definition: market.cpp:235
tbb::internal::market::app_parallelism_limit
static unsigned app_parallelism_limit()
Reports active parallelism level according to user's settings.
Definition: tbb_main.cpp:512
tbb::internal::market::theMarketMutex
static global_market_mutex_type theMarketMutex
Mutex guarding creation/destruction of theMarket, insertions/deletions in my_arenas,...
Definition: market.h:63
tbb::internal::market::global_market_mutex_type
scheduler_mutex_type global_market_mutex_type
Definition: market.h:60
tbb::internal::generic_scheduler
Work stealing task scheduler.
Definition: scheduler.h:140
tbb::internal::control_storage
Definition: tbb_main.cpp:449
tbb::internal::control_storage::apply_active
virtual void apply_active() const
Definition: tbb_main.cpp:457
tbb::internal::control_storage::my_list_mutex
spin_mutex my_list_mutex
Definition: tbb_main.cpp:454
tbb::internal::control_storage::default_value
virtual size_t default_value() const =0
tbb::internal::control_storage::my_active_value
size_t my_active_value
Definition: tbb_main.cpp:452
tbb::internal::control_storage::my_head
atomic< global_control * > my_head
Definition: tbb_main.cpp:453
tbb::internal::control_storage::active_value
virtual size_t active_value() const
Definition: tbb_main.cpp:461
tbb::internal::control_storage::is_first_arg_preferred
virtual bool is_first_arg_preferred(size_t a, size_t b) const
Definition: tbb_main.cpp:458
tbb::internal::allowed_parallelism_control
Definition: tbb_main.cpp:466
tbb::internal::allowed_parallelism_control::active_value
virtual size_t active_value() const __TBB_override
Definition: tbb_main.cpp:478
tbb::internal::allowed_parallelism_control::apply_active
virtual void apply_active() const __TBB_override
Definition: tbb_main.cpp:473
tbb::internal::allowed_parallelism_control::active_value_if_present
size_t active_value_if_present() const
Definition: tbb_main.cpp:491
tbb::internal::allowed_parallelism_control::default_value
virtual size_t default_value() const __TBB_override
Definition: tbb_main.cpp:467
tbb::internal::allowed_parallelism_control::is_first_arg_preferred
virtual bool is_first_arg_preferred(size_t a, size_t b) const __TBB_override
Definition: tbb_main.cpp:470
tbb::internal::stack_size_control
Definition: tbb_main.cpp:496
tbb::internal::stack_size_control::apply_active
virtual void apply_active() const __TBB_override
Definition: tbb_main.cpp:500
tbb::internal::stack_size_control::default_value
virtual size_t default_value() const __TBB_override
Definition: tbb_main.cpp:497
tbb::internal::__TBB_InitOnce
Class that supports TBB initialization.
Definition: tbb_main.h:37
tbb::internal::__TBB_InitOnce::initialization_done
static bool initialization_done()
Definition: tbb_main.h:64
tbb::internal::__TBB_InitOnce::InitializationDone
static bool InitializationDone
Specifies if the one-time initializations has been done.
Definition: tbb_main.h:50
tbb::internal::__TBB_InitOnce::lock
static void lock()
Definition: tbb_main.h:60
tbb::internal::__TBB_InitOnce::unlock
static void unlock()
Definition: tbb_main.h:62
tbb::internal::__TBB_InitOnce::remove_ref
static void remove_ref()
Remove reference to resources. If last reference removed, release the resources.
Definition: tbb_main.cpp:122
tbb::internal::__TBB_InitOnce::count
static atomic< int > count
Counter of references to global shared resources such as TLS.
Definition: tbb_main.h:41
tbb::internal::__TBB_InitOnce::add_ref
static void add_ref()
Add reference to resources. If first reference added, acquire the resources.
Definition: tbb_main.cpp:117
tbb::internal::__TBB_InitOnce::InitializationLock
static __TBB_atomic_flag InitializationLock
Global initialization lock.
Definition: tbb_main.h:57
tbb::internal::basic_tls< uintptr_t >

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.