インテル® IPP 2017 デベロッパー・ガイド

入れ子の並列化の回避

入れ子の並列化は、マルチスレッド・アプリケーションでスレッド化されたインテル® IPP 関数を使用した場合に発生することがあります。入れ子の並列化は、スレッドのオーバーサブスクリプションによりパフォーマンスを低下させます。

OpenMP* スレッドを使用するアプリケーションでは、入れ子のスレッドはデフォルトで無効になっているため、この問題は発生しません。

ただし、OpenMP* 以外のツールで作成されたスレッドをアプリケーションで使用している場合、この問題を回避するためにスレッド化されたインテル® IPP 関数でマルチスレッドを無効にしてください。

マルチスレッドの無効化 (推奨)

マルチスレッドを無効にする最良の方法は、アプリケーションをデフォルトのパッケージに含まれているインテル® IPP のシングルスレッド (スレッド化されていない) ライブラリーとリンクし、別途ダウンロード可能なマルチスレッド・バージョンを使用しないことです。

または、パラメーター 1ippSetNumThreads 関数を呼び出します。ただし、この場合、OpenMP* のオーバーヘッドが発生します。

最適化に関する注意事項

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804