Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 26 additions & 28 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,76 +28,74 @@ HAMi is a community project driven by its community which strives to promote a h

# Getting started

- Fork the repository on GitHub.
- Make your changes on your fork repository.
- Submit a PR.

- Fork the repository on GitHub
- Make your changes in your forked repository
- Submit a Pull Request (PR)

# Your First Contribution

We will help you to contribute in different areas like filing issues, developing features, fixing critical bugs and
We will help you contribute in different areas such as filing issues, developing features, fixing critical bugs and
getting your work reviewed and merged.

If you have questions about the development process,
feel free to [file an issue](https://github.com/Project-HAMi/HAMi/issues/new/choose).

## Find something to work on

We are always in need of help, be it fixing documentation, reporting bugs or writing some code.
Look at places where you feel best coding practices aren't followed, code refactoring is needed or tests are missing.
Here is how you get started.
We are always in need of help, whether it's fixing documentation, reporting bugs, or writing code.
Look for places where best coding practices aren't followed, code refactoring is needed, or tests are missing.
Here's how you can get started.

### Find a good first topic

There are [multiple repositories](https://github.com/Project-HAMi/) within the HAMi organization.
Each repository has beginner-friendly issues that provide a good first issue.
Each repository has beginner-friendly issues marked as "good first issues".
For example, [Project-HAMi/HAMi](https://github.com/Project-HAMi/HAMi) has
[help wanted](https://github.com/Project-HAMi/HAMi/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) and
[good first issue](https://github.com/Project-HAMi/HAMi/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
labels for issues that should not need deep knowledge of the system.
labels for issues that should not require deep knowledge of the system.
We can help new contributors who wish to work on such issues.

Another good way to contribute is to find a documentation improvement, such as a missing/broken link.
Another good way to contribute is to find documentation improvements, such as fixing missing or broken links.
Please see [Contributing](#contributing) below for the workflow.

#### Work on an issue

When you are willing to take on an issue, just reply on the issue. The maintainer will assign it to you.
When you are willing to take on an issue, simply reply to the issue and a maintainer will assign it to you.

### File an Issue

While we encourage everyone to contribute code, it is also appreciated when someone reports an issue.
While we encourage everyone to contribute code, we also appreciate when someone reports an issue.
Issues should be filed under the appropriate HAMi sub-repository.

*Example:* a HAMi issue should be opened to [Project-HAMi/HAMi](https://github.com/Project-HAMi/HAMi/issues).
*Example:* A HAMi issue should be opened in [Project-HAMi/HAMi](https://github.com/Project-HAMi/HAMi/issues).

Please follow the prompted submission guidelines while opening an issue.
Please follow the provided submission guidelines when opening an issue.

# Contributor Workflow

Please do not ever hesitate to ask a question or send a pull request.
Please never hesitate to ask questions or submit a pull request.

This is a rough outline of what a contributor's workflow looks like:

- Create a topic branch from where to base the contribution. This is usually master.
- Make commits of logical units.
- Push changes in a topic branch to a personal fork of the repository.
- Submit a pull request to [Project-HAMi/HAMi](https://github.com/Project-HAMi/HAMi).
- Create a topic branch from where you want to base the contribution (usually master)
- Make commits of logical units
- Push changes in your topic branch to your personal fork of the repository
- Submit a pull request to [Project-HAMi/HAMi](https://github.com/Project-HAMi/HAMi)

## Creating Pull Requests

Pull requests are often called simply "PR".
HAMi generally follows the standard [github pull request](https://help.github.com/articles/about-pull-requests/) process.
Pull requests are often called simply "PRs".
HAMi generally follows the standard [GitHub pull request](https://help.github.com/articles/about-pull-requests/) process.
To submit a proposed change, please develop the code/fix and add new test cases.
After that, run these local verifications before submitting pull request to predict the pass or
fail of continuous integration.
Before submitting a pull request, run these local verifications to predict whether continuous integration will pass or fail:

* Run and pass `make verify`

## Code Review

To make it easier for your PR to receive reviews, consider the reviewers will need you to:
To make it easier for your PR to receive reviews, consider that reviewers will need you to:

* follow [good coding guidelines](https://github.com/golang/go/wiki/CodeReviewComments).
* write [good commit messages](https://chris.beams.io/posts/git-commit/).
* break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue.
* Follow [good coding guidelines](https://github.com/golang/go/wiki/CodeReviewComments)
* Write [good commit messages](https://chris.beams.io/posts/git-commit/)
* Break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ English version|[中文版](README_cn.md)

## Introduction

HAMi, formerly known as 'k8s-vGPU-scheduler', is a Heterogeneous device management middleware for Kubernetes. It can manage different types of heterogeneous devices(like GPU,NPU,etc...), share heterogeneous devices among pods, make better scheduling decision based on topology of devices and schedule policies.
HAMi, formerly known as 'k8s-vGPU-scheduler', is a Heterogeneous device management middleware for Kubernetes. It can manage different types of heterogeneous devices (like GPU, NPU, etc.), share heterogeneous devices among pods, make better scheduling decisions based on topology of devices and scheduling policies.

It aims to remove the gap between different Heterogeneous devices, and provide a unified interface for user to manage with no change to your application. Until June 2024, HAMi has been widely used around the world at a variety of industries such as Internet/Cloud/Finance/ Manufacturing. More than 40 companies or institutions are not only end users but also active contributors.
It aims to remove the gap between different Heterogeneous devices, and provide a unified interface for users to manage with no changes to their applications. As of December 2024, HAMi has been widely used not only in Internet, public cloud and private cloud, but also broadly adopted in various vertical industries including finance, securities, energy, telecommunications, education, and manufacturing. More than 50 companies or institutions are not only end users but also active contributors.

![cncf_logo](imgs/cncf-logo.png)

Expand All @@ -36,17 +36,17 @@ HAMi provides device virtualization for several heterogeneous devices including

### Device sharing

- Allows partial device allocation by specifying device memory.
- Allows partial device allocation by specifying device core usage.
- Allows partial device allocation by specifying device memory.
- Imposes a hard limit on streaming multiprocessors.
- Permits partial device allocation by specifying device core usage.
- Requires zero changes to existing programs.

<img src="./imgs/example.png" width = "500" />

### Device Resources Isolation

A simple demostration for device isolation:
A task with the following resources.
A simple demonstration of device isolation:
A task with the following resources:

```
resources:
Expand Down Expand Up @@ -88,7 +88,7 @@ The list of prerequisites for running the NVIDIA device plugin is described belo

- NVIDIA drivers >= 440
- nvidia-docker version > 2.0
- config default runtime is nvidia for containerd/docker/cri-o container runtime.
- default runtime configured as nvidia for containerd/docker/cri-o container runtime
- Kubernetes version >= 1.16
- glibc >= 2.17 & glibc < 2.3.0
- kernel version >= 3.10
Expand Down
Loading