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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7mWindows x86-64

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1aa208701dfb66b8ed017db0d65e1314f69d78af76f06fafce94ee3b5624a8a5
MD5 9b2665df454f36f104de876adafd20c4
BLAKE2b-256 51af2b93c0e9483e94aaacdd81834850d4aa34617cb4a2c92e6a69f296c790a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 760da2af3f3ea76f9a3fdb6ad2ff81e455bc53cac53a9ad18d141868fc55c53c
MD5 bdc9e6002c2ddd82fa1376f384da01d0
BLAKE2b-256 14ab3896e84610c6d2e1f2bb98a39d0ccb4ff52a8f70969c865bd689c746ebc7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d3fdea199372f218ee7b7b04725fc5b2f7a30eae97204a1963b96af73c712977
MD5 e9193a6901201705087aef2d4aa1e148
BLAKE2b-256 28329e3cffd1d781ad6b3c00ecc654549c30bedf82c8208900b064dc94c2c6d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6db4052e9db5440c3d6b6e2fc7d90ffb9236855f3f09a45f5c370192db403b4
MD5 2115c83a98847f534a30199e859f7f63
BLAKE2b-256 a2e5c9e8d9097e118985f0fbb0c8833d91398326836a0b66cb6d2bfd1c0265ef

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0cf6e1b2b119c7b6c1574fd3812728a0b926c2b912da83c4e67a7f2bdc76cfe2
MD5 3a4a0977053d865800dfe920bd96eb3d
BLAKE2b-256 e9832029cc9d3a4d6b97dcf19fdda88ed9f3cbe33b2c6e511c17a5198b0d55bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a5c13c48684acc0f75e4e00661b512826f47ba1d5b7c40b4a07604d72b62c80b
MD5 8dc250223298b77d7c7d9825413e2016
BLAKE2b-256 efc0f92a21501be68f6155271080710216a8525a86efb40b59af1491e2698dfe

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a6d1dd1ca03abc0089e34df2fbdfe8574d724152853dec34670590739dc37967
MD5 d9718f9605949a76d57b347d830d1981
BLAKE2b-256 0c376e771977ef59a9c430059abb51c67557a145d6dafc1b9672bb1ca811babf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4fef6bf241d9f2a8792cd84a59143cbb5b9e00f41192ffc597b8705a8da46e0b
MD5 36f97f362e1f8b34713a2dcd5cafcd72
BLAKE2b-256 cae6d314c3d20cf7932533173a2dc6cc85e3fa28597ed39eae5f5de563750595

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 614bc87cd1c402797dc570051f67c96c554a06ff53f611ee6c1e0a519f83b370
MD5 f3df9974516120b61cd1ad994fea3b07
BLAKE2b-256 e5b4e303b808189150129fa46cce32fcd67d657b46589e9be07adbe4dad66d9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 086fff4c8a23b700f5ee606c0df716c189151e24cd579c604781775d689a13de
MD5 3ef6482be4ef440ae23e87483efb9003
BLAKE2b-256 516be7c51fa5705ef184bdc87ede985d58b8d639db587e55db1293d71c53a2ed

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