[petsc-dev] Extending Petsc
Nystrom, William D
wdn at lanl.gov
Thu Sep 12 11:12:39 CDT 2013
Jose,
I don't really understand why it is necessary to make an MKL package for PETSc. I use MKL with
PETSc all the time. I configure PETSc to use MKL for blas/lapack with a configure option like the
following:
configure \
--PETSC_DIR=$PETSC_DIR \
--PETSC_ARCH=$PETSC_ARCH \
--download-cmake=yes \
--with-mpi=1 \
--with-mpi-dir=$MPI_ROOT \
--with-blas-lapack-dir=$MKL_ROOT \
<...>
A consequence of this is that the MKL libraries wind up on the link line when building PETSc
examples. The link line info is also in the make.log file from a successful build of PETSc. If MKL
is on the link line, then it seems you should be able to resolve the other symbols that your
application might use from MKL with no problems - unless your application needs to use
different libraries from the MKL suite that what the PETSc build system selected. But I think
there would be other ways to deal with that besides making an MKL package for PETSc. I
think PETSc may currently in at least some situations force the use of the sequential version
of MKL, especially if you are using the PETSc threadcomm package. There are probably ways
to get around that if you need to use the threaded version of MKL.
Also, whenever I have these sorts of problems that require getting help from the PETSc team,
I always send a gzipped copy of configure.log and make.log if the build got that far. It is
difficult for them to do much without that info.
Best regards,
Dave
--
Dave Nystrom
LANL HPC-5
Phone: 505-667-7913
Email: wdn at lanl.gov
Smail: Mail Stop B272
Group HPC-5
Los Alamos National Laboratory
Los Alamos, NM 87545
________________________________________
From: petsc-dev-bounces at mcs.anl.gov [petsc-dev-bounces at mcs.anl.gov] on behalf of Barry Smith [bsmith at mcs.anl.gov]
Sent: Thursday, September 12, 2013 9:53 AM
To: Jose David Bermeol
Cc: petsc-dev at mcs.anl.gov
Subject: Re: [petsc-dev] Extending Petsc
We absolutely need configure.log to debug this. All the information about what variants were tried and why they failed are listed in configure.log
On Sep 12, 2013, at 10:41 AM, Jose David Bermeol <jbermeol at purdue.edu> wrote:
> Hi, now I'm trying to compile Petsc with mkl, not just for BLAS/LAPACK functions, but for all functionalities of mkl. What I did until now is to add the file mkl.py to config/PETSc/packages, with the following code:
>
> import PETSc.package
>
> class Configure(PETSc.package.NewPackage):
> def __init__(self, framework):
> PETSc.package.NewPackage.__init__(self, framework)
> self.functions = ['set_default_options']
> self.includes = ['mkl.h']
> self.liblist = [['libmkl_intel_lp64.so', 'libmkl_intel_thread.so', 'libmkl_core.so']]
> self.double = 1
> self.complex = 1
> #self.worksonWindows = 1
> #self.downloadonWindows= 1
> return
>
> I base the implementation in papi.py and SuperLu.py. Then I'run
>
> ./configure --with-mpi-dir=$MPI_HOME --with-mkl-lib=$MKL_ROOT/lib/intel64 --with-mkl-include=$MKL_ROOT/include
>
> And it throws the following error:
>
> *******************************************************************************
> UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log for details):
> -------------------------------------------------------------------------------
> --with-mkl-lib=['PATH/lib/intel64'] and
> --with-mkl-include=['PATH/include'] did not work
> *******************************************************************************
>
> the trace in configure.log is not clear, and I'm not sure if the problem is because all the libraries are shared object libraries (.so) and not static(.a). So maybe you have ideas of why this is happening.
>
> Thanks
>
> ----- Original Message -----
> From: "Barry Smith" <bsmith at mcs.anl.gov>
> To: "Jose David Bermeol" <jbermeol at purdue.edu>
> Cc: petsc-dev at mcs.anl.gov
> Sent: Wednesday, September 11, 2013 8:27:23 PM
> Subject: Re: [petsc-dev] Extending Petsc
>
>
> On Sep 11, 2013, at 5:23 PM, Jose David Bermeol <jbermeol at purdue.edu> wrote:
>
>> So a couple of more question:
>>
>> 1. My code in Petsc and my package depends on intel mkl, I was thinking to compile Petsc to use mkl using --with-mkl-dir flag, do I have to add something in the setupDependencies() method, and because mkl is not in config.packages how can I do that?
>
> You copy something like superlu.py to mkl.py and edit that.
>
> PETSc automatically loads up all the files in the config/PETSc/packages directory so you don't have to list your new file anywhere in setup dependencies or anything
>
>>
>> 2. My package is already installed, so do I have to code the install method?
>
> Nope
>
>>
>> Thanks
>>
>> ----- Original Message -----
>> From: "Barry Smith" <bsmith at mcs.anl.gov>
>> To: "Jose David Bermeol" <jbermeol at purdue.edu>
>> Cc: petsc-dev at mcs.anl.gov
>> Sent: Wednesday, September 11, 2013 5:25:36 PM
>> Subject: Re: [petsc-dev] Extending Petsc
>>
>>
>> You need to put a file in config/PETSc/packages with the name package.py (name of your package) you can, for example, copy superlu.py and edit it to match your package. This is the file that will make sure that PETSC_HAVE_PACKAGE is defined.
>>
>> Barry
>>
>>
>>
>> On Sep 11, 2013, at 4:21 PM, Jose David Bermeol <jbermeol at purdue.edu> wrote:
>>
>>> Hi, right now I'm working in add a new solver for seq aij matrices. What I have until this point are the following files inside the folder aij/seq/:
>>>
>>> - package/ folder with my code
>>> - package.c a initial implementation of the solver.
>>> - makefile is basically a copy of the make file in superlu, but using the name of my package instead of "superlu".
>>>
>>> Also I add to petscmat.h my solver type. Then I run ./configure with the flag --with-package-dir=PATH_TO_PACKAGE. The thing is that when I'm compiling the variable PETSC_HAVE_PACKAGE doesn't show up, I guess that means the variable is 0 or something else happens, and my code is not going to be compile. So if you could give some ideas of why Petsc doesn't compile my code.
>>>
>>>
>>> Thanks
>>>
More information about the petsc-dev
mailing list