Intel Integrated Performance Primitives

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Cewbot (会話 | 投稿記録) による 2020年12月23日 (水) 22:22個人設定で未設定ならUTC)時点の版 (Bot作業依頼: プロプライエタリ・ソフトウェアの改名に伴うリンク先移動依頼 - log)であり、現在の版とは大きく異なる場合があります。

Intel Integrated Performance Primitives
開発元 インテル
最新版
2020 Update 2 / 2020年 (4年前) (2020)[1]
種別 ライブラリ
ライセンス プロプライエタリ
公式サイト Intel® Integrated Performance Primitives (Intel® IPP)
テンプレートを表示

インテル Integrated Performance Primitives (IPP) とは、マルチメディア画像処理信号処理のために最適化された基本関数群からなるソフトウェアライブラリである。ライブラリはインテルプロセッサならびに互換プロセッサをサポートしており、WindowsLinuxmacOSAndroidオペレーティングシステムの各プラットフォームで利用可能である。

ディスパッチ機能

IPPは複数世代のプロセッサごとに実装された複数の最適コードの中から、実行時に環境に応じて最適なものを動的選択するディスパッチ機能をサポートしている[2][3]。たとえばSSE/SSE2命令までをサポートするプロセッサではSSE/SSE2を利用したコードを、AVX命令までをサポートするプロセッサではAVXを利用したコードを実行する、などである。IPPを動的リンク(ダイナミックリンク)する場合は、実行時に自動的に最適な共有ライブラリのモジュール(Windows版ではDLL)が選択されるが、静的リンク(スタティックリンク)する場合はippStaticInit()関数(IPP 9.0から廃止[4])またはippInit()関数をあらかじめ明示的に呼び出しておく必要がある[5][6][7]。ippInit()を呼び出すタイミングは、通例アプリケーションプログラムのエントリポイント(main関数)だが[8]、動的リンクされるユーザーライブラリの内部でIPPを使用する場合は、ユーザーライブラリのスタートアッププロセス(WindowsではDllMain関数)でのippInit()呼び出しが必要となることがある[9]

マルチスレッド対応

IPPにはマルチスレッドバージョンとシングルスレッドバージョンが存在する。マルチスレッドバージョンは各関数の内部で複数のスレッドを利用して処理を分割することで、マルチコアCPUの性能を引き出すことができる。ただしIPP関数はすべてスレッドセーフである[10]ので、シングルスレッドバージョンを用いてアプリケーションコード側でより粒度の大きいマルチスレッド対応を行なうことも可能である。なお、内部スレッド化すなわちマルチスレッドバージョンはIPP 7.1で非推奨 (deprecated) となっており、シングルスレッドバージョンの利用が推奨されている[1][11][12]。またこれに伴い、ippSetNumThreads()などの関数が非推奨 (deprecated) となっている[13]

IPPCV

OpenCV 3.0にて、Intel IPPのサブセットがIPPCVとして寄贈された。

無償版

インテルによるサポートを受ける場合や旧バージョンが必要な場合など、IPPの利用は基本的に有償になるが、最新バージョンに限り無償で利用可能な、コミュニティライセンスや学術研究機関向けライセンスも存在する[14]

脚注

関連項目

外部リンク