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

Uploaded CPython 3.13Windows x86-64

cumm_cu128-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl (48.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cumm_cu128-0.8.2-cp312-cp312-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu128-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl (48.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cumm_cu128-0.8.2-cp311-cp311-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu128-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl (48.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cumm_cu128-0.8.2-cp310-cp310-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu128-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl (48.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cumm_cu128-0.8.2-cp39-cp39-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu128-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl (48.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

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

File metadata

  • Download URL: cumm_cu128-0.8.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.3 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_cu128-0.8.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6df36ebd6fc5d50da041495c6b63b57093c0ba67cc4d0969a89f11f831d7b070
MD5 4c2a65ff2f8cad77e9200cb35f0f89ed
BLAKE2b-256 c042194d991e3b6fc77b2f9f102db284d68beaaa3601ee10aa9ee1534063e110

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu128-0.8.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bced5d396eba503d699413a9a88fed85a97003064df6fe1f79acb5e3271850f1
MD5 902fed37b67eaff9a547fd71155a192e
BLAKE2b-256 c3c5c2aec0b6ed252c54e5d2d6c8368dbb6993b6854eed7e40781b61739da974

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu128-0.8.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.3 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_cu128-0.8.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e4057804388c122b1028e97729c20ed3a32897e8f9d20be5f0d52f209c8f1490
MD5 2472251839b4bcd6753793f690a0e0b4
BLAKE2b-256 e9e0b077758c070228a87e61a270a18441f7adc78abe36c591ef19ad19e28c18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu128-0.8.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b18c91f8f43be031c6e7b0ca94efe0c916db24db660897425757a7d3b587b9b2
MD5 4ce3ccff9dd4d3694a7c1818e6469f75
BLAKE2b-256 b2aa2458ac456969d2dbff39ee3f893d1d0df96c23e2b0a4e40a329f7e6dbcc3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu128-0.8.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.3 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_cu128-0.8.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bf21ad7839159d448078059c089e658aec1bd647cf45a1d02b51ce46a83ad8c2
MD5 88b1d0785dcda177a375fc96a359edff
BLAKE2b-256 ead3e0de1c247f0312e85a2d1a2992a5d9eaaa3ec1d862450e6518d1dad706da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu128-0.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c4f0762bce2e9a8cd0ca789496966219d0260f5b73ca667c097b803ccfb1dfee
MD5 60bd1682cf04a66d189bbd8f55bf032a
BLAKE2b-256 33f2293b129d14016dd6eb83d6ea940e1b4dbee08426e2596b58da1a32d8c1be

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu128-0.8.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.3 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_cu128-0.8.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 841cac3e104d9c8ece938e94a30de7ed288fd70fd2ff5fec3a5c3bab15c0eaae
MD5 5090616fb3eda562b55f745d806421ca
BLAKE2b-256 f996ee6f3e8d609728cf8334150002119f59eeb6f2f79624930aca689d33c084

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu128-0.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e22c8a296e5baf9065271bb99ad08d363db75dce775e99da45361a9a95981a0
MD5 44fe98286195571c968d192b6af9d396
BLAKE2b-256 11bde05031541f949c8a1d687c76f2ec7731b7e32a08b4299fd02a29c3c82813

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu128-0.8.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.3 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_cu128-0.8.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fd6a6f2467a08112f991f7f58a84ffe40a2cd3a65e5bf28e7c9718dc302d3695
MD5 fc624befc93939258d7dfbe65cbff8a2
BLAKE2b-256 5b279987513885c879e508d7d06aaccd4eb0ba1297f77799e17463d30152a2a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu128-0.8.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b6045da73b00c51ed43cd2e8a4fa027c8be5f83743398e9dde60bb687c009f3
MD5 1270ce217315d63b072dba75ea81a560
BLAKE2b-256 9dc5b73edbba7c8aee9a2d17af172e2bed1bd6604d71d40af0e503885055bf21

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