インテル® DAAL を使用したオンライン処理の概要

同カテゴリーの次の記事

インテル® DAAL を使用した分散処理の概要

この記事は、インテル® デベロッパー・ゾーンに公開されている「A Walk-Through of Online Processing Using Intel® DAAL」の日本語参考訳です。


インテル® Data Analytics Acceleration Library (インテル® DAAL) は、データマイニング、統計分析、およびマシン・ラーニング・アプリケーションを対象とした新たな高度に最適化されたライブラリーです。すべてのデータ分析ステージをサポートする高度なビルディング・ブロックが提供されます。インテル® DAAL は、バッチ処理、オンライン処理、そして分散処理の 3 つの処理モードをサポートします。

オンライン処理 (別名ストリーミング) は、データがブロックで処理されている場合に適用できます。これは、データセット全体が大きすぎて一度にメモリーに収まりきらない場合や、データが断片でのみ利用可能な場合に役立ちます。

概要

インテル® DAAL で提供されるアルゴリズムのいくつかはデータセットをブロックで処理できます。オンライン処理モードでは、特定のアルゴリズム・クラスの compute() と finalizeCompute() メソッドを使用します。この計算モードでは、データはブロック i = 1,2,3 … n で到達することを想定します。新たな入力が利用可能になるたびに compute() メソッドを呼び出します。最後のデータブロックが到達すると、最終結果を生成するため finalizeCompute() メソッドを呼び出します。非同期モードでデータを入力する場合、getStatus() メソッドを使用して新しいデータブロックが読み込み可能であるかデータソースをチェックすることができます。

以下にオンライン処理向けの計算スキームの図を示します。

注意
各データブロックはそれぞれ異なる列数 (ni) を持つことができますが、ベクトル (p) の数は同じでなければいけません。

一般的にオンライン処理は、ループに適用されます。ループの各反復で 1 つのデータブロックをフェッチし、そのブロックの部分的な結果を計算します。その後、外部ループで部分的な結果はブロック全体の結果を生成するため結合されます。以下にコード例を示します。

/* Create algorithm to compute SVD decomposition in online mode */
svd::Online<> algorithm;
Status loadStatus;
while((loadStatus = dataSource.loadDataBlock(nRowsInBlock)) == success)
{
    algorithm.input.set( svd::data, dataSource.getNumericTable() );
    /* Compute SVD algorithm */
    algorithm.compute();
}

/* Finalize the computations and retrieve SVD results */
algorithm.finalizeCompute();
SharedPtr<svd::Result> res = algorithm.getResult();

/* Access results */
printNumericTable(res->get(svd::singularValues), "Singular values:");
printNumericTable(res->get(svd::rightSingularMatrix), "Right orthogonal matrix V:");
printNumericTable(res->get(svd::leftSingularMatrix), "Left orthogonal matrix U:", 10);

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください

関連記事

  • インテル® DAAL チュートリアル: 簡単な C++ 例の使用インテル® DAAL チュートリアル: 簡単な C++ 例の使用 この記事は、インテル® デベロッパー・ゾーンに公開されている「Tutorial for Intel® DAAL : Using simple C++ examples」の日本語参考訳です。 システム環境 インテル® DAAL のバージョン: 2016 GOLD 初期リリース […]
  • Java* アプリケーションでインテル® DAAL を使用する方法Java* アプリケーションでインテル® DAAL を使用する方法 この記事は、インテル® デベロッパー・ゾーンに公開されている「How to Use Intel® DAAL in Java Applications」の日本語参考訳です。 インテル® Data Analytics Acceleration Library (インテル® DAAL) は、Java* 開発者が容易に利用できる […]
  • インテル® DAAL を使用した分散処理の概要インテル® DAAL を使用した分散処理の概要 この記事は、インテル® デベロッパー・ゾーンに公開されている「A Walk-Through of Distributed Processing Using Intel® DAAL」の日本語参考訳です。 概要 インテル® Data Analytics Acceleration Library (インテル® DAAL) […]
  • C++ アプリケーションとインテル® DAAL のリンク方法C++ アプリケーションとインテル® DAAL のリンク方法 この記事は、インテル® デベロッパー・ゾーンに公開されている「How to Link Your C++ Applications with Intel® DAAL?」の日本語参考訳です。 インテル® Data Analytics Acceleration Library (インテル® DAAL) は、C++ […]
  • インテル® DAAL とは?インテル® DAAL とは? この記事は、インテル® デベロッパー・ゾーンに公開されている「What is Intel® DAAL?」の日本語参考訳です。 インテル® DAAL とは? インテル® Data Analytics Acceleration Library (インテル® DAAL) は、データ分析のすべてのステージをカバーするインテル® […]