Skip to main content

CUda Matrix Multiply library

Project description

cumm

CUda Matrix Multiply library.

Build Status

cumm is developed during learning of CUTLASS, which use too much c++ template and make code unmaintainable. So I develop pccm, use python as meta programming language, to replace c++ template meta programming. Now pccm become a foundational framework of cumm and my other c++ project such as spconv. cumm also contains a python asyncio-based gemm simulator that share same meta program with CUDA code, enable gemm visualization and easy debug experience.

BREAKING CHANGES

  • 0.3.1: tv::DType enum value changed, this will affect all binary code of tv::Tensor user. you must recompile all code if upgrade to cumm >= 0.3.1.

News

Install

Prebuilt

We offer python 3.9-3.13 and cuda 11.4/11.8/12.1/12.4/12.6 prebuilt binaries for linux (manylinux_2_28).

We offer python 3.9-3.13 and cuda 11.4/11.8/12.1/12.4/12.6 prebuilt binaries for windows 10/11.

We offer python 3.9-3.13 prebuilt binaries for Mac OS X >= 14.0 (Apple Silicon Only).

pip install cumm for CPU-only

pip install cumm-cu114 for CUDA 11.4

pip install cumm-cu126 for CUDA 12.6

Build from source for development (JIT, recommend for develop)

WARNING Use code in tags!!! code in main branch may contain bugs.

The c++ code will be built automatically when you change c++ code in project.

Linux

  1. uninstall cumm installed by pip. you must ensure no "cumm" exists in pip list | grep cumm
  2. install build-essential, install CUDA
  3. git clone https://github.com/FindDefinition/cumm, cd ./cumm, git checkout tags/<tag_name>, pip install -e .
  4. in python, import cumm and wait for build finish.

Windows

  1. uninstall spconv and cumm installed by pip. you must ensure no "cumm" exists in pip list | grep cumm
  2. install visual studio 2019 or newer. make sure C++ development component is installed. install CUDA
  3. set powershell script execution policy
  4. start a new powershell, run tools/msvc_setup.ps1
  5. git clone https://github.com/FindDefinition/cumm, cd ./cumm, git checkout tags/<tag_name>, pip install -e .
  6. in python, import cumm and wait for build finish.

Build wheel from source

WARNING Use code in tags!!! code in main branch may contain bugs.

WARNING: If CUMM_CUDA_VERSION is set with a CUDA version, following steps will create a wheel named "cumm-cuxxx", not "cumm", this means you must use cumm-cuxxx in dependency of your project which depend on cumm, not cumm. If CUMM_CUDA_VERSION isn't set, cumm will always built with CUDA, so the CUDA must exists in your system. The wheel name will be cumm even if it is built with cuda.

Linux

It's recommend to build Linux packages in official build docker. Build with CUDA support don't need a real GPU.

Build in Official Docker
  1. select a cuda version. available: CUDA 11.1, 11.3, 11.4, 11.5, 12.0
  2. (Example for CUDA 11.4) git clone https://github.com/FindDefinition/cumm, cd ./cumm, docker run --rm -e PLAT=manylinux2014_x86_64 -e CUMM_CUDA_VERSION=114 -v `pwd`:/io scrin/manylinux2014-cuda:cu114-devel-1.0.0 bash -c "source /etc/bashrc && /io/tools/build-wheels.sh"
Build in your environment
  1. install build-essential, install CUDA
  2. set env for installed cuda version. for example, export CUMM_CUDA_VERSION="11.4". If you want to build CPU-only, run export CUMM_CUDA_VERSION="". If CUMM_CUDA_VERSION isn't set, you need to ensure cuda libraries are inside OS search path, and the built wheel name will be cumm, otherwise cumm-cuxxx
  3. run export CUMM_DISABLE_JIT="1"
  4. run python setup.py bdist_wheel+pip install dists/xxx.whl

Windows 10/11

  1. install visual studio 2019 or newer. make sure C++ development package is installed. install CUDA
  2. set powershell script execution policy
  3. start a new powershell, run tools/msvc_setup.ps1
  4. set env for installed cuda version. for example, $Env:CUMM_CUDA_VERSION = "11.4". If you want to build CPU-only, run $Env:CUMM_CUDA_VERSION = "". . If CUMM_CUDA_VERSION isn't set, you need to ensure cuda libraries are inside OS search path, and the built wheel name will be cumm, otherwise cumm-cuxxx
  5. run $Env:CUMM_DISABLE_JIT = "1"
  6. run python setup.py bdist_wheel+pip install dists/xxx.whl

