Show page source of マルチメディア処理から信号処理まで幅広く活用できる高速ライブラリ「IPP」_p1 #49570

[[PageNavi(NavigationList)]]

== マルチメディア処理から信号処理まで幅広く活用できる高速ライブラリ「IPP」 ==


 インテル C++ コンパイラーに付属するライブラリの1つに「インテル インテグレーテッド・パフォーマンス・プリミティブ」(Integrated Performance Premitive、以下IPP)がある。IPPは動画や音声、画像などの処理に向けた関数を備えたライブラリなのだが、実際のところIPPがどのようなものなのか分からない方も多いだろう。そこで本記事では、IPPには何が含まれており、またどのような用途に使えるのか、紹介していこう。


==== IPPとは? ====
 動画や画像、音声といったデータを扱うアプリケーションを作成する場合、面倒なのがデータのデコード/エンコード処理といった定型的処理や、各種処理アルゴリズムの実装だ。リファレンスコードなどを参考に実装する、という手もあるが、このようなデータを高速に処理できるように実装するのは容易ではない。そこで重宝するのが、よく使われる処理があらかじめ実装されているマルチメディア処理ライブラリである。IPPはこのようなマルチメディア処理ライブラリの1つだ。

 IPPは信号処理や動画/画像処理、行列処理および線形演算、暗号化といった用途に向けた各種関数群を集めたライブラリで、'''表1'''のような分野で利用できる関数を備えている。

 IPPの特徴は、インテル コンパイラや、インテル コンパイラにIPPとともに同梱されるインテル マス・カーネル・ライブラリ(Math Kernel Library、以下MKL)などと同じく、インテル製CPUに最適化されている点と、Windows/Linux/Mac OS Xという複数の環境に対応していること、そして並列化に対応している点だ。

 IPPは32ビットおよび64ビットの両方の環境(x86/x64/IA-64)で利用でき、関数はすべてインテルCPU向けに最適化されているほか、ベクトル演算や統計演算、フィルタリング、動画/画像のエンコード/デコード処理などはマルチプロセッサ/マルチコア環境でより高いパフォーマンスを発揮できるよう、内部的にマルチスレッド化されている。



[[PageNavi(NavigationList)]]