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.2-cp313-cp313-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.13Windows x86-64

cumm_cu124-0.8.2-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.2-cp312-cp312-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu124-0.8.2-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.2-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu124-0.8.2-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.2-cp310-cp310-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu124-0.8.2-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.2-cp39-cp39-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu124-0.8.2-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.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.8.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6eca23cf6ee653369ccf2c551687a6d61925b16d7b25838cf59e8e60caa3cb91
MD5 3cfb6e0c3ed6641a340cfa3052813303
BLAKE2b-256 cd4e46331d0af8e22a987645bbd08753e02eb8dad867c6f341aec948cec99a09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 08a49013c7bc2b3b618d528bdd11a8c422c9a037f6a17f611447e616920d8988
MD5 2692e6a816f044caa335b1739aa15067
BLAKE2b-256 26b34fc2d36b7bdb5f7accda37c42c0d0f3cda02ee6987e0d51f557b877d368a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.8.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7cb872b871882769784d3cc6dcecf7f845fa4e797c8a636ed50244d3d57629b1
MD5 ff1ade85bcaa91e02d5cd8038ec09ec1
BLAKE2b-256 ad29dca5193bc8f06a2764d0a6d5f15823ef156a23be3451b81ca996a715a575

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5478ba12f3f5a7bf361158b00d741710cd49d90ad8b0543029ad212e1a7fbe18
MD5 72082c7020891ba454c335856187a81e
BLAKE2b-256 9bb4e6c4a6f6a669b5aa2f7f8a38bbb6aaec50ab88e76aa199dcefe93a3930dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.8.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5798c5d963d8e77b08d2644c9e34c1b57baec3c8a8ceb4f4acb80576187b73fe
MD5 0a6bed20438905a67a75d6291fc2f5cc
BLAKE2b-256 574fb7cf78ef664e06cd777f23536b654d4716928c6a7e752c9a7a64cec10671

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f0726c491639d4b603b9fd390fe1c703a71650fa0cd7d700751819260a5689c3
MD5 6ffde5b4f9885585716676bbcca29eb5
BLAKE2b-256 788af1f9cce116cd0310dac9cfbaa665ae18e31a6f6e999b705a877a088ecffb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.8.2-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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f4bda81d150b41fa0f064fdd3e83884245e14afa636b53592b14378fcbf39cf8
MD5 09d9f73540a3f7e2fb30d2455e9cff77
BLAKE2b-256 d24bb4941f7171f8f3ddebf136b183a6aca756308be431c1789257658273c799

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 153bdcc0ce8379bc0c16400a64ee4a2fe6f3e703b8bed7bfb82106486422ffe2
MD5 a98844075a07e526ad6bcd0ebad3aff4
BLAKE2b-256 0a7e9c21fa87fd803c1e5a56b6556d77aff54fb58ebb9896ec55fe6e296612e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.8.2-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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5d37035c67999d2cc2abbf081e1a19bd32430fcff7b137507b94a5a5453965c9
MD5 5dcebc33928e53b25d35f98c3db7f855
BLAKE2b-256 f1bbb8926a388f666e98675ac6be83bb404eea94c6f817826d1f04593c0a624f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bf5f46b4c2ac3c7f9b55468d943c563955e5168642a68aee48cd3d3bd59dc2b2
MD5 2c490acecdb81ab6fbfe99289a4c021b
BLAKE2b-256 96ac4939509c1afed78b77d6b6f1442891822af29fe8a0ff8781186b79cc6b03

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