Contributers

Note

The work is done when the author is an employee at Tusimple.

LICENSE

Apache 2.0

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cumm_cu124-0.8.1-cp313-cp313-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.13Windows x86-64

cumm_cu124-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl (28.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cumm_cu124-0.8.1-cp312-cp312-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu124-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl (28.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cumm_cu124-0.8.1-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu124-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl (28.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cumm_cu124-0.8.1-cp310-cp310-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu124-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl (28.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cumm_cu124-0.8.1-cp39-cp39-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu124-0.8.1-cp39-cp39-manylinux_2_28_x86_64.whl (28.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

Details for the file cumm_cu124-0.8.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for cumm_cu124-0.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 17fe807c63fb28320ac7475d0ac6031da4c0dc922f7d83d2c764e2e47f3ddc40
MD5 0ffd3f7ec5ca5524333b0280f0080cc6
BLAKE2b-256 8b36a6101e2fc9cf94caca6b4d5f2a112bd4f4687c40f8bc59130cea55ed83f3

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu124-0.8.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c0ab7d521851c8e9d34a3b0b9b717473a835d32a57b49e43d159fadd8996eb3b
MD5 f04f13b20e20f3c651365c69b47af9ab
BLAKE2b-256 d962e3fa0aedd8b23c21a7db99e9a5740bc0bbf2eb83fc7490cc014ee31d7e81

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for cumm_cu124-0.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 36d02a2c2bd817aeeb0f5ecc8c3cd709cc08f3770e926f2ea062975ef945ed2a
MD5 98c0776ec42264c315793733d8f4bdee
BLAKE2b-256 bca7eab0672f0bcd1e042050be9b5819c78a0e23eb38b9d6e1ad3897ca15959f

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu124-0.8.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5f170ed0f42784e89c898c5e221eec858695fa5dd45464bdcb33ec5c81501e2
MD5 00260137355d4c44bb8845bdf5eb5011
BLAKE2b-256 045b11c2885a1c3098586eb885e493330990c5bb9ad6018c50d2141bdaa0d0e8

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for cumm_cu124-0.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 65dd94c16da07fce7c009a134e4b05ad323c6a0fba31937280f848a0c79a8411
MD5 329fb7bb07571c652bd6e944c04e9f8c
BLAKE2b-256 fb0206d5cba29563fe2f5e0ca1473f0c7da12060c1d0dcf7695ca65b66948971

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu124-0.8.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d195b537a3a2629a15f5325ecf79181092b82beb4ef7524b9863d602fe976be7
MD5 07a01e6c2644a036a2c25df30ccde050
BLAKE2b-256 7e6b872345b145925e81c2a3bf900c365e24fbb59667a9b474da40464ae6e08a

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.8.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for cumm_cu124-0.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 804edc2cc2d13419ec3609fade1ddd34cd385ce160eb6fcb31a278eeb294a088
MD5 d47e64bb3f07df0851e688da85d05894
BLAKE2b-256 4931a36ba650d3a4848963bb7778bb072f5a58c0e9a40e6438bbd3571732cec1

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu124-0.8.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8683777bd63ddbac22fd6aeb4ca3186b595f652ef7032f7089dc36cbd9fc27ca
MD5 5422161a79dd4bf52018cdce887eaa47
BLAKE2b-256 473c9ed97137bbbaf0d36547df7347f2168b6442109f41aee625bb3e4417537c

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.8.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.13

File hashes

Hashes for cumm_cu124-0.8.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5c132dfdbf2a8c67c38012de35d7fb490a851df77e2b7cbd3d6fd56709c475a4
MD5 6e772cbd6d422651e6e40700b6597d86
BLAKE2b-256 9ab880a7d0d9b9e763645fc36dc6140fcd7f835b5b0858b7a08238139514ad40

See more details on using hashes here.

File details

Details for the file cumm_cu124-0.8.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu124-0.8.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3c93b2c0a44f94a79b35ca2a3d758cc2723a094f87a211f64339a840a4a6d7f
MD5 9fce0c45d402e76fb921cda5f3668ccc
BLAKE2b-256 a8fe580a111299b1f1ab52777a87efcaa8d3884e183f8e46bba93fc284fa6382

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