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 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 0.8.2
File
cumm-0.8.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cumm-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
cumm-0.8.2-cp313-cp313-macosx_14_0_universal2.whl CPython 3.13 CPython 3.13 macOS 14.0+ universal2 (ARM64, x86-64) Details
cumm-0.8.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cumm-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
cumm-0.8.2-cp312-cp312-macosx_14_0_universal2.whl CPython 3.12 CPython 3.12 macOS 14.0+ universal2 (ARM64, x86-64) Details
cumm-0.8.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cumm-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
cumm-0.8.2-cp311-cp311-macosx_14_0_universal2.whl CPython 3.11 CPython 3.11 macOS 14.0+ universal2 (ARM64, x86-64) Details
cumm-0.8.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cumm-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
cumm-0.8.2-cp310-cp310-macosx_14_0_universal2.whl CPython 3.10 CPython 3.10 macOS 14.0+ universal2 (ARM64, x86-64) Details
cumm-0.8.2-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
cumm-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
cumm-0.8.2-cp39-cp39-macosx_14_0_universal2.whl CPython 3.9 CPython 3.9 macOS 14.0+ universal2 (ARM64, x86-64) Details

Total release size: 30.7 MB

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

Download URL cumm-0.8.2-cp313-cp313-win_amd64.whl
Size 2.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
607304ce5f098b5da29dfffa0de0469783ac3d461a11b57341b0a6c9bffcaf06
BLAKE2b-256 checksum
How to use checksums
39a72d9b554ce973c8e6c5ef7d07905c74b22a640037c05286937650fa4da778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / cumm-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cumm-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b78a1a261402776a7464e3e42abbf2c7beea0fd4c9ade46558970a55f4458bff
BLAKE2b-256 checksum
How to use checksums
ad02192d2e6ea922073e5ae0778fcdc992391ac12f57ac43d98429bb5e41061e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm-0.8.2-cp313-cp313-macosx_14_0_universal2.whl

Download URL cumm-0.8.2-cp313-cp313-macosx_14_0_universal2.whl
Size 1.4 MB
Tags CPython 3.13 macOS 14.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
f08ce126c10df62ba8718d38b518114f8461f9a61867bd758a99ff657308bcf5
BLAKE2b-256 checksum
How to use checksums
211776ba3a28c19c287a607b8490bb07e480b19575e8e6ed4988447753373583
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

Release files / cumm-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cumm-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dabad0783e1f8a68cae6488c1d78f0584115ccdb909e2ed36c4fee141b650c96
BLAKE2b-256 checksum
How to use checksums
d8fa2394042e25018049b8a8b74b314c2375e528be7b0cab59865c3154d9921e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm-0.8.2-cp312-cp312-macosx_14_0_universal2.whl

Download URL cumm-0.8.2-cp312-cp312-macosx_14_0_universal2.whl
Size 1.4 MB
Tags CPython 3.12 macOS 14.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
db09b7df2fc900d0c1c24ebd5022fe026e86d8f6e135fff31aeb187ae8afa9d4
BLAKE2b-256 checksum
How to use checksums
51687688a200ce019b42a115cab772161383d30ea83dbddbcbef88cda8af8e3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

Download URL cumm-0.8.2-cp311-cp311-win_amd64.whl
Size 2.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
37104fd61573dea453e2292e08ca983cbcbbc8bfd16636519e3e66c5586014ac
BLAKE2b-256 checksum
How to use checksums
fc895a62af5d7125d43f40d94b19e47537bd5f5dc1c7df7fa04bd8796576a662
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release files / cumm-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cumm-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
94a15797fb7be3edb60d358a20ffc802a66506987d94f07d9b66a82ebd9f813d
BLAKE2b-256 checksum
How to use checksums
edefe8409cbb4bf670c430d134a155853615095924ab24858a0b2c59d2a19b31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm-0.8.2-cp311-cp311-macosx_14_0_universal2.whl

Download URL cumm-0.8.2-cp311-cp311-macosx_14_0_universal2.whl
Size 1.4 MB
Tags CPython 3.11 macOS 14.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
329a5a5b5fc8161e4acd630d4e54f68c60228817bbfc2052dd147b5e96cc3625
BLAKE2b-256 checksum
How to use checksums
4daa505cdcc2de5d9e0f3f10cf3e4644114850be4f3c26793df46fa053862f9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

Release files / cumm-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cumm-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.6 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c2959f3a30222f8a09fb94b1f21f91ed4c778259d2fbfce3cb6c7a1f71145343
BLAKE2b-256 checksum
How to use checksums
305dca726901bc5579ed167e302e427fc406ec51419ae9229435d60cc6f63af4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm-0.8.2-cp310-cp310-macosx_14_0_universal2.whl

Download URL cumm-0.8.2-cp310-cp310-macosx_14_0_universal2.whl
Size 1.4 MB
Tags CPython 3.10 macOS 14.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
f3cfb2fd5246c43fe046a08b7ef833f3368795512f5f6fdff0465f14f83da161
BLAKE2b-256 checksum
How to use checksums
6e2ae51b45f35e204bd48c877639e402d0dee4a5a7d3eb2385b987635dee4719
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

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

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

Release files / cumm-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cumm-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.6 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dd14ca57c9fd9278aff07b51786bfb9b626c621f4c43a3fd8ea31560300acc74
BLAKE2b-256 checksum
How to use checksums
bdfae5523bb4beaaf2457bb1df507847bd6796fdc2a8d888f45dd4b07e6c5062
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / cumm-0.8.2-cp39-cp39-macosx_14_0_universal2.whl

Download URL cumm-0.8.2-cp39-cp39-macosx_14_0_universal2.whl
Size 1.4 MB
Tags CPython 3.9 macOS 14.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
b5f1bf3c1a602c19267135060aa76b50da4a7ec8fa85427e814e22d9e950dc4c
BLAKE2b-256 checksum
How to use checksums
20915a0014264b7330e244817a6ac74ef6f10eae7813e067c7c82b0906caf746
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

15 release files

0.8.1

15 release files

0.7.9

15 release files

0.7.8

15 release files

0.7.2

5 release files

0.6.3

9 release files

0.6.2

9 release files

0.6.1

9 release files

0.6.0

5 release files

0.5.3

10 release files

0.5.1

10 release files

0.5.0

10 release files

0.4.9

10 release files

0.4.8

10 release files

0.4.6

10 release files

0.4.5

10 release files

0.4.4

10 release files

0.4.3

10 release files

0.4.2

5 release files

0.4.1

10 release files

0.4.0

10 release files

0.3.5

10 release files

0.3.4

10 release files

0.3.3

10 release files

0.3.2

10 release files

0.3.1

10 release files

0.3.0

10 release files

0.2.9

9 release files

0.2.8

9 release files

0.2.7

4 release files

0.2.6

9 release files

0.2.5

9 release files

0.2.4

4 release files

0.2.3

9 release files

0.2.2

9 release files

0.2.1

8 release files

0.2.0

8 release files

0.1.9

10 release files

0.1.8

10 release files

0.1.7

10 release files

0.1.6

10 release files

0.1.5

10 release files

0.1.4

10 release files

0.1.3

10 release files

0.1.1

5 release files

0.1.0

1 release file

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