Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.6.0 #669

Merged
merged 55 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
7d64775
Add CUDA Rosenbrock tests (#579)
sjsprecious Jun 28, 2024
7e9c883
Auto-format code changes (#586)
github-actions[bot] Jun 28, 2024
eac913b
Use Fill to reset the L and U matrices in Rosenbrock solve (#588)
mattldawson Jun 28, 2024
a43b138
In-place linear solve (#585)
K20shores Jun 28, 2024
ab3b32a
Auto-format code changes (#589)
github-actions[bot] Jun 28, 2024
5fa1314
498 mimic camchem substep convergence failure integration acceptance …
K20shores Jun 28, 2024
e18a781
Auto-format code changes (#590)
github-actions[bot] Jun 28, 2024
edb1269
304 reorganize include folder (#591)
K20shores Jun 28, 2024
11eeac7
Auto-format code changes (#592)
github-actions[bot] Jun 28, 2024
8c318b8
577 test all parameter types of the dense matrix cpu rosenbrock on th…
K20shores Jul 9, 2024
46d0a74
Auto-format code changes (#597)
github-actions[bot] Jul 9, 2024
c907877
Fix GPU memory leak for the CUDA unit tests (#600)
sjsprecious Jul 11, 2024
34489a4
Auto-format code changes (#601)
github-actions[bot] Jul 11, 2024
723585f
Backware Euler with vectorizable matrix types (#596)
mattldawson Jul 16, 2024
6a60a49
Auto-format code changes (#605)
github-actions[bot] Jul 16, 2024
f8fc288
572 check for singularity when the solver parameters flag is turned o…
K20shores Jul 17, 2024
03e8dcf
Auto-format code changes (#606)
github-actions[bot] Jul 17, 2024
2256623
Provide a way to access the processes_ data member (#607)
sjsprecious Jul 18, 2024
fe10905
Auto-format code changes (#608)
github-actions[bot] Jul 19, 2024
f935e72
adding headers
K20shores Jul 19, 2024
c333982
Auto-format code changes (#609)
github-actions[bot] Jul 19, 2024
5878c6a
Add missing CUDA tests and fix broken path (#611)
sjsprecious Jul 31, 2024
29d9051
throwing error on mismatched size (#610)
K20shores Aug 5, 2024
c74099c
Auto-format code changes (#612)
github-actions[bot] Aug 5, 2024
4a2908a
Correct usage of third body species (#614)
K20shores Aug 7, 2024
68cd3e2
Auto-format code changes (#615)
github-actions[bot] Aug 7, 2024
6b1c58a
correcting solver builder constructor (#616)
K20shores Aug 7, 2024
10f72ea
Relax the criteria to pass the GPU test with nvhpc/24.7 on Derecho (#…
sjsprecious Aug 13, 2024
649cb0e
Auto-format code changes (#623)
github-actions[bot] Aug 16, 2024
2062687
Update fill function for CUDA matrix (#626)
sjsprecious Aug 21, 2024
18c855f
Auto-format code changes (#627)
github-actions[bot] Aug 21, 2024
be4b2d8
Remove data transfer in cuda matrix constructor and template some CUD…
sjsprecious Aug 23, 2024
cb4d6eb
Auto-format code changes (#633)
github-actions[bot] Aug 23, 2024
5f0f7a1
Remove redundant variable and optimize the copy assignment for the CU…
sjsprecious Aug 29, 2024
89d9ee5
Remove local copy of state in solver functions (#639)
mattldawson Aug 30, 2024
a95562a
Auto-format code changes (#640)
github-actions[bot] Aug 30, 2024
93dba08
Add CUDA stream for asynchronous kernel launch (#641)
sjsprecious Sep 4, 2024
7c5f4bf
Auto-format code changes (#645)
github-actions[bot] Sep 4, 2024
51f6942
Remove the local copy of Jacobian matrix when doing LU decomposition …
sjsprecious Sep 4, 2024
4113375
Auto-format code changes (#647)
github-actions[bot] Sep 4, 2024
0696a8d
Add const to solver functions (#642)
mattldawson Sep 4, 2024
5299039
Replace json to yaml 619 (#649)
montythind Sep 9, 2024
da3f40a
Auto-format code changes (#650)
github-actions[bot] Sep 9, 2024
065c8d6
Add const qualifiers (#651)
mattldawson Sep 11, 2024
225275b
Move Yerror construction outside of the inner solve loop for rosenbro…
montythind Sep 11, 2024
af944cd
Auto-format code changes (#653)
github-actions[bot] Sep 11, 2024
7347b7a
Move temporary variables to the State class (#655)
sjsprecious Sep 14, 2024
6c8875d
Auto-format code changes (#656)
github-actions[bot] Sep 14, 2024
84b4b40
Use CUDA Rosenbrock parameters (#659)
sjsprecious Sep 16, 2024
94c22da
Added license and copyright (#661)
montythind Sep 17, 2024
c4b5479
Auto-format code changes (#660)
github-actions[bot] Sep 18, 2024
16ad525
Misc updates (#665)
sjsprecious Sep 19, 2024
31dd660
Set LU matrices to zero when jacobian is a zero element (#666)
K20shores Sep 24, 2024
58ccf32
Auto-format code changes (#667)
github-actions[bot] Sep 24, 2024
c756a3d
bumping version
K20shores Sep 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/mac.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
- uses: actions/checkout@v4

- name: Run Cmake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}

- name: Build
run: cmake --build build --parallel 10
Expand All @@ -51,7 +51,7 @@ jobs:
- uses: actions/checkout@v4

- name: Run Cmake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}

- name: Build
run: cmake --build build --parallel 10
Expand All @@ -67,7 +67,7 @@ jobs:
strategy:
matrix:
compiler:
- { cpp: g++-11, c: gcc-11}
- { cpp: g++-14, c: gcc-14}
- { cpp: g++-12, c: gcc-12}
- { cpp: clang++, c: clang}
build_type: [Release]
Expand All @@ -79,7 +79,7 @@ jobs:
- uses: actions/checkout@v4

- name: Run Cmake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}

- name: Build
run: cmake --build build --parallel 10
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
uses: actions/checkout@v4

- name: Run Cmake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}

- name: Build
run: cmake --build build --parallel 10
Expand All @@ -48,7 +48,7 @@ jobs:
uses: actions/checkout@v4

- name: Run Cmake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.build_type }}

- name: Build
run: cmake --build build --verbose
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
version: 12.2.0 # https://github.com/egor-tensin/setup-mingw/issues/14

- name: Run Cmake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -G "MinGW Makefiles"
run: cmake -S . -B build -G "MinGW Makefiles"

- name: Build
run: cmake --build build --parallel 10
Expand All @@ -48,7 +48,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Run CMake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -D CMAKE_BUILD_TYPE=${{ matrix.build_type }} -G "Visual Studio 17 2022" -A ${{ matrix.architecture }}
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.build_type }} -G "Visual Studio 17 2022" -A ${{ matrix.architecture }}
- name: Build
run: cmake --build build --config ${{ matrix.build_type }} --parallel 10
- name: Test
Expand All @@ -66,7 +66,7 @@ jobs:
- name: Install Clang
run: curl -fsSL -o LLVM${{ matrix.version }}.exe https://github.com/llvm/llvm-project/releases/download/llvmorg-${{ matrix.version }}.0.0/LLVM-${{ matrix.version }}.0.0-win64.exe ; 7z x LLVM${{ matrix.version }}.exe -y -o"C:/Program Files/LLVM"
- name: Run CMake
run: cmake -S . -B build -DMICM_ENABLE_PROFILE=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" -G"MinGW Makefiles"
run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" -G"MinGW Makefiles"
- name: Build
run: cmake --build build --parallel 10
- name: Test
Expand All @@ -82,7 +82,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Run CMake
run: cmake -S . -B build -D MICM_ENABLE_PROFILE=ON -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -T ClangCL
run: cmake -S . -B build -G "Visual Studio 16 2019" -A ${{ matrix.architecture }} -T ClangCL
- name: Build
run: cmake --build build --config Debug --parallel 10
- name: Test
Expand Down
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cff-version: 1.2.0
message: If you use this software, please cite it as below.
title: Model Independent Chemistry Model (MICM)
version: v3.5.0
version: v3.6.0
doi: "10.5281/zenodo.10472189"
authors:
- family-names: Dawson
Expand Down
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
cmake_minimum_required(VERSION 3.21)

# project and version must be on the same line so that the docs can extract it
project(micm VERSION 3.5.0 LANGUAGES CXX)
project(micm VERSION 3.6.0 LANGUAGES CXX)

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
Expand All @@ -29,7 +29,7 @@ option(MICM_ENABLE_MPI "Enable MPI parallel support" OFF)
option(MICM_ENABLE_OPENMP "Enable OpenMP support" OFF)
option(MICM_ENABLE_COVERAGE "Enable code coverage output" OFF)
option(MICM_ENABLE_MEMCHECK "Enable memory checking in tests" OFF)
option(MICM_ENABLE_JSON "Enable json configuration file reading" ON)
option(MICM_ENABLE_CONFIG_READER "Enable yaml configuration file reading" ON)
option(MICM_BUILD_DOCS "Build the documentation" OFF)
option(MICM_ENABLE_LLVM "Build with LLVM support for JIT-compiling" OFF)
option(MICM_ENABLE_TESTS "Build the tests" ON)
Expand Down Expand Up @@ -99,7 +99,7 @@ endif()
################################################################################
# Command-line driver examples / Command-line profiler

if(PROJECT_IS_TOP_LEVEL AND MICM_ENABLE_JSON AND (MICM_ENABLE_EXAMPLES OR MICM_ENABLE_PROFILE))
if(PROJECT_IS_TOP_LEVEL AND MICM_ENABLE_CONFIG_READER AND (MICM_ENABLE_EXAMPLES OR MICM_ENABLE_PROFILE))
add_subdirectory(examples)
endif()

Expand Down
23 changes: 16 additions & 7 deletions cmake/dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,14 @@ if(MICM_ENABLE_TESTS)
endif()

################################################################################
# nlohmann::json
# yaml-cpp

if(MICM_ENABLE_JSON)
FetchContent_Declare(json
GIT_REPOSITORY https://github.com/nlohmann/json.git
GIT_TAG v3.11.2
if(MICM_ENABLE_CONFIG_READER)
FetchContent_Declare(yaml-cpp
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
GIT_TAG 0.8.0
)
FetchContent_MakeAvailable(json)
FetchContent_MakeAvailable(yaml-cpp)
endif()

################################################################################
Expand All @@ -115,19 +115,28 @@ endif()

if(NOT ${MICM_GPU_TYPE} STREQUAL "None")
string(TOLOWER ${MICM_GPU_TYPE} MICM_GPU_TYPE_LOWER)
# Data center GPUs
set(cuda_arch_map_a100 80)
set(cuda_arch_map_v100 70)
set(cuda_arch_map_h100 90a)
set(cuda_arch_map_h200 90a)
set(cuda_arch_map_b100 95)
set(cuda_arch_map_b200 95)
# Consumer grade GPUs
set(cuda_arch_map_turing 75)

set(cuda_arch_map_all_major all-major)
# Setting CUDAARCHS does not override CMAKE_CUDA_ARCHITECTURES or CUDA_ARCHITECTURES
# until the current process has returned to the caller site in CMake.
set(ENV{CUDAARCHS} ${cuda_arch_map_${MICM_GPU_TYPE_LOWER}})

if("$ENV{CUDAARCHS}" STREQUAL "")
message(FATAL_ERROR "${MICM_GPU_TYPE_LOWER} unsupported, current options are a100,v100,h{1,2}00, b{1,2}00.")
# dynamically create the current options
set(arch_options "")
foreach(arch IN ITEMS a100 v100 h100 h200 b100 b200 turing)
list(APPEND arch_options ${arch})
endforeach()
message(FATAL_ERROR "${MICM_GPU_TYPE_LOWER} unsupported, current options are ${arch_options}.")
endif()

message(STATUS "GPU architecture found: $ENV{CUDAARCHS}")
Expand Down
8 changes: 6 additions & 2 deletions cmake/test_util.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
if(MICM_ENABLE_MEMCHECK)
if(MICM_ENABLE_CUDA)
find_program(MEMORYCHECK_COMMAND "compute-sanitizer")
set(MEMORYCHECK_COMMAND_OPTIONS "--error-exitcode=1 --show-backtrace device --tool=memcheck --launch-timeout=0")
set(MEMORYCHECK_COMMAND_OPTIONS "--error-exitcode=1 --leak-check full --show-backtrace device --launch-timeout=0")
set(CUDA_MEMORY_CHECK TRUE)
else()
find_program(MEMORYCHECK_COMMAND "valgrind")
Expand All @@ -26,7 +26,11 @@ function(create_standard_test)

add_executable(test_${TEST_NAME} ${TEST_SOURCES})

target_link_libraries(test_${TEST_NAME} PUBLIC musica::micm GTest::gtest_main)
if(TEST_IS_CUDA_TEST)
target_link_libraries(test_${TEST_NAME} PUBLIC musica::micm cuda_gtest_main)
else()
target_link_libraries(test_${TEST_NAME} PUBLIC musica::micm GTest::gtest_main)
endif()

# link additional libraries
foreach(library ${TEST_LIBRARIES})
Expand Down
1 change: 0 additions & 1 deletion docker/Dockerfile.memcheck
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ RUN mkdir /build \
-D CMAKE_BUILD_TYPE=release \
-D MICM_ENABLE_CLANG_TIDY:BOOL=FALSE \
-D MICM_ENABLE_MEMCHECK:BOOL=TRUE \
-D MICM_ENABLE_PROFILE:BOOL=TRUE \
../micm \
&& make install -j 8

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.openmp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ RUN mkdir /build \
&& cmake \
-D MICM_ENABLE_CLANG_TIDY:BOOL=FALSE \
-D MICM_ENABLE_OPENMP:BOOL=TRUE \
-D MICM_ENABLE_JSON:BOOL=TRUE \
-D MICM_ENABLE_CONFIG_READER:BOOL=TRUE \
../micm \
&& make install -j 8

Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.publish
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ RUN mkdir /build \
&& cmake \
-D CMAKE_BUILD_TYPE=release \
-D MICM_ENABLE_LLVM:BOOL=TRUE \
-D MICM_ENABLE_JSON:BOOL=TRUE \
-D MICM_ENABLE_CONFIG_READER:BOOL=TRUE \
../micm \
&& make install -j 8

Expand Down
9 changes: 7 additions & 2 deletions docs/source/_static/switcher.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[
{
"name": "v3.5.0 (stable)",
"version": "v3.5.0 (stable)",
"name": "v3.6.0 (stable)",
"version": "v3.6.0 (stable)",
"url": "https://ncar.github.io/micm"
},
{
Expand Down Expand Up @@ -29,6 +29,11 @@
"version": "3.5.0",
"url": "https://ncar.github.io/micm/versions/3.5.0"
},
{
"name": "v3.6.0",
"version": "3.6.0",
"url": "https://ncar.github.io/micm/versions/3.6.0"
},
{
"name": "dev",
"version": "dev",
Expand Down
8 changes: 4 additions & 4 deletions docs/source/getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ Options
.. image:: _static/options.png


MICM can optionally include support for json configuration reading, OpenMP,
MICM can optionally include support for yaml configuration reading, OpenMP,
JIT-compiled chemistry functions, and GPUs. Each of these requires an additional library.
Some of these libraries can be included automatically with cmake build options,
others require that you have libraries installed on your system.

- JSON configuration support
- When building micm, you need to enable the JSON option. This will download and configure the `nlohmann/jsoncpp library <https://github.com/nlohmann/json>`_ for you. For example: ``cmake -DMICM_ENABLE_JSON=ON ..``
- YAML configuration support
- When building micm, you need to enable the YAML option. This will download and configure the `jbeder/yaml-cpp library <https://github.com/jbeder/yaml-cpp>`_ for you. For example: ``cmake -DMICM_ENABLE_CONFIG_READER=ON ..``
- JIT-compiled chemistry functions
- This requires `LLVM <https://llvm.org/docs/index.html>`_ to be installed with on your system. Once it is, you can include the jit options with ``cmake -DENBABLE_LLVM=ON ..``
- GPU support
Expand Down Expand Up @@ -73,7 +73,7 @@ MICM Executable Example
A simple driver for MICM is built with the library and can be used to solve a
chemical system for given initial conditions over one time step.

Just pass the driver the path to the folder containing a valid JSON
Just pass the driver the path to the folder containing a valid YAMl
mechanism configuration and the path to a CSV file holding the initial
conditions.

Expand Down
2 changes: 1 addition & 1 deletion docs/source/user_guide/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ If you would like to include the json examples, you must configure micm to build

.. code-block:: console

$ cmake -DMICM_ENABLE_JSON=ON ..
$ cmake -DMICM_ENABLE_CONFIG_READER=ON ..
$ make
$ ./test_rate_constants_no_user_defined_example_with_config
$ ./test_rate_constants_user_defined_example_with_config
Expand Down
1 change: 1 addition & 0 deletions examples/configs/TS1/species.json
Original file line number Diff line number Diff line change
Expand Up @@ -1274,6 +1274,7 @@
{
"name": "M",
"type": "CHEM_SPEC",
"tracer type": "THIRD_BODY",
"__description": "third-body species"
}

Expand Down
3 changes: 2 additions & 1 deletion examples/configs/carbon_bond_5/species.json
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@
},
{
"name": "M",
"type": "CHEM_SPEC"
"type": "CHEM_SPEC",
"tracer type": "THIRD_BODY"
},
{
"name": "MEO2",
Expand Down
6 changes: 0 additions & 6 deletions examples/configs/chapman/config.json

This file was deleted.

3 changes: 3 additions & 0 deletions examples/configs/chapman/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
camp-files:
- species.yaml
- reactions.yaml
Loading
Loading