Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update instructions for setting up spack-stack with Nvidia compilers #1462

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

fmahebert
Copy link
Contributor

Summary

This PR brings the Nvidia instructions a bit more up-to-date.

On develop, the instructions only worked with

With this PR, these constraints are updated to the slightly more recent

The instructions have just as many, if not more, caveats than before; however this is a bit more up-to-date and hopefully a bit easier of a starting point for future ... toil.

Testing

Describe the testing done for this PR.

Applications affected

List all known applications (UFS WM, JEDI, SRW, etc.) intentionally or unintentionally affected by this PR.

Systems affected

List all systems intentionally or unintentionally affected by this PR.

Dependencies

If there are PRs that need to be merged before or along with this one, please add "- [ ] waiting on LINK_TO_PR" for each of them

Issue(s) addressed

Link the issues addressed or resolved by this PR (use Fixes #??? for fully resolved issues)

Checklist

  • This PR addresses one issue/problem/enhancement, or has a very good reason for not doing so.
  • These changes have been tested on the affected systems and applications.
  • All dependency PRs/issues have been resolved and this PR can be merged.

xz:
buildable: false

Then, add the following code block to ``envs/jedi-mpas-nvidia-env/site/packages.yaml`` (because ``spack external find`` doesn't appear to work for this library):
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have literally no idea what I'm doing inside spack-stack, so if the experts have an idea of a better way to do this, please suggest it!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My guess is that libbsd is coming is as a dependency of expat. I recently changed the expat requirements in config/common/packages.yaml to disable the libbsd variant. Maybe this manual change isn't needed anymore.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can look into this.

@@ -642,7 +642,7 @@ Creating a new environment with Nvidia compilers
.. warning::
Support for Nvidia compilers is experimental and limited to a small subset of packages of the unified environment. The Nvidia compilers are known for their bugs and flaws, and many packages simply don't build. The strategy for building environments with Nvidia is therefore the opposite of what it is with other supported compilers.

In order to build environments with the Nvidia compilers, a different approach is needed than for our main compilers (GNU, Intel). Since many packages do not build with the Nvidia compilers, the idea is to provide as many packages as possible as external packages or build them with ``gcc``. Because our spack extension ``spack stack setup-meta-modules`` does not support combiniations of modules built with different compilers, packages not being built with the Nvidia compilers need to fulfil the two following criteria:
In order to build environments with the Nvidia compilers, a different approach is needed than for our main compilers (GNU, Intel). Since many packages do not build with the Nvidia compilers, the idea is to provide as many packages as possible as external packages or build them with ``gcc``. Because our spack extension ``spack stack setup-meta-modules`` does not support combinations of modules built with different compilers, packages not being built with the Nvidia compilers need to fulfil the two following criteria:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually no longer true. We now do support building certain packages with a different compiler. We use this with intel/oneapi as preferred compilers, for example, where gcc is the fallback. But, for each of the packages that we use the fallback compiler, we need to check carefully if that is ok (e.g. it can't be a package that depends on MPI, for example). If this is helpful, I can talk you through this next week.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, interesting! I would like to chat and better understand the implications of this. I will not have any time next week, but perhaps on the week of the 27th?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, please ping me on slack (I will forget, 100% guaranteed)

xz:
buildable: false

Then, add the following code block to ``envs/jedi-mpas-nvidia-env/site/packages.yaml`` (because ``spack external find`` doesn't appear to work for this library):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My guess is that libbsd is coming is as a dependency of expat. I recently changed the expat requirements in config/common/packages.yaml to disable the libbsd variant. Maybe this manual change isn't needed anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants