From 737e6cb1cda25d362fd9281b74ae15ab0c815b42 Mon Sep 17 00:00:00 2001 From: Steven Roberts Date: Mon, 5 Aug 2024 09:20:54 -0700 Subject: [PATCH 1/3] README Updates (#550) View of the rendered markdown: https://github.com/LLNL/sundials/blob/maintenance/readme/README.md --------- Co-authored-by: David Gardner --- README.md | 47 ++++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index c410afb6ca..1d84b9b6e2 100644 --- a/README.md +++ b/README.md @@ -15,50 +15,62 @@ equation (ODE) systems, differential-algebraic equation (DAE) systems, and nonlinear algebraic systems: * ARKODE - for integrating stiff, nonstiff, and multirate ODEs of the form + $$M(t) \\, y' = f_1(t,y) + f_2(t,y), \quad y(t_0) = y_0$$ * CVODE - for integrating stiff and nonstiff ODEs of the form + $$y' = f(t,y), \quad y(t_0) = y_0$$ * CVODES - for integrating and sensitivity analysis (forward and adjoint) of ODEs of the form + $$y' = f(t,y,p), \quad y(t_0) = y_0(p)$$ * IDA - for integrating DAEs of the form + $$F(t,y,y') = 0, \quad y(t_0) = y_0, \quad y'(t_0) = y_0'$$ * IDAS - for integrating and sensitivity analysis (forward and adjoint) of DAEs of the form + $$F(t,y,y',p) = 0, \quad y(t_0) = y_0(p), \quad y'(t_0) = y_0'(p)$$ * KINSOL - for solving nonlinear algebraic systems of the form + $$F(u) = 0 \quad \text{or} \quad G(u) = u$$ ## Installation ## -For installation directions see the [online install guide](https://sundials.readthedocs.io/en/latest/Install_link.html), -the installation chapter in any of the package user guides, or INSTALL_GUIDE.pdf. +For installation directions, see the [getting started](https://sundials.readthedocs.io/en/latest/sundials/index.html#getting-started) +section in the online documentation. In the [released tarballs](https://github.com/LLNL/sundials/releases), +installation directions are also available in `INSTALL_GUIDE.pdf` and the +installation chapter of the user guides in the `doc` directory. Warning to users who receive more than one of the individual packages at -different times: Mixing old and new versions of SUNDIALS may fail. To avoid -such failures, obtain all desired package at the same time. +different times: Mixing old and new versions of SUNDIALS may fail. To avoid such +failures, obtain all desired package at the same time. ## Support ## -Full user guides for all of the SUNDIALS packages are available [online](https://sundials.readthedocs.io) -and in the [doc](./doc) directory. Additionally, the [doc](./doc) directory -contains documentation for the package example programs. +Full user guides for all of the SUNDIALS packages are available [online](https://sundials.readthedocs.io). +In the [released tarballs](https://github.com/LLNL/sundials/releases), the `doc` +directory includes PDFs of the user guides and documentation for the example +programs. The example program documentation PDFs are also available on the +[releases page](https://github.com/LLNL/sundials/releases). For information on recent changes to SUNDIALS see the [CHANGELOG](./CHANGELOG.md) or the introduction chapter of any package user guide. A list of Frequently Asked Questions on build and installation procedures as -well as common usage issues is available on the SUNDIALS [FAQ](https://computing.llnl.gov/projects/sundials/faq). -For dealing with systems with unphysical solutions or discontinuities see the -SUNDIALS [usage notes](https://computing.llnl.gov/projects/sundials/usage-notes). +well as common usage issues is available on the SUNDIALS +[FAQ](https://computing.llnl.gov/projects/sundials/faq). For dealing with +systems with nonphysical solutions or discontinuities see the SUNDIALS +[usage notes](https://computing.llnl.gov/projects/sundials/usage-notes). -If you have a question not covered in the FAQ or usage notes, please submit -your question to the SUNDIALS [mailing list](https://computing.llnl.gov/projects/sundials/mailing-list). +If you have a question not covered in the FAQ or usage notes, please submit your +question as a [GitHub issue](https://github.com/LLNL/sundials/issues) or to the +SUNDIALS [mailing list](https://computing.llnl.gov/projects/sundials/mailing-list). ## Contributing ## @@ -76,14 +88,15 @@ any publications reporting work done using SUNDIALS packages. The SUNDIALS library has been developed over many years by a number of contributors. The current SUNDIALS team consists of Cody J. Balos, -David J. Gardner, Alan C. Hindmarsh, Daniel R. Reynolds, and Carol S. Woodward. -We thank Radu Serban for significant and critical past contributions. +David J. Gardner, Alan C. Hindmarsh, Daniel R. Reynolds, Steven B. Roberts, and +Carol S. Woodward. We thank Radu Serban for significant and critical past +contributions. Other contributors to SUNDIALS include: James Almgren-Bell, Lawrence E. Banks, Peter N. Brown, George Byrne, Rujeko Chinomona, Scott D. Cohen, Aaron Collier, Keith E. Grant, Steven L. Lee, Shelby L. Lockhart, John Loffeld, Daniel McGreer, -Yu Pan, Slaven Peles, Cosmin Petra, Steven B. Roberts, H. Hunter Schwartz, -Jean M. Sexton, Dan Shumaker, Steve G. Smith, Shahbaj Sohal, Allan G. Taylor, +Yu Pan, Slaven Peles, Cosmin Petra, H. Hunter Schwartz, Jean M. Sexton, +Dan Shumaker, Steve G. Smith, Shahbaj Sohal, Allan G. Taylor, Hilari C. Tiedeman, Chris White, Ting Yan, and Ulrike M. Yang. ## License ## @@ -93,7 +106,7 @@ and [NOTICE](./NOTICE) files for details. All new contributions must be made under the BSD 3-clause license. **Please Note** If you are using SUNDIALS with any third party libraries linked -in (e.g., LAPACK, KLU, SuperLU_MT, PETSc, or *hypre*), be sure to review the +in (e.g., LAPACK, KLU, SuperLU_MT, PETSc, *hypre*, etc.), be sure to review the respective license of the package as that license may have more restrictive terms than the SUNDIALS license. From 115914d3b91f9ef1447729e36cd69d489906d6f1 Mon Sep 17 00:00:00 2001 From: Cody Balos Date: Tue, 6 Aug 2024 10:09:47 -0700 Subject: [PATCH 2/3] Bugfix: remove CMake print warning (#552) Remove usage of print_warning macro that was missed previously --------- Co-authored-by: David Gardner --- CHANGELOG.md | 3 +++ cmake/SundialsDeprecated.cmake | 4 ++-- doc/shared/RecentChanges.rst | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c77cdcbdfb..61bf6ea6d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ Fixed the loading of ARKStep's default first order explicit method. +Fixed a CMake bug regarding usage of missing "print_warning" macro +that was only triggered when the deprecated `CUDA_ARCH` option was used. + ### Deprecation Notices ## Changes to SUNDIALS in release 7.1.1 diff --git a/cmake/SundialsDeprecated.cmake b/cmake/SundialsDeprecated.cmake index a426ac1814..017e867c73 100644 --- a/cmake/SundialsDeprecated.cmake +++ b/cmake/SundialsDeprecated.cmake @@ -180,8 +180,8 @@ endif() # if(DEFINED CUDA_ARCH) - print_warning("The CMake option CUDA_ARCH is deprecated. " - "Use CMAKE_CUDA_ARCHITECTURES instead.") + message(DEPRECATION "The CMake option CUDA_ARCH is deprecated. " + "Use CMAKE_CUDA_ARCHITECTURES instead.") # convert sm_** to just ** string(REGEX MATCH "[0-9]+" arch_name "${CUDA_ARCH}") set(CMAKE_CUDA_ARCHITECTURES diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index cc4a9f919c..2002b0ffd6 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -6,4 +6,7 @@ Fixed the loading of ARKStep's default first order explicit method. +Fixed a CMake bug regarding usage of missing "print_warning" macro +that was only triggered when the deprecated ``CUDA_ARCH`` option was used. + **Deprecation Notices** From 0b5b2c36426722ae9ea3704fd56716e592d1d50c Mon Sep 17 00:00:00 2001 From: David Gardner Date: Thu, 15 Aug 2024 09:09:06 -0700 Subject: [PATCH 3/3] CMake: remove CMAKE_CUDA_ARCHITECTURES default (#553) Allow CMake to automatically determine `CMAKE_CUDA_ARCHITECTURES` if it is not set rather than defaulting to `70` --- CHANGELOG.md | 6 ++++++ cmake/SundialsTPLOptions.cmake | 4 ---- doc/shared/RecentChanges.rst | 6 ++++++ doc/shared/sundials/Install.rst | 14 ++++++++++++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61bf6ea6d0..3a82dd8621 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ ### New Features and Enhancements +The default value of `CMAKE_CUDA_ARCHITECTURES` is no longer set to `70` and is +now determined automatically by CMake. The previous default was only valid for +Volta GPUs while the automatically selected value will vary across compilers and +compiler versions. As such, users are encouraged to override this value with the +architecture for their system. + ### Bug Fixes Fixed the loading of ARKStep's default first order explicit method. diff --git a/cmake/SundialsTPLOptions.cmake b/cmake/SundialsTPLOptions.cmake index 40110eed74..9d186c887f 100644 --- a/cmake/SundialsTPLOptions.cmake +++ b/cmake/SundialsTPLOptions.cmake @@ -46,10 +46,6 @@ sundials_option(ENABLE_PTHREAD BOOL "Enable Pthreads support" OFF) # ------------------------------------------------------------- sundials_option(ENABLE_CUDA BOOL "Enable CUDA support" OFF) -# CMake 3.18 adds this option. -sundials_option(CMAKE_CUDA_ARCHITECTURES STRING "Target CUDA architecture" "70" - DEPENDS_ON ENABLE_CUDA) - # ------------------------------------------------------------- # Enable HIP support? # ------------------------------------------------------------- diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index 2002b0ffd6..0cd3986ee3 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -2,6 +2,12 @@ **New Features and Enhancements** +The default value of :cmakeop:`CMAKE_CUDA_ARCHITECTURES` is no longer set to +``70`` and is now determined automatically by CMake. The previous default was +only valid for Volta GPUs while the automatically selected value will vary +across compilers and compiler versions. As such, users are encouraged to +override this value with the architecture for their system. + **Bug Fixes** Fixed the loading of ARKStep's default first order explicit method. diff --git a/doc/shared/sundials/Install.rst b/doc/shared/sundials/Install.rst index d75eca6e9e..3d730dd594 100644 --- a/doc/shared/sundials/Install.rst +++ b/doc/shared/sundials/Install.rst @@ -523,9 +523,19 @@ illustration only. .. cmakeoption:: CMAKE_CUDA_ARCHITECTURES - Specifies the CUDA architecture to compile for. + Specifies the CUDA architecture to compile for i.e., ``60`` for Pascal, + ``70`` Volta, ``80`` for Ampere, ``90`` for Hopper, etc. See the `GPU compute + capability tables `_ on the NVIDIA + webpage and the `GPU Compilation `_ + section of the CUDA documentation for more information. - Default: ``sm_30`` + Default: Determined automatically by CMake. Users are encouraged to override + this value with the architecture for their system as the default varies + across compilers and compiler versions. + + .. versionchanged:: x.y.z + + In prior versions ``CMAKE_CUDA_ARCHITECTURES`` defaulted to ``70``. .. cmakeoption:: EXAMPLES_ENABLE_C