Tags: sourceryinstitute/rte-rrtmgp
Tags
This version is used in older versions of ICON. The tag prevents the garbage collector from removing commits that are referenced by older versions of ICON. Please, keep it at least until Jun 1st, 2022.
Streamlined LW calculations, OpenMP GPU support, small efficiency cha… …nges, updates to continuous integration (earth-system-radiation#110) OpenMP GPU offload, tested with CCE 11.0.0. Longwave Jacobians aren't computed if the optional arguments aren't provided. Finalization methods for optical properties arrays are introduced. Make is streamlined to use environment variables and omit config files. Small changes for efficiency and robustness. Continuous integration is evolved; includes gfortran 9 and 10 on Github actions; current Nvidia and Intel HPC compilers in containers; Cray CPU and OpenMP GPU and PGI 20 OpenACC. Co-authored-by: Nichols Romero <naromero@anl.gov> Co-authored-by: Dustin Swales <Dustin.Swales@noaa.gov> Co-authored-by: Peter Ukkonen <peterukk@gmail.com> Co-authored-by: Chiel van Heerwaarden <chiel.vanheerwaarden@wur.nl>
Merge branch 'master' of https://github.com/RobertPincus/rte-rrtmgp i… …nto dtc/ccpp Conflicts: rte/mo_optical_props.F90 rte/mo_rte_lw.F90
Accumulated changes from develop Moving accumulated changes from branch develop onto master. *) Bug fixes: rescaling LW calculation to treat scattering *) Sensitivity (Jacobian) of LW fluxes to surface temperature *) NRLSSI2 model of solar variability including the ability to specify total solar irradiance (earth-system-radiation#43) *) Parameterization for optimal single angle at which to do LW no-scattering calculations Argument lists for ty_gas_optics_rrtmgp%load() are changed for both LW and SW versions. The optimal angle works but has no effect; updated data to come. Testing and continuous integration has also been expanded, including a new set of regression tests in tests/ Co-authored-by: Valentin Clement (バレンタイン クレメン) <clementval@gmail.com> Co-authored-by: Benjamin R. Hillman <bhillma@sandia.gov> Co-authored-by: Dmitry Alexeev <53860485+alexeedm@users.noreply.github.com> Co-authored-by: inpolonsky <51209434+inpolonsky@users.noreply.github.com> Co-authored-by: jdelamere <jdelamere@users.noreply.github.com>
Accumulated changes from develop (earth-system-radiation#37) RFMIP test cases run completely on GPUs (tested with PGI 16.4). Merged default and OpenACC kernel implementations where possible. Updated DOI in Readme to point to accepted paper. Coefficient files opened read-only (not read-write) Reorganized RFMIP example scripts. Thread-safety by not initializing pointers to NULL(). Closes earth-system-radiation#35. Specific commits: * Update README.md * Travis CI integration (earth-system-radiation#24) * Merging Travis CI onto GPU-Hackathon 2019 branch (earth-system-radiation#25) * Missed one file in last commit * tweaks for CPU compilation * In OpenACC: allocating types as well as data components in ACC copyins, deletes * Ignoring things for Luis... * Missing statement * Aligning array sizes in kernels with arguments * Refined argument intents for some kernels * Workaround for PGI compiler problem with logicals * Input sanitizing gets it own module * Yeah, we'll need the sanitizing module too. * OpenACC-compatible checking for max and min values * OpenACC value checking working; OLCF makefile doesn't use managed memory * Logical kind chosen with pre-preprocessor flags * End results from GPU Hackathon19 (earth-system-radiation#27) -- Several small bug fixes (argument intent, maximum interpolation indices, thanks to Sebastian Rast) -- Parameterized checking for out-of-range values (works also on GPU) -- Continuous integration with Travis (thanks to Valentin Clement) -- Logical type defaults to Fortran; can be set to use c_bool with -DUSE_CBOOL -- Internal build system can use environmental variables instead of specified files (Makefile.conf etc.) to define compilers, flags, choose kernel directory -- Python scripts to automate running and testing of RFMIP examples -- Update RFMIP examples to use version 1.2 of atmospheres file -- End-to-end RFMIP examples on GPU are broken; fixes pending * Removing unneeded USE statement (thanks to Cheil van Heerwarden). * Remove nullify on declaration for thread safety (earth-system-radiation#29) Remove nullify statements on declaration of pointers in subroutines to ensure thread safety for mo_gas_optics_rrtmgp. When pointers get assigned in declarations, they implicitly get a save attribute and are assumed static. This is a problem when then occurs in a threaded region, so this code was NOT thread-safe before. Removing the `=> NULL()` does not change the behavior of the code for non-threaded applications, but does ensure thread-safety. * Array size bug fix in compute_bc() * Open coefficients files for read-only access (earth-system-radiation#32) Open coefficients files for read-only, rather than read-write access because we do NOT want to accidentally write to these files, nor do we want to require users to have write-permissions to load these files. Closes earth-system-radiation#31, earth-system-radiation#32. * Moved downloading of reference results for RFMIP from file staging script to comparision * Updating README with DOI for overview paper. * GPU refinement (earth-system-radiation#34) * Shortwave RFMIP running end-to-end on GPU. Boundary conditions still on CPU. * Upper boundary condition lives on GPU in LW no-scattering calculation. * Moved optical props validation in rte_lw(); simplified data movement in gas optics. Source function still sloshing back and forth between host and device. * Surface emissivity computed on GPU in LW RFMIP example * Moved transposition of surface Planck source onto GPU, clumsily; LW RFMIP cases now running end-to-end on device. * RFMIP boundary conditions on GPU; removing async (may add back later) * Reorder kernels use a single source * Moving array-zeroing routines into mo_util_array * Single-source for array utilities * rte_sw uses array utilities to check validity of boundary conditions * Adding 1D array-zeroing routine * Some SW RFMIP boundary conditions on GPU. * Single-source for fluxes_broadband_kernels * Removing an unneeded OpenACC data transfer * Array value checking uses functions in mo_rte_lw; syntactic cleanup * Correcting mal-formed Makefile * Refined copying of one array in SW examples. * Ben Hillman spots a GPU array being initialized on the CPU. Fixed that. * Updating CSCS compiler and module information as suggesed by Phillipe Marti. Closes earth-system-radiation#36. * Further updates to Daint modules, library paths from Philippe Marti.
Accumulated changes from develop (earth-system-radiation#37) RFMIP test cases run completely on GPUs (tested with PGI 16.4). Merged default and OpenACC kernel implementations where possible. Updated DOI in Readme to point to accepted paper. Coefficient files opened read-only (not read-write) Reorganized RFMIP example scripts. Thread-safety by not initializing pointers to NULL(). Closes earth-system-radiation#35. Specific commits: * Update README.md * Travis CI integration (earth-system-radiation#24) * Merging Travis CI onto GPU-Hackathon 2019 branch (earth-system-radiation#25) * Missed one file in last commit * tweaks for CPU compilation * In OpenACC: allocating types as well as data components in ACC copyins, deletes * Ignoring things for Luis... * Missing statement * Aligning array sizes in kernels with arguments * Refined argument intents for some kernels * Workaround for PGI compiler problem with logicals * Input sanitizing gets it own module * Yeah, we'll need the sanitizing module too. * OpenACC-compatible checking for max and min values * OpenACC value checking working; OLCF makefile doesn't use managed memory * Logical kind chosen with pre-preprocessor flags * End results from GPU Hackathon19 (earth-system-radiation#27) -- Several small bug fixes (argument intent, maximum interpolation indices, thanks to Sebastian Rast) -- Parameterized checking for out-of-range values (works also on GPU) -- Continuous integration with Travis (thanks to Valentin Clement) -- Logical type defaults to Fortran; can be set to use c_bool with -DUSE_CBOOL -- Internal build system can use environmental variables instead of specified files (Makefile.conf etc.) to define compilers, flags, choose kernel directory -- Python scripts to automate running and testing of RFMIP examples -- Update RFMIP examples to use version 1.2 of atmospheres file -- End-to-end RFMIP examples on GPU are broken; fixes pending * Removing unneeded USE statement (thanks to Cheil van Heerwarden). * Remove nullify on declaration for thread safety (earth-system-radiation#29) Remove nullify statements on declaration of pointers in subroutines to ensure thread safety for mo_gas_optics_rrtmgp. When pointers get assigned in declarations, they implicitly get a save attribute and are assumed static. This is a problem when then occurs in a threaded region, so this code was NOT thread-safe before. Removing the `=> NULL()` does not change the behavior of the code for non-threaded applications, but does ensure thread-safety. * Array size bug fix in compute_bc() * Open coefficients files for read-only access (earth-system-radiation#32) Open coefficients files for read-only, rather than read-write access because we do NOT want to accidentally write to these files, nor do we want to require users to have write-permissions to load these files. Closes earth-system-radiation#31, earth-system-radiation#32. * Moved downloading of reference results for RFMIP from file staging script to comparision * Updating README with DOI for overview paper. * GPU refinement (earth-system-radiation#34) * Shortwave RFMIP running end-to-end on GPU. Boundary conditions still on CPU. * Upper boundary condition lives on GPU in LW no-scattering calculation. * Moved optical props validation in rte_lw(); simplified data movement in gas optics. Source function still sloshing back and forth between host and device. * Surface emissivity computed on GPU in LW RFMIP example * Moved transposition of surface Planck source onto GPU, clumsily; LW RFMIP cases now running end-to-end on device. * RFMIP boundary conditions on GPU; removing async (may add back later) * Reorder kernels use a single source * Moving array-zeroing routines into mo_util_array * Single-source for array utilities * rte_sw uses array utilities to check validity of boundary conditions * Adding 1D array-zeroing routine * Some SW RFMIP boundary conditions on GPU. * Single-source for fluxes_broadband_kernels * Removing an unneeded OpenACC data transfer * Array value checking uses functions in mo_rte_lw; syntactic cleanup * Correcting mal-formed Makefile * Refined copying of one array in SW examples. * Ben Hillman spots a GPU array being initialized on the CPU. Fixed that. * Updating CSCS compiler and module information as suggesed by Phillipe Marti. Closes earth-system-radiation#36. * Further updates to Daint modules, library paths from Philippe Marti.
More descriptive names for absorption coefficient files. More sparing… … division in one gas optics kernel. Optimzation rather than debugging by default for Intel compiler.