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_cu126-0.8.2-cp313-cp313-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.13Windows x86-64

cumm_cu126-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl (27.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cumm_cu126-0.8.2-cp312-cp312-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu126-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl (27.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cumm_cu126-0.8.2-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu126-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl (27.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cumm_cu126-0.8.2-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu126-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl (27.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cumm_cu126-0.8.2-cp39-cp39-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu126-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl (27.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

Details for the file cumm_cu126-0.8.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cumm_cu126-0.8.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.2 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_cu126-0.8.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9a98457f5b8d132e9a89c8a1d0155d89a8d9f22b794a42b47dd4c1f526a7eeca
MD5 b4a8c743b92c6fb7696f9b258328f024
BLAKE2b-256 6564df115c27f87189b5bc7e0d5b6b00fcc6b203e1fdadf130cde8cd51afc7cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu126-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7cdfd3da710de534dc15e40645cdbaa34042aa5af89834389873c054c76ce5a2
MD5 12ae473f857e6fcfc07e705147f34049
BLAKE2b-256 54b6ff4eb87df5da67c56006a8d9fe5bf114cb69bb420194bde08192e5ad8573

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu126-0.8.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.2 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_cu126-0.8.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1bf30491a1ee7904ddf0dba3e26b059a1c21f1311399fffd6cfcbfdb56c8a520
MD5 b94076999af111debfb0237184f55cc9
BLAKE2b-256 1478d338d83e1b571313bd9e420451d7287bbe8acc21ee477f70cf1c75604b37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu126-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 12875800853ff29e85a140335e934e0278b961c16ced8b22893edc734171d1f9
MD5 730485f53cc5696c0045a6d3de3f3bc8
BLAKE2b-256 612afdddd71e7dc8b7b4a69655644264670a0367769f4be4a0e8d7164f52c4b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu126-0.8.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.2 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_cu126-0.8.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 735deff9727562eb609f408dde8b8239ac17c66773d19d2405530d8e1224407b
MD5 7e124442cec5254011ff52b1ca414ed4
BLAKE2b-256 f8f30056c160f3f573b3bb240d6ded2ff659ec5142f66819d46fc6864fef7af9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu126-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e1d8f5bb92ddde9b914376c58916434a6f8c615ca6783c9e0d447f6e64386192
MD5 e0d6f0c2860bf00fd1d6b7a2802d5804
BLAKE2b-256 1bd2eef2e396d69e9a1093a80fa56f6881a5739941619170e185c0a56834a966

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu126-0.8.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 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_cu126-0.8.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8d00456a828510f37d89ea6f73b936718234de956660ba21620182cb37a631b6
MD5 c828b6ff64d738f5f6755a8b964b4a07
BLAKE2b-256 a649caa6b220f50e7753ae135e826151d2206482887a89f2f4f003be71879397

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu126-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b198445e3c7fd0380eb314fc1b7ba4519280cae89c3c61a13b75e3af2872ab89
MD5 1d94c24061e09aae89031384e1562f2f
BLAKE2b-256 92641191ac00c8d89634170cb0de4d9a9f011d5f8b46ae08f665bf59799ac573

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu126-0.8.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.2 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_cu126-0.8.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 61a187c19234bc72925d1a697914273bf2128da044f5e5b92a951186ae98e236
MD5 f70fd0fcd01471b760d15f763eadb998
BLAKE2b-256 72266239570e2e3c91bc18540888220bcc289e33b47c70ab7799f738700fe0cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu126-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 99ba4d317314ffd0dc67d40372a3eb096b8397b31e341358b32dcab99381ecf7
MD5 129f5c0f88b10ef337b943d33a6b1dfc
BLAKE2b-256 f4e62eef1339c5a1a26a8e6b1330b016720089b8ee38733e32aab2ed5d87fb24

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