インテル® DAAL for Windows* 入門ガイド
この記事は、インテル® デベロッパー・ゾーンに公開されている「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 インストールガイド(英語) をご覧ください。
環境変数の設定
- ターゲット・アーキテクチャーを設定するため、<install dir>\daal\bin\daalvars.bat スクリプトを実行します。
- IA-32 アーキテクチャー:
daalvars.bat ia32
インテル® 64 アーキテクチャー:
daalvars.bat intel64
- IA-32 アーキテクチャー:
- オプション: デフォルトとは異なる 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*:
|
/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; }
- 新しい C++ ファイルを追加し、上記のサンプルコードをペーストします。
- ファイルをセーブします。
- アプリケーションをコンパイルして実行します。
ステップ 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* のバージョンによって異なることがあります。
- [ソリューション エクスプローラ] でプロジェクトを右クリックして、[プロパティ] を選択します。
- [構成プロパティ] > [VC++ ディレクトリ] を選択します。
- [インクルード ディレクトリ] を選択します。インテル® DAAL インクルード・ファイルのディレクトリー (%DAALROOT%\include) を追加します。
- [ライブラリ ディレクトリ] を選択します。daalvars.bat スクリプトで指定したアーキテクチャー・パラメーターと一致するインテル® DAAL ライブラリーのアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
%DAALROOT%\lib\intel64_win
スレッド化ランタイム・ライブラリー libiomp5md.lib と tbb.lib のアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
<install dir>\compiler\lib\intel64_win および <install dir>\tbb\lib\intel64_win\vc_mt - [実行可能ファイル ディレクトリ] を選択します。インテル® DAAL ダイナミック・ライブラリーのアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
<install dir>\redist\intel64_win\daal
スレッド化ランタイムのダイナミック・ライブラリーのアーキテクチャー固有ディレクトリーを追加します。次に例を示します。
<install dir>\redist\intel64_win\compiler および
<install dir>\redist\intel64_win\tbb\vc_mt - [構成プロパティ] > [カスタム・ビルド・ステップ] > [追加の依存ファイル] を選択します。必要なライブラリーを追加します。
例えば、マルチスレッド版のインテル® 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 を使用します。
サンプルのビルド:
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) をビルドします。
サンプルを実行:
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 ユーザー・リファレンス・ガイド (英語) | ドキュメントには以下が含まれます。
|
インテル® 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 |
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください