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 disabledTBB の出力。
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 と完全にバイナリー互換性があります。