インテル® DAAL プログラミング・ガイド
一般的なインターフェイスに加えて、多くのメソッドで数値テーブルとアルゴリズムのインターフェイスが提供されます。
getDataLayout メソッドは、データレイアウトに関する情報を提供します。
データレイアウト |
説明 |
---|---|
soa |
配列構造体 (SOA)。個々のデータ特徴の値は隣接するメモリーブロックに格納されます。 |
aos |
構造体配列 (AOS)。特徴ベクトルは隣接するメモリーブロックに格納されます。 |
csr_Array |
CSR (Compressed Sparse Row)。 |
lowerPackedSymetricMatrix |
下パックド対称行列。 |
lowerPackedTriangularMatrix |
下パックド三角行列。 |
upperPackedSymetricMatrix |
上パックド対称行列。 |
upperPackedTriangularMatrix |
上パックド三角行列。 |
unknown |
データレイアウトに関する情報がないか、サポートされていないレイアウト。 |
多くの場合、インメモリーのデータセット全体にアクセスするよりも、ブロックごとに処理するほうが効率的です。インテル® DAAL のアルゴリズムがブロックごとのデータアクセスに使用する重要なメソッドは、getBlockOfRows() および getBlockOfColumnValues() です。getBlockOfRows() メソッドは特徴ベクトルのブロックにアクセスし、getBlockOfColumnValues() メソッドは指定された特徴の値のブロックにアクセスします。特定のアルゴリズムは、getBlockOfRows()、getBlockOfColumnValues()、または両方のメソッドを使用してデータにアクセスします。データアクセスの効率は、データレイアウトと、特徴のデータ型が型変換のないアルゴリズムで元々サポートされているかどうかに大きく依存します。最適なデータレイアウトと元々サポートされているデータ型の詳細は、各アルゴリズムの説明の「パフォーマンスに関する考察」セクションを参照してください。
データレイアウトがブロックごとデータ・アクセス・パターンと一致し、アルゴリズムで実際のデータ型に対応するデータが必要な場合、getBlockOfRows() および getBlockOfColumnValues() メソッドはデータのコピーと型変換を行いません。しかし、レイアウトがデータ・アクセス・パターンと一致しない場合や、型変換が必要な場合、これらのメソッドはデータを自動的に変更して変換します。
カスタムまたはサポートされていないデータレイアウトを扱う場合は、NumericTableIface および DenseNumericTableIface インターフェイス (さらにオプションで CSRNumericTableIface または PackedNumericTableIface インターフェイス) を実装する必要があります。
低次モーメントのような一部のアルゴリズムは、基本的な統計 (最小、最大など) を計算します。相関行列と分散共分散行列や主成分分析などのアルゴリズムでは、入力に基本的な統計が必要です。基本的な統計の重複計算を避けるため、インテル® DAAL は、指定された数値テーブルに関連付けられた基本的な統計を格納および取得するメソッド (basicStatistics.set() および basicStatistics.get()) を提供します。各数値テーブルについて、以下の基本的な統計が計算されます。
同次密数値テーブルの要素を初期化するには (つまり、行列のすべての要素をゼロにするには)、assign メソッドを使用します。
同次密数値テーブルの行にアクセスするには、operator [] メソッドを使用します。
パックド形式のデータへのアクセスには一般的な getArray() および setArray() メソッドを使用できますが、パックド形式のデータレイアウト用の特定の実装を行ったアルゴリズムでは、getPackedValues() および releasePackedValues() メソッドを使用できます。
3 つの CSR 配列 (values、columns、rowIndex) にアクセスするには、一般的な getArray() および setArray() メソッドの代わりに getArrays() および setArrays() メソッドを使用します。配列の詳細は、「CSR データレイアウト」を参照してください。同様に、CSR データレイアウト用の特別な実装を行っているアルゴリズムでは、getBlockOfCSRValues() および releaseBlockOfCSRValues() メソッドを使用できます。