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.