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

Uploaded CPython 3.13Windows x86-64

cumm_cu114-0.7.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12Windows x86-64

cumm_cu114-0.7.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.7.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.7.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.7.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1525da76197306ac364925f855a157333e11338ec5820dd9d0ece30be63d5e28
MD5 259a1756ed549f4ea385ab060b984d8c
BLAKE2b-256 49bc8bf0c16e399075268604b878e9bc8e0bf5ed9e3638289a5cf17ceb16f7f1

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b8dda88bcaa308e75d51ebe2cb375db73d013ec4c2df225e84b94f98964374a7
MD5 5f52ad02c7100c7626f3089196d045d3
BLAKE2b-256 549b6ed854e08fca11cd3e4dce6a1d5fef8ee56fba6edb221955fcac3b86d7df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bda677e62dbb61f72ba1cfd909114f9cff5acf6078742550a3c94fa7b8f5d675
MD5 b9ccfa142635bc9825e714c831f8527c
BLAKE2b-256 099c45f1d18dab1b59749e2bf5f8acac47d3e011a86409148deb9584a101aa3c

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb9104f755bc2746b99afbaa0007a716a8a6ff39a6fb03a9acf9bb33a76262b3
MD5 a3440ac7c73aec2482e7f2e4b8eef876
BLAKE2b-256 6e966a9fe712fbc28a7a9b45e042278211b6c69ff494d1c4787812a9571351c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 49546bb4caccb64537c7048ab704adbaaa43d65aaac57912587e063ffd7494e8
MD5 dafea36da1c8211a399d118c0d5a868d
BLAKE2b-256 01e53e30811d65b0cee6f358a84498c575bbe8b22db7a9408e71c33b7e62997f

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07f4c44b3c3cf99bc8cbe21cfe48d8ff09b55bb45b42e88c4fd84127e4f635d9
MD5 312e693aaa9107dbb8e88a445751aaa5
BLAKE2b-256 a90fc807b8e5384436d51fae3d5420a9f4d126dc78459ae0e69a6e725303635c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 80a477ad15a49313eabe3e4d4909805f8be3f65069ed0dcb07c1e69c6e5aad5e
MD5 3d99cda5f6865492e04b99445d24cb5d
BLAKE2b-256 3971c9ebc62accbc1356eb5b42f4b5edeb1af409e23fc0c70e8690e3aec6e5da

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 506f9c638c9a8c3055dbcf3b117eece7dfb98b0a45c56d98136fdcb9a28a4ab5
MD5 1b3fad687da8e2e4e61b57116baa8529
BLAKE2b-256 140857801112f4e6d04d72df7ce90b03d124bae7f367f090ecbe96a3d1d8c52e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-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_cu114-0.7.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b17c3c0b1ada82d7921383d351925ce5159a5b00c08aeadf95dbf4981ccd7622
MD5 5240154aba495ef7e6c2cb37f3ac225c
BLAKE2b-256 7934c4e9ac3b2f986772af87c7d6abac8e909ec1b1dbbe99236878a3e993089e

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb765e5f4c1dacc1e2e6e35ff553d47075148c7d792bddc0743a81e081f491ae
MD5 976a23ada48647b6dceb1510d54b6b7d
BLAKE2b-256 d29e9a0ad923234accb1e1befa1d757d46529dbc743793c823eb882d85e13b13

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