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_cu122-0.6.3-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12 Windows x86-64

cumm_cu122-0.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

cumm_cu122-0.6.3-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11 Windows x86-64

cumm_cu122-0.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cumm_cu122-0.6.3-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10 Windows x86-64

cumm_cu122-0.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cumm_cu122-0.6.3-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

cumm_cu122-0.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cumm_cu122-0.6.3-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

cumm_cu122-0.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu122-0.6.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 491e0463060f27ee026d61448237661688c8e23d221330ce946288933079f902
MD5 3a597bac3b552c5382106b86c820820a
BLAKE2b-256 91b796d78b5593d18392c4191166d37e234b3c2aacb8ce4035a9635a41b136e8

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9467cbd467764bca705de87843c0d5084ada24f8ab9b80cd577d71bc1ac65c98
MD5 6113650d16e1fe9295acb133c2f8ee38
BLAKE2b-256 e1446b3334d9f402aea812df376602675323e53aca4943d025d8c75a8ca7e40f

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7780e390c2245309f3e2847164d717cf52ce1351c985f03fb9162f26e99bd57b
MD5 659e345406daf13091f28bad20b387ad
BLAKE2b-256 08924bb29781611b3da806175c57e0e8048e3dc1e2bad7085abee5fbb4d3c64a

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68e6000daa0eac8399582537deb7eafcdddbe242ee878f6264aaacb374210948
MD5 3f0ffb44456cd810a780a89a5a59ad3c
BLAKE2b-256 ed03204287ea336526e3a1546181167b324c6831829e879378f31c71ca801b19

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 12b9ac2f0f424da52b1af3562c1a0000a618b56664f9f9bd814b42a41114f6bc
MD5 23f847225fc0291db90b705cd8929e6e
BLAKE2b-256 6d254ec49bb4f472286509ef060126db8c08982f775febba190f945fbada4aa5

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 97a1aa35eb02fdd8541d935df7691386262dc49df275f402a22b4d9726ac0432
MD5 dafc6cd47c230c7ef50f7239aaff1135
BLAKE2b-256 0bec7f2df167598800d70230444c1d06e631449fc32686e4e0d12de6d7cef9c1

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 06e387bc46ff1744b5150fd85be2ceb05ef800fc4f71d55abbc9c3a7294b85b0
MD5 73e00711f6dca3bf2e6ed7d0881160c7
BLAKE2b-256 81b2c5b76bb7238e55b9d297f07de2750b66d691ed9bbb3758ccf29ee96f0904

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb0879a97e17879bdb9b6a54039026a132bb24054f4b0a880bffceb82959a339
MD5 dabf3f66a5454ca5f16531678485f918
BLAKE2b-256 d08d504d5d1e7a04c4e1cae981db628c6be1e7c95135059a1c257fea30033df8

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 90265e5984048f764f4bab836de7c997fc301fc96980105bcaa48d5418e28be6
MD5 d2700de4082455a05233d188dff881af
BLAKE2b-256 26f28fa408b9444e054a2674c6f84cfa354072d17004dd1cb71262e9c53f91b7

See more details on using hashes here.

File details

Details for the file cumm_cu122-0.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu122-0.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad3edc6476c897fb0be24013f7aef19200635a1307ccbeeaa999d2806f6315bc
MD5 627b48f5ccbd3d42529a767ce4264529
BLAKE2b-256 89ec31b30b4478f382f74fa38501c9c252fc2d347668a4d4d1cee3f811ecfd40

See more details on using hashes here.

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