-------- Forwarded Message --------
Subject: Re: [petsc-users] PETSc doesn't allow use of multithreaded MKL with MUMPS + fblaslapack?
Date: Sun, 12 Aug 2018 14:20:42 -0500
From: Satish Balay <[email protected]>
Reply-To: petsc-users <[email protected]>
To: Appel, Thibaut <[email protected]>
CC: [email protected] <[email protected]>

Hm - its just a default - so you can always change the default value
to a more suitable one for your usage. [i.e use --with-blaslapack-lib
option instead of --with-blaslapack-dir option]

For regular petsc build - we think that sequential MKL is the best match.

For a build with C/Pardiso - I believe its best to use threaded MKL.

Wrt with-openmp=1 - if threaded MKL is preferable - I guess we could
change the default. But a default does not prevent one from using a
preferred blas [whatever that is]

Wrt fblaslapack - yes its not multi-threaded. But I believe openblas is
multi-threaded [so you could use --download-openblas as alternative]

The usual issue is - one cannot use threaded MKL [or any threaded
library] as a black box. They would have to always be aware of how
many mpi procs, and openmp threads are being used - and tweak these
parameters constantly. The default for OpenMPI is to use the whole
machine - i.e it expects 1 mpi task per node. If one users more mpi
tasks per node - and does not reduce threads per node - they get bad
performance. Hence we avoid using threaded MKL as a default..

Satish

 On Sun, 12 Aug 2018, Appel, Thibaut wrote:

Good afternoon,

I have an application code written in pure MPI but wanted to exploit 
multithreading in MUMPS (contained in calls to BLAS routines)
On a high-end parallel cluster I’m using, I’m linking with the Intel MKL 
library but it seems that PETSc won’t configure the way I want:

./configure […] —with-openmp=1 --with-pic=1 --with-cc=mpiicc --with-cxx=mpiicpc 
--with-fc=mpiifort --with-blaslapack-dir=${MKLROOT} 
--with-scalapack-lib="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 
-lmkl_blacs_intelmpi_lp64" --with-scalapack-include=${MKLROOT}/include 
--download-metis --download-parmetis --download-mumps

yields BLAS/LAPACK: -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

while if I configure with cpardiso on top of the same flags

./configure […] —with-openmp=1 —with-pic=1 --with-cc=mpiicc --with-cxx=mpiicpc 
--with-fc=mpiifort --with-blaslapack-dir=${MKLROOT} 
--with-scalapack-lib="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 
-lmkl_blacs_intelmpi_lp64" --with-scalapack-include=${MKLROOT}/include 
--with-mkl_cpardiso-dir=${MKLROOT} --download-metis --download-parmetis --download-mumps

the configure script says
===============================================
BLASLAPACK: Looking for Multithreaded MKL for C/Pardiso
===============================================

and yields BLAS/LAPACK: -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread 
-lmkl_blacs_intelmpi_lp64 -liomp5 -ldl -lpthread

In other words, there is no current possibility of activating multithreaded 
BLAS with MUMPS in spite of the option —with-openmp=1, as libmkl_sequential is 
linked. Is it not possible to fix that and use libmkl_intel_thread by default?

On another smaller cluster, I do not have MKL and configure PETSc with BLAS 
downloaded with —download-fblaslapack, which is not multithreaded.
Could you confirm I would need to link with a multithreaded BLAS library I 
downloaded myself and use —with-openmp=1? Would it be `recognized` by the MUMPS 
installed by PETSc?

Thanks for your support,


Thibaut


Reply via email to