Contribution Guide

This project welcomes developers to experience and participate in contributions. Before participating in community contributions, see cann-community to understand the code of conduct, sign the CLA agreement, and learn about the contribution process for source code repositories.

When preparing local code and submitting PRs, developers need to pay attention to the following points:

  1. When submitting a PR, carefully fill in the business background, purpose, and solution according to the PR template.
  2. If your modification is not a simple bug fix but involves adding new features, new interfaces, new configuration parameters, or modifying code flows, discuss the solution through an Issue first to avoid your code being rejected. If you are unsure whether your modification can be classified as a simple bug fix, you can also submit an Issue for discussion.

API Development Guide

This project supports three types of API development, each with dedicated contribution guides:

1. High-level API

High-level API abstracts and encapsulates common algorithms based on single-core, implementing commonly used computational algorithms to improve programming development efficiency. High-level API generally implements through calling multiple basic APIs. High-level API includes mathematical computation, matrix computation, activation function, and other APIs.

2. Basic API

Basic API implements abstraction of hardware capabilities, opening chip capabilities, ensuring completeness and compatibility.

3. C API

C API provides pure C style interfaces, conforming to C language operator development habits, opening complete chip programming capabilities, supporting array memory allocation, generally based on pointer programming. Provides industry-similar programming experience.

Developer Contribution Scenarios

  • Bug Fix

    If you discover certain bugs in this project and want to fix them, you are welcome to create a new Issue for feedback and tracking.

    Follow the Submit Issue/Process Issue Task guide to create a Bug-Report|缺陷反馈 type Issue to describe the bug, then enter "/assign" or "/assign @yourself" in the comment box to assign the Issue to yourself for processing.

  • Code Optimization

    If you have generalization enhancement/performance optimization ideas for certain API implementations in this project and want to implement these optimization points, you are welcome to contribute API optimizations.

    Follow the Submit Issue/Process Issue Task guide to create a Requirement|需求建议 type Issue to explain the optimization points and provide your design solution, then enter "/assign" or "/assign @yourself" in the comment box to assign the Issue to yourself for tracking optimization.

  • Documentation Correction

    If you discover certain documentation description errors in this project, you are welcome to create a new Issue for feedback and correction.

    Follow the Submit Issue/Process Issue Task guide to create a Documentation|文档反馈 type Issue to point out the corresponding documentation problems, then enter "/assign" or "/assign @yourself" in the comment box to assign the Issue to yourself to correct the corresponding documentation description.

  • Help Resolve Others' Issues

    If you have appropriate solutions for problems encountered by others in the community, you are welcome to comment and communicate in the Issue to help others solve problems and pain points, jointly improving usability.

    If the corresponding Issue requires code modification, you can enter "/assign" or "/assign @yourself" in the Issue comment box to assign the Issue to yourself, tracking assistance in solving the problem.