インテル® データ・アナリティクス・アクセラレーション・ライブラリー (インテル® DAAL) は、データの取得から、前処理、変換、データマイニング、モデリング、検証、意思決定まで、すべてのデータ解析段階をカバーする、インテル® アーキテクチャー向けに最適化されたビルディング・ブロックのライブラリーです。
インテル® DAAL は、スタンドアロンおよび次のスイート製品の一部としてインストールされます。
インテル® DAAL は、コミュニティー・ライセンス・プログラム (英語) の下でスタンドアロン・パッケージとしても提供されています。
システム要件 (英語)
インテル® DAAL は <install dir>/daal ディレクトリーにインストールされます。
デフォルトでは、<install dir> は /opt/intel/compilers_and_libraries_2019.x.xxx/linux です。
インストールの詳細は、インテル® DAAL インストール・ガイド (英語) を参照してください。
インテル® C++ コンパイラー 16 以上の -daal オプションを指定するか、統合開発環境 (IDE) でプロジェクトを設定します。
コンパイラー・オプション |
IDE オプション |
|
---|---|---|
インテル® DAAL のスレッドバージョンとリンクとリンクします。 |
Eclipse*: |
|
インテル® DAAL のシーケンシャル・バージョンとリンクします。 |
‑daal コンパイラー・オプションの詳細は、『インテル® コンパイラー・デベロッパー・ガイドおよびリファレンス』を参照してください。
この短いアプリケーションは、インテル® DAAL でコレスキー分解を計算します。
/*******************************************************************************
! Copyright(C) 2014-2019 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;
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;
}
インテル® 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 ライブラリーが依存するライブラリーをリンク行に追加してください。
例えば、インテル® 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 ‑ltbb ‑lpthread -ldl
C++ のサンプル・ディレクトリーに移動して、make コマンドを実行します。
cd <install dir>/daal/examples/cpp
make {libia32|soia32|libintel64|sointel64}
example=<example_name>
compiler={intel|gnu}
threading={parallel|sequential}
mode=build
{libia32|soia32|libintel64|sointel64} パラメーターの中から、daalvars.sh スクリプトで指定したアーキテクチャー・パラメーターおよびビルドする実行ファイルの種類と一致するプリフィクス (スタティックの場合は lib、ダイナミックの場合は so) を含むパラメーターを指定します。
サンプルの名前は daal.lst ファイル内にあります。
コマンドを実行すると、選択したコンパイラー、アーキテクチャー、ライブラリー拡張子 (a または so) のディレクトリーが作成されます。(例: _results/intel_intel64_a)
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* のサンプルコードをビルドして実行するには、環境変数の設定時に daalvars.sh スクリプトで指定したアーキテクチャー・パラメーターに対応するバージョンの Java* 仮想マシンを使用してください。
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> ディレクトリーに生成されます。
Java* のサンプル・ディレクトリーに移動して、launcher コマンドを run パラメーター付きで実行します。
cd <install dir>/daal/examples/java
launcher.sh {ia32|intel64} run $PATH_TO_JAVAC
daalvars.sh スクリプトで指定したアーキテクチャー・パラメーターを指定します。
各サンプルの出力は、指定したアーキテクチャーに応じて、./_results/ia32 または ./_results/intel64 ディレクトリーにある <example name>.res ファイルに書き込まれます。
C++ 言語の説明に従って C++ ビルド環境をセットアップします。
インテル® DAAL の Python* ソースを含むディレクトリーに移動してインストール・スクリプトを実行します。
cd <install dir>/pydaal_sources
<python home>/python setup.py install
このスクリプトはインテル® DAAL for C++ を使用してコードをコンパイルします。また、Python* プログラムでインテル® DAAL を使用するために pyDAAL パッケージをビルドしてインストールします。
インテル® DAAL サンプルコードを実行するには、pyDAAL のインストールに使用したバージョンの Python* を使用します。
cd <install dir>/examples/python
<python home>/python run_examples.py
各サンプルの出力は、./_results/intel64/<example name>.res ファイルに書き込まれます。
<python home>/python <algorithm name>/<example name>.py
例: /usr/local/bin/python3.5.1/python cholesky/cholesky_batch.py
このコマンドは、出力をコンソールに表示します。
製品の詳細については、以下のリソースを参照してください。
リソース |
説明 |
---|---|
オンライン・トレーニング (英語) |
インテル® DAAL の Web セミナーおよび紹介記事。 |
インテル® DAAL デベロッパー・ガイド: |
インテル® DAAL を使用したプログラミングにおける推奨事項 (パフォーマンス向上のヒントを含む)。 |
以下のプログラミング言語の詳細な API の説明。 |
|
製品で利用可能なインストール・オプションの説明とインストール手順が含まれます。 |
|
インテル® DAAL リリースノート (英語) |
詳細: |
<install dir>/daal/examples フォルダー |
インテル® DAAL API の使用方法を説明するプログラムのコレクション。 |
インテル® DAAL サンプルコード (英語) |
プログラムに追加して Hadoop*、Spark*、MPI (メッセージ・パッシング・インターフェイス)、MySQL* とともに使用できる、さまざまなアルゴリズムのサンプルコードのコレクション。 |
この製品およびその他のインテル® ソフトウェア製品のオンライン・ドキュメント・ライブラリー。 |
|
日本語の最新ドキュメントを入手できます。 |
|
最新情報を日本語で参照できます。 |
Intel、インテル、Intel ロゴは、アメリカ合衆国および / またはその他の国における Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2014-2019 Intel Corporation.
本ソフトウェアおよび関連ドキュメントは、インテルが著作権を有する著作物であり、その使用には付随する明示的なライセンス (「ライセンス」) が適用されます。ライセンスで特に明記されていない限り、インテルから書面による許可を得た場合を除き、本ソフトウェアまたは関連ドキュメントを使用、改変、複製、公表、配布、公開することはできません。
本ソフトウェアおよび関連ドキュメントは現状のまま提供され、ライセンスに明記されているものを除き、明示されているか否かにかかわらず、いかなる保証もいたしません。
Java は、Oracle および / または関連会社の登録商標です。
最適化に関する注意事項 |
---|
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。 注意事項の改訂 #20110804 |