Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
709a955
fix some more memory leaks and add ubsan support to `CMakeLists.txt` …
superwhiskers Jun 26, 2025
201a04e
Fix bug in KLU class affecting non-symmetric linear systems (#323)
shakedregev Jun 27, 2025
029462a
Update Spack and setup CI with asan and ubsan variants (#322)
nkoukpaizan Jun 27, 2025
caca956
fix the means by which cmake finds the suitesparse include dir (#327)
superwhiskers Jul 8, 2025
d388cce
Fixed GLU to work on non-symmetric matrices.
shakedregev Jul 10, 2025
6e3c6ec
Synchronize devices after HIP functions (#336)
shakedregev Jul 18, 2025
0edd57e
Added the ability to reset a workspace without completely destroying …
shakedregev Jul 22, 2025
885edfa
Enforce F being 0 and remove duplicate extract factors code
shakedregev Jul 24, 2025
4e529f2
Properly address CSR and CSC discrepancies across all solvers.
shakedregev Aug 13, 2025
add95a7
Put sorting within KLU instead of within other solver logic. (#359)
shakedregev Aug 14, 2025
962291a
Adding asymmetric tests (from the data folder) for KLU, CuSolver, and…
shakedregev Aug 28, 2025
64739a4
Shaked/rework examples csr (#367)
shakedregev Sep 4, 2025
8020e40
Fixed experimental examples to use CSR only.
shakedregev Sep 10, 2025
c2eba23
Fix warning on r_KLU_rocsolverrf_asym6x6
nkoukpaizan Sep 10, 2025
51af2d8
Removed all CSC code from CSR solvers. (#375)
shakedregev Sep 11, 2025
43a8e4a
Removed rocSparse "fast" solver from our options (#377)
shakedregev Sep 29, 2025
c9046a6
Updated changelog and PR template (#381)
shakedregev Oct 3, 2025
61ae22c
Update emails in README.md
pelesh Oct 15, 2024
8f957d9
Add code of conduct.
pelesh Oct 15, 2024
ea579e4
Move code of conduct.
pelesh Oct 15, 2024
36f99ee
Add badges
pelesh Oct 15, 2024
32b501d
Change action name to CPU Tests
pelesh Oct 15, 2024
802a08f
Update README.md
pelesh Oct 15, 2024
e2fcdfb
Add logo to the README file.
pelesh Oct 16, 2024
1f50a99
Add logo to readthedocs.
pelesh Oct 16, 2024
effaad6
Manage images for light/dark schemes in README.
pelesh Oct 16, 2024
b6c2aca
Add logo to Doxygen docs.
pelesh Oct 18, 2024
b387cba
Fix path to logo in Doxygen.
pelesh Oct 18, 2024
526f0d2
Update logos
pelesh Oct 22, 2024
3be9ffe
Add svg logo images.
pelesh Dec 27, 2024
366d851
Update README.md
pelesh Dec 27, 2024
5dbd981
Update doxygen landing page.
pelesh Dec 30, 2024
e7d6cfa
Monor changes to Doxygen landing page
pelesh Dec 30, 2024
47a8410
Updated coding and developer guidelines (#242)
shakedregev Mar 14, 2025
aac90b2
Update readthedocs links in README.md
pelesh May 12, 2025
9c1ab7e
documentation clarification (#267)
shakedregev May 13, 2025
bb8fa07
fixing typos
shakedregev May 13, 2025
053aa10
fixed typos
shakedregev May 14, 2025
d187475
Restructured documentation files (#299)
shakedregev Jun 21, 2025
ea48572
Apply pre-commmit fixes
pelesh Jun 21, 2025
6a1239c
Use Re::Solve instead of ReSolve and update Doxygen logo.
pelesh Jun 21, 2025
8339e3a
Simplify doxygen stylesheet, allow dark mode
pelesh Jun 21, 2025
368c5b5
[skip ci] Revert sidebar-only mode.
pelesh Jun 21, 2025
cc2eee0
[skip ci] Another shot on sidebar only doxy theme
pelesh Jun 21, 2025
020e6fa
ReSolve -> Re::Solve
pelesh Jun 28, 2025
c69e8f0
Apply pre-commmit fixes
pelesh Jun 28, 2025
17d67eb
Copy Doxyfile.in -> Doxyfile and then modify.
pelesh Jun 28, 2025
a2d8445
updated contributors
shakedregev Jul 23, 2025
8f4cdcd
straggling changes
shakedregev Jul 23, 2025
812993f
Use correct Doxyfile
pelesh Aug 5, 2025
0f2b7be
Undo doxyfile template changes
pelesh Aug 5, 2025
3e74808
rebased frontmatter-dev
shakedregev Oct 3, 2025
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
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
- [ ] There are unit tests for the new code.
- [ ] The new code is documented.
- [ ] The feature branch is rebased with respect to the target branch.
- [ ] I have updated [CHANGELOG.md](/CHANGELOG.md) to reflect the changes in this PR. If this is a minor PR that is part of a larger fix already included in the file, state so.

## Further comments

Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/spack_cpu_build.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# https://spack.readthedocs.io/en/latest/binary_caches.html#spack-build-cache-for-github-actions
name: Spack Ubunutu x86_64 Buildcache
name: CPU Tests #Spack Ubunutu x86_64 Buildcache

env:
SPACK_COLOR: always
REGISTRY: ghcr.io/ornl
# Our repo name contains upper case characters, so we can't use ${{ github.repository }}
IMAGE_NAME: resolve
USERNAME: resolve-bot
BASE_VERSION: ubuntu-22.04-fortran-v0.1.0
BASE_VERSION: ubuntu-22.04-fortran-v0.2.0

# Until we remove the need to clone submodules to build, this should on be in PRs
on: [pull_request]
Expand Down Expand Up @@ -99,6 +99,7 @@ jobs:
- resolve@develop~klu~lusol
- resolve@develop+klu~lusol
- resolve@develop+klu+lusol
- resolve@develop+asan+klu+lusol+ubsan

name: Build ReSolve with Spack
steps:
Expand Down Expand Up @@ -151,10 +152,10 @@ jobs:
run: spack -e . install --keep-stage --no-check-signature --no-cache --fresh

- name: Test Build
run: cd $(spack -e . location --build-dir resolve@develop) && ctest -VV
run: cd $(spack -e . location --build-dir resolve@develop) && spack -e ${OLDPWD} build-env resolve ctest -VV

- name: Test Installation
run: cd $(spack -e . location --build-dir resolve@develop) && make test_install
run: cd $(spack -e . location --build-dir resolve@develop) && spack -e ${OLDPWD} build-env resolve make test_install

# Push with force to override existing binaries...
- name: Push to binaries to buildcache
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[submodule "buildsystem/spack/spack"]
path = buildsystem/spack/spack
url = https://github.com/cameronrutherford/spack.git
url = https://github.com/spack/spack.git
[submodule "doxygen-awesome-css"]
path = docs/doxygen-awesome-css
url = https://github.com/jothepro/doxygen-awesome-css.git
55 changes: 55 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Re::Solve Changelog

## Changes to Re::Solve in release 0.99.2

### Major Features

1. Re::Solve now works reliably with asymmetric matrices, with no need for intermediate CSC storage.
This requires switching $L$ with $U$ and $P$ with $Q$ and reinterpretting them as CSR instead of CSC.
It is seamless from the user perspective and fixed many bugs.

2. Significant improvements to documentation and instructions inside and outside the code.

3. Added more rigorous checks for PRs for clang formatting and to compile without warnings and memory leaks.

4. Updated pull request and issue templates.

### Bug Fixes

1. Fixed a bug that produced inaccurate results for some asymmetric matrices with major feature 1.

2. Synchronized devices after HIP functions. HIP executes asynchronously, so bugs occured wihout synchronization.

3. Corrected the way cmake finds suitsparse.

4. Fixed various memory leaks and compiler warnings.

### Minor Features and Enhancements

1. Changed all examples and tests to use Csr format, added uniform command line parsers (no longer hard-coded), and decluttered them.

2. Added asymmetric matrices and well-conditioned matrices to the test suite.

3. Removed RocSparse "fast mode" triangular solver and use RocSolver triangular solver only as it is now faster and removes dependencies.

4. Put sorting inside the KLU extraction because many solvers assume sorted factors and there's no need to reimplement sorting constantly.

5. Removed duplicate code, added code comments, corrected code to fit guidelines, removed magic numbers, and simplified code where possible.

6. Added the ability to reset a workspace without completely destroying it.

7. Improved testing and added tests where they were missing.

8. Added kernels for multiplying a vector by a diagonal matrix and a general matrix by a diagonal matrix (left and right).

9. Prohibitted sloppy memory syncing and added more descriptive error messages when a prohibited action is attempted.

10. The code now tracks the updated status for each vector in a multivector.

11. Added the ability to reuse a transpose allocation.

12. Added the ability to generically set solver parameters.

13. Added LUSOL direct solver, which can factorize matrices and extract factors independently of KLU.

14. Various Spack updates.
14 changes: 8 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message(FATAL_ERROR "In-source build prohibited.")
endif()

if (MSVC)
set(CMAKE_CXX_FLAGS "/Wall")
else()
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wconversion -Wpedantic")
endif()

option(RESOLVE_TEST_WITH_BSUB "Use `jsrun` instead of `mpirun` commands when running tests" OFF)
option(RESOLVE_USE_KLU "Use KLU, AMD and COLAMD libraries from SuiteSparse" OFF)
option(RESOLVE_USE_LUSOL "Build the LUSOL library" OFF)
Expand All @@ -31,7 +37,8 @@ option(RESOLVE_USE_PROFILING "Set profiling tracers in the code" OFF)
option(RESOLVE_USE_GPU "Use GPU device for computations" OFF)
mark_as_advanced(FORCE RESOLVE_USE_GPU)

option(RESOLVE_USE_ASAN "Use LLVM address sanitizer" OFF)
option(RESOLVE_USE_ASAN "Enable the address sanitizer" OFF)
option(RESOLVE_USE_UBSAN "Enable the undefined behavior sanitizer" OFF)
option(RESOLVE_USE_DOXYGEN "Use Doxygen to generate Re::Solve documentation" OFF)
set(RESOLVE_CTEST_OUTPUT_DIR ${PROJECT_BINARY_DIR} CACHE PATH "Directory where CTest outputs are saved")

Expand Down Expand Up @@ -113,11 +120,6 @@ else()
message(STATUS "Not using HIP")
endif(RESOLVE_USE_HIP)

if (RESOLVE_USE_ASAN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
endif()

# The binary dir is already a global include directory
configure_file(
${CMAKE_SOURCE_DIR}/resolve/resolve_defs.hpp.in
Expand Down
128 changes: 128 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
resolve-devel@elist.ornl.gov.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
Loading
Loading