MAGMA for Intel Xeon Phi

Next generation dense algebra library for heterogeneous systems with accelerators

Compiling and Linking With MAGMA

To be able to compile and link code with MAGMA library user has to load following module:

$ ml magma/1.3.0-mic

To make compilation more user friendly module also sets these two environment variables:

Note

MAGMA_INC - contains paths to the MAGMA header files (to be used for compilation step)

Note

MAGMA_LIBS - contains paths to MAGMA libraries (to be used for linking step).

Compilation example:

$ icc -mkl -O3 -DHAVE_MIC -DADD_ -Wall $MAGMA_INC -c testing_dgetrf_mic.cpp -o testing_dgetrf_mic.o
$ icc -mkl -O3 -DHAVE_MIC -DADD_ -Wall -fPIC -Xlinker -zmuldefs -Wall -DNOCHANGE -DHOST testing_dgetrf_mic.o  -o testing_dgetrf_mic $MAGMA_LIBS

Running MAGMA Code

MAGMA implementation for Intel MIC requires a MAGMA server running on accelerator prior to executing the user application. The server can be started and stopped using following scripts:

Note

To start MAGMA server use: $MAGMAROOT/start_magma_server

Note

To stop the server use: $MAGMAROOT/stop_magma_server

Note

For deeper understanding how the MAGMA server is started, see the following script: $MAGMAROOT/launch_anselm_from_mic.sh

To test if the MAGMA server runs properly we can run one of examples that are part of the MAGMA installation:

[user@cn204 ~]$ $MAGMAROOT/testing/testing_dgetrf_mic
[user@cn204 ~]$ export OMP_NUM_THREADS=16
[lriha@cn204 ~]$ $MAGMAROOT/testing/testing_dgetrf_mic
    Usage: /apps/libs/magma-mic/magmamic-1.3.0/testing/testing_dgetrf_mic [options] [-h|--help]

      M     N     CPU GFlop/s (sec)   MAGMA GFlop/s (sec)   ||PA-LU||/(||A||*N)
    =========================================================================
     1088 1088     ---   (  ---  )     13.93 (   0.06)     ---
     2112 2112     ---   (  ---  )     77.85 (   0.08)     ---
     3136 3136     ---   (  ---  )    183.21 (   0.11)     ---
     4160 4160     ---   (  ---  )    227.52 (   0.21)     ---
     5184 5184     ---   (  ---  )    258.61 (   0.36)     ---
     6208 6208     ---   (  ---  )    333.12 (   0.48)     ---
     7232 7232     ---   (  ---  )    416.52 (   0.61)     ---
     8256 8256     ---   (  ---  )    446.97 (   0.84)     ---
     9280 9280     ---   (  ---  )    461.15 (   1.16)     ---
    10304 10304     ---   (  ---  )    500.70 (   1.46)     ---

Hint

MAGMA contains several benchmarks and examples in $MAGMAROOT/testing/

Note

MAGMA relies on the performance of all CPU cores as well as on the performance of the accelerator. Therefore on Anselm number of CPU OpenMP threads has to be set to 16 with export OMP_NUM_THREADS=16.

See more details at MAGMA home page.

References

[1] MAGMA MIC: Linear Algebra Library for Intel Xeon Phi Coprocessors, Jack Dongarra et. al, http://icl.utk.edu/projectsfiles/magma/pubs/24-MAGMA_MIC_03.pdf