インテル® DAAL プログラミング・ガイド

数値テーブル

数値テーブルは、インメモリー数値データ処理の基本的なコンポーネントです。インテル® DAAL は、次のような、密および疎データ用の非同次および同次数値テーブルをサポートしています。

特徴がすべて同じ基本データ型の場合、同次数値テーブル (つまり、HomogenNumericTable クラスのオブジェクト) と行列 (つまり、MatrixPackedTriangularMatrixPackedSymmetricMatrix クラスのオブジェクト) を使用します。特徴の値は、(観測 1、観測 2、... のように) 行優先順で隣接するブロックとしてメモリーでレイアウトされます。インテル® DAAL では、行列は行列代数演算に最も適した同次数値テーブルです。

メモリー・フットプリントが縮小された三角行列と対称行列では、特別なクラス (PackedTriangularMatrix および PackedSymmetricMatrix) が利用可能です。三角行列と対称行列の表現間を選択するには、DataLayout 列挙子を使用します。


Packed storage format

非同次数値テーブルを使用すると、データ型が異なるデータ構造を扱うことができます。インテル® DAAL は、2 つの方法 (AOS および SOA) で非同次数値テーブルを表せます。

AOS 数値テーブルは、隣接するメモリーブロックにレイアウトされる観測点 (特徴ベクトル) へのアクセスを提供します。

Intel® DAAL AOS layout

サンプル

インテル® DAAL ディレクトリーの次のサンプルを参照してください。

C++: ./examples/cpp/source/datasource/datastructures_aos.cpp

Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresAOS.java

SOA 数値テーブルは、各特徴の観測点がメモリーで隣接してレイアウトされるデータセットへのアクセスを提供します。

Intel® DAAL SOA layout

サンプル

インテル® DAAL ディレクトリーの次のサンプルを参照してください。

C++: ./examples/cpp/source/datasource/datastructures_soa.cpp

Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresSOA.java

同次および非同次数値テーブルの最適なデータレイアウトは特定のアルゴリズムに高度に依存するため、最適なデータレイアウトを利用可能です。アルゴリズム固有のガイダンスは、各アルゴリズムの「パフォーマンスに関する考察」セクションを参照してください。

インテル® DAAL は、疎データ (つまり、大量のゼロ要素を含むデータ) をエンコードする特別バージョンの同次数値テーブル用の CSRNumericTable クラスを提供します。ライブラリーは、CSR (Compressed Sparse Row) 形式をエンコーディングに使用します。

Zero-based CSR

One-based CSR

3 つの配列は、以下のように疎行列 M を記述しています。

CSRNumericTable のコンストラクターで CSRIndexing 型の indexing パラメーターにより、1 ベースの (oneBased) CSR エンコーディングを指定できます。

サンプル

インテル® DAAL ディレクトリーの次のサンプルを参照してください。

C++:

Java*: