インテル® DAAL プログラミング・ガイド
数値テーブルは、インメモリー数値データ処理の基本的なコンポーネントです。インテル® DAAL は、次のような、密および疎データ用の非同次および同次数値テーブルをサポートしています。
特徴がすべて同じ基本データ型の場合、同次数値テーブル (つまり、HomogenNumericTable クラスのオブジェクト) と行列 (つまり、Matrix、PackedTriangularMatrix、PackedSymmetricMatrix クラスのオブジェクト) を使用します。特徴の値は、(観測 1、観測 2、... のように) 行優先順で隣接するブロックとしてメモリーでレイアウトされます。インテル® DAAL では、行列は行列代数演算に最も適した同次数値テーブルです。
メモリー・フットプリントが縮小された三角行列と対称行列では、特別なクラス (PackedTriangularMatrix および PackedSymmetricMatrix) が利用可能です。三角行列と対称行列の表現間を選択するには、DataLayout 列挙子を使用します。
非同次数値テーブルを使用すると、データ型が異なるデータ構造を扱うことができます。インテル® DAAL は、2 つの方法 (AOS および SOA) で非同次数値テーブルを表せます。
AOS 数値テーブルは、隣接するメモリーブロックにレイアウトされる観測点 (特徴ベクトル) へのアクセスを提供します。
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++: ./examples/cpp/source/datasource/datastructures_aos.cpp
Java*: ./examples/java/source/com/intel/daal/examples/datasource/DataStructuresAOS.java
SOA 数値テーブルは、各特徴の観測点がメモリーで隣接してレイアウトされるデータセットへのアクセスを提供します。
サンプル
インテル® 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) 形式をエンコーディングに使用します。
3 つの配列は、以下のように疎行列 M を記述しています。
CSRNumericTable のコンストラクターで CSRIndexing 型の indexing パラメーターにより、1 ベースの (oneBased) CSR エンコーディングを指定できます。
サンプル
インテル® DAAL ディレクトリーの次のサンプルを参照してください。
C++:
Java*: