Skip to main content

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

Metadata

Release files for cumm-cu124 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for cumm-cu124 0.8.2
File
cumm_cu124-0.8.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cumm_cu124-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
cumm_cu124-0.8.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cumm_cu124-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
cumm_cu124-0.8.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cumm_cu124-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
cumm_cu124-0.8.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cumm_cu124-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
cumm_cu124-0.8.2-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
cumm_cu124-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details

Total release size: 157.6 MB

Release files / cumm_cu124-0.8.2-cp313-cp313-win_amd64.whl

Download URL cumm_cu124-0.8.2-cp313-cp313-win_amd64.whl
Size 2.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6eca23cf6ee653369ccf2c551687a6d61925b16d7b25838cf59e8e60caa3cb91
BLAKE2b-256 checksum
How to use checksums
cd4e46331d0af8e22a987645bbd08753e02eb8dad867c6f341aec948cec99a09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / cumm_cu124-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL cumm_cu124-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl
Size 28.9 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
08a49013c7bc2b3b618d528bdd11a8c422c9a037f6a17f611447e616920d8988
BLAKE2b-256 checksum
How to use checksums
26b34fc2d36b7bdb5f7accda37c42c0d0f3cda02ee6987e0d51f557b877d368a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm_cu124-0.8.2-cp312-cp312-win_amd64.whl

Download URL cumm_cu124-0.8.2-cp312-cp312-win_amd64.whl
Size 2.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7cb872b871882769784d3cc6dcecf7f845fa4e797c8a636ed50244d3d57629b1
BLAKE2b-256 checksum
How to use checksums
ad29dca5193bc8f06a2764d0a6d5f15823ef156a23be3451b81ca996a715a575
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / cumm_cu124-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL cumm_cu124-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl
Size 28.9 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5478ba12f3f5a7bf361158b00d741710cd49d90ad8b0543029ad212e1a7fbe18
BLAKE2b-256 checksum
How to use checksums
9bb4e6c4a6f6a669b5aa2f7f8a38bbb6aaec50ab88e76aa199dcefe93a3930dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm_cu124-0.8.2-cp311-cp311-win_amd64.whl

Download URL cumm_cu124-0.8.2-cp311-cp311-win_amd64.whl
Size 2.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5798c5d963d8e77b08d2644c9e34c1b57baec3c8a8ceb4f4acb80576187b73fe
BLAKE2b-256 checksum
How to use checksums
574fb7cf78ef664e06cd777f23536b654d4716928c6a7e752c9a7a64cec10671
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release files / cumm_cu124-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL cumm_cu124-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Size 28.9 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f0726c491639d4b603b9fd390fe1c703a71650fa0cd7d700751819260a5689c3
BLAKE2b-256 checksum
How to use checksums
788af1f9cce116cd0310dac9cfbaa665ae18e31a6f6e999b705a877a088ecffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm_cu124-0.8.2-cp310-cp310-win_amd64.whl

Download URL cumm_cu124-0.8.2-cp310-cp310-win_amd64.whl
Size 2.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f4bda81d150b41fa0f064fdd3e83884245e14afa636b53592b14378fcbf39cf8
BLAKE2b-256 checksum
How to use checksums
d24bb4941f7171f8f3ddebf136b183a6aca756308be431c1789257658273c799
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.11

Release files / cumm_cu124-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL cumm_cu124-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Size 28.9 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
153bdcc0ce8379bc0c16400a64ee4a2fe6f3e703b8bed7bfb82106486422ffe2
BLAKE2b-256 checksum
How to use checksums
0a7e9c21fa87fd803c1e5a56b6556d77aff54fb58ebb9896ec55fe6e296612e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm_cu124-0.8.2-cp39-cp39-win_amd64.whl

Download URL cumm_cu124-0.8.2-cp39-cp39-win_amd64.whl
Size 2.6 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
5d37035c67999d2cc2abbf081e1a19bd32430fcff7b137507b94a5a5453965c9
BLAKE2b-256 checksum
How to use checksums
f1bbb8926a388f666e98675ac6be83bb404eea94c6f817826d1f04593c0a624f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.13

Release files / cumm_cu124-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL cumm_cu124-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl
Size 28.9 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bf5f46b4c2ac3c7f9b55468d943c563955e5168642a68aee48cd3d3bd59dc2b2
BLAKE2b-256 checksum
How to use checksums
96ac4939509c1afed78b77d6b6f1442891822af29fe8a0ff8781186b79cc6b03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.8.2 This release

10 release files

0.8.1

10 release files

0.7.9

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page