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

Uploaded CPython 3.13Windows x86-64

cumm_cu124-0.7.9-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.9-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu124-0.7.9-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.9-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu124-0.7.9-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.9-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu124-0.7.9-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.9-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu124-0.7.9-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.9-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cumm_cu124-0.7.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for cumm_cu124-0.7.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5e5828c9db855ff1eff7b44c07315d15e30354c5aff22ea3f9d4516b9b6358e0
MD5 1c02a96d7d1a807bde89afc4b1a438b6
BLAKE2b-256 7095a0c714814976d4aa529253af8f30f07019975c1bce020102f98db082d99c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.9-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d8cd514703cc123b66f3919d56c78cc7d2bdca3430c6e5782c0aa256a7135bfa
MD5 fee8cabc6e523e984f4357f01625656b
BLAKE2b-256 77a180d205b4b4f9f5a7e1999c93822366ca5a20bcc2d0efde13ea8d44aa445e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.7.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for cumm_cu124-0.7.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 17e9b05d6b37e218bbc5437686caf71e588f298eb5ba8413faf327144beda7f0
MD5 751737bca6507df434895f4a866f2388
BLAKE2b-256 966b6a52df4fcb32e333bd43b7dcc27506a8613aedc78cb8728caf4b95a15864

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.9-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a81222a25b24f2870be8585e4bf9ff5f60368d6ee6dfdc391c9ee5574d1411f3
MD5 34fe6bad7776e193ece8d5764fde79e1
BLAKE2b-256 a607da7049e3371feea1b16356f3ce482138caa215332f5448455ff24000440a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.7.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for cumm_cu124-0.7.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a713928b5e6de76793163454772a20e2e7f1e9f14ec9986ab76a8690a10b1987
MD5 7ca787d44c7f45697646381fe6a8b0d0
BLAKE2b-256 1b0ac6327f3fb6b7166899537256fa8bebbafcaca5794c5dceb2b60b6d3fa69a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.9-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1162558ffc2870befb81b84356f385e44c627b827f0c8ae29b87f949b06ccc7d
MD5 091a6f40292deff6bb6988c4f6638db4
BLAKE2b-256 bb49a5114ef717c2678996d9663dfd94b9e51eba7043456589d409e1ab14f754

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.7.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.11

File hashes

Hashes for cumm_cu124-0.7.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7f5a314a8c1b3575be054e97868a194ef5a5746d6d21d90818a6b71a991534d7
MD5 f06355bbab90695dd4f0d71d189a9b0a
BLAKE2b-256 1e96346409396449286f0a4a52556adab47fd5563501eeeac1463a6b3c2c8b2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.9-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f970e22254e2a74e9f85a17da975bdebf7717b373cf8065496a71af6a9e43990
MD5 f287bc95b5ebe03c19e57c5bbacebc5b
BLAKE2b-256 fee924dc27ae5105a35894a69767b8d00f650cc710bfcd0fa2476dc8a855bcb3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu124-0.7.9-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.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 44a7ed1a59a185bd49f4787631a1cacadf9b561c0c487bb67fdedf1b32f106cb
MD5 37d391fe834f4bff40acd1ac2a69fd72
BLAKE2b-256 88ebdb75ac552b36306d3a68c7f2729bbc91132e6c7816405984fe72ad2186a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.9-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0cfed20afa9ea7dd922c760a5d4fe8534da0235a074c9b783239e1957de692c
MD5 08ec02a32b6bbb25b2337bf97bef6c7c
BLAKE2b-256 c8b640f9cbd7eb55d6688eb64c1e468e9350272b807471eab92f769978cfc274

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