- Mar 31, 2025
-
-
Change the email address after Yen-Chen moves from KIT to TUM. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: other
-
- Mar 27, 2025
-
-
## What is the new feature Make a changelog API that searches for changelogs until the target commit. This way, we can manage the versions more easily. ## How is it implemented In the GitLab [Changelog API](https://docs.gitlab.com/api/repositories/#generate-changelog-data ), the default `from` attribute is the last tag, which is exactly what we wanted. The default `to` attribute is the latest commit at the default branch. We change it to the target commit where we create the tag. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: other
-
- Mar 25, 2025
-
-
## What is the bug The `nvhpc_gpu` manual test creates a new pipeline. ## How do you fix it The manual job was created twice: once upon push and once by merge request event. Therefore, the second pipeline appears. Disabling the merge request event job fixes the CI duplication. Approved-by:
Pradipta Samanta <samanta@dkrz.de> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: bugfix
-
Enabled the use of different partitions for CI jobs running on CPU and GPU (!47) ## What is the bug CI jobs always ran on the shared partition, irrespective of whether they were on CPUs or GPUs ## How do you fix it moved the place of defining the 'SCHEDULAR_PARAMETERS' Approved-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Merged-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Changelog: bugfix
-
- Mar 17, 2025
-
-
## What is the bug 1. CMake warning pops up when one uses FetchContent without setting the download extract time stamp or CMake Policy 0135. 2. `libfortran-support` has been made public, but we are still fetching it via ssh. ## How do you fix it Specify CMake Policy 0135, same as [here in test/fortran](https://gitlab.dkrz.de/icon-libraries/libiconmath/-/blob/main/test/fortran/CMakeLists.txt?ref_type=heads#L13-15 ), fetch `libfortran-support` with https. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: bugfix
-
- Mar 03, 2025
-
-
## What is the bug This MR: * Reverts all variables in `set_zlev()` back from double-precision to working-precision. * Adds a single & double precision variants (previously working-precision) of `rotate_latlon()` ## Details Reverting `set_zlev()` changes I introduced in !13 . This will only effect single-precision builds. Co-authored-by:
Pradipta Samanta <samanta@dkrz.de> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: feature
-
- Feb 24, 2025
-
-
## What is the bug The CMake option `IM_ENABLE_OPENACC` was by mistake written as `MS_ENABLE_OPENACC` in `gitlab-ci.yml` ## How do you fix it Using the correct option now Approved-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Merged-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Changelog: bugfix
-
- Feb 20, 2025
-
-
## What is the bug The use of `c_int` as a variable name in the module `mo_lib_interpolation_scalar` would create conflicts during the C++ implementation of the code. This MR solves the issue #6 ## How do you fix it The variable name `c_int` is changed to `coeff_int` Approved-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Merged-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Changelog: bugfix
-
## What is the bug The `config.cmake.in` was missing `find_dependency(fortran-support)` ## How do you fix it Added the missing call of `find_dependency`. Also, made the call more general and only for packages which are previously found using `find_package` during the compilation of `libiconmath` Merged-by:
Yen-Chen Chen <yen-chen.chen@tum.de> Changelog: bugfix
-
## What is the bug Library links should be public. See #3. This closes #3 . ## How do you fix it Change `PRIVATE` to `PUBLIC`. Approved-by:
Pradipta Samanta <samanta@dkrz.de> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: bugfix
-
- Feb 17, 2025
-
-
## What is the new feature Update the version of `libfortran-support` to the latest, which also supports single precision. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: feature
-
- Feb 12, 2025
-
-
## What is the new feature Support for single-precision as working-precision in libiconmath. Related to fortran-support (libfortran-support!98) Related to icon-mpim milestone (https://gitlab.dkrz.de/icon/icon-mpim/-/milestones/14#tab-issues) ## How is it implemented - Precision handling: Dependent on fortran-support `src/mo_iconlib_kind.f90` - Extensions of some functions to include sp and dp interfaces (independent of wp/sp). - Related branches before libiconmath merger: - libmath-interpolation/feature-single-precision (https://gitlab.dkrz.de/icon-libraries/libmath-interpolation/-/tree/feature-single-precision?ref_type=heads) - libmath-support/feature-single-precision (https://gitlab.dkrz.de/icon-libraries/libmath-support/-/tree/feature-single-precision?ref_type=heads ) Co-authored-by:
Pradipta Samanta <samanta@dkrz.de> Co-authored-by:
Dylan Kierans <dylankierans53@gmail.com> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: feature
-
- Jan 29, 2025
-
-
## What is the new feature Bump license year to 2025 Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: other
-
- Jan 15, 2025
-
-
Generalize field declaration for the least squares reconstruction routines (!24) ## What is the new feature The field declaration of the LSQ reconstruction routines has been generalized slightly, in order to make the routines applicable to the ocean surface wave model **ICON-wave**. ## How is it implemented Currently, the 'vertical' or '3rd' dimension of the local field `z_b` is implicitly identified with `p_patch%nlev`. This is fine for the atmosphere model, but does not work for ICON-WAVE, where the 3rd dimension is the total number of spectral wave energy bins. This issue has been solved by replacing ``` REAL(wp) :: z_d(3, nproma, nlev) ``` with ``` REAL(wp) :: z_d(3, nproma, elev) ``` As a side effect, `nlev` is no longer needed by the reconstruction routines. The argument lists have been adapted accordingly. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: default
-
- Jan 07, 2025
-
-
## What is the bug OpenMP optimization determines the values of `i_startblk` and `i_endblk` on its own instead of the value passed in the subroutine ## How do you fix it Removed the inclusion of `i_startblk` and `i_endblk` as private variables while starting an OMP parallel construct. It was redundant anyway. Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Changelog: bugfix
-
- Dec 20, 2024
-
-
## What is the bug The least squares polynomial reconstruction routines `recon_lsq_cell_XY` have been extracted from the main ICON code and moved to the library `libiconmath`. Testing on NEC@DWD revealed that some of these routines did not vectorize anymore after moving them to `libiconmath`. To illustrate the issue, the compile listing of the loop body is given below for `recon_lsq_cell_c_lib` ``` 1175: |+-----> DO jk = slev, elev 1176: || 1177: || !$ACC LOOP VECTOR PRIVATE(z_qt_times_d) 1178: || !NEC$ ivdep 1179: ||+----> DO jc = i_startidx, i_endidx 1180: ||| 1181: ||| ! calculate matrix vector product Q^T d (transposed of Q times LHS) 1182: ||| ! (intrinsic function matmul not applied, due to massive 1183: ||| ! performance penalty on the NEC. Instead the intrinsic dot product 1184: ||| ! function is applied 1185: ||| !TODO: these should be nine scalars, since they should reside in registers 1186: |||V===> z_qt_times_d(1) = DOT_PRODUCT(lsq_qtmat_c(jc, 1, 1:9, jb), z_d(1:9, jc, jk)) 1187: |||V===> z_qt_times_d(2) = DOT_PRODUCT(lsq_qtmat_c(jc, 2, 1:9, jb), z_d(1:9, jc, jk)) 1188: |||V===> z_qt_times_d(3) = DOT_PRODUCT(lsq_qtmat_c(jc, 3, 1:9, jb), z_d(1:9, jc, jk)) 1189: |||V===> z_qt_times_d(4) = DOT_PRODUCT(lsq_qtmat_c(jc, 4, 1:9, jb), z_d(1:9, jc, jk)) ``` For the library-variant of `recon_lsq_cell_c` we see that the DOT_PRODUCT gets vectorized rather than the horizontal `jc` loop, which leads to a significant performance penalty. Testing revealed, that the desired vectorization can be achieved by ensuring that a complete unrolling of the dot product is performed by the compiler. Unrolling is achieved by changing the compile option `floop-unroll-completely=m` from `m=8` to `m=10`. This makes sense, since the loop count for the dot product in the example given is `m=9`. ## How do you fix it In order to minimize the possibility of unexpected side-effects, the updated compiler option is applied only locally to the module `mo_lib_divrot`, by adding the directive ``` !NEC$ options "-floop-unroll-completely=10" ``` to the top of the module. The resulting compile listing with corrected vectorization is given below: ``` 1180: |+-----> DO jk = slev, elev 1181: || 1182: || !$ACC LOOP VECTOR PRIVATE(z_qt_times_d) 1183: || !NEC$ ivdep 1184: ||V----> DO jc = i_startidx, i_endidx 1185: ||| 1186: ||| ! calculate matrix vector product Q^T d (transposed of Q times LHS) 1187: ||| ! (intrinsic function matmul not applied, due to massive 1188: ||| ! performance penalty on the NEC. Instead the intrinsic dot product 1189: ||| ! function is applied 1190: ||| !TODO: these should be nine scalars, since they should reside in registers 1191: |||*===> z_qt_times_d(1) = DOT_PRODUCT(lsq_qtmat_c(jc, 1, 1:9, jb), z_d(1:9, jc, jk)) 1192: |||*===> z_qt_times_d(2) = DOT_PRODUCT(lsq_qtmat_c(jc, 2, 1:9, jb), z_d(1:9, jc, jk)) 1193: |||*===> z_qt_times_d(3) = DOT_PRODUCT(lsq_qtmat_c(jc, 3, 1:9, jb), z_d(1:9, jc, jk)) 1194: |||*===> z_qt_times_d(4) = DOT_PRODUCT(lsq_qtmat_c(jc, 4, 1:9, jb), z_d(1:9, jc, jk)) 1195: |||*===> z_qt_times_d(5) = DOT_PRODUCT(lsq_qtmat_c(jc, 5, 1:9, jb), z_d(1:9, jc, jk)) 1196: |||*===> z_qt_times_d(6) = DOT_PRODUCT(lsq_qtmat_c(jc, 6, 1:9, jb), z_d(1:9, jc, jk)) ``` Approved-by:
Pradipta Samanta <samanta@dkrz.de> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: default
-
- Dec 09, 2024
-
-
## What is the new feature Updated `fortran-support` to its latest version Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Changelog: other
-
## What is the bug CMake install path needs to be defined explicitly and thus hard to cooperate with upperlayer repositories. Also see libfortran-support!103 ## How do you fix it Use `$<INSTALL_PREFIX>` instead of `${CMAKE_INSTALL_PREFIX}` Approved-by:
Pradipta Samanta <samanta@dkrz.de> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: bugfix
-
- Nov 28, 2024
-
-
## What is the bug CMake build type should not be assigned in `CMakeLists.txt`. See reference [here](https://stackoverflow.com/questions/24460486/cmake-build-type-is-not-being-used-in-cmakelists-txt/24470998#24470998). This is the same update as libfortran-support!101 . ## How do you fix it Remove the corresponding code block and assign CMake build types explicitly. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: default
-
- Nov 26, 2024
-
-
This MR moves the licenses of the technical files and docs into `REUSE.toml`. Therefore the license text will not go into the commit messages by accident in the future. Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: default
-
- Nov 25, 2024
-
-
This is a small optimization of `tdma_solver_vec` that improves its performance and makes it possible to use completely asynchronously. It's a prerequisite to the JSBACH CUDA graph implementation: https://gitlab.dkrz.de/jsbach/jsbach/-/merge_requests/173 Co-authored-by:
Pradipta Samanta <samanta@dkrz.de> Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: bugfix
-
Yen-Chen Chen authored
Move the random number generators from `libfortran-support` Move the codes directly from `libfortran-support`. This is related to libfortran-support!92 __The next versions `libfortran-support` 2.0.0 and `libiconmath` 1.1.0 should be merged at the same time.__ Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: feature
-
Added the option im_enable_openmp to compile the library with the openmp flag (!10) The library now compiles OpenMP codes even when the OpenMP flag is not added manually in CMAKE_Fortran_FLAGS Added the option `IM_ENABLE_OPENMP`, checked whether OpenMP is available as a package and added the flags in the existing Fortran_FLAGS Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Changelog: bugfix
-
The CI runner was set to `levante-fake`, which will be discarded soon. Changed the CI runner to `levante` Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Changelog: other
-
- Oct 17, 2024
-
-
## What is the new feature _Please describe your feature in a couple of words._ ## How is it implemented _Describe important implementation details of the feature._ Merged-by:
Pradipta Samanta <samanta@dkrz.de> Changelog: feature
-
- Sep 24, 2024
-
-
## What is the new feature Added the readme file to add information about the library for users and developers Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu>
-
- Sep 23, 2024
-
-
Fixed installation; other projects can now find module files from iconmath (!8) ## What is the bug Any projects dependent on `libiconmath` were not able to find the associated module files when `libiconmath` was installed in the system. Additionally, the use of an install_prefix was not supported. ## How do you fix it `CMAKE_INSTALL_PREFIX` was not used to define `INSTALL_INTERFACE`. I corrected it now. Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu>
-
Enabled selective building of the individual components of the library (!9) ## What is the new feature The components `interpolation` and `horizontal` can be built selectively depending on whether they are needed or not ## How is it implemented Added two options `BUILD_ICONMATH_INTERPOLATION` and `BUILD_ICONMATH_HORIZONTAL` to enable this Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu>
-
- Aug 27, 2024
-
-
## What is the bug The CMake style check in GitLab CI was not applied to all relevant files ## How do you fix it Use wildcard expression to prevent missing new files in the future. Approved-by:
Yen-Chen Chen <yen-chen.chen@kit.edu> Merged-by:
Yen-Chen Chen <yen-chen.chen@kit.edu>
-
- Aug 23, 2024
-
-
## What is the bug The staring index of `cmake_parse_argument` is wrong in two functions ## How do you fix it Fix the starting index N. Merged-by:
Pradipta Samanta <samanta@dkrz.de>
-
## What is the bug Reuse license template is missing. ## How do you fix it Add a license template so that we can add licenses more easily. Merged-by:
Pradipta Samanta <samanta@dkrz.de>
-
- Aug 21, 2024
-
-
Updated the exception file `_typos.toml` for typo check. `Sice` is not used anywhere. The author's name should be under the extend-words exception. Merged-by:
Pradipta Samanta <samanta@dkrz.de>
-
Merged-by:
Pradipta Samanta <samanta@dkrz.de>
-
- Aug 16, 2024
-
-
Pradipta Samanta authored
-
Pradipta Samanta authored
-
- Aug 15, 2024
-
-
Pradipta Samanta authored
-
Pradipta Samanta authored
-
- Aug 13, 2024
-
-
Pradipta Samanta authored
-
Pradipta Samanta authored
-
Pradipta Samanta authored
-