Add optional eager program compilation via ICON4PY_EAGER_PROGRAM_COMPILATION - #1386
Add optional eager program compilation via ICON4PY_EAGER_PROGRAM_COMPILATION#1386msimberg wants to merge 11 commits into
Conversation
|
cscs-ci run default;SESSIONS=model;MODEL_SUBPACKAGES=common:standalone_driver;MODEL_SUBSETS=integration;LEVELS=integration;BACKENDS=gtfn_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model;MODEL_SUBPACKAGES=common:standalone_driver;MODEL_SUBSETS=integration;LEVELS=integration;BACKENDS=dace_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model_mpi;MODEL_MPI_SUBPACKAGES=common:standalone_driver;MODEL_MPI_SUBSETS=integration;LEVELS=integration;BACKENDS=gtfn_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model_mpi;MODEL_MPI_SUBPACKAGES=common:standalone_driver;MODEL_MPI_SUBSETS=integration;LEVELS=integration;BACKENDS=dace_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model;MODEL_SUBPACKAGES=common:standalone_driver;MODEL_SUBSETS=datatest;LEVELS=integration;BACKENDS=gtfn_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model;MODEL_SUBPACKAGES=common:standalone_driver;MODEL_SUBSETS=datatest;LEVELS=integration;BACKENDS=dace_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model_mpi;MODEL_MPI_SUBPACKAGES=common:standalone_driver;MODEL_MPI_SUBSETS=datatest;LEVELS=integration;BACKENDS=gtfn_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;SESSIONS=model_mpi;MODEL_MPI_SUBPACKAGES=common:standalone_driver;MODEL_MPI_SUBSETS=datatest;LEVELS=integration;BACKENDS=dace_gpu;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;ICON4PY_EAGER_PROGRAM_COMPILATION=false |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;GT4PY_BUILD_CACHE_LIFETIME=session;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;GT4PY_BUILD_CACHE_LIFETIME=session;SLURM_PARTITION=normal;SLURM_TIMELIMIT=02:00:00;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;GT4PY_BUILD_CACHE_LIFETIME=session;SLURM_PARTITION=normal;SLURM_TIMELIMIT=02:00:00;ICON4PY_EAGER_PROGRAM_COMPILATION=false A/B comparison: the eager=false leg, matching the earlier eager=true run on the same config (from-scratch compile via GT4PY_BUILD_CACHE_LIFETIME=session). 🤖 Posted by an agent on behalf of @msimberg |
…ogram-compilation
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;GT4PY_BUILD_CACHE_LIFETIME=session;SLURM_PARTITION=normal;SLURM_TIMELIMIT=02:00:00;GT4PY_BUILD_JOBS=32;ICON4PY_EAGER_PROGRAM_COMPILATION=true |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest;GT4PY_BUILD_CACHE_LIFETIME=session;SLURM_PARTITION=normal;SLURM_TIMELIMIT=02:00:00;GT4PY_BUILD_JOBS=32;ICON4PY_EAGER_PROGRAM_COMPILATION=false |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest |
1 similar comment
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest |
|
cscs-ci run default;BACKENDS=dace_gpu;LEVELS=unit;MODEL_SUBPACKAGES=standalone_driver;SESSIONS=model;MODEL_SUBSETS=datatest |
|
cscs-ci run default;SESSIONS=model_mpi;BACKENDS=dace_gpu;LEVELS=integration;MODEL_MPI_SUBPACKAGES=standalone_driver;MODEL_SUBSETS=datatest |
1 similar comment
|
cscs-ci run default;SESSIONS=model_mpi;BACKENDS=dace_gpu;LEVELS=integration;MODEL_MPI_SUBPACKAGES=standalone_driver;MODEL_SUBSETS=datatest |
|
cscs-ci run default;SESSIONS=model_mpi;BACKENDS=dace_gpu;LEVELS=integration;MODEL_MPI_SUBPACKAGES=standalone_driver;MODEL_SUBSETS=datatest |
|
cscs-ci run default;SESSIONS=model_mpi;BACKENDS=dace_gpu;LEVELS=integration;MODEL_MPI_SUBPACKAGES=standalone_driver;MODEL_SUBSETS=datatest |
|
When developing, you can test your changes on CSCS CI before merge with the You can pass options to override pipeline variables, for example:
Available options are:
For each option, See The Merging Once your PR is approved and ready for merging, add it to the merge queue. The Optional Tests To run benchmarks you can use:
For more detailed information please look at CI in the EXCLAIM universe. |
|
cscs-ci run default;SESSIONS=model_mpi;BACKENDS=dace_gpu;LEVELS=integration;MODEL_MPI_SUBPACKAGES=standalone_driver;MODEL_SUBSETS=datatest |
🤖 Opened by an agent on behalf of @msimberg.
ICON4Py currently compiles field operators and programs lazily on first use. This shifts compilation overhead into the first timestep and makes timing less predictable.
This PR adds the ICON4PY_EAGER_PROGRAM_COMPILATION environment variable. When set to true, static field factories eagerly compile their programs during model setup instead of waiting for the first execution. This can front-load compilation cost and make subsequent timesteps more uniform. The default value in CI is set to true so GPU and MPI integration runs exercise the eager path.
Open questions: