Skip to main content
`Ctrl`+`K`

# Contribute to rocSOLVER

AMD welcomes community contributions, including bug reports, bug fixes, documentation additions, performance notes, and other improvements.

## Submitting a pull request

To contribute changes to rocSOLVER, open a pull request targeting the `develop` branch. Pull requests will be tested and reviewed by the AMD development team. AMD might request changes or modify the submission before acceptance.

## Interface requirements

The public interface must be:

- C99 compatible

- Source and binary compatible with previous releases

- Fully documented with Doxygen and Sphinx

All identifiers in the public headers must be prefixed with `rocblas`, `ROCBLAS`, `rocsolver`, or `ROCSOLVER`. All user-visible symbols must be prefixed with `rocblas` or `rocsolver`.

## Style guide

Follow the style of the surrounding code. All code is auto-formatted using clang-format. To apply the rocSOLVER formatting, run `clang-format -i -style=file <files>` on any files you’ve changed. You can install Git hooks to do this automatically upon commit by running `scripts/install-hooks --get-clang-format`. If you don’t want to use the hooks, they can be removed using `scripts/uninstall-hooks`.

## Tests

To run the rocSOLVER test suite, first build the rocSOLVER test client following the instructions in the Installation guide. Then run the `rocsolver-test` binary. For a typical build, the test binary can be found at `./build/release/clients/staging/rocsolver-test`.

The full test suite is quite large and can take a long time to complete. During development, it might be useful to run a subset of the tests by passing the `--gtest_filter=<pattern>` option to `rocsolver-test`. A quick subset of tests can be run with `--gtest_filter='checkin*'`, while the extended tests can be run using `--gtest_filter='daily*'`.

## Rejected contributions

Unfortunately, sometimes a contribution cannot be accepted. The rationale for this decision is not always disclosed.