13.07.2015 Views

Intel(R) - Computational and Systems Biology at MIT

Intel(R) - Computational and Systems Biology at MIT

Intel(R) - Computational and Systems Biology at MIT

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Intel</strong>® M<strong>at</strong>h Kernel Library Structure 3Starting with release 10.0, <strong>Intel</strong> MKL is extending this approach to support a richer set ofcircumstances, compilers <strong>and</strong> threading in particular.Interfaces. On Linux systems based on IA-64 architecture, the <strong>Intel</strong>® Fortran Compilerreturns complex values differently than gnu <strong>and</strong> certain other compilers do. R<strong>at</strong>her th<strong>and</strong>uplic<strong>at</strong>e the library for these differences, separ<strong>at</strong>e interface libraries are provided, whichease the support of differences between compilers while constraining the size of the library.Similarly, LP64 can be supported on top of ILP64 through an interface. Moreover, certainsoftware vendors have requested support of legacy supercomputers where single precisionmeans 64-bit arithmetic. Again, an interface library provides the needed mapping.Threading. <strong>Intel</strong> MKL has long employed function-level threading throughout the library,choosing to avoid loop-level threading for efficiency reasons. Consequently, all thethreading can be constrained to a rel<strong>at</strong>ively small set of functions <strong>and</strong> collected into alibrary. All references to compiler-specific run-time libraries are gener<strong>at</strong>ed in thesefunctions. Compiling them with different compilers <strong>and</strong> providing a threading library layerfor each supported compiler permits <strong>Intel</strong> MKL to work in programs threaded withsupported threading compilers other than compilers from <strong>Intel</strong>. As all threading is providedthrough OpenMP, but compiling this layer with threading is turned off, a non-threadedversion of the library can also be provided through a layer without threading.Comput<strong>at</strong>ion. For any given processor family (processors based on IA-32, IA-64, or <strong>Intel</strong>®64 architecture), a single comput<strong>at</strong>ional library is used for all interfaces <strong>and</strong> threadinglayers, as there is no parallelism in the comput<strong>at</strong>ional layer.Run-time library (RTL). The last layer provides RTL support. Not all RTLs are delivered with<strong>Intel</strong> MKL. The only RTLs provided, except those th<strong>at</strong> are relevant to the <strong>Intel</strong> MKL clustersoftware, are <strong>Intel</strong>® compiler based RTLs: <strong>Intel</strong>® Legacy OpenMP* run-time compilerlibrary (libguide) <strong>and</strong> <strong>Intel</strong>® Comp<strong>at</strong>ibility OpenMP* run-time compiler library(libiomp). To thread using threading compilers other than those from <strong>Intel</strong>, you canemploy Threading layer libraries or use the Comp<strong>at</strong>ibility library in the appropri<strong>at</strong>ecircumstances.LayersThere are four essential parts of the library:1. Interface layer.2. Threading layer.3. <strong>Comput<strong>at</strong>ional</strong> layer.4. Compiler Support RTL layer (RTL layer, for brevity).3-3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!