インテル® DAAL for Windows* 入門ガイド

同カテゴリーの次の記事

インテル® DAAL for OS X* 入門ガイド

この記事は、インテル® デベロッパー・ゾーンに公開されている「Getting Started with Intel® Data Analytics Acceleration Library for Windows*」(https://software.intel.com/en-us/get-started-with-daal-for-windows/) の日本語参考訳です。


インテル® Data Analytics Acceleration Library (インテル® DAAL) は、データ分析のすべてのステージをカバーするインテル® アーキテクチャーに最適化されたビルディング・ブロックです: データソースからのデータ収集、前処理、変換、データマイニング、モデル化、検証および意思決定。

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

必要条件

システム要件

システムにインテル® DAAL をインストールする

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

デフォルトでは、<install dir>C:\Program files (x86)\IntelSWTools\compilers_and_libraries_2016.x.xxx\windows です。

インストールの詳細については、インテル® DAAL インストールガイド(英語) をご覧ください。

環境変数の設定

  1. ターゲット・アーキテクチャーを設定するため、<install dir>\daal\bin\daalvars.bat スクリプトを実行します。
    • IA-32 アーキテクチャー:
      daalvars.bat ia32
    • インテル® 64 アーキテクチャー:
      daalvars.bat intel64

  2. オプション: デフォルトとは異なる Java* コンパイラーを指定:
    set JAVA_HOME=%PATH_TO_JAVA_SDK%
    set PATH=%JAVA_HOME%\bin:%PATH%

C++ 言語

ステップ 1: アプリケーションとインテル® DAAL を自動リンクするためコンパイラー・オプションを選択

Microsoft* Visual Studio* 統合開発環境 (IDE) で、ビルドするインテル® DAAL アプリケーションの C++ プロジェクトを作成または開きます。

インテル® C++ コンパイラーの /Qdaal オプションを指定するか、IDE でプロジェクトを設定します。

コンパイラー・オプション IDE オプション
/Qdaal または /Qdaal:parallel インテル® DAAL のスレッドバージョンとリンク Visual Studio*:
  1. [プロジェクト][プロパティ] を開き、[構成プロパティ] > [インテル(R) パフォーマンス・ライブラリー] に移動します。
  2. [インテル(R) DAAL] のドロップダウン・メニューで、適切なリンク方法 (例えば、マルチスレッド・スタティック・ライブラリー) を選択します。
/Qaal:sequential インテル® DAAL のシーケンシャル・バージョンとリンク

/Qdaal コンパイラー・オプションの詳細は、『インテル® コンパイラー・ユーザー・リファレンス・ガイド』を参照してください(デフォルトの場所は、C:\Program files (x86)\IntelSWTools\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.
!
!****************************************************************************
!  内容:
!    コレスキー分解サンプルプログラム
!***************************************************************************/

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

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

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. 新しい C++ ファイルを追加し、上記のサンプルコードをペーストします。
  2. ファイルをセーブします。
  3. アプリケーションをコンパイルして実行します。

ステップ 3 (オプション): 異なるコンパイラーを使用してアプリケーションをビルド

Microsoft* Visual Studio* にインテル® Parallel Studio XE の C++ 統合コンポーネントをインストールしていないか、インテル® DAAL ライブラリーとアプリケーションのリンクをより細かく制御する場合、Visual Studio* プロジェクトを直接設定します。

インテル® DAAL スレッドモデルとリンクモデルに応じて、プロジェクトに次のライブラリーを追加します。

  シングルスレッド
(スレッド化されていない)
インテル® DAAL
マルチスレッド
(内部でスレッド化された)
インテル® DAAL
スタティック・リンク daal_core.lib
daal_sequential.lib
daal_core.lib
daal_thread.lib

ダイナミック・リンク

daal_core_dll.lib daal_core_dll.lib

リンク方法にかかわらず、プロジェクトにインテル® DAAL に関連するライブラリーを追加します。

  • インテル® コンパイラーの OpenMP* ランタイム・ライブラリー libiomp5md.lib
  • インテル® コンパイラーのインテル® スレッディング・ビルディング・ブロックのランタイム・ライブラリー tbb.lib

プロジェクトを設定するには、次の手順に従ってください。Visual Studio* のバージョンによって異なることがあります。

  1. [ソリューション エクスプローラ] でプロジェクトを右クリックして、[プロパティ] を選択します。
  2. [構成プロパティ] > [VC++ ディレクトリ] を選択します。
  3. [インクルード ディレクトリ] を選択します。インテル® DAAL インクルード・ファイルのディレクトリー (%DAALROOT%\include) を追加します。
  4. [ライブラリ ディレクトリ] を選択します。daalvars.bat スクリプトで指定したアーキテクチャー・パラメーターと一致するインテル® DAAL ライブラリーのアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
    %DAALROOT%\lib\intel64_win

    スレッド化ランタイム・ライブラリー libiomp5md.libtbb.lib のアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
    <install dir>\compiler\lib\intel64_win および <install dir>\tbb\lib\intel64_win\vc_mt
  5. [実行可能ファイル ディレクトリ] を選択します。インテル® DAAL ダイナミック・ライブラリーのアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
    <install dir>\redist\intel64_win\daal

    スレッド化ランタイムのダイナミック・ライブラリーのアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
    <install dir>\redist\intel64_win\compiler および
    <install dir>\redist\intel64_win\tbb\vc_mt
  6. [構成プロパティ] > [カスタム・ビルド・ステップ] > [追加の依存ファイル] を選択します。必要なライブラリーを追加します。
    例えば、マルチスレッド版のインテル® DAAL をインテル® 64 アーキテクチャー向けのアプリケーションとスタティックリンクするには、daal_core.lib daal_thread.lib libiomp5md.lib tbb.lib を追加します。

インテル® DAAL をダイナミック・リンクする場合、デフォルトのマルチスレッド・モードをシングルスレッド・モードに変更するため、’シングルスレッド・モードの設定’ コメントの下にあるインテル® DAAL ライブラリーを最初に呼び出します。

...
int main(int argc, char *argv[])
{
    /* シングルスレッド・モードの設定 */
    Environment::getInstance()->
        setDynamicLibraryThreadingTypeOnWindows(Environment::SingleThreaded);

    /* 配列から入力数値テーブルを作成 */
    SharedPtr<NumericTable> inputData = 
        SharedPtr<NumericTable>(new Matrix<double>(dimension, 
        dimension, inputArray));
...

ステップ 4: インテル® DAAL サンプルコードをビルドして実行

Visual Studio* 環境では、<install_dir>\daal\examples\cpp ディレクトリーにある DAALExamples.sln ソリューションを使用します。

Java* 言語

インテル® DAAL サンプルコードをビルドして実行

Java* サンプルコードをビルドおよび実行するには、環境変数の設定daalvars.bat で指定したアーキテクチャー・パラメーターに該当する Java* Virtual Machine を使用します。

  1. サンプルのビルド:

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

    cd <install_dir>\daal\examples\java
    launcher.bat build %PATH_TO_JAVAC%

    コマンドは、<install dir>\daal\examples\java\com\intel\daal\examples\<example 名> ディレクトリー下に、実行可能 *.class (例えば CholeskyBatch.class) をビルドします。

  2. サンプルを実行:

    Java* の examples ディレクトリーに移動し、launcher コマンドを run パラメーターで実行します。

    cd <install_dir>\daal\examples\java
    launcher.bat {ia32|intel64} run %PATH_TO_JAVAC%

    daalvars.sh スクリプトと同じアーキテクチャー・パラメーターを指定します。

    各 example では、結果は .\_results\ia32 または .\_results\intel64 (指定されたアーキテクチャーに依存) ディレクトリー下に <example name>.res ファイルとして格納されます。

ドキュメントとリソース

ドキュメント 説明
インテル® DAAL プログラミング・ガイド: このドキュメントは、パフォーマンスのヒントを含むインテル® DAAL を使用したプログラミングに関する推奨事項が含まれます。
インテル® DAAL ユーザー・リファレンス・ガイド (英語) ドキュメントには以下が含まれます。
  • プログラミング・ガイド
  • C++ アプリケーション・プログラミング・インターフェイス (API) リファレンス
  • Java* API リファレンス
インテル® DAAL インストールガイド(英語) 製品で利用可能なインストールのオプションを説明し、インストール手順を示します。
インテル® DAAL リリースノート (英語) インテル® DAAL の使い方を示すドキュメントが用意されています。
  • 製品の新機能
  • ディレクトリー構造
  • ハードウェアとソフトウェア要件へのリンク
<install dir>\daal\examples フォルダー インテル® DAAL アプリケーション・プログラミング・インターフェイスの使い方を示すプログラム集。
C:\Program files (x86)\IntelSWTools\samples_2016\en\daal フォルダー (デフォルトのインストール・パスを想定) プログラムにインクルードでき、Hadoop*、Spark*、メッセージ・パッシング・インターフェイス (MPI) または MySQL* をすぐに利用できる各種アルゴリズム向けのサンプルコード集。
ウェブリソース

著作権と商標について

Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

Microsoft、Windows、Windows ロゴは、アメリカ合衆国および / またはその他の国における Microsoft Corporation の商標または登録商標です。

Java は、Oracle および / または関連会社の登録商標です。

© 2016 Intel Corporation. 無断での引用、転載を禁じます。

最適化に関する注意事項
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804

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

関連記事