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

Uploaded CPython 3.13Windows x86-64

cumm_cu124-0.7.10-cp313-cp313-manylinux_2_28_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cumm_cu124-0.7.10-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu124-0.7.10-cp312-cp312-manylinux_2_28_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cumm_cu124-0.7.10-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu124-0.7.10-cp311-cp311-manylinux_2_28_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cumm_cu124-0.7.10-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu124-0.7.10-cp310-cp310-manylinux_2_28_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cumm_cu124-0.7.10-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu124-0.7.10-cp39-cp39-manylinux_2_28_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2ecdbe75053e77df6f03d72ac71e0dd488ff0a51e782c422663142a75d137480
MD5 7246121c08e14c233579836ad9034373
BLAKE2b-256 ddba3a12180a522e1ea54014b34021a35f676749f5f2f7c0f1461bbd8abb747f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 19c0110f69e0c987a77726baeb2ccc92ab4d0ab00c2485c04741b90ba44e12a4
MD5 46fc5c644ceab7f05bd8b6e6edc012ca
BLAKE2b-256 eb6ecf11b219c8e51e20bc47fa3f85ce6e8cf0b7feed21ede289922fda694d6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 85517599f78f7a53b7d180d505ce2fd7b082e8bf9b00f29d277bc65a669ae173
MD5 a288b8968d6a019a882c23a483940d01
BLAKE2b-256 b4bc38938c1063f8a113daaf6684fd0a8a46cb3ee1a1977d79e5d2daf3fda8d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a76f6faa04eb37fb823650417628762d655dc530e451f1490f292d58e3e9c44f
MD5 5e20455b7fe490d0516fca5efdd3f86b
BLAKE2b-256 a642959e2dd57b019139d9e88e91216cf1005d30a140195ec530eed7c1bd1af6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ec1ce604a397f46a4cc2a62e257019e180c2350a1b43e6faad1ddeb791ccc236
MD5 e5567cd0613169770acc0e2c6d1bc907
BLAKE2b-256 b09f25b0be4d22f8fb22b99e565832a8823b35ef32b3754aa5c74414029e6dbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 762f634dec0b3df24aee270fc6a12887874b721c4b933aa9acc3988ace7e237d
MD5 8bfeeb03e4cdfbdac1f10ad9b1ff246a
BLAKE2b-256 6a421bc2f0f96ec7996f26cd7ba3c9ede103003cdc83ee3b14c79f8beee1200e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 70fae53f496a10cbd346245f75580b199aee55d0b9c3a1547b3152f11d884fe4
MD5 84c2d2f1d3aadcf8e457f5d1043ac6ec
BLAKE2b-256 5a3a6de6fe829cc23f9e61abe9e267b77ab1570b114e1ee35613efb0d1952511

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 904447764108363e596af22cef6def3dbfefed9afe3bab1fe1f535b947488d23
MD5 79aa443ed6296479ecb03c0720f80726
BLAKE2b-256 989939e70e76c40d363d4fdc4fb6af7ac1fad8db9d931d1f0bdd74d467702fae

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu124-0.7.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 dcb767148033456a1b1db526e27b69f118af98a11de8c07b12e7a823ec506ca9
MD5 c7dfd183a752a2aa10b9bdcc9dd22491
BLAKE2b-256 ef343bd92260ed8a6325df05ffc8f57c424c0bc065972c8afd4f86456158481d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.10-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e944ce875071f42eec55ab53d22caa5d5a65d91567a909e9cecaac65848d5d8
MD5 79d48d67518d179f0e8a2d51e003762c
BLAKE2b-256 62c2d3c861ae3aacd9229245746c6a96762b0629de878f8c18c43541211137c4

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