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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8f5632bfd8f821211935f65c38ccf376430ef578ba54dd6e51765a90d4b91130
MD5 1017580604050fb3b016d58ba0800165
BLAKE2b-256 2bef53b173a8f3a9f42389864b9994fb0e9a1de72ffd433dc48c8f634bcd7fee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4491abe8cfee2a7a16b9e8b02657170ea9bf2be5fbd7afd1a460849799260ef
MD5 fe4017caa8b3178d1b66886e228a0f9a
BLAKE2b-256 4485bff3db05f2c77e696ec70eb1cddf8d503d35614aa4497070cb4f2034453a

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4d073d055d280999e68ecb490a319e7aa0aa4b1c3609c688871413448c3b6783
MD5 86fabe3a4a49fd7da514a0b6b4e37a0f
BLAKE2b-256 0e2b351ac98ca7ebe5bc6981a7c29704500f69320f866cf83a8446ec2e54175d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4795233528bb4542b69bbe0484ebe130b7a907a0ab4352a7ba7dbe8ee5934b79
MD5 940051672e5429cb397680d1c7eabd41
BLAKE2b-256 c32798e141f9e16e0b6c7a44d3b43e3ced89d94efcaa1210c8c74b63bed56bdb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8dca97d866369cb1b5921861047db3158d25a7d57c25259ce78523f349e575f6
MD5 29e3a3b7930452308e1fb0d799f16e68
BLAKE2b-256 0fad41be8c02d307028e67c64249de666d05db7f7b3722f81ab845187d542dee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 04f19f5c62613b0f2ff49906893f1807596d144cb3beed53f2e1983eb51cdb54
MD5 500eb82ba0bc61f6a6e48d3d29c0536d
BLAKE2b-256 6b2efe5c450d8f93759b4d9611ac1a32e7ab0c7acae100e1387fefad8edc990b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9e5c4864c2e6dd207bc232d4b5e596d2353b70db2a7089b4258629b326643ee6
MD5 3228af174b3f599566d6b45974c362f6
BLAKE2b-256 9a39176b75f467012f7c542632a6f82fbc6cd126829d0acfa9c3c574d6c0d80e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6c372d6ccd651c6ae9f5076564c71ab36f374f38172d2cfebc8967d28576244
MD5 7c2c266a6bc920c74d25a3d928368b4a
BLAKE2b-256 cb71be424d1a8f750d8303c9e834aeb79585dad3d19dd7b4f5517259fb2ea654

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.3.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f76ab719b34328f9b3ffaeb972f16850718b60f64e8455e54664dc3471428241
MD5 51877c247d47353ed4b0d8b1a2f097ca
BLAKE2b-256 352a8b0159dbe64601a82b334db43c4067ed6ce9b57b6adc55d7c5b7ba916c6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0d45d43c0c93b43df46ac6fc8ea1ac78c9f2b21771f3443e9483e5ab7a8511f
MD5 24cb6483569df0dbb57f5186ca1dba30
BLAKE2b-256 710b3223740d7df5145197aa5257bfd80c2d71fa37268690644df81413cccfe5

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