• Mode-1 Multi-Core • Memory Allocators • OpenMP • Intel TBB • Pthreads • Java - Threads • Charm++ Prog. • Message Passing (MPI) • MPI - OpenMP • MPI - Intel TBB • MPI - Pthreads • Compiler Opt. Features • Threads-Perf. Math.Lib. • Threads-Prof. & Tools • Threads-I/O Perf. • PGAS : UPC / CAF / GA • Power-Perf. • Home




hyPACK-2013 : Tuning and Performance of Programs/Benchmarks Using Math Libraries

Tuning and Performance of Application Programs using Compiler optimisation techniques, Codre restructuring techniques and system tuned mathematical libraries on Multi-Core Processors will enhance performance. Performance and scalability of application on multi-core processors with respect to increase in problem size require serious effrots. System provided tuned mathematical libraries on Intel, IBM P690 are discussed below.


Intel Math Kernel Library

(a). MKL Overview

The performance of computer depends how fast the system can move data between processors and memories.The mathematical libraries are tuned to architecture and one can use the best compiler falgs to get the best sustained performance. The high-level libraries are optimized without regard o the processor and can be used effectively on processors from IntelŪ PentiumŪ processor through IntelŪ CoreT 2 Extreme processor family and IntelŪ Itanium 2 processor.

Though Intel Math Kernel Library (Intel MKL) provides support for Fortran and C/C++ programming, not all function domains support both interfaces . For example, LAPACK has no C interface.


(b). Coding with MKL routines

LAPACK

When calling LAPACK routines C-language programs, make sure that you follow Fortran rules:
    -Pass variables by 'address' as opposed to pass by 'value'.
    -Be sure to store your data Fortran -style, i.e. data stored in column-major rather than row-major order.



BLAS

BLAS routines are Fortran-style routines. If you call BLAS routines from a C-language program, you must follow the Fortran-style calling conventions:
    -Pass variables by address as opposed to passing by value.
    -Be sure to store data Fortran-style, i.e. data stored in column-major rather than row-major order.



CBLAS

CBLAS routines are provided as the C-style interface to the BLAS routines. Call CBLAS routines using regular C-style calls. When using the CBLAS interface, the header file mkl.h will simplify the program development as it specifies enumerated values as well as prototypes of all the functions. The header determines if the program is being compiled with a C++ compiler, and if it is, the included file will be correct for use with C++ compilation.



Centre for Development of Advanced Computing