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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.4.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.10-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.4.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.10-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.4.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.10-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 01a784a6c8cacd7e0e887802ce842e32fdce182249b8a7018fb3e952dd06b8d1
MD5 ecdabe939dc9a9b7e4e663dbb560835f
BLAKE2b-256 53cf004d730a90f85b004d2da89b6e34abbe5b53bfeeda87c0789979ae4561ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10d544e3595651e963e0c23e01e92c6da8bdd6059097c26ecbab2d28f0f7b686
MD5 49b6e4f2cf912039770d9e46f509e6fc
BLAKE2b-256 cb406e4ff157e0c58b6d1256a81199bd98141a830f21369b6e2c9342f1423294

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 50fb47e4cc36765ee1cbda325002ed21b3a133757e7db74e3d526be3d8ba988a
MD5 8ad7d8959689ca614c310590b88a2da4
BLAKE2b-256 dd640a88097a79b78f970de15ccaaf836c006f1bfda3443d357a0c0defd6529e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f350435b6db081f3dc449c1b5bf888cc653914cc3ad564008a4c140b162dec3e
MD5 e9221dfc5731e322ad9f96ec5e6d736c
BLAKE2b-256 1ba045dbe3c166135f3d941de1b918625d95c2075677fe31c1d47d5d0956bfbf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.10-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.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 bfb09592202d111db20aac31911758d507d5aed15316ee958b6db64efcc385e1
MD5 1b67cdf68f1185af878db87f8b847dbf
BLAKE2b-256 631c334abe500fc2ed3013f90fe3c370026ae6966df4c4fd75361f6c279fb014

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0eed0fcd3b1f2022580309b38f1505f8f32209c14d0397b80c21fee4c093c82c
MD5 5e402c303250415bb7f2e348db7f7ff0
BLAKE2b-256 4bea630af7c71361081b67ab710b0cb32b2d4bbf1e9e315d65c3675d73dae0d8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.10-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.10-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 25bd82eed87ceabd5c957eb560fe2cc7fd0d4170ca10af81f0cf755ed1311d38
MD5 5ef9007d5c5df9c4a64b5019967cc240
BLAKE2b-256 5d1c15f9ff4e0ed9543fee5ef453770a185b63c71296d90e9c96132c639e408f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb32265f0b3d2ebe8d7a6fc3329b821b0aaa53572ce22a1ffb65730001b3fca1
MD5 ba8da1e17e54f3b9ddad276b86908f5a
BLAKE2b-256 d55410afc654de661aba12b2fb823ab8fb9aa016c9e7d3e5dafef59d521363ad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.10-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.10-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 d1176b70ce0844d1669bb7808f01722afc07d08d26881ab302d1c6e2edb334cc
MD5 de41542d00161ae35363dc0334e8bfe8
BLAKE2b-256 ee1d382ba10e2b94ed8831422f098ce11e26ed7ac20618688744e41f88c300a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9d7616914ba28e3e4ed8a49cd17c54524b3763081acaa860f02e1789b4ca26a
MD5 2d8b233ab53e2b97f6aa5e5c426b6840
BLAKE2b-256 1f1af4695a5712edd036286f7a0d0f8da4d78a7411fc2b5fa43cd20a7380eb94

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