Skip to content
Success

Changes

Summary

  1. Jax integration (#1356) (details)
Commit 17b29a7e938300692cec5c6c7e78aae7b9578568 by noreply
Jax integration (#1356)

* Starting to integrate jax with dash more and making the run_scm -jax flag a little more useful by being able to choose to run on the CPU or GPU via -jax=cpu or -jax=gpu rather than requireing environment variables

* Making the jax option even fancier, dash runner chooser is better/smarter now too

* Make CLUBB-JAX launcher portable across macOS and Linux

* Making the jax device detection work without needing the venvs setup first.

* Keep JAX radiation compiled with static timestep scheduling

Preserve the host radiation flag as a static JIT argument and mirror the Fortran conditional directly. Remove the Metal-only eager execution path and redundant branch helpers.

Cover both schedule states, statistics cadence, soil update ordering, and alternating time-dependent radiation calls. Validated with CPU and Metal tests and three-step standalone runs.

* Microphys loop push (#1355)

* First set of loop pushes - feature addition to stats too to allow for calling stats_update multiple times in a timestep and averaging the results, which is quite nice for silhs and allows us to get rid of the special microphysics stats type

* More loop pushes

* Tiny changes to restore BFBness

* Pushing loop into advance_microphys

* Little more loop push

* More basic loop pushing

* More loop pushing, also found what seems to be a bug with additional columns, theres code that uses only the first one. Im leaving this in for now to maintain BFBness, but labeled the problem areas with TODOs

* Potentially final batch of loop pushes

* Adding acc fixes for microphys stuff - the 2D versions called are GPUized, so they need acc data statements surrounding them

* Removing unneccesary single col versions of lots of things

* Restoring some comments and formatting

* A little more restoration, maybe unnecceary

* Little OpenACC fixes for microphys code RESOLVED:900681c91bdbdf8d6cd069bab01663ebac1a3279

* renamed jax jenkins test to clubb_jax_tests

* Making column mirror test work by comparing two different output files rather than one. This test now runs once with 3 different columns in a certain order, say ABC, and again with reverse order CBA, then ensures that A=A B=B and C=C (bit-for-bit equivalence) in both files. This should fail now actually, as there is currently a bug, and this update is intented to improve this test so that it fails before we fix the bug

* Making column mirror test use CPU. This makes it much faster and doesn't change the test at all - not sure why I made it use GPU originally.

* Fixing microphys bug that has been around for quite a while. This happened when making clubb standalone use multiple columns, and only affects columns other than the first. This is BIT_CHANGING, but only for microphysics cases using multiple columns (#1358)

* Test different f90 vs jax flags (#1357)

* wip

* wip

* test is basically done -> find out why some jax runs fail, mabe also run fortran even if jax fails

* fortran is tested regardless of whether jax fails

* changed jenkinsfile + removed l_Lscale_plume_centered from flag file + flag_set readme + lil print F90 fix

* added comments and a new flagset for jax tests

* added new jax flag config file to Jenkinstest

* Small UI fixes to make entry boxes refresh better

* Making python/jax driver status prints happen right away

* Removing accidentally added file

* Improving readmes

* Simpliciation cleanup

---------

Co-authored-by: Daniel Ebel <debel@uwm.edu>
Co-authored-by: Daniel Ebel <124399436+shellwitz@users.noreply.github.com>
The file was modifiedclubb_jax/tests/test_radiation_module.py (diff)
The file was modifieddash_app/assets/09_selected_build_badge.css (diff)
The file was modifieddash_app/pytests/test_profile_tab.py (diff)
The file was modifiedclubb_jax/src/Radiation/radiation_module.py (diff)
The file was addedclubb_jax/tests/test_runtime_info.py
The file was modifiedtests/run_jax_vs_fortran_cases.py (diff)
The file was modifieddash_app/README.md (diff)
The file was addedclubb_jax/runtime_info.py
The file was modifieddash_app/assets/11_tab_run_theme.css (diff)
The file was modifieddash_app/pytests/test_agent_services.py (diff)
The file was modifieddash_app/run_tab/callbacks_runs.py (diff)
The file was modifieddash_app/compile_tab/callbacks.py (diff)
The file was addedclubb_jax/run_jax.py
The file was modifiedclubb_python_driver/advance_clubb_to_end.py (diff)
The file was modifiedrun_scripts/run_scm.py (diff)
The file was modifieddash_app/run_tab/layout.py (diff)
The file was modifieddash_app/pytests/test_selected_build.py (diff)
The file was modifieddash_app/profile_tab/runtime.py (diff)
The file was addeddash_app/shared/jax_device.py
The file was addedclubb_jax/requirements-metal.txt
The file was modifiedclubb_jax/README.md (diff)
The file was addedclubb_jax/tests/test_jax_cli_options.py
The file was modifieddash_app/pytests/test_callbacks_runs.py (diff)
The file was modifieddash_app/pytests/test_run_broker_simplification.py (diff)
The file was modifieddash_app/DEVELOPMENT.md (diff)
The file was modifiedclubb_jax/src/advance_clubb_to_end.py (diff)
The file was removedclubb_jax/run_jax_wrapper.sh
The file was modifiedclubb_jax/src/clubb_standalone.py (diff)
The file was modifieddash_app/compile_tab/build_selector.py (diff)
The file was modifieddash_app/services/models.py (diff)
The file was modifieddash_app/run_tab/runtime.py (diff)
The file was modifieddash_app/profile_tab/callbacks.py (diff)
The file was addeddash_app/pytests/test_jax_device.py
The file was modifieddash_app/shared/actions.py (diff)
The file was modifieddash_app/run_tab/telemetry.py (diff)