インテル® IPP の関数名には、異なる関数を識別しやすいように命名規則が使用されています。
関数名には、データドメイン、演算、データ型、実行モードを示す複数のフィールドが含まれます。フィールドにはそれぞれ、事前に定義された値が使用されます。
関数名の形式は次のようになります。
ipp<data-domain><name>[_<datatype>][_<descriptor>](<parameters>);
この形式の要素については、次のセクションで説明します。
data-domain は、入力データの型を示す 1 文字です。 インテル® IPP の現在のバージョンは、以下のデータドメインをサポートしています。
信号 (想定されるデータ型は 1D 配列)
固定長の信号 (想定されるデータ型は 1D 配列)
画像とビデオ (想定されるデータ型はピクセルの 2D 配列)
ベクトルと行列 (想定されるデータ型は行列またはベクトル)
リアリスティック・レンダリングと 3D データ処理 (想定されるデータ型はサポートしているレンダリング手法に依存)
インテル® IPP のコア関数は、入力データの型に応じた処理を行いません (「コア関数」を参照)。 これらの関数には、接頭辞として ipp が付けられ、データドメイン・フィールドはありません (例: ippGetStatusString)。
name は、関数が実行するアルゴリズムまたは演算を示します。 形式は次のようになります。
<name> = <operation>[_modifier]
operation フィールドは、基本演算を示す 1 つ以上の単語、頭文字、および省略形です (例: Set、DCTFwd)。 フィールドが複数の部分からなる場合、各部分はそれぞれ大文字で始まり、下線は含まれません (例: HilbertInitAlloc)。
modifier が存在する場合、指定された関数のバリエーションを示します。 例えば、ippsFFTInv_CToC_32fc 関数の CToC 修飾子は、複素数データを使用して逆高速フーリエ変換を行い、複素数から複素数の (CToC) 変換を実行することを意味します。 行列演算の関数にはオブジェクト・タイプの説明が修飾子として含まれます (例えば、ippmMul_mv は行列とベクトルの乗算です)。
datatype フィールドは、関数で使用されるデータ型を示します。形式は次のようになります。
<datatype> = <bit_depth><bit_interpretation>
説明:
bit_depth = <1|8|16|32|64>
および
bit_interpretation = < u|s|f>[c]
u は「符号なし整数」、s は「符号付き整数」、f は「浮動小数点」、c は「複素数」を示します。
単一のデータ型で演算を行う関数の場合、datatype フィールドには 1 つの値のみ含まれます。
関数でデータ型の異なるソース・オブジェクトとデスティネーション・オブジェクトの演算を行う場合、次のように、データ型の識別子がソース、デスティネーションの順で関数名に記述されます。
<datatype> = <src1Datatype>[src2Datatype][dstDatatype]
例えば、ippsDotProd_16s16sc 関数は 16 ビット short ソースベクトルと 16 ビット complex short ソースベクトルのドット積を計算して、16 ビット complex short デスティネーション・ベクトルに格納します。 2 番目のオペランドと結果が同じ型なので、関数名に dstDatatype 修飾子は含まれていません。
オプションの descriptor フィールドには、演算に関連するデータが記述されます。 このフィールドには、暗黙のパラメーターや追加の必須パラメーターを記述できます。
関数内のコード分岐の数を最小限に抑え、不要な実行のオーバーヘッドを減らすため、ほとんどの汎用関数はプリミティブ関数に分割されます。パラメーターの一部は、記述子としてプリミティブ関数の名前に含まれます。
ただし、置換数が多い関数では、内部演算を指定するパラメーターを使用できます (例: ippiThreshold)。
インテル® IPP では、以下の記述子が使用されています。
A |
画像データは最後のチャンネルとしてアルファチャンネルを含みます。C4 が必要です。アルファチャンネルは処理されません。 |
A0 |
画像データは最初のチャンネルとしてアルファチャンネルを含みます。C4 が必要です。アルファチャンネルは処理されません。 |
Axx |
精度が xx ビットの高度な算術演算。 |
C |
関数は各ソース画像用に指定された対象チャンネル (COI) で演算を行います。 |
Cn |
画像データは n 個の離散インターリーブ・チャネル (n = 1、2、3、4) で構成されます。 |
Dx |
信号は x 次元です (デフォルトは D1) |
I |
演算をインプレースで実行します (デフォルトはノット・インプレース)。 |
L |
信号処理の場合: 1 つのポインターが 2 次元配列の各行で使用されることを示します。 行列演算の場合: オブジェクトのレイアウト記述子を含む関数。 |
M |
演算はマスクを使用して処理するピクセル数を決定します。 |
P |
信号処理の場合: 処理するベクトルの数を指定します。 行列演算の場合: オブジェクトのポインター記述子を含む関数。 |
Pn |
画像データは n 個の離散プレーン (非インターリーブ) チャネル (n= 1、2、3、4) と各プレーンへのポインターで構成されます。 |
R |
関数は各ソース画像用に定義された対象領域 (ROI) で演算を行います。 |
S |
オブジェクトの標準記述子を含む関数 (行列演算の場合) |
s |
飽和処理を行いスケーリングしません (デフォルトモード) |
Sfs |
飽和処理と固定スケーリングを行います。 |
関数名の中では、記述子は常にアルファベット順で記述します。
特定の演算では、一部のデータ記述子が「デフォルト」として暗黙的に含まれます。これらの記述子は関数名に追加されません。例えば、画像処理関数は常に 2 次元画像を演算し、結果の飽和処理を行いスケーリングしません。この場合、暗黙的な記述子 D2 (2 次元信号) と s (飽和処理を行いスケーリングしない) は関数名に含まれません。
parameters フィールドには、関数のパラメーター (引数) を指定します。
パラメーターの順序は以下のとおりです。
すべてのソースオペランド。配列の後に定数が続きます。
すべてのデスティネーション・オペランド。配列の後に定数が続きます。
その他、演算固有のパラメーター。
パラメーター名には以下の規則があります。
ポインターとして定義された引数は p で始まります (例: pPhase、pSrc、pSeed)。ダブルポインターとして定義された引数は pp で始まります (例 ppState)。値として定義された引数は小文字で始まります (例: val、src、srcLen)。
引数名の新しい部分は大文字で始まり、下線は含まれません (例: pSrc、lenSrc、pDlyLine)。
引数名には、その機能を指定します。ソース引数の名前は pSrc や src のようになります。後に名前や数字が続くこともあります (例: pSrc2、srcLen)。 出力引数の名前は pDst や dst のようになります。後に名前や数字が続くこともあります (例: pDst1、dstLen)。 インプレース演算の場合、入力/出力引数に pSrcDst が含まれます。
関数構文の例:
ippsIIR_32f_I(Ipp32f* pSrcDst, int len, IppsIIRState_32f* pState);
ippiConvert_8u1u_C1R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, int dstBitOffset, IppiSize roiSize, Ipp8u threshold);
ippmSub_vac_32f(const Ipp32f* pSrc, int srcStride0, int srcStride2, Ipp32f val, Ipp32f* pDst, int dstStride0, int dstStride2, int len, int count);
© 2007 - 2010 Intel Corporation. 無断での引用、転載を禁じます。