| CI | status |
|---|---|
| pip builds | |
| docs |
A project built with pybind11 and scikit-build, running the KMeans algorithm on in-memory processors with the UPMEM SDK.
- install the UPMEM SDK
pip install dpu-kmeans
If you get an error about RANLIB, create a symlink to llvm-ar:
sudo ln -s /usr/bin/llvm-ar /usr/bin/llvm-ranlibimport numpy as np
from dpu_kmeans import KMeans
X = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]])
kmeans = KMeans(2)
kmeans.fit(X)
print(kmeans.cluster_centers_)Output:
[[ 0.99986267 2. ]
[10.00013733 2. ]]- clone this repository
- install the UPMEM SDK
- install the build requirements in
pyproject.toml cd dpu_kmeanspre-commit installpip install -e .
OR
- clone this repository
- open folder in VS Code
- start in Dev Container
to debug: python setup.py develop --build-type Debug
Note: The dev container is for development only and uses the PIM simulator.
To use this project as a base for your own UPMEM DIMM project:
- click on "Use this template" in github
- create a new project from this one
- turn off Conda and Wheels workflows in github actions as they are not operational right now
- change folder
src/dpu_kmeanstosrc/<your_project> - change project name (all instances of
dpu_kmeans) and info in:- README.md
- setup.cfg
- setup.py (
cmake_install_dir="src/dpu_kmeans") - .gitignore (
src/dpu_kmeans/dpu_program/) - CMakeLists.txt (
project(dpu_kmeans VERSION ${VERSION})) - conda.recipe/meta.yaml (optional)
- docs (optional)
- if you intend to use github actions to auto-publish to pypi, update the project secrets as described in Publishing package distribution releases using GitHub Actions CI/CD workflows
OR
- clone this repository
- open folder in VS Code
- start in Dev Container
nox
Note: nox, python setup.py and pip might fail if you executed pip install -e . previously, delete the _skbuild cache or run python setup.py clean to solve.
import dpu_kmeans
dpu_kmeans.test_checksum()Expected return: 0x007f8000