MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising of a cross-section between industry and research representatives), MPI is a standardized API typically used for parallel and/or distributed computing. The MPI standard is comprised of 2 documents: MPI-1 (published in 1994) and MPI-2 (published in 1996). MPI-2 is, for the most part, additions and extensions to the original MPI-1 specification.
Open-MPI intel: The framework for building Open MPI with the Intel compilers but does NOT claim to represent all possible configurations and variations of the build for all possible target environments.
Question 2: compiler
A compiler is a computer program (or set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language, often having a binary form known as object code). The most common reason for wanting to transform source code is to create an executable program.
ifort: invokes the Intel(R) Fortran Compiler.
mpif90: The mpif90 shell script compiles Fortran Message Passing Interface (MPI) programs. It dynamically links the MPICH2 library by default.
Question 3: Dynamic linking and static linking
Dynamic loading is a mechanism by which a computer program can, at run time, load a library (or other binary)
into memory, retrieve the addresses of functions and variables
contained in the library, execute those functions or access those
variables, and unload the library from memory. Unlike static linking and loadtime linking, this mechanism allows a computer program to startup in the absence of these libraries, to discover available libraries, and to potentially gain additional functionality.
1. Static linking of myprog.f and parallel Intel MKL:
ifort myprog.f -L$MKLPATH -I$MKLINCLUDE
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a -Wl,--end-group -liomp5 -lpthread
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a -Wl,--end-group -liomp5 -lpthread
2. Dynamic linking of myprog.f and parallel Intel MKL:
ifort myprog.f -L$MKLPATH -I$MKLINCLUDE
-lmkl_intel -lmkl_intel_thread -lmkl_core -liomp5 -lpthread
-lmkl_intel -lmkl_intel_thread -lmkl_core -liomp5 -lpthread
3. Static linking of myprog.f and sequential version of Intel MKL:
ifort myprog.f -L$MKLPATH -I$MKLINCLUDE
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_sequential.a $MKLPATH/libmkl_core.a -Wl,--end-group -lpthread
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_sequential.a $MKLPATH/libmkl_core.a -Wl,--end-group -lpthread
4. Dynamic linking of myprog.f and sequential version of Intel MKL:
ifort myprog.f -L$MKLPATH -I$MKLINCLUDE
-lmkl_intel -lmkl_sequential -lmkl_core -lpthread
-lmkl_intel -lmkl_sequential -lmkl_core -lpthread
Question 4: Wrapper
No comments:
Post a Comment