Skip to content

SylvanBrocard/dpu_trees

Repository files navigation

dpu_trees

CI status
pip builds Pip Actions Status

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

Installation

  • install the UPMEM SDK
  • pip install dpu-trees

Usage

TODO

Development

  • clone this repository
  • install the UPMEM SDK
  • install the build requirements in pyproject.toml
  • cd dpu_trees
  • pre-commit install
  • pip install -e .
  • python setup.py clean

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_trees to src/<your_project>
  • change project name (all instances of dpu_trees) and info in:
    • README.md
    • setup.cfg
    • setup.py (cmake_install_dir="src/dpu_trees")
    • .gitignore (src/dpu_trees/dpu_program/)
    • CMakeLists.txt (project(dpu_trees 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_trees
dpu_trees.test_checksum()

Expected return: 0x007f8000