2 つのランタイムを併用

2 つのランタイムを併用#

スレッディング・ビルディング・ブロック (TBB) と oneAPI スレッディング・ビルディング・ブロック (oneTBB) は、同じアプリケーションで安全に使用できます。TBB ランタイムと oneTBB ランタイムは名前が異なり、同じプロセス内で安全にロードできます。さらに、ABI のバージョン管理は完全に異なるため、シンボルの競合が防止されます。

ただし、両方のランタイムが同じプロセスにロードされると、ランタイムがそれぞれ独自のスレッドプールを使用するため、オーバーサブスクリプションが発生する可能性があります。また、コンテキストスイッチの回数が増え、パフォーマンスが低下する可能性があります。TBB と oneTBB の両方がアプリケーションにロードされているか確認するには、アプリケーションを実行する前に環境変数 TBB_VERSION=1 を設定します。両方のランタイムがロードされている場合、出力ブロックは 2 つになります。以下に例を示します。

oneTBB の出力。


oneTBB: SPECIFICATION VERSION 1.0 
oneTBB: VERSION 2021.2 
oneTBB: INTERFACE VERSION 12020 
oneTBB: TBB_USE_DEBUG 1 
oneTBB: TBB_USE_ASSERT 1 
oneTBB: TOOLS SUPPORT disabled

TBB の出力。


TBB: VERSION 2018.0 
TBB: INTERFACE VERSION 10006 
TBB: BUILD_DATE Mon 01 Mar 2021 01:28:40 PM UTC 
TBB: BUILD_HOST localhost (x86_64) 
TBB: BUILD_OS Fedora release 32 (Thirty Two) 
TBB: BUILD_KERNEL Linux 5.8.9-200.fc32.x86_64 #1 SMP Mon Sep 14 18:28:45 UTC 2020 
TBB: BUILD_GCC g++ (GCC) 10.2.1 20201125 (Red Hat 10.2.1-9) 
TBB: BUILD_LIBC 2.31 
TBB: BUILD_LD GNU ld version 2.34-6.fc32 
TBB: BUILD_TARGET intel64 on cc10_libc2.31_kernel5.8.9 
TBB: BUILD_COMMAND g++ -DDO_ITT_NOTIFY -g -O2 -DUSE_PTHREAD -m64 -fPIC -D__TBB_BUILD=1 -Wall -Wno-parentheses -Wno-non-virtual-dtor -I../../src -I../../src/rml/include -I../../include -I. 
TBB: TBB_USE_DEBUG 0 
TBB: TBB_USE_ASSERT 0 
TBB: DO_ITT_NOTIFY 1 
TBB: RML private 
TBB: Tools support disabled

oneTBB の tbbmalloc ライブラリーは、TBB と完全にバイナリー互換性があります。