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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7mWindows x86-64

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

File metadata

  • Download URL: cumm_cu114-0.4.7-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.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 045b322e7063f7e8efc12310993f937c39e32dafc3c9ca08c1615e0dbae2aaae
MD5 e931aae08213c18f7c77bb878ebb4144
BLAKE2b-256 518dffdff1ad5740b9f037020d00917750fd0f5e6521f153e4d2370ba6c31a9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39c1f7c1f647a5f6cac83a5137d868752c273e5354204fc6f22170dc5d426602
MD5 661273ef99e588f6fed77d3a3d1c0420
BLAKE2b-256 e03727907fff4666b45ac823de85177ca37d8278d558a1f6340aafffdc67ed5f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.7-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.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 174c7f37fabf159a7350ef1d0bbae97b756c0e4cdad3f81b88f7a1e50bc047d0
MD5 6ef619825f8df27dfd23cb2bf2d64896
BLAKE2b-256 ce87b3c847de282113ab20048224319eaaf70bc6c5dbccfcf46753b4cc46de04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c555d5045e26f5413f5fff2fedfee8fa168f57bda0b815dcc2d492307430b6eb
MD5 f45c63d57017a800fad05c04b992fdad
BLAKE2b-256 63e4dfdc4b9b7e56d083cadb69b293f490287937c0c596cc7e3f01eb18dcad87

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.7-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.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 63bd24bd24df15be1ef46d70d665ec732c4fdfb591cfe64f0e07e4223bc396ae
MD5 e0b86f5a5d37ca068472d2831391ba72
BLAKE2b-256 a393fd30c9c1f2e08717640f414ec05d22718fa15fe868a0f717ac044b9f7300

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6445f566c2ae598d1d0b492478df2e06c6804109d38fa06ec743d039bb76d524
MD5 dea0782bc81ffe3cbe65ec98c63cbf2a
BLAKE2b-256 fa044dd332607bd48e3f5c83ed65046c37469d280405fd3e0439047cea2d329c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.7-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.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d3e62104f58db1fab869dd4b87608c9dd7325b194177c208f0feab99d4bedf07
MD5 7ee28a36aa34eb91f49044e4c874126d
BLAKE2b-256 f35af6e8f4d8584a3b1840b999bbb1caa796267c838f36b05136625ceaaebea1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5afddd7fc4a661bdedf63fe7cbf6207593d143e349b177a7cbd708d7eb6fe50f
MD5 9cf4fc56098054ee5bae22590f700975
BLAKE2b-256 c84ca3be1266f21a75dc942cff5fd85318762d446a4b5bb47eb1d054c3c66e40

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.7-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.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6c97679cff1325e78b32938b5639a595e3578089dd4ef9598bffd25f75d9a789
MD5 34cc8d89b2d307d915c8eef6993133f3
BLAKE2b-256 778fc138b9843a01a6b8c4b6df1ff8b4ff0169772ce8605e5451855f805512d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 07e7f221ff1eb5d4a0d531b1de066c8187872d6b1650e3c1291656adcb1a2a2e
MD5 c4f74fddc91c9140bebdd2f905c900cf
BLAKE2b-256 2f9aa842e4214b8f1af13994b7d790226749582c9b841a9d945fc7dd8ffac2ba

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