[petsc-dev] configure issues with new MKL and --with-mkl_sparse_optimize=0

Mills, Richard Tran rtmills at anl.gov
Wed Dec 5 00:03:21 CST 2018


On 12/3/18 5:43 PM, Matthew Knepley wrote:
On Mon, Dec 3, 2018 at 8:35 PM Mills, Richard Tran via petsc-dev <petsc-dev at mcs.anl.gov<mailto:petsc-dev at mcs.anl.gov>> wrote:
Sorry, everyone, for how long it took me to have time to get back to this. I tried the change I suggested in my previous message, but configure fails with

*******************************************************************************
         UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for details):
-------------------------------------------------------------------------------
Did not find package MKL_SPARSE_OPTIMIZE needed by mkl_sparse_sp2m.
Enable the package using --with-mkl_sparse_optimize
*******************************************************************************

Does this happen because I have specified that this is a "look for by default" package? What I'd like to happen is that this package be looked for my default, in fact, but if MKL_SPARSE_OPTIMIZE is not present or disabled, then I'd like the test for mkl_sparse_sp2m to fail gracefully and configure to continue. That is: I don't want the fact that I am looking for this package automatically to imply that it HAS to be there. Is there any easy way to get this behavior?

Put it in the optional packages list. Then check explicitly that it was found in the sp2m configure method.
Hmm. I'm not sure that I understand what you are suggesting, Matt. (Maybe because what I wrote wasn't clear to begin with.) The way things are set up right now, there is a "package", mkl_sparse_sp2m, that depends on the "package" mkl_sparse_optimize. I want configure to always check for mkl_sparse_optimize unless the user explicitly specifies not to, and I'd like the same thing for mkl_sparse_sp2m. But the latter cannot be used unless mkl_sparse_optimize is present and enabled. I'd think that the way things ought to work (not saying that it does work this way) is that I should be able to specify that mkl_sparse_sp2m requires mkl_sparse_optimize, and that I want to look for mkl_sparse_sp2m by default -- and configure should determine that mkl_sparse_sp2m should not be enabled if mkl_sparse_optimize is not present/enabled. I'm not sure how to make this work.

Of course, the above may be all academic, as I think it is better to try to put the mkl_sparse_sp2m stuff in mkl_sparse_optimize.py. mkl_sparse_sp2m is really just a feature associated with mkl_sparse_optimize in the more recent editions of MKL, and I don't think there should be two "packages" associated with this. I'm going to take a stab at rolling these into one package.

--Richard

  Thanks,

    Matt

--Richard

On 11/27/18 2:15 PM, Smith, Barry F. wrote:

On Nov 26, 2018, at 6:12 PM, Mills, Richard Tran via petsc-dev <petsc-dev at mcs.anl.gov><mailto:petsc-dev at mcs.anl.gov> wrote:

Hi Stefano,

Apologies for the slow reply; I was out for the US Thanksgiving Holiday.

You've found an error in the logic for the MKL configure tests: Your MKL does indeed have mkl_sparse_sp2m(), but since this depends on having mkl_sparse_optimize() and you have specified '--with-mkl_sparse_optimize=0', PETSC_HAVE_MKL_SPARSE_SP2M either ought to not be defined, or in my AIJMKL code I should only enable the SP2M code if PETSC_HAVE_MKL_SPARSE_OPTIMIZE is defined. I think I like the former option better. For those more familiar with BuildSystem than I am, I think I can do this by putting the following in setupDependencies() in mkl_sparse_sp2m.py:

    self.mkl_sparse_optimize  = framework.require('config.packages.mkl_sparse_optimize', self)
    self.deps                           = [self.blasLapack,self.mkl_sparse_optimize]


    Looks ok to me. Make a pull request with Satish as a reviewer.

   Barry



Is that all that is required?

--Richard

On 11/21/18 10:59 PM, Stefano Zampini wrote:


Richard,

I just noticed that PETSc master does not build with the options

    '--with-mkl_pardiso-dir=/soft/com/packages/intel/18/u3/mkl',
    '--with-mkl_sparse_optimize=0',

This is on frog at MCS, but it will be the same on other machines as the macros configuration

PETSC_HAVE_MKL_SPARSE_OPTIMIZE not defined
PETSC_HAVE_MKL_SPARSE_SP2M defined

does not seem to be supported.

/nfs2/szampini/src/petsc/src/mat/impls/aij/seq/aijmkl/aijmkl.c(797): error: struct "<unnamed>" has no field "csrA"
    csrA = a->csrA;

Could you please take a look? Why is the mkl_sparse_sp2m package flagged as lookforbydefault in the configure scripts?

Thanks
--
Stefano




--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/<http://www.cse.buffalo.edu/%7Eknepley/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20181205/82a5c1ea/attachment.html>


More information about the petsc-dev mailing list