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

Version 1.5.0 #78

Merged
merged 205 commits into from
Mar 22, 2024
Merged

Version 1.5.0 #78

merged 205 commits into from
Mar 22, 2024

Conversation

reuterbal
Copy link
Collaborator

Merge develop to master for release of version 1.5.0

awnawab and others added 30 commits March 1, 2023 13:24
Remove obsolete architectures, add march=znver2 option to gnu
Cloudsc variant using SCC optimization with field_api (standalone repo)
* Initial copy of the python driver files and settings to the dedicated branch

* Python calling of Fortran works in the develop branch

* add missing fortran part

* bundle build works for python driver

* Cleanup of the execution process

* Small cleanup. Verifies with activation of venv and setting LD_LIBRARY_PATH

* rpath passed to f2py to find .so libs automatically. Works on Mac, to be checked on Atos

* python packaging configs

* abstracting field_c_to_fortran

* abstracting field_fortran_to_c

* rearrangement of pyiface sources, validates on ATOS, python packaging still not working

* Mods to be able to perform pip install. Works with Python 3.11

* cmake improvements for the python driver to find its dependencies smoothly. Temporarily Python is a required package to build cloudsc

* pyproject.toml added, now builds correctly on ATOS

* First round of cmake cleanup

* Second batch of cmake cleanup. Added ctest entries

* Third batch of CMakelist improvements

* Add master compiler options to f2py invocation; diagnostics and comment removal

* Revert to explicit cloudsc loader in Python, not needed on Mac but needed on Atos. Add importlib to requirements for completeness

* Basic README added

* Fix to reenable CI in Github

* Remove locals from driver, add clic option

* encapsulation of parameters

* Expands almost work, except for 4D vars

* Calling expand works, but nlev has to be hardcoded in expand_r3, possibly to bug in f2py?

* Setting nproma works

* Setting ngptot works

* Cleanup using pylint, a few pylint complains remain, but wont be adressed

* Trying to make Python optional

* Try once again

* Try once again

* Try once again

* Try once again

* Try once again

* Turn off the build of Python interface for CI

* RC1 - works successfuly with nproma=32 on ATOS using GNU and Intel. Now to the last check on Mac

* RC2, corrected wrong character in Readme, downgrade of compulsory Python version in cmake  to 3.8 to reenable CI compilation. Pyiface version itself is not tested in CI

* PyIface: Reverting to 3.8 default Python version

* PyIface: Use cmake macros to setup venv and build/install there

This way we do not rely on the user to setup an bespoke venv and
eventually shoot themselves in the foot.

* PyIface: Clean up CMake layer by separating post-processing steps

We now have three clearly defined steps to generate Python wrappers.

* PyIface: Clean up cloudsc_data utility modules

Remove redundant use of itemgetter, switch to keyword-args call
signatures, etc.

* PyIface: Do dynamic module load via utility routine and CLI override

This now allows us to point to the wrapped-and-generated CLOUDSC
Fortran module, so that we can execute the driver from anywhere.

* PyIface: Fix pip installation of python utility package

* PyIface: Dropping second pip install and install into build/bin

This drops a lot of redundant source file copying in the final stage,
where we now only copy the driver script over and rely on correct
path discover via the CLI options.

This now also allows, in theory, to use editable install of the Python
package.

* PyIface: Fix erroneous usage of expand_r3 and remove expand_r3bis

* PyIface: Rename Python package to pyiface

* PyIface: Fix ctest and install as editable; fix typo in error message

* PyIface: Add CLI override for input file path location

* PyIface: More fixes to path handling in driver

* PyIface: Add second author to pyproject.toml

* Install driver script in venv_pyiface

* Add pyiface to Github actions

* Github: export F77, F90 env vars

* Custom run signature and dedicated build matrix entry for pyiface

* Turn off pyiface by default

* Add pyiface flag in build name

* altered tendency names in cloudsc to match Loki transformations

* Added cloudsc pyiface binary option to build.yml. Update of the READMEs

* Formatting of READMEs are updated

* README fix

* Readme fixes, numbers of microphysics variables sources from the include file

* Update performance after including constant microphysics variable  numbering into cloudsc; add missing space

* PyIface: Use constant cloud variable indices from common module

* PyIface: Final tweaks to READMEs and pyproject.toml

---------

Co-authored-by: Michael Lange <Michael.Lange@ecmwf.int>
Co-authored-by: Balthasar Reuter <balthasar.reuter@ecmwf.int>
Python: Adapt to latest GT4Py release
This already install `run_f2py.py` into the venv, but not yet
`run.py` and `run_split.py` for the GT4Py variants.
This includes a virtualenv setup, installation via add_custom_command
depndency chain and a small ctest runner for the standalone Python
variant.
reuterbal and others added 27 commits February 13, 2024 09:54
…xes-by-nabr

Fix LUMI-G archs for HDF5 in HIP variants
HDF5 support for CUDA/HIP/SYCL variants
Zero or negative values given as first argument of the various prototypes
led to errors. This commit adds semantic to 0 or negative values by enabling
the program to read the OMP_NUM_THREAD value from the environment, or using
the number of procs availables if the variable is not defined.
Add first argument values and the associated effect on the
multithreaded behavior
…eduler

Adjust CUDA-specific loki config file to Loki v0.2.0
Add semantic for reading thread count from $OMP_NUM_THREADS
Update Github actions versions to remove node.js warnings
Update loki version to 0.2.0 and field_api to 0.3.0
@reuterbal reuterbal requested a review from mlange05 March 22, 2024 16:11
Copy link
Collaborator

@mlange05 mlange05 left a comment

Choose a reason for hiding this comment

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

Yes, looks good, as discussed offline. :shipit:

@reuterbal reuterbal merged commit b92e249 into main Mar 22, 2024
35 checks passed
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.

9 participants