PETSc configure with Intel-compiler static linking

Satish Balay balay at mcs.anl.gov
Thu Jul 9 09:50:21 CDT 2009


On Thu, 9 Jul 2009, Takuya Sekikawa wrote:

> Hello petsc users,
> 
> I need to know how to configure PETSc with Intel-compiler (icc/icpc) on
> static linking.

Why?

> 
> shared linking is just fine, 
> but I need to build PETSc with static-linking. so I tried several description.
> 
> [1]
> $ ./config/configure.py --with-cc=icc --with-cxx=icpc --with-fc=0
> --with-shared=0 --with-blas-lapack-dir=${MKL_DIR}
> 
> environment variable MKL_DIR is set to intel MKL library directory.
> this one is fine, (also compiling and running is ok)
> but is spite of "--with-shared=0" flag, executable still link with .so
> (libmkl_lapack.so, etc)

--with-shared=0 refers to petsc libraries. It doesn't mean static
linking or shared linking. 

Generally static linking is done by the linker option [with icc/ifort
its: -Bstatic]. But since all system libraries might not be available
as static libraries - this might not work.

Esp with MKL - since the librariry names are different between .so and
.a files. [so PETSc configure doesn't explicitly look for tha .a
names.

> 
> so I tried another one:
> 
> [2]
> $ ./config/configure.py --with-cc=icc --with-cxx=icpc --with-fc=0
> --with-shared=0 --with-blas-lapack-lib=${MKL_DIR}/libmkl_lapack.a

Generally - you  need -lmkl_lapack -lmkl -lpthread -lguide

However -lmkl is only available as .so. So you'll have to cat
libmkl.so to see what the actual libraries it links with: For me I
have:

[petsc:10.0.2.018/lib/em64t] petsc> cat libmkl.so
GROUP (libmkl_intel_lp64.so libmkl_intel_thread.so libmkl_core.so)
[petsc:10.0.2.018/lib/em64t] petsc> 


So you might be able to use:

--with-blas-lapack-lib="${MKL_DIR}/libmkl_lapack.a ${MKL_DIR}/libmkl_intel_lp64.a ${MKL_DIR}/libmkl_core.a -lpthread ${MKL_DIR}/libguide.a"


Satish



> 
> this time configure.py failed:
> 
> *********************************************************************************
>          UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for details):
> ---------------------------------------------------------------------------------------
> You set a value for --with-blas-lapack-lib=<lib>, but ['/opt/intel/mkl/10.0.010/lib/em64t/libmkl_lapack.a'] cannot be used
> *********************************************************************************
> 
> Could someone give me good advice? (or examples are greatly appriciated)
> 
> Thanks in advance
> 
> Takuya
> 



More information about the petsc-users mailing list