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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.4.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.11-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.4.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.11-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.4.11-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.11-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.4.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.11-cp37-cp37m-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.11-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.11-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2cf47412ded2ccdd963cc6c9f132b5c6f6cbef457919f64dc277dbf346325e54
MD5 e1980a16bee61fbd2fe17748822edfeb
BLAKE2b-256 cc774345ba86eca6d869510839f5220c40439304d37a3539655dba0d7ae92de5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a305ae56bf364111966d8389fdb46ea21f22dbb9eb5be5cedb1bf9255808c586
MD5 dcf94a0bfbe9fd19314bc2230a27c228
BLAKE2b-256 87a8f2266e386387016e3cef08e8e4696bf5248f9bfda03708b4470a36e352ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c93965a075bbb1037a89fbc50a472a0b139615012664ba11e4e119d88892ce73
MD5 2caaea9856355602bf1066fd049b5c6d
BLAKE2b-256 7716e05ec7c4239cde5f758098e33b2998b171681a9ba5aa78b4dbf5f1ff11c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b2bd188c4c4497df97af99a19d5b2a1da44eb2b5d888249355feaaa4a234dcd
MD5 0bcdad043df81c47ada89d7f45a353a0
BLAKE2b-256 057d17e45471e6a92310246b303dc4cb228664e493434d5b409d915a21f6b9ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.11-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.11-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b7eb348afdcf3ccd3f9b7f22d7fc4269418d98ce6a3497f72e9d2d7869bf5cc6
MD5 beee79bb5b5c65474ee51755d8b58ec2
BLAKE2b-256 a5c0aaf5b70b392e94f9f4cd0dc505807959fdbadecdb01898922988c0f7186d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c89932e329023efc78307ff7a3591824297c88ce6dc38fceb48ed8aff6721fea
MD5 0f024486e368930b2fa09097ecb3814e
BLAKE2b-256 766d9c938c95e4935210797d117af8c32f626692aecb1657527bfff407e7352c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.11-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.11-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 51ec4308a758f88bbcec694e01c9ad9e2e4246094e6c7098477bde3029721949
MD5 98694c3b2d42138a5b190c7d7e271a38
BLAKE2b-256 0d5980cf9fff4ce8b7946e8e9cf05eaefe4928ba99730df94cac68f76f4b1e9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06fe7d80bedfeefe903bbd99709787a6dcba2312486b9e0bb834c2e1d21ec421
MD5 81bc81d407f9352754df557283fa2844
BLAKE2b-256 57a270cac9fc6540acaf8723e9aac956b7c74769d7bb63cf977baaa6f7deb289

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 c1921927323810838832062192835c7df822b3648e562f1d55e91abffcbe5f85
MD5 e2a54a9c2d7c86dcc22dc4ad179e778b
BLAKE2b-256 187c1a3e5a5b656dd247f64f9673a09c4acc6db2e1a6d29cfa9e6c60cf744458

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6583e7422b3e8558ed91273b6d45581eb69290e0cc242563d7b6fb11297e0441
MD5 4d6f654107da63f6b35d8e24a5069d7f
BLAKE2b-256 e35ccb27bc74bb494b657a32b37582132f09ad123962ffced46f63cf3c64ddd4

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