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

cumm_cu113-0.4.3-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

cumm_cu113-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.3-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

cumm_cu113-0.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.3-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

cumm_cu113-0.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.3-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

cumm_cu113-0.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.3-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu113-0.4.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d633b00a443aae0619f2d6b1f4f057565d54feedc9b49d4e8a519bd4a0c8ff6f
MD5 bef3b384ecb6ec01c2f626bc3497171a
BLAKE2b-256 55a7d134aa556a643f409032eeba790352a0a8fe8f52e2e5cfadd561da526d51

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1a207f1d63366e889a1e1ff225a56c8d5df27b8e38ae636807b7f5d17bbb8374
MD5 2349ab23c4e429c0c93cb52a751a3514
BLAKE2b-256 2d54c9e8eeb20e0da93f37aae19e5033bc7c84efab52430b9bd8aea140e0ff8b

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fe1b69628ab6ab2ef7cf828dfa1af9b8967e7d4eb65b7bbc3b193805a12c392f
MD5 249a4fc33f88cdb3acc0d6853f20845a
BLAKE2b-256 e5b60866179968bfeecb7a421fc57946d21db32705229d1564798b406c37da3d

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 251e14e4e2864c358c581d5ab071e407274442285d2913fbba10a302cc1eb8d0
MD5 edf5745d3973fb319b7cd976b4d3dfaf
BLAKE2b-256 c870e72fc568a64053f34295cf6eae0065ce0395436e2a992bfd2c85793917cf

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ff7aca9c6bca7cfd01fe278f73129629547ff547682f3e260712a7a0743f1763
MD5 a2932a5088084f946ef21bcee39c59b6
BLAKE2b-256 dd3ffbb76e8e3d24b73eb31eb106d847fb1951ead122e1330078138c167491e0

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0534ce1892b95b73b706605d08995ee78376fd3cef57e938293e9ec3070f1953
MD5 79cf2d74b08f0e36531e8bf73a2b9f6c
BLAKE2b-256 ca214e0613466aa0c266ed2b77651aee19c16f9cb2f76e3d9ae33797b52fbaae

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a6fd6d6a7a7d39a504cc4c944550b653947588c3c9907649cda5e9cd01ffc1d3
MD5 febe53ac3f681cbc7eb10f95c0a256e3
BLAKE2b-256 8c259b861e7a1401c7fe2668f4d556f5f5359f555bee01e61b06c9dc567eb4db

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ed565d400ae03a8159091be92f3c05961cb0dcb7d59380fa636d8ecf6dec139a
MD5 4ec2a2b93c550cf643e779ddaf72e3e7
BLAKE2b-256 b351f0cf296e29ab61260173846d4a2bb8c9a95b0fd27bb4fbc90db5aab11543

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 81aba26d545a264e54fa5bb505a32158adb74cae1199e45a89dd8d3980e32081
MD5 74e42578ae6e3463a538a6612e0ee795
BLAKE2b-256 315cb1311a9db74bbcc44a420942b2973538354abfa6f54ba303451595769305

See more details on using hashes here.

Provenance

File details

Details for the file cumm_cu113-0.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7cb512dca3a4928154cf9e818df28990386b2ebd7b1a1c1b28a6d62a59a1555
MD5 7f4ad3e4eaf97f534bf061f8c89f2001
BLAKE2b-256 d450419025b1341b24ce7e016e9b6f4ed87d5c16dfd498f9eaf31945e8cd00af

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page