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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu114-0.3.2-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.3.2-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu114-0.3.2-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.3.2-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu114-0.3.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0rc2

File hashes

Hashes for cumm_cu114-0.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6a5090eb7ce344c8863ac2ab2071bad04a3e95e50b6c3e79adca28732bc76f7f
MD5 9de21f558cf75792bb2902672bb7fbf4
BLAKE2b-256 e8cf19a364530b7b68e4150f96363b731fbb460f9662a0cd4ecac08aefbeec0d

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af80794c85987ec250138fbd02d80381f81b8683994433e949753a02a1400597
MD5 71d758874a4d2202be7164d0eb229a3c
BLAKE2b-256 3d5e52697f583261364473b5f6485b376a199d17bed5c74d7ba0b8df7ee493c1

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for cumm_cu114-0.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 23d1d651dda4cb7d95ff291e565aa15983cf59faffd495f3372804a42abca49e
MD5 ea107e25f7cd37936fc365d153312373
BLAKE2b-256 cbbd06f7d78d46eef22a879b7c0496c48400146704503d00719bd59338b47103

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06ac36ca9a16be726c0a40c5456d81f9d68edd05f82211ae71d11d2303ac675a
MD5 f6127e9a84036deef326cec21159d86d
BLAKE2b-256 15a7e82a5841abc28e336c7c5d84f9bdc1ba4676816a868851212a25ff8b84ca

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.2-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.1 CPython/3.9.13

File hashes

Hashes for cumm_cu114-0.3.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8e6f2786bcabfd60f4210455aff6039dc5d56240a1d2db5772babf82ba783176
MD5 f52366945bc8465df6d7e4fa0c946a1e
BLAKE2b-256 a96934944755acf9b6fc673606648882685bab8329c25d522bbfdd2b13728a3a

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4e480a168278821d7c006105e2c57a3ad751ba41a52ace6cf17f85b31b927ff8
MD5 ebaac7b468d807063aeb109978bc0de2
BLAKE2b-256 2e2ad051196328cf7ee94008f79e03d5d9e3b118124962f326c1a6ffc8d11618

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.2-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.1 CPython/3.8.10

File hashes

Hashes for cumm_cu114-0.3.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 96562aad97bafc8f029e78e50cd787c24d3ec37bc9b99a39604b637a3c33db4b
MD5 f02c07a9e96880af8cd7210a63b64fe4
BLAKE2b-256 e01b20022ef9dc05d55cba768b4b9b1f7c6f9caa7ff0b63af5a57c485990c64c

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7afb563f260c6b05824995dff3039cb5cacfb207ae4fbaba1fb46d076566c19e
MD5 f41c169f0f6fad62ffbc16d815401dc2
BLAKE2b-256 7e87f97d621dc7351c0bd72e75e3604e1aa8b451ec030bed15bf1fc9a3b647b5

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.2-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.1 CPython/3.7.9

File hashes

Hashes for cumm_cu114-0.3.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 43a3be8ddab74f00b0690c44eebea5e22f3585ff25ef3ca58400cf2e7110153c
MD5 90045c99e39f716f20cf62edb4861f7f
BLAKE2b-256 1f31cbff2c8e66841cedffaeff9ee8d751e056d44eb9180562ca8815451dc7c1

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54da891156c9dfadad41150518911f32732174cf36724371ca4a507848d21a0c
MD5 f3aea677d00891990e9cef0edd1d8636
BLAKE2b-256 34ef12df07e32a3997c09c04ae0c12bef38814a7a83cac84ce6949f0c58d9c13

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