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

Uploaded CPython 3.11Windows x86-64

cumm_cu117-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.0-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu117-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.0-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu117-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.0-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu117-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.0-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu117-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu117-0.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.0-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_cu117-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e2f87f2eeaaf7f1e71d8b23a8377f33251d2d840eb1ff24909108199d591c24e
MD5 7e242d8b6b5c56896f15488c9b057c2b
BLAKE2b-256 be360066b53332cf0cf07d482b6ea295d1e91f0412e635e83eba1086ccd81dae

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63357db4ad949e50203a6a1d3de44dd3724d17bbd8aa577ab9b642f022c5b581
MD5 81657aec5a52aaea878bb6c741b4739f
BLAKE2b-256 0354620073cd537ca894a38b55668cbbb557997269d9db1dfbe2c3d1737343b8

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.0-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_cu117-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0b0a931aec42a18fef4fe1e04a3200580c9fe82e2b1564020f0ab5bfedb4419d
MD5 6e4559379f34e3acb48b7827f851216f
BLAKE2b-256 feddb4611697054b740277ca8db3433122e285377a1f4d16e15ac553e8ede776

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e81907279d0415deba040ba0174772c8c4f93c59f4b707569b2a792980c4956
MD5 d40bbf5ae19a15290f063ca7cb9d2a2e
BLAKE2b-256 0f7e202ec089f96e456b55b08f13d8ab6edcd4e51c67a54b00f91fa72cd5be1d

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.0-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_cu117-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 88a421eaa981e6d6ddf4e2fe8fe4acc2a5d3135cf8fda5fc27ff658d4bf4e28b
MD5 46b96ac1c51feed571c80488af97d971
BLAKE2b-256 731433093262ea69ed5068005666c99db3c63bba52193b36618f7b5e12d8fe49

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4c706b75fd6460ae66d397d1deae401a9caa96ab62593c63c79bd34db094107
MD5 ba49b4c788c5ce118761932c84880437
BLAKE2b-256 19370dd225761488371b700d9a9e695226cb831a7d28ce24e356a7c4c59c9cc5

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.0-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_cu117-0.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 297e12fe65d81e9321f143856dd2cba2675d815d0f73f96ee6d43d672e53442c
MD5 fbe21fababae6ed4650d2f62bd6975ae
BLAKE2b-256 74a6d59eaebf4c6bf67ed88e254b42476078a620c482ed4937d5f64f7da90852

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e60f36bf8f74a96d66cd58e95ab8e18bda541144746d43a5ec2bdd9cbc5e7382
MD5 2d4259a3cd3f750e58e215023c23a51a
BLAKE2b-256 0c8fc123d5bd0b90eb4708b160e22417038291ffd2146668f947f4e9122ac027

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.0-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_cu117-0.4.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e3944829bb965135f5964dcdd4305bff8a5cbdcf60a8c5a41e77b6994965717b
MD5 67a10ac3d934ac84d153fa2e19f5f121
BLAKE2b-256 b392f230b1c485d02f2188e536c41223632fb83c73e571c37c9236c709d7da12

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4fa16c39d3dcde0bcf0c9c207bc94e5c551855703634f4592cd5e60b3fd5b4bc
MD5 b4a40914e2788052f4e66c7d5b11280c
BLAKE2b-256 6a5401ed02231ca9aa502470a04a61b225debf68ff1616d42d6c4226c19a75da

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