スレッド数を設定する方法

インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) で使用する OpenMP* スレッド数を指定するには、以下を使用します。

mkl_set_num_threads または mkl_domain_set_num_threads 関数の呼び出しは、(ほかのスレッドで) 処理中のすべての呼び出しと以降のインテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) 呼び出しで利用可能な OpenMP* スレッド数を変更します。これにより、インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) のパフォーマンスが低下したり、インテル® Inspector などのツールによって競合状態が報告されることがあります。

このような状況を回避するには、mkl_set_num_threads_local 関数を使用します (関数の説明は、『インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) デベロッパー・リファレンス』の「Support Functions」セクションを参照してください)。

手法を選択する場合、以下の規則を考慮してください。

インテル® TBB スレッド化テクノロジーを使用してプログラムをスレッド化する場合、スレッド数の指定方法は、https://www.threadingbuildingblocks.org/documentation (英語) にある tbb::task_scheduler_init クラスの説明を参照してください。