We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
We use github to host code, to track issues and feature requests, as well as accept pull requests.
Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:
- Fork the repo and create your branch from
master
. - If you've changed APIs, update the documentation.
- Perform any necessary testing. (See Testing below)
- Code will be automatically formatted by a github-actions commit.
- Make a pull request!
- Ensure the integration test suite which runs with the pull request passes.
- Correctness issues should be caught by the SCAMP integration tests. These run on a pull request but you can also run them locally to verify before making a pull request:
- To test general or CPU kernel specific changes run the following python script while in the
test/
directory:python3 run_tests.py --executable "<path to SCAMP CLI binary>" --extra_args "--no_gpu --num_cpu_workers=2"
- To test GPU specific changes (required if you are making GPU specific changes), run the following python script while in the
test/
directory:python3 ./run_tests.py --executable "<path to SCAMP CLI binary>"
- To test pyscamp changes, you can install the working version of pyscamp in your virtualenv using
python3 -m pip install .
and then runpython3 test/test_pyscamp.py
.
- To test general or CPU kernel specific changes run the following python script while in the
- Important Note: If you make CUDA changes, note that our integration test suite will not test the cuda-specific parts of your change. Please do a manual run on a GPU enabled system.
In short, when you submit code changes, your submissions are understood to be under the same MIT License that covers the project. Feel free to contact the maintainers if that's a concern.
Report bugs using Github's issues
We use GitHub issues to track public bugs. Report a bug by opening a new issue; it's that easy!
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Include input which is causing problems if possible!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
- 2 spaces for indentation rather than tabs
- C++/CUDA code will be automatically formatted on push by github-actions.
By contributing, you agree that your contributions will be licensed under its MIT License.
This document was adapted from the open-source contribution guidelines for Facebook's Draft