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

Uploaded CPython 3.13Windows x86-64

cumm_cu121-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cumm_cu121-0.8.2-cp312-cp312-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu121-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cumm_cu121-0.8.2-cp311-cp311-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu121-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu121-0.8.2-cp310-cp310-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu121-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu121-0.8.2-cp39-cp39-win_amd64.whl (2.4 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu121-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (27.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: cumm_cu121-0.8.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.4 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_cu121-0.8.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2a5049b88acd1f0bc31a0b6d677c834a6c2ad1d429e2e718719bf8917bac29b7
MD5 e374cd6ad7269d2e966ce6fd2518e05b
BLAKE2b-256 6bcbb95fc9f4d6d7fc4460874f51356e307541c90975236e7c23744ec3a47add

See more details on using hashes here.

File details

Details for the file cumm_cu121-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu121-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28dc286a062b449663e51ed65a6231ce75ccc439860ca2fdd682c81fcfad9c5d
MD5 f5d3a720f59fe089e189f1cab3107aa5
BLAKE2b-256 77cf8d36c20c8ac565b9f0aaaa2685a2be88beabed70b7f0e3ea2b2ad7536c13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu121-0.8.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.4 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_cu121-0.8.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 20bef6e611259473b562f1b70ee78d196f556bd42bb1762524e565a7952c13a6
MD5 86400137be7c0238ec24b405d5d04237
BLAKE2b-256 be3d6974f7f48af3d80c62efaa70fd495e221a5c4409be44bf8d6f55f644e95a

See more details on using hashes here.

File details

Details for the file cumm_cu121-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu121-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d83b2f586afc88d9663f9251a9c609fa59611d979055a7cd12291482b2e5d773
MD5 4bd16de2bd0566d2691fb8269fca70d9
BLAKE2b-256 3c721509cfeac286b6d92ced40e3ed332181139ee375c47e7e7b6cc3c3c42876

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu121-0.8.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.4 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_cu121-0.8.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6c9e9914aa97fad204ec82795c1531a018ed08ee634462fc0ef579a392a1f0bd
MD5 4eed2ed5abdcb4c840ae02906d386fee
BLAKE2b-256 5374081b10a731eda1d3828dbfa22ff358747b5e4d492ed38d9cfbca47cba0f4

See more details on using hashes here.

File details

Details for the file cumm_cu121-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu121-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e6644661d963544bde516024c424e3d1a926876b2c209f0fddcd149c8b6d3d27
MD5 c423451dacc481d5dc30fd1cd27a657f
BLAKE2b-256 7337fcecd8448e4e69a6bb72c9b3d7a5238296ceb16218da8682c559eaf22ded

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu121-0.8.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.4 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_cu121-0.8.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 566c70b566cedb6ff61fc5f3d5b4c40831258ab4354ffe10f0ceffd9278d4b46
MD5 4be56011412a578455a38da0f28f4b80
BLAKE2b-256 851d6240db4bd55a225656737fa75b53756fb7f9241a684b8fe8a465c7454313

See more details on using hashes here.

File details

Details for the file cumm_cu121-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu121-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a74d5df3b0112d89f3f64782efc78d9a91c0355694f8db23eac8d6ba70ff56e
MD5 78312e78981b0ff1420d60b538a83ca8
BLAKE2b-256 af43e4501615eca6a0a8081517226be6253df05ded2558501de07c7abbe93f16

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu121-0.8.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.4 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_cu121-0.8.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ba5e8e5a5b1d97e9df12d470806d77ad4e596ef7868ab6419acd39c948ce78a5
MD5 86b330454ac9e7323962652d00742307
BLAKE2b-256 cd5b23ac8164cbdf032edfcaccbef98ce7244daa91a3d0bd5cdafb395863edb3

See more details on using hashes here.

File details

Details for the file cumm_cu121-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu121-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 383c83a56361451bbe934d0da44c0f20b28d813ee46a941b24778f547349be4a
MD5 242c4a75421f07843c6453b7a663e82b
BLAKE2b-256 9da1c7f0be9aa3887b3e73c2f2ac531e8335c21aaa8599715467528359f63776

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