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-ranlib
import 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_kmeans
pre-commit install
pip 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_kmeans
tosrc/<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