Conversation
…m spack-native install and explain what happens for spack-external installs
|
@davydden @adamjstewart @tgamblin I also left in the perhaps unexpecterd instructions for declaring a "stub" |
|
I added a doc section on how to properly link the MKL using the utilities from class While large parts are not specific to the MKL, the issues came to the fore when MKL is used. |
|
@mamelara |
|
So just to clarify, the intel mkl advisor recommends a link line looking like this: With the key part being this: So I was thinking that something like spec['blas'].ld_flags would return something like that if it is trying to link statically. We've been running into the issue of getting undefined references since for whatever reason those libraries have circular dependencies on each other. Obviously, I don't want to hold this PR back any longer and could add the change later if need be but I was wondering if this PR addressed that. |
|
@mamelara Can you offer more specifics on the failure? Is it just undefined symbols or inability to link statically in general? Some thoughts:
|
|
I would be happy to merge now (after merge conflicts are resolved): @davydden mentioned that this worked for him. And the documentation is great. @adamjstewart had some comments about refactoring but IMO those could be handled in another issue/PR. I also think @mamelara's concerns could be handled in a new issue/PR. Were you looking for any additional user testing or feedback? If so, if you resolve the conflicts in the next couple days. I could merge #7540 at which point I assume it would be easy to resolve conflicts which arise from that (since you mention your edits are a superset of that). |
Agreed. The semester just started for me so I probably won't have time to review very many Spack PRs. If everyone can build their favorite packages with this branch them I'm fine with the merge. |
|
@scheibelp Following up, I just saw the conflicts, and will review. @davydden had a note on #9032, obviating an SPACK_COMPILER_EXTRA_RPATHS modification for MKL here. That's not merged yet, though, so I'll have to leave that RPATH part in. |
|
@scheibelp Note that there was a strange Travis failure for Python-3.6. The raw log does not mention "intel" so I don't think the failure has to do with that PR itself. |
|
Thanks for this!
Agreed - the final message indicates that the build was stalled. |
Consolidate prefix calculation logic for intel packages into the IntelPackage class. Add documentation on installing Intel packages with Spack an (alternatively) adding them as external packages in Spack.
Consolidate prefix calculation logic for intel packages into the IntelPackage class. Add documentation on installing Intel packages with Spack an (alternatively) adding them as external packages in Spack.
Consolidate prefix calculation logic for intel packages into the IntelPackage class. Add documentation on installing Intel packages with Spack an (alternatively) adding them as external packages in Spack.
I reworked
class IntelPackageto overcome what was for me a major barrier to entry in adopting Spack that showed up when attempting to integrate an existing Intel tool chain on my HPC system.There was a serious conceptual conflict for
prefixbetween versions of Intel packages that were installed under Spack and those brought in viapackages.yaml. I am not the only one to have stumbled over this, see e.g. https://groups.google.com/d/msg/spack/x28qlmqPAys/Ewx6220uAgAJThis is an initial attempt at tackling the problem, having targeted MKL and Intel-MPI as proof-of-concept. I was able to build ABINIT and CP2K with those, the latter having a downright gluttonous list of dependencies. Other Intel packages should be possible to integrate.
The major affected files so far are:
.../build_systems/intel.py.../intel-mkl/package.py.../intel-mpi/package.py.../intel-parallel-studio/package.pyA major goal was elimination of duplicate code. To this end, I pulled up
foo_libs()and related methods into theIntelPackageclass definition. The following methods should give a flavor of my approach:The reorganization dramatically shortens
.../intel-mkl/package.py, and allows to write, e.g.Other changes are minor and showed up/were prompted by testing:
lib/spack/spack/environment.pyvar/spack/repos/builtin/packages/libxc/package.pyComments and suggestions on my approach are needed and welcome.