Skip to main content

A package for the k-means algorithm on DPU.

Reason this release was yanked:

botched release action

Project description

dpu_kmeans README

CI status
pip builds Pip Actions Status
docs Doc Status

A project built with pybind11 and scikit-build, running the KMeans algorithm on in-memory processors with the UPMEM SDK.

Documentation

Installation

  • 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

Usage

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.        ]]

Development

  • 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.

Templating

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 to src/<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

Testing

  • clone this repository
  • install the UPMEM SDK
  • install nox
  • cd dpu_trees
  • nox

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.

Test call

import dpu_kmeans
dpu_kmeans.test_checksum()

Expected return: 0x007f8000

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dpu_kmeans-0.2.1.tar.gz (30.9 kB view details)

Uploaded Source

File details

Details for the file dpu_kmeans-0.2.1.tar.gz.

File metadata

  • Download URL: dpu_kmeans-0.2.1.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for dpu_kmeans-0.2.1.tar.gz
Algorithm Hash digest
SHA256 25b2f7ef2d01d56600d24858d0f46b24dc5b2ddc7f1a28f6b3e78cc1acc874b5
MD5 2ff83a0800b591e47f9bc04e7dce5290
BLAKE2b-256 3e030f69086cf2d4f50d227e716b15e5d5b672c68b9b1cc3d3e5be0f2c47d384

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page