インテル® Data Analytics Acceleration Library (インテル® DAAL) は、データの取得から、前処理、変換、データマイニング、モデリング、検証、意思決定まで、すべてのデータ解析段階をカバーする、インテル® アーキテクチャー向けに最適化されたビルディング・ブロックのライブラリーです。

インテル® DAAL は、スタンドアロンまたは次のスイート製品の一部としてインストールされます。

必要条件

システム要件 (英語)

インテル® DAAL のインストール

インテル® DAAL は <install dir>/daal ディレクトリーにインストールされます。

デフォルトでは、<install dir>/opt/intel/compilers_and_libraries_2016.x.xxx/linux です。

インストールの詳細は、インテル® DAAL インストール・ガイド (英語) を参照してください。

環境変数の設定

  1. ターゲット・プラットフォーム・アーキテクチャーに応じて適切な <install dir>/daal/bin/daalvars.sh スクリプトを実行します。

    • IA-32 アーキテクチャー:

      daalvars.sh ia32

    • インテル® 64 アーキテクチャー:

      daalvars.sh intel64

  2. オプション: デフォルトのコンパイラーと異なる Java* コンパイラーを指定します。

    export JAVA_HOME=$PATH_TO_JAVA_SDK

    export PATH=$JAVA_HOME/bin:$PATH

C++ 言語

ステップ 1: インテル® DAAL アプリケーションの自動リンク用コンパイラー・オプションの選択

インテル® C++ コンパイラー 16 の -daal オプションを指定するか、統合開発環境 (IDE) でプロジェクトを設定します。

コンパイラー・オプション

IDE オプション

-daal または -daal=parallel

インテル® DAAL のスレッドバージョンとリンクとリンクします。

Eclipse*:

  1. [Project] > [Properties] > [C/C++ Build] > [Settings] > [Intel C++ Compiler] > [Performance Library Build Components] > [Use Intel(R) Data Analytics Acceleration Library] を選択します。
  2. [Use threaded Intel DAAL (-daal=parallel)] または [Use non-threaded Intel DAAL (-daal=sequential)] を選択します。

-daal=sequential

インテル® DAAL のシーケンシャル・バージョンとリンクします。

-daal コンパイラー・オプションの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』 (デフォルトの場所は /opt/intel/documentation_2016/ja/compiler_c/common/core/index.htm) を参照してください。

ステップ 2: 最初のインテル® DAAL アプリケーションの作成と実行

この短いアプリケーションは、インテル® DAAL でコレスキー分解を計算します。


/******************************************************************************* 
!Copyright(C) 2014-2015 Intel Corporation. All Rights Reserved.
!
!The source code, information and material ("Material") contained herein is 
!owned by Intel Corporation or its suppliers or licensors, and title to such 
!Material remains with Intel Corporation or its suppliers or licensors. The 
!Material contains proprietary information of Intel or its suppliers and 
!licensors. The Material is protected by worldwide copyright laws and treaty 
!provisions. No part of the Material may be used, copied, reproduced, 
!modified, published, uploaded, posted, transmitted, distributed or disclosed 
!in any way without Intel's  prior  express written  permission. No  license
!under  any patent, copyright  or  other intellectual property rights  in the
!Material  is  granted  to  or  conferred  upon  you,  either  expressly,  by
!implication, inducement,  estoppel or  otherwise.  Any  license  under  such
!intellectual  property  rights must  be express  and  approved  by  Intel in
!writing.
!
!*Third Party trademarks are the property of their respective owners.
!
!Unless otherwise  agreed  by Intel  in writing, you may not remove  or alter
!this  notice or  any other notice embedded  in Materials by Intel or Intel's
!suppliers or licensors in any way.
!
!*******************************************************************************
!Content:
!    Cholesky decomposition sample program.
!******************************************************************************/

#include "daal.h"
#include <iostream>

using namespace daal;
using namespace daal::algorithms;
using namespace daal::data_management;

const size_t dimension = 3;
double inputArray[dimension *dimension] =
{
    1.0,  2.0,  4.0,
    2.0, 13.0, 23.0,
    4.0, 23.0, 77.0
};

int main(int argc, char *argv[])
{
    /* 配列から入力数値テーブルを作成 */
    SharedPtr<NumericTable> inputData = SharedPtr<NumericTable>(new Matrix<double>(dimension, dimension, inputArray));

    /* デフォルトの手法を使用してコレスキー分解を計算するアルゴリズム・オブジェクトを作成 */
    cholesky::Batch<> algorithm;

    /* アルゴリズムの入力を設定 */
    algorithm.input.set(cholesky::data, inputData);

    /* コレスキー分解を計算 */
    algorithm.compute();

    /* コレスキー係数のポインターを取得 */
    SharedPtr<Matrix<double> > factor =
        staticPointerCast<Matrix<double>, NumericTable>(algorithm.getResult()->get(cholesky::choleskyFactor));

    /* コレスキー係数の最初の要素を出力 */
    std::cout << "The first element of the Cholesky factor: " << (*factor)[0][0];

    return 0;
}
  1. アプリケーションのコードをコピーして、エディターにペーストします。

  2. ファイルを my_first_daal_program.cpp として保存します。

  3. 選択した -daal コンパイラー・オプション (例えば -daal=parallel) を指定してアプリケーションをコンパイルします。

    icc my_first_daal_program.cpp -daal=parallel -o my_first_daal_program

  4. アプリケーションを実行します。

ステップ 3 (オプション): 異なるコンパイラーでのアプリケーションのビルド

