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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.3.4-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.4-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.3.4-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.4-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.4-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.4-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.3.4-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.4-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.4-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.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.4-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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dc879919c6b7bbbabec3814acfa8cd369db309aded3473929db15f215ea25c75
MD5 4491e1416cfb3afd551d58f740c52fa2
BLAKE2b-256 ca839dbffc2612f22e893654bf9e228e9665475c8142d1a9e71362f32f998242

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea6e98d588ac23f382da6404c50382d21109ec431ec7879ac220fe2fc6108aab
MD5 362cf4c6721c75687e7ddc4b7b7c5e10
BLAKE2b-256 c5cf93574baed03329a1f3c0e4c86b6abbbda6b87d2abd5f5118f3b82bc05466

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.4-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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2a16e1877360fd0f2586a21ccff1bd6ac4aed2974c792f4c9c0e5bf7405fa767
MD5 8b2648f15f618aa303e8261ac84f874e
BLAKE2b-256 c76998edfd93d840f522485398fc6254743183d828b68594bf9f10ba526e9291

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f056e5345c35786e780951cda5dc98d8c0ce7e1cbf13a35b42daa24fe771a33
MD5 32c5b3f1f3b3a5f34a0de828c073d844
BLAKE2b-256 2fa039b5265743b562ddda50e42b204f5e74484f503b619b59248111edd67534

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.4-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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 418c35e141bcab9f4d103435e65857e9def165b7bce103cded1addceefa02a75
MD5 8f7c717c0bc4af69da215ca1078e6088
BLAKE2b-256 af9e210dedcf8a281d71637dc0ba2b51a7bf0861bbd38a517a4f8240a300e204

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de39dc66bd7614ed4152a7902a55f138ed4238681a04421b794620f25ecb6241
MD5 f3b4ca1d70e921107bdd810309459ddf
BLAKE2b-256 d1dccb76716f243f2399faae7a770fc3a533787cb57287d9d55e26014f54b6c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.4-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.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b9e074d76a4ee1bf5e4ce5b2a3a0a6368cf9b25f1b1b226701db913ea92e8141
MD5 125e4f5d089ba50b1a26c7d86872f25f
BLAKE2b-256 608caf83bcc1d428b7f12027d0849118f05a7cf854a2faba0c83f14d843cf9bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fde70b37e876d683a227d21eeb981ad3ddbc436416b4eaea279f6a3c10fdfdf
MD5 abbd460be460ae104355019b1683a084
BLAKE2b-256 8ea2a7513288ad7b6fa3450ebc75dd01b8d54b68cc38094d20b283bb9e15a254

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.4-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.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1288dc86e232815fb699e892fe98465c18378921da2e38dee34b43324a5d7f94
MD5 dc915d0ce6504282aeaffa876f222a95
BLAKE2b-256 d0f4867877ad05f8065fb0d2c3df53091bbcb714084225f82264f9ea28256a87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1741af268e340aaa17938bef63d1ca6bc660dc48c2a3754fbae9d83d79e36300
MD5 24ddca4d085d028c13da04affbfcd6cf
BLAKE2b-256 defb7e143acc551c6bbf7c01ca28e8bc40bea8ad7701565210ecca1477831548

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