HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。

新着トピックス

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

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

IPPとは?

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

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

表1 IPPが備える機能
分類機能
信号処理ベクトル処理
フィルタ処理
信号変換
話し言葉認識
音声エンコーディング
データ圧縮
信号の整合性チェック
動画/画像処理カラー変換
比較、閾値処理
データ変換
モーフィング
フィルタ処理
線形変換
統計処理
座標変換
ウェーブレット変換
コンピュータビジョン
画像比較
動画エンコーディング
行列処理/線形演算ベクトル演算
行列演算
線形システム処理
最小二乗法ソルバー
固有値問題
3次元データ処理
暗号化対照暗号
ハッシュおよびデータ認証
巨大な数値の数学的処理
モンゴメリ演算
疑似乱数の生成
素数生成
RSAアルゴリズム
DSA処理

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

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