-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
63 changed files
with
3,775 additions
and
1,603 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# -*- Python -*- | ||
|
||
with section("format"): | ||
|
||
# How wide to allow formatted cmake files | ||
line_width = 100 | ||
|
||
# How many spaces to tab for indent | ||
tab_size = 4 | ||
|
||
# If true, separate flow control names from their parentheses with a space | ||
separate_ctrl_name_with_space = False | ||
|
||
# If true, separate function names from parentheses with a space | ||
separate_fn_name_with_space = False | ||
|
||
# If a statement is wrapped to more than one line, than dangle the closing | ||
# parenthesis on its own line. | ||
dangle_parens = True | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
/build | ||
/builddir |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
# xSDK Examples | ||
# xSDK Examples v0.3.0 | ||
|
||
The example codes provided here demonstrate the use of of various xSDK libraries in tandem to solve problems of | ||
interest. Each of the library folders has one or more examples codes that are built of that library | ||
|
@@ -7,34 +7,77 @@ examining the output is a good way to better understand how these libraries can | |
code samples are a good place to start for new projects. More details about the examples can be found | ||
in the README.md files in the library subfolders. For more information on the xSDK see <https://xsdk.info/>. | ||
|
||
## Code Example Summary | ||
|
||
| Example | Libraries | Description | | ||
|:-------------------------------------------|:----------------------------|:--------------------------------------------------| | ||
| hypre/ij_laplacian.c | HYPRE+SuperLU_Dist | 2D Laplacian problem | | ||
| libensemble/test_persistent_aposmm_tao.py | libEnsemble+PETSc | 2D constrained optimization problem | | ||
| mfem/hypre-superlu/convdiff.cpp | MFEM+HYPRE+SuperLU_Dist | 2D steady state convective diffusion | | ||
| mfem/ginkgo/mfem_ex1_gko.cpp | MFEM+Ginkgo | 2D Poisson problem with Ginko solver | | ||
| mfem/petsc/obstacle.cpp | MFEM+PETSc | Membrane obstacle problem (min energy functional) | | ||
| mfem/sundials/transient-heat.cpp | MFEM+SUNDIALS | 2D Transient nonlinear heat conduction | | ||
| petsc/ex19.c | PETSc+HYPRE+SuperLU_Dist | 2D nonlinear driven cavity problem | | ||
| sundials/ark_brusselator1D_FEM_sludist.cpp| SUNDIALS+SuperLU_Dist | Chemical kinetics brusselator problem | | ||
| sundials/cv_petsc_ex7.c | SUNDIALS+PETSc | 2D nonlinear PDE solution | | ||
| trilinos/SimpleSolve_WithParameters.cpp | Trilinos+SuperLU_Dist | Small linear system direct solution | | ||
## Example Summary | ||
|
||
These examples were tested and verified against [email protected]. | ||
|
||
| Example | Libraries | Description | GPUs | | ||
|:------------------------------------------------------|:-------------------------|:--------------------------------------------------|:---------------| | ||
| hypre/ij_laplacian.c | HYPRE+SuperLU_Dist | 2D Laplacian problem | | | ||
| libensemble/test_persistent_aposmm_tao.py | libEnsemble+PETSc | 2D constrained optimization problem | | | ||
| mfem/hypre-superlu/convdiff.cpp | MFEM+HYPRE+SuperLU_Dist | 2D steady state convective diffusion | | | ||
| mfem/ginkgo/mfem_ex1_gko.cpp | MFEM+Ginkgo | 2D Poisson problem with Ginko solver | ![cuda] | | ||
| mfem/petsc/obstacle.cpp | MFEM+PETSc | Membrane obstacle problem (min energy functional) | | | ||
| mfem/strumpack/diffusion-eigen.cpp | MFEM+STRUMPACK+HYPRE | Diffusion eigenvalue problem | | | ||
| mfem/sundials/transient-heat.cpp | MFEM+SUNDIALS | 2D Transient nonlinear heat conduction | | | ||
| mfem/hypre/magnetic-diffusion.cpp | MFEM+HYPRE | Steady state magnetic diffusion problem | ![cuda] | | ||
| mfem/sundials/advection.cpp | MFEM+SUNDIALS | 2D Time-dependent advection | ![cuda] | | ||
| petsc/ex19.c | PETSc+HYPRE+SuperLU_Dist | 2D nonlinear driven cavity problem | ![cuda] | | ||
| plasma/ex1solve.c | PLASMA+SLATE+BLASPP | Linear system direct solution | ![cuda] | | ||
| sundials/ark_brusselator1D_FEM_sludist.cpp | SUNDIALS+SuperLU_Dist | Chemical kinetics brusselator problem | | | ||
| sundials/cv_petsc_ex7.c | SUNDIALS+PETSc | 2D nonlinear PDE solution | | | ||
| sundials/cvRoberts_blockdiag_magma.cpp | SUNDIALS+MAGMA | Solves a group of chemical kinetics ODEs | ![cuda] ![hip] | | ||
| trilinos/SimpleSolve_WithParameters.cpp | Trilinos+SuperLU_Dist | Small linear system direct solution | | | ||
| strumpack/sparse.cpp | STRUMPACK+ButterflyPACK | 3D Poisson problem with STRUMPACK preconditioner | | | ||
|
||
These examples are currently in the repo but will not be enabled in the xsdk-examples spack package until we release a new version of the xSDK. | ||
They can still be built using CMake directly. | ||
|
||
| Example | Libraries | Description | | ||
|:-------------------------------------------|:----------------------------|:--------------------------------------------------| | ||
| mfem/sundials/advection.cpp | MFEM+SUNDIALS (CUDA) | 2D Time-dependent advection | | ||
| sundials/cvRoberts_blockdiag_magma.cpp | SUNDIALS+MAGMA (CUDA) | Solves a group of chemical kinetics ODEs | | ||
| Example | Libraries | Description | GPUs | | ||
|:------------------------------------------------------|:-------------------------|:--------------------------------------------------|:---------------| | ||
| amrex/sundials/amrex_sundials_advection_diffusion.cpp | AMReX+SUNDIALS | 2D Advection-diffusion problem | ![cuda] ![hip] | | ||
| mfem/hypre/magnetic-diffusion.cpp | MFEM+HYPRE | Steady state magnetic diffusion problem | ![hip] | | ||
|
||
## Installing the Examples | ||
|
||
## Install the code samples | ||
The examples can be installed along with the xSDK utilizing the Spack package. | ||
|
||
The examples can be installed along with the xSDK utilizing the spack package. | ||
``` | ||
spack install xsdk-examples | ||
``` | ||
|
||
Further details on how to run each example code can be found in each example folder's README.md file. | ||
To install with CUDA support, | ||
|
||
``` | ||
spack install xsdk-examples+cuda cuda_arch=<arch> | ||
``` | ||
|
||
Since `xsdk-examples` depends on the `xsdk` Spack package, Spack will also install `xsdk`. In some cases, it may be easier to install the `xsdk` package (separately) following https://xsdk.info/download/ prior to the `xsdk-examples` package. | ||
|
||
Alternatively the examples can be built and installed with CMake directly: | ||
|
||
``` | ||
git clone https://github.com/xsdk-project/xsdk-examples | ||
cmake -DCMAKE_PREFIX_PATH=/path/to/libraries -DENABLE_CUDA=<TRUE|FALSE> -DENABLE_HIP=<TRUE|FALSE> -S xsdk-examples/ -B xsdk-examples/builddir | ||
cd xsdk-examples/builddir | ||
make | ||
make install | ||
``` | ||
|
||
Note, that to build with HIP support CMake must be used directly. | ||
|
||
## Running and Testing | ||
|
||
xsdk-examples is setup to use `ctest`. Each example in the repository is tested with at least a set of default options. If CMake is used to build xsdk-examples, the tests can be run from the build directory (`builddir` above): | ||
``` | ||
ctest . | ||
``` | ||
or | ||
``` | ||
make test | ||
``` | ||
Details on how to run each example code manually (and with different options) can be found in each example folder's README.md file. | ||
|
||
|
||
[cuda]: https://img.shields.io/badge/-cuda-brightgreen?style=flat "CUDA" | ||
[hip]: https://img.shields.io/badge/-hip-red?style=flat "HIP" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# AMReX+SUNDIALS requires [email protected]: and [email protected]: | ||
if(ENABLE_SUNDIALS AND ("${AMReX_RELEASE_NUMBER}" VERSION_GREATER_EQUAL "22.04") AND ("${SUNDIALS_PACKAGE_VERSION}" VERSION_GREATER_EQUAL 6.2.0)) | ||
add_subdirectory(sundials) | ||
else() | ||
message(STATUS "SKIPPED AMReX+SUNDIALS example because AMReX version is too old or SUNDIALS version is too old (need 22.04: and 6.2.0:)") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
add_executable(amrex_sundials_advection_diffusion amrex_sundials_advection_diffusion.cpp) | ||
|
||
if(ENABLE_CUDA) | ||
set_source_files_properties(amrex_sundials_advection_diffusion.cpp PROPERTIES LANGUAGE CUDA) | ||
set_target_properties( | ||
amrex_sundials_advection_diffusion PROPERTIES CUDA_SEPARABLE_COMPILATION ON | ||
) # This adds -dc | ||
endif() | ||
|
||
target_link_libraries(amrex_sundials_advection_diffusion PRIVATE XSDK::AMReX XSDK::SUNDIALS MPI::MPI_CXX) | ||
|
||
xsdk_add_test( | ||
NAME AMREX-amrex_sundials_advection_diffusion COMMAND | ||
$<TARGET_FILE:amrex_sundials_advection_diffusion> | ||
) | ||
|
||
install(TARGETS amrex_sundials_advection_diffusion RUNTIME DESTINATION bin) |
Oops, something went wrong.