Contributing guidelines¶
Contributing to Intel® Extension for TensorFlow*¶
We welcome community contributions to Intel® Extension for TensorFlow*. Before you begin writing code, it is important that you share your intention to contribute with the team, based on the type of contribution:
You want to submit a bug or propose a new feature.
You want to implement a bug-fix or feature for an issue.
Search for your issue in the issue list.
Pick an issue and comment that you’d like to work on the bug-fix or feature.
For bug-fix, please submit a Pull Request to project github.
Ensure that you can build the product and run all the examples with your patch. Submit a pull request.
For feature or significant changes require approval from Intel® Extension for TensorFlow* maintainers before opening a pull request with such implementation. For that we use the
Request For Comments (RFC) process
, which consists of opening, discussing, and accepting (promoting) RFC pull requests.More information about the process can be found in the dedicated
rfcs
branch.
See also: Contributor Covenant code of conduct.
Developing Intel® Extension for TensorFlow*¶
Refer to a full set of instructions on installing Intel® Extension for TensorFlow* from source.
Tips and Debugging¶
Unit testing¶
Intel® Extension for TensorFlow* provides python unit tests.
Python Unit Testing¶
Python unit tests are located at
intel-extension-for-tensorflow/test
test/
├── benchmark # Benchmark unit tests
├── examples # Unit test examples
├── llga # LLGA unit tests
├── python # Python API unit tests
├── sanity # Sanity unit tests
└── tensorflow # TensorFlow migrated unit tests
Running single unit test:
python <path_to_python_unit_test>
Running all the unit tests:
cd intel-extension-for-tensorflow
for ut in $(find test -name "*.py"); do
python $ut
done
Code style guide¶
Intel® Extension for TensorFlow* follows the same code style guide as TensorFlow code style guide for Python and C++ code.
Python coding style¶
Ensure the Python code changes are consistent with the Python coding standards.
Use pylint
to check your Python changes. To install pylint
and check a file with pylint
against custom style definition from the Intel® Extension for TensorFlow* source code root directory:
pip install pylint
pylint --rcfile=intel-extension-for-tensorflow/.pylintrc myfile.py
C++ coding style¶
The C++ code should conform to the Google C++ Style Guide. Intel® Extension for TensorFlow* use both clang-format
and cpplint
to check C++ code style.
To install clang-format
and check a file with clang-format
against custom style definition from the Intel® Extension for TensorFlow* source code root directory:
apt-get install clang-format-12
# The -i option makes it inplace, by default formatted output is written to stdout
clang-format-12 -i -style=file <file>
To install cpplint
and check a file with cpplint
from the Intel® Extension for TensorFlow* source code root directory:
pip install cpplint
cpplint --filter=-legal/copyright --exclude=./third_party --recursive ./
Sometimes cpplint
may report false positive errors. You can comment code with // NOLINT
or // NOLINTNEXTLINE
to skip the line for check:
#include "mkl.h" // NOLINT(build/include_subdir)
// NOLINTNEXTLINE
#include "mkl.h"
bazel style guide¶
buildifier is a tool for formatting bazel BUILD
and .bzl
files with a standard convention (xxx.tpl
files are not supported).
To check bazel files manually:
# install go
wget https://golang.org/dl/go1.15.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# install buildifier
go get github.com/bazelbuild/buildtools/buildifier
cd ~/go/src/github.com/bazelbuild/buildtools/buildifier
go install
export PATH=$PATH:/home/$USER/go/bin
# check style. DO NOT use buildifier -r dir/, it will skip files like xxx.BUILD
buildifier BUILD # or zzz.BUILD or xxx.bzl
Documentation style guide¶
Intel® Extension for TensorFlow* follows the same documentation style guide as TensorFlow documentation style guide.