Intel® Data Analytics Acceleration Library (Intel® DAAL) is the library of Intel® architecture optimized building blocks covering all stages of data analytics: data acquisition from a data source, preprocessing, transformation, data mining, modeling, validation, and decision making.

Intel DAAL is installed standalone and as part of the following suite:

Prerequisites

System_Requirements.

Install Intel DAAL on Your System

Intel DAAL installs in the directory <install dir>/daal.

By default, <install dir> is /opt/intel/compilers_and_libraries_2016.x.xxx/linux.

For installation details, refer to Intel DAAL Installation Guide.

Set Environment Variables

  1. Run the <install dir>/daal/bin/daalvars.sh script as appropriate to your target architecture:

    • IA-32 architecture:

      daalvars.sh ia32

    • Intel® 64 architecture:

      daalvars.sh intel64

  2. Optionally: Specify the Java* compiler different from the default compiler:

    export JAVA_HOME=$PATH_TO_JAVA_SDK

    export PATH=$JAVA_HOME/bin:$PATH

C++ Language

Step 1: Choose the Compiler Option for Automatic Linking of Your Application with Intel DAAL

Decide on the variant of the the -daal option of the Intel® C++ Compiler 16 or configure your project in the Integrated Development Environment (IDE):

Compiler Option

IDE Equivalent

-daal or -daal=parallel

Tells the compiler to link with standard threaded Intel DAAL.

Eclipse*:

  1. Go to Project > Properties > C/C++ Build > Settings > Intel C++ Compiler > Performance Library Build Components > Use Intel(R) Data Analytics Acceleration Library.
  2. Select Use threaded Intel DAAL (-daal=parallel) or Use non-threaded Intel DAAL (-daal=sequential), as appropriate.

-daal=sequential

Tells the compiler to link with sequential version of Intel DAAL.

For more information on the -daal compiler option, see the Intel® Compiler User and Reference Guide (default location: /opt/intel/documentation_2016/en/compiler_c/common/core/index.htm).

Step 2: Create and Run Your First Application with Intel DAAL

This short application computes Cholesky decomposition with Intel 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[])
{
    /* Create input numeric table from array */
    SharedPtr<NumericTable> inputData = SharedPtr<NumericTable>(new Matrix<double>(dimension, dimension, inputArray));

    /*  Create the algorithm object for computation of the Cholesky decomposition using the default method */
    cholesky::Batch<> algorithm;

    /* Set input for the algorithm */
    algorithm.input.set(cholesky::data, inputData);

    /* Compute Cholesky decomposition */
    algorithm.compute();

    /* Get pointer to Cholesky factor */
    SharedPtr<Matrix<double> > factor =
        staticPointerCast<Matrix<double>, NumericTable>(algorithm.getResult()->get(cholesky::choleskyFactor));

    /* Print the first element of the Cholesky factor */
    std::cout << "The first element of the Cholesky factor: " << (*factor)[0][0];

    return 0;
}
  1. Paste the application code into the editor of your choice.

  2. Save the file as my_first_daal_program.cpp.

  3. Compile with the following command, providing the selected variant of the -daal compiler option, for example, -daal=parallel:

    icc my_first_daal_program.cpp -daal=parallel -o my_first_daal_program

  4. Run the application.

Step 3 (Optional): Build Your Application with Different Compilers

List the following Intel DAAL libraries on a link line, depending on Intel DAAL threading mode and linking method:

Single-threaded (non-threaded) Intel DAAL

Multi-threaded (internally threaded) Intel DAAL

Static linking

libdaal_core.a

libdaal_sequential.a

libdaal_core.a

libdaal_thread.a

Dynamic linking

libdaal_core.so

libdaal_sequential.so

libdaal_core.so

libdaal_thread.so

These libraries are located in the architecture-specific directory <install dir>/daal/lib/{ia32|intel64}_lin, where the architecture parameter ia32 or intel64 is the same as you provided to the daalvar.sh script during setting environment variables.

Important:

Do not change the above order of listing the libraries on a link line.

Regardless of the linking method, also add to your link line the libraries on which Intel DAAL libraries depend:

  • OpenMP* run-time library of the Intel® compiler libiomp5.so
  • Intel® Threading Building Blocks run-time library of the Intel® compiler libtbb.so

For example, to build your application for Intel® 64 architecture by statically linking with multi-threaded Intel DAAL:

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

Step 4: Build and Run an Intel DAAL Code Example

  1. Build an example:

    Go to the C++ examples directory and execute the make command:

    cd <install_dir>/daal/examples/cpp

    make {libia32|soia32|libintel64|sointel64}

            example=<example_name>

            compiler={intel|gnu}

            mode=build

    Among the {libia32|soia32|libintel64|sointel64} parameters, choose the one that matches the architecture parameter you provided to the daalvars.sh script and has the prefix that matches the type of executables you want to build: lib for static and so for dynamic executables.

    The names of the examples are available in the daal.lst file.

    The command creates a directory for the chosen compiler, architecture, and library extension (a or so). For example: _results/intel_intel64_a.

  2. Run an example:

    Go to the C++ examples directory and execute the make command in the run mode. For example, if you ran the daalvars script with the intel64 target:

    cd <install_dir>/daal/examples/cpp

    make libintel64 example=cholesky_batch.cpp mode=run

    The make command builds the static library for the Intel 64 architecture and cholesky_batch.cpp example with Intel® compiler, assumed by default, and runs the executable.

Java* Language

Build and Run an Intel DAAL Code Example

To build and run Java code examples, use the version of the Java Virtual Machine* corresponding to the architecture parameter you provided to the daalvars.sh script during setting environment variables.

  1. Build examples:

    Go to the Java examples directory and execute the launcher command with the build parameter:

    cd <install_dir>/daal/examples/java

    launcher.sh build $PATH_TO_JAVAC

    The command builds executables *.class (for example, CholeskyBatch.class) in the

    <install dir>/daal/examples/java/com/intel/daal/examples/<example name> directory.

  2. Run examples:

    Go to the Java examples directory and execute the launcher command with the run parameter:

    cd <install_dir>/daal/examples/java

    launcher.sh {ia32|intel64} run $PATH_TO_JAVAC

    Choose the same architecture parameter as you provided to the daalvars.sh script.

    For each example, the results are placed into the file <example name>.res located in the ./_results/ia32 or ./_results/intel64 directory, depending on the specified architecture.

Documentation and Resources

Document

Description

User and Reference Guides for Intel® Data Analytics Acceleration Library

The document contains:

  • Recommendations on programming with Intel DAAL, including performance tips.
  • C++ Application Programming Interface (API) reference
  • Java API reference

Intel® Data Analytics Acceleration Library Installation Guide

The document discusses installation options available for the product and provides installation instructions.

Intel® Data Analytics Acceleration Library Release Notes

The document provides the following information on Intel DAAL:

  • New features of the product
  • Directory layout
  • Link to hardware and software requirements

<install dir>/daal/examples folder.

A collection of programs that demonstrate usage of Intel DAAL application programming interfaces.

/opt/intel/samples_2016/en/daal folder, assuming the default installation path.

A collection of code samples for various algorithms that you can include in your program and immediately use with Hadoop*, Spark*, message-passing interface (MPI), or mySQL*.

Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804