[petsc-dev] Compilation with ESSL SMP

Pierre Jolivet pierre.jolivet at enseeiht.fr
Wed Feb 22 11:42:32 CST 2017


This seems to do the trick, thank you all for your comments.

PS: if you know of an easy way like MKL_VERBOSE=1 to make sure that the threaded ESSL functions are indeed being used, I’d appreciate a pointer. Otherwise, I’ll just have to trust the PETSc build system and IBM compilers.

> On Feb 21, 2017, at 4:59 PM, Satish Balay <balay at mcs.anl.gov> wrote:
> 
> Ok I see --with-blas-lapack-lib was changed to --with-blaslapack-lib in petsc master.
> 
> I pushed a fix to master so that '--with-blas-lapack-lib' is also accepted by configure [for backward compatibility].
> 
> Satish
> 
> On Tue, 21 Feb 2017, Satish Balay wrote:
> 
>> 
>> For one the option to use is --with-blaslapack-lib [not --with-blas-lapack-lib]
>> 
>> And you need to use the following notation: (as mentioned previously)
>> 
>> --with-blaslapack-lib="-lessl -llapack -lessl" i.e
>> 
>> --with-blaslapack-lib="/bgsys/ibm_essl/prod/opt/ibmmath/essl/5.1/lib64/libesslsmpbg.a /bglocal/cn/pub/LAPACK/3.7.0/lib/liblapack.a /bglocal/cn/pub/LAPACK/3.7.0/lib/liblapack.a"
>> 
>> If you still have failures - please resend configure.log
>> 
>> Satish
>> 
>> On Tue, 21 Feb 2017, Pierre Jolivet wrote:
>> 
>>> On Mon, 20 Feb 2017 09:19:32 -0700, Jed Brown wrote:
>>>> Pierre Jolivet <Pierre.Jolivet at enseeiht.fr> writes:
>>>> 
>>>>> Hello,
>>>>> It looks like the configure does not directly handle libesslsmpbg
>>>> 
>>>> What did you pass to configure?  LIBS=-lesslsmpbg or similar?
>>> 
>>> Here are my options:
>>> --known-sdot-returns-double=0 --known-snrm2-returns-double=0
>>> --known-has-attribute-aligned=1 --CXXOPTFLAGS="-O3 -qnohot -qsimd=noauto
>>> -qsmp=omp:noauto" --COPTFLAGS="-O3 -qnohot -qsimd=noauto -qsmp=omp:noauto"
>>> --FOPTFLAGS="-O3 -qnohot -qsimd=noauto -qsmp=omp:noauto"
>>> --prefix=build/complex --known-bits-per-byte=8 --known-level1-dcache-assoc=0
>>> --known-level1-dcache-linesize=32 --known-level1-dcache-size=32768
>>> --known-memcmp-ok=1 --known-mpi-c-double-complex=1 --known-mpi-int64_t=1
>>> --known-mpi-long-double=1 --known-mpi-shared-libraries=0
>>> --known-sizeof-MPI_Comm=4 --known-sizeof-MPI_Fint=4 --known-sizeof-char=1
>>> --known-sizeof-double=8 --known-sizeof-float=4 --known-sizeof-int=4
>>> --known-sizeof-long-long=8 --known-sizeof-long=8 --known-sizeof-short=2
>>> --known-sizeof-size_t=8 --known-sizeof-void-p=8 --with-batch
>>> --with-blas-lapack-lib="[/bgsys/ibm_essl/prod/opt/ibmmath/essl/5.1/lib64/libesslsmpbg.a,/bglocal/cn/pub/LAPACK/3.7.0/lib/liblapack.a]"
>>> --with-scalapack-lib="[/bglocal/cn/pub/ScaLAPACK/2.0.2/lib/libscalapack.a]"
>>> --with-cc=mpixlc_r --with-clanguage=c --with-cpp="mpixlc_r -C -E"
>>> --with-cxx=mpixlcxx_r --with-debugging=0 --with-endian=big
>>> --with-fc=mpixlf90_r --with-fortran --with-make=gmake --with-mpi=yes
>>> --with-scalar-type=complex --with-x=0
>>> --download-sowing=../externalpackages/sowing-1.1.23-p1.tar.gz
>>> --download-metis=../externalpackages/metis-5.1.0-p3.tar.gz
>>> --download-mumps=../externalpackages/MUMPS_5.0.2.tar.gz
>>> --download-parmetis=../externalpackages/parmetis-4.0.3-p3.tar.gz
>>> --download-ptscotch=../externalpackages/scotch_6.0.4-p1.tar.gz
>>> --download-pastix=../externalpackages/pastix_5.2.3.tar.bz2
>>> PETSC_ARCH=arch-linux2-c-opt
>>> 
>>> But once the configure stage is complete, the following lib is printed:
>>> BLAS/LAPACK: -lesslbg
>>> 
>>> Is it possible to force the use of libesslsmpbg? Do I need to force that
>>> through the LIB argument as Jed suggested?
>>> 
>>> Thanks for all the input.
>>> 
>>>>> instead of libesslbg. On the other hand, it handles both
>>>>> libmkl_intel_thread and libmkl_sequential.
>>>>> Is there a reason for such a limitation? (I'd like to have direct
>>>>> solvers linked with threaded BLAS).
>>>> 
>>>> People do this by accident or without understanding the implications far
>>>> more often than they do it intentionally.
>>> 
>>> 
>>> 
>> 
>> 
> 




More information about the petsc-dev mailing list