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

Uploaded CPython 3.11Windows x86-64

cumm_cu116-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu116-0.3.6-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu116-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu116-0.3.6-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu116-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu116-0.3.6-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu116-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu116-0.3.6-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu116-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu116-0.3.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.3.6-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_cu116-0.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3136f264ac65c6c696ca8076940f19e93d3c8a91590aaea443db9c74baec2258
MD5 88011e87e0971761c4b612eac4abbfef
BLAKE2b-256 603f898182b83d4e9a720012e8b5ed97bc23f2d475fb07cfdc4b4dbab7fc996c

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75eaa47aa10f9f194b7dcc858ceb027bbe9573f795d74fa5e4ae0729cdd6f2ce
MD5 466656e4e4045f9d145be072d4693f2c
BLAKE2b-256 edaeb6b67a46bbe65815b545c78eae5e52a45e2228a7dc30311ab0b0db2958c7

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.3.6-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_cu116-0.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c28af8605908a93129ebc03451308705985a51bdc5e22f3d5ca5bebd6b6660d1
MD5 97da9cbca5fd3ef2510351dece7a552f
BLAKE2b-256 d0d54aa6630a59f881083de5ef79181745926e75643bbfd064e0d7f058731fc2

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 651e317e21d4373eb99da1f44ad47f9c5f897dfb29b99505e75e66468add4a82
MD5 22d47ae57eacda876a2b7e4b2197c98e
BLAKE2b-256 2de5cff407384f5a6be4526ede3b833974b4198e435fbefa20054b0a7cf1ced5

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.3.6-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_cu116-0.3.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 474b5f83c051712a3b5276b80cc54e645bd3243c6c938c48a5395df707f10205
MD5 beedeb8def0f2f4c691398bcefec4e0b
BLAKE2b-256 aec979b67a6d93de5ae2362674aeda7fc333a2a243e31be49a30d98eba9f38b9

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 39448fc59406f640c82c04b92d3bad04ec1792b221c583cb5e7a89b26ca83198
MD5 101d1d07517123011ca1a2b9367b1499
BLAKE2b-256 febe991a6cc618a8a7666d27a43657665ef04102643913a00da9a1561f1bad2e

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.3.6-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_cu116-0.3.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7171aaca60770b7555893932dd951de43c0ef70b16b6843a3329016f9af4f869
MD5 0c4a64fdd01eb31b3111820dbbdc4d7c
BLAKE2b-256 afbcd4dbbf837f656aa38fd7c93effc91d2438707ec3b0f61addbe6f6e98a8e9

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57481ad659f6faa33827cac1115be91bfbea568851566bca64ccac3901ceb96c
MD5 7a8ea489e0bb2b4be0059dcd16a6f853
BLAKE2b-256 667a46fb2a9aff5e4d4fbf7e949c76ef6f736c3d9d1814ca2f8523be8ab3c349

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.3.6-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_cu116-0.3.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 d84c03edf630200176b9bafb1180b9e1bc67adaa0f1acad97d362f22c3f0eddb
MD5 45d90087fac857475b3b22cc6abfc2c9
BLAKE2b-256 52da3c8372808b50e37759656b471ee06fd548856988d5cd159f85eef0470ef6

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1b3746c2d0c52c8d97fec2f5b65ccd9cfa5a265afb47d357d103c167392728d9
MD5 2533bb4c79edd7ad3c59f988325c7706
BLAKE2b-256 e262d00c61a3a8b040c1b92b104fd700c8a3673550aa5470d91c0c46da450a12

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