-
Notifications
You must be signed in to change notification settings - Fork 47
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
Move spack-stack repos into spack submodule, use two-level namespace for openmpi and mpich, add package py-pyhdf, use only one macOS reference config #131
Conversation
…use two-level namespaces for openmpi and mpich
…me create-env.py to create.py
778b950
to
ca884be
Compare
bd23e62
to
35e8786
Compare
35e8786
to
7bf7d24
Compare
Thanks for looking at this PR! Ready for "review" soon. JediBaseEnv does have a dependency on We could fix that by stripping out the |
88ffdc3
to
8d5e566
Compare
8d5e566
to
65bf01f
Compare
# without having to rerun all other CI tests. Later, should consider | ||
# using https://github.com/jurplel/install-qt-action for all runners | ||
# and get rid of the macOS homebrew installation/package config | ||
#sudo apt-get install qt5-default qttools5-dev-tools |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note. These are not yet used in spack, there was a problem during the concretization step when I added it manually as an external spack. I worked around the long build times using package-level plus install-level parallelism, see further down.
@@ -650,3 +650,5 @@ def substitute_config_vars(config_str): | |||
with open(python_module_file, 'w') as f: | |||
f.write(module_content) | |||
logging.info(" ... writing {}".format(python_module_file)) | |||
|
|||
logging.info("Metamodule generation completed successfully in {}".format(meta_module_dir)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is nice to have, because one can copy & paste the meta_module_dir
for the module use
statement.
@srherbener @mer-a-o FYI |
* Add option to compile `openmpi` without flat namespace (aka two-level namespaces) - corresponding flags borrowed from `mpich` * Rename `nceplibs-bundle` to `nceplibs-bundle-env` * Add new package `py-pyhdf`, add it to `jedi-base-env` * Bug fix for building `hdf` on Ubuntu 20.04 aarch64 - see also spack#30522 * Get timeout for web requests with `urllib` from spack config, same as for `curl` (see corresponding PR for the authoritative spack repo spack#30468) See JCSDA/spack-stack#131 for the corresponding changes in `spack-stack` and for testing.
@@ -225,11 +284,26 @@ runs: | |||
|
|||
- name: build-env | |||
shell: bash | |||
env: | |||
OMP_NUM_THREADS: 16 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this help? The runner only has 2 vcpus, and what uses OpenMP? Does Spack use it internally?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OpenMP threads are used for the package-level build parallelism (config:build_jobs
). It does help, though not a lot. At least it decreases the build time from 6hrs+ to 5hrs 25min with ubuntu/intel for jedi-ewok - good enough for the moment.
openmpi: | ||
environment: | ||
set: | ||
'OMPI_MCA_rmaps_base_oversubscribe': '1' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, this was always one of the reasons I used MPICH. Having it encoded into the environment is good.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Problem with mpich on macOS is that once the ufs-weather-model update to use mpi_f08 is made, we can't use mpich on macOS anymore, because it doesn't build mpi_f08 on macOS. But openmpi does. So I am glad that there is a solution to (a) the oversubscribe problem and (b) the two-level namespace problem.
@kgerheiser Submodule pointer updated, |
Description
This PR has once again grown bigger than intended ... it:
spack-stack
repos into thespack
submoduleecmwf-atlas
toatlas
in the common module configopenmpi
andmpich
(the former required making changes to the package config inspack
, for the latter this was already implemented)OMPI_MCA_rmaps_base_oversubscribe=1
in theopenmpi
module so that one can use more tasks than CPU cores (for unit testing)hdf
and newpy-pyhdf
packagesjpeg
tolibjpeg-turbo
(already part of our spack-stack)macos-monterey-apple-clang-openmpi-reference
(useapple-clang
instead of (llvm)clang
) and removes the macOS reference config for easier maintenancespack
with two-level namespace enabledmpich-3.4.2
built byspack
with two-level namespace enabledspack
, all built into the existing scriptscreate-env.py
is renamed tocreate.py environment ...
for creating local environments; Github unfortunately doesn't see this and thinks it is a new file and the old one got deleted (use a graphical diff tool locally to compare)create.py container ...
configs/containers/docker-ubuntu-gcc-openmpi.yaml
git-lfs
in the common package config, because pinning a version there isn't needed (we don't buildgit-lfs
, but require it due to the dependencies ongo
/go-bootstrap
, which are difficult to build) and having it in there breaks the container buildsREADME.md
,config/sites/README.md
andconfig/common/README.md
into a single (top-level)README.md
sphinx
Dependencies
Issues
Testing
apple-clang@13.1.6
andopenmpi-4.1.3
built byspack
for several applications (including fullctests
for thefv3-jedi
bundle)apple-clang@13.1.6
andmpich-3.4.2
built byspack
for several applications (including fullctests
for thefv3-jedi
bundle)docker-ubuntu-gcc-openmpi
config on macOS