インテル® DAAL のスレッドモードとリンク方法に応じて、リンク行で次のインテル® DAAL ライブラリーを指定します。

シングルスレッド (スレッド化されていない) インテル® DAAL

マルチスレッド (内部的にスレッド化されている) インテル® DAAL

スタティック・リンク

libdaal_core.a

libdaal_sequential.a

libdaal_core.a

libdaal_thread.a

ダイナミック・リンク

libdaal_core.so

libdaal_sequential.so

libdaal_core.so

libdaal_thread.so

これらのライブラリーは、アーキテクチャー固有のディレクトリー <install dir>/daal/lib/{ia32|intel64}_lin にあります。アーキテクチャーのパラメーター (ia32 または intel64) には、環境変数の設定時に daalvar.sh スクリプトで指定したパラメーターと同じパラメーターを指定します。

重要:

リンク行で上記のライブラリーのリスト順を変更しないでください。

リンク方法に関係なく、インテル® DAAL ライブラリーが依存するライブラリーをリンク行に追加してください

  • インテル® コンパイラーの OpenMP* ランタイム・ライブラリー libiomp5.so
  • インテル® コンパイラーのインテル® TBB ランタイム・ライブラリー libtbb.so

例えば、インテル® DAAL のマルチスレッド・ライブラリーをスタティックにリンクしてインテル® 64 アーキテクチャー向けのアプリケーションをビルドする場合は、次のように指定します。

icc my_first_daal_program.cpp -o my_first_daal_program $DAALROOT/lib/intel64_lin/libdaal_core.a $DAALROOT/lib/intel64_lin/libdaal_thread.a -liomp5 -ltbb -lpthread -ldl

ステップ 4: インテル® DAAL サンプルコードのビルドと実行

  1. サンプルをビルドします。

    C++ のサンプル・ディレクトリーに移動して、make コマンドを実行します。

    cd <install_dir>/daal/examples/cpp

    make {libia32|soia32|libintel64|sointel64}

            example=<example_name>

            compiler={intel|gnu}

            mode=build

    {libia32|soia32|libintel64|sointel64} パラメーターの中から、daalvars.sh スクリプトで指定したアーキテクチャー・パラメーターおよびビルドする実行ファイルの種類と一致するプリフィクス (スタティックの場合は lib、ダイナミックの場合は so) を含むパラメーターを指定します。

    サンプルの名前は daal.lst ファイル内にあります。

    コマンドを実行すると、選択したコンパイラー、アーキテクチャー、ライブラリー拡張子 (a または so) のディレクトリー (例えば、_results/intel_intel64_a) が作成されます。

  2. サンプルを実行します。

    C++ のサンプル・ディレクトリーに移動して、make コマンドを run モードで実行します。例えば、daalvars スクリプトで intel64 ターゲットを指定した場合、次のように指定します。

    cd <install_dir>/daal/examples/cpp

    make libintel64 example=cholesky_batch.cpp mode=run

    make コマンドを実行すると、インテル® 64 アーキテクチャー用のスタティック・ライブラリーと cholesky_batch.cpp サンプルがインテル® コンパイラーで (デフォルトの場合) ビルドされ、生成されたファイルが実行されます。

Java* 言語

インテル® DAAL サンプルコードのビルドと実行

Java* のサンプルコードをビルドして実行するには、環境変数の設定時に daalvars.sh スクリプトで指定したアーキテクチャー・パラメーターに対応するバージョンの Java* 仮想マシンを使用してください。

  1. サンプルをビルドします。

    Java* のサンプル・ディレクトリーに移動して、launcher コマンドを build パラメーター付きで実行します。

    cd <install_dir>/daal/examples/java

    launcher.sh build $PATH_TO_JAVAC

    コマンドを実行すると、実行ファイル *.class (例えば、CholeskyBatch.class) が

    <install dir>/daal/examples/java/com/intel/daal/examples/<example name> ディレクトリーに生成されます。

  2. サンプルを実行します。

    Java* のサンプル・ディレクトリーに移動して、make コマンドを run パラメーター付きで実行します。

    cd <install_dir>/daal/examples/java

    launcher.sh {ia32|intel64} run $PATH_TO_JAVAC

    daalvar.sh スクリプトで指定したアーキテクチャー・パラメーターを指定します。

    指定したアーキテクチャーに応じて、./_results/ia32 または ./_results/intel64 ディレクトリーにある <example name>.res ファイルに結果が出力されます。

ドキュメントおよびリソース

ドキュメント

説明

インテル® DAAL ユーザー・リファレンス・ガイド

次の情報が含まれます。

インテル® DAAL インストール・ガイド

製品で利用可能なインストール・オプションの説明とインストール手順が含まれます。

インテル® DAAL リリースノート

インテル® DAAL についての次の情報が含まれます。

  • 製品の新機能
  • ディレクトリー構成
  • ハードウェアとソフトウェアの要件へのリンク

<install dir>/daal/examples フォルダー

インテル® DAAL API の使用方法を説明するプログラムのコレクション。

/opt/intel/samples_2016/en/daal フォルダー (デフォルトのインストール・パスの場合)

プログラムに追加して Hadoop*、Spark*、MPI (メッセージ・パッシング・インターフェイス)、mySQL* とともに使用できる、さまざまなアルゴリズムのコードサンプルのコレクション。

日本語最新ドキュメント

日本語の最新ドキュメントを入手できます。

日本語最新情報

最新情報を日本語で参照できます。

最適化に関する注意事項

インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804