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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu114-0.3.7-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu114-0.3.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.11.0

File hashes

Hashes for cumm_cu114-0.3.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8d95beddeecd8b1f35e423242def7a2d3761e9095720621b77507ebfe19156ac
MD5 9edae73cbbb131c57c0a7ec0b8860abc
BLAKE2b-256 0f96110da86a61f77d1eeca3f2d09d1a930026700c73f63e689b3eca584ecc5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc75c9100d308f66b12b22256bfb27e7a7733ebdd3013563f461cfb75b051a0c
MD5 9822fe3c25aaed21f470607dfd1fa014
BLAKE2b-256 5d33700aee3ebd5b1cddaa2d25356ecf89038eadcedc290fcd53dd013e2b658c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.10.8

File hashes

Hashes for cumm_cu114-0.3.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e15fe1a4ac9fdad3574caa652c57ace756c4a8e4bcae385adf09892112dc1646
MD5 478459b30aa3016d4b7c9722007e0caf
BLAKE2b-256 493ffcc2d0793c56de493e2f24c7abb4b3e28dad4aa830a7f7c428856af2befb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7726a9ae01f645ae9fe61613fc29e16420e3a571c24640c91278418870f6daac
MD5 2945f184d0adcee8ff1c1eb4e280d670
BLAKE2b-256 92697d4b278ac58bb349d150b805e20ca3e506c027262e2099697c0cca829216

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 15fbadac03caf10c4799d78191e36e165420f0cccb8d41a2d75b055640e20a3b
MD5 15e8e98edc3b2335385ad62e5d341e08
BLAKE2b-256 ad6af3ca06ddced3a0419296840f1b95d1d5ec68da574bf4067c24cae467228c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4471a53de53d79ca018b60edc6e02a77a3c5acfbc3d6dbd31db2f587bac4900
MD5 85e59675d590f19d88452971a0f36def
BLAKE2b-256 ea50cc95be3a7653aa742f29d890b20d27f092d69144d8c0741aac98caff720e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 445e28be14fb1294885c11911da301be0a780ad9f0fe02df1f6b3bdf764872f4
MD5 b2847d5abe7ecff3577db628826e46bd
BLAKE2b-256 b13f823947fcc4d43b5828c4e797ce41cd2c95760ff6c4f7c3a27c95bcd8598c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 77a1ec24ca06a8b053a5fcfe421c23d247447c4710ef30ac956d1f02ede5d6d9
MD5 155b1188515c3d883f09a75824ba0b0a
BLAKE2b-256 ca4d5932ed1e6c68e45fbea97bcaea22548a6c5ef963595b53696b694a6841ca

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 9c56077cd335bcce55633bb821a791714d3c117fd39dd9a01bbd17dbfef8818e
MD5 dbeb2a8891d1bc807c1833b3c9abbe04
BLAKE2b-256 ffbb26f5809d9cfbc58b87e77979cf652292877f228e7e64cc6a24ed77c24b1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26325cf039224bec37797015deccaa095bfd7beca2d341546bad76d0b9f6d872
MD5 6d867199e0a12c82ad4e720fe4e78d9f
BLAKE2b-256 386ef35934f216d5ce43dbf10b9b7a5e10a74ab869499b71b6a6227ee5ea769d

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