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.7-3.11 and cuda 10.2/11.3/11.4/11.7/12.0 prebuilt binaries for linux (manylinux).

We offer python 3.7-3.11 and cuda 10.2/11.3/11.4/11.7/12.0 prebuilt binaries for windows 10/11.

pip install cumm for CPU-only

pip install cumm-cu102 for CUDA 10.2

pip install cumm-cu113 for CUDA 11.3

pip install cumm-cu114 for CUDA 11.4

pip install cumm-cu117 for CUDA 11.7

pip install cumm-cu120 for CUDA 12.0

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_cu116-0.4.10-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu116-0.4.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.10-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu116-0.4.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.10-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu116-0.4.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.10-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu116-0.4.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.10-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu116-0.4.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu116-0.4.10-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a70c7a05f0b217f271c5d5af483f1fa24197073aab137dc23c78830c94d21703
MD5 b3946d555874724b652ad3dba856b533
BLAKE2b-256 51da76e76258e8bc14422697a6977d0b02f04798c4e41de881df6655a24c6e1b

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a0ff7c2a5b8c98bd929929a50800af6d9d1b3132349310e8c778b2303acb6aa
MD5 272e0596a6e9d37eb27ae2b199d63163
BLAKE2b-256 4cfbe10b20a82d7bb74c1e276a17e9c5f36595016b5d74034bf1ac1f682c0d89

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f7856a4cf322ce4b1da43005cd082b7605ada781a2f4cff3954ba6a652217c7e
MD5 e5101627538b9fd568ba5b0fe88cfbe1
BLAKE2b-256 81478a4f8a6cb188325c55ee40919dafe7960a65b00ad97b287b376d379064d2

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5d8dbab9c9cf286e364f50d353550b6de485d969f728c7997d2654f1e74b6e8
MD5 90b33f81cf867e6eafef46c6cbfdaa05
BLAKE2b-256 b7ddcc971d3143fe7823b6219cbb143fe423ff8878a9a590fbfe0295956ccd12

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.10-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for cumm_cu116-0.4.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2bd69a46491e220b8f57e89f6e8a25b0ff2ec142e5057d81d8da1fe6c447b010
MD5 13008451e9f334422e6449003d5be4c8
BLAKE2b-256 06410bc2cf3fce3b3d3adda39004ef3e6da5c5e1c67140024e673ff1a708ca1b

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1fc7c04f8a40bd71b9bdc84ad2f47a5e9b58e64b1bedc374d779a4b2308b280b
MD5 ce08b3b5a051a2eaa781a030f9ee1cbf
BLAKE2b-256 0797a308c0dfc5b2288518a4bb74c0c4b3d5c65b1c24373b119b442adb7f4349

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.10-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for cumm_cu116-0.4.10-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4e8a29698d6defdc6fd04a4a07dcb43832e5ffd2198cb911bd43aa9275a7b034
MD5 aa0e3b9b0d09ce09957a8a0063530bb8
BLAKE2b-256 370e719879fd5c4306f2891117b873eb650445a008baa1911dd5e765ac01cbc7

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00fd33a65898e87817266c827698a924d463d365203e50a692c9cfa4995a3b87
MD5 ad744c69dcd86b2fc8637c0769943a9c
BLAKE2b-256 87b2ec37ebb2fbd38178d52cd3e65533984db04b618372607bd0c72295b980c4

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.10-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for cumm_cu116-0.4.10-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 66bc9fc5c0d67d22b007456f11f740a69fca88f7cd30074127fa6157913e66cf
MD5 3eba364af53ef160c004988c2dcc6e6e
BLAKE2b-256 39b9ab50e743e80e97aeb5d40866a8dedfdbcc29815a5cc2bdc99bbb57e8488a

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3953e34f82b8dbcd2d4ac1aa0a6f6eb45ed19ff63389f1dec5f94fa4edcb634
MD5 bffe3d6c96947170d58c4647713b6483
BLAKE2b-256 a71b357d344eee6ece25dfa936909a12f1e40cb25de5450e1a5090aaeb23a020

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