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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.4.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.6-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.2 CPython/3.11.1

File hashes

Hashes for cumm_cu114-0.4.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 babdf0cc5da4dcba1fd61a884c401be9651d695ce569cee85cbeea4d7ac4c2a3
MD5 af7e26b9f7ca89920a5e27f2bc6b7c46
BLAKE2b-256 736bbe3974a77c38297ec317f23f9c016368fa15ff547616ba1c17ef9e1d7740

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0c73f322124c223a0bf0ab25ed82dc388ca608bb95337c3f11af9d9e46b2182
MD5 111aaf52e838a7a05c7e701d15d97f92
BLAKE2b-256 3a5072b9e6d4ebbe88791de63d58ad7e543f0b3869d479db6314da138297c03c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.6-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.2 CPython/3.10.9

File hashes

Hashes for cumm_cu114-0.4.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bf87ee2a8c1993c067e79dde8bd150ac415beb9c8837443d1fda4e128828a8d4
MD5 7286229db325666236b841085479f872
BLAKE2b-256 8922bf5a18d3453023d79d4209e2fbe934542e69a2c870ef5840ef700db287c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5194c595191eaa259304f9e6d15504fd0f838e785daa871d3609aeab6c629541
MD5 0362e1349120b23ce3ee9ee2ba24fc8b
BLAKE2b-256 5941fceba902be6ea7432a88d2d27c55a7960b16156223ad6627292a848ebcdc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.6-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_cu114-0.4.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 d8b70dd3743c3e9b8a4518c94dec6bd0f9cf9f8ab7a7b697502059b02b4bcde5
MD5 4ff9e7819ab10765b08d97cd463c7c74
BLAKE2b-256 8fd549ef46b322a5fee7970678e8a3a658ee2c589913cbb929b45948525527ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7941aef4fbaa4be943c932d9c8d30ca481657fb89298904fae88111205c4802f
MD5 af3e942ae49a9f1f2e0e2766bdc7f0d2
BLAKE2b-256 04c191ade0f51ff5a24cd78887fde5840c8ff752822a07204453e1ad5873eb56

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.6-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_cu114-0.4.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b5ae5a732d467fef6efa90f94c6ed5e9033749cb905ff64441e1e8272efb16dc
MD5 51a3071d9acc3672837578fd1e3ba065
BLAKE2b-256 67a76067157dbb719db2d7e2ba57efad886d792696ed62328e8a2d8ce8960bd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a10b861c1a6a7eabc6119ddf51549bb74dcb1c38c8aa3a92b8700e323a1205b
MD5 53f60323a532669c326e43a68fe71ec5
BLAKE2b-256 75bff765bcbc0b6f3d023bc2156d08973295b02e61f964d7db939e6c0be65594

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.6-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_cu114-0.4.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 67316815d0e82ca7146f4943d4dac4d1dc1ed246894d1ad7fcdf3b7af8f56efe
MD5 f5c4aa58e4ed50f78df5866ac03acf2b
BLAKE2b-256 1a63d451ce54782e034fc3b693576419a0459087d5e71cfab5a12302ddf25f60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3e128e1a529879010ed27d88ad04483c13062d54fd528f693088c5bb20680f2e
MD5 411ae6d80ce184f6ac0a60505ed87ffc
BLAKE2b-256 1321b629f458b405e71a22b9eea51d02a3a549db52491cdf808625314142fc4d

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