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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.5-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.5-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.4.5-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_cu114-0.4.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6aac4fb3f215cceb7b40c66e78a7ddef1aa6ce62cc19e2568c53d0ff4ee2cd34
MD5 b7cd869e5c42a6301dee8ad165fee606
BLAKE2b-256 a9dca630b97a498032829bec25667ad507bfea636309a693ac1692562dc81cc5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd98d9005b32c6225fc9de939ecac923d03abb1b8c5d6240a022dd4b269aa465
MD5 fdc89900e009ac3fe757d0a20a597e5d
BLAKE2b-256 afc3861c703fc967bd239f119aa920743e8eafd2c84152d149eed37eb3e3bc78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.5-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_cu114-0.4.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 114e2b32f596f3737084dd645baa5b8654dc49aad60b23abdf6b56f76a6bd47e
MD5 65c215995690acdc25e24196ce722cb6
BLAKE2b-256 bfb0adaaefce5b0807f8103437740ff29dde35f7c648baf1f98720fcb42677cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b81a9eebd580efb98f2a7af008c2a58762267399a35ebd1e908b72a324abf8ca
MD5 54d529dfc6940d298ba0ba020a3bdedc
BLAKE2b-256 ae4170d62f6013ea7a6deb1a0d954282c6f764f70d991174315f81c588b9c2b5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.5-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.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3f46da673951a925acc9dd5c7b739ac36e537760248f76e3f7ab2068bc33d379
MD5 31d96e254476bdb21e131c87cf101fb1
BLAKE2b-256 8e20ceca37eb74af3b1263a5a6855313a610a556e2e944b647749fcde6e41c8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a6fe879a4b5f7a4ad7cc67a2c794bfce267e309bcf817870bcc64ddabfcc517
MD5 d1abc6bb9312e29e2dbf148069ec7c2a
BLAKE2b-256 296bccd06efbf656f36edf0817995c0e9490a873ee78f10189f199d927e2ba67

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.5-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.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c9b69a1b075ee61ba5be90930f40faa05f9838c17f63f82fb9b1747f2259a41a
MD5 1324a08d8a5b2c641ef6696b4df9df9a
BLAKE2b-256 0c3996886c6b6e140a3f7dc5f146e5082879ae662dbb597be812583e47359861

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b395d0c6bb4610b599b7782272723fd7fc31c86e691f21c11c045af9dedd76f4
MD5 d6e7f8332937bb74a8786b44de0ef66d
BLAKE2b-256 367a005ea6cc5e8184ed57221269eadbe27583c788abddaa7f30e3e3beb0cb47

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.5-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.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1f3bac771bc7680b7d8334919e382fb318ade0bf9148d56c8b2c86c007c2b391
MD5 0c850622520ffea45dc070ad3866a12e
BLAKE2b-256 aa5691532038747c9544e0ab5ac7164a919aabae909ea6dd4053a1e695cae256

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10627cae7e456aceef5f4aa2ef0149d5a18635fec265ad7f987874caa1860da1
MD5 bf6a49d224546dace748820bcd340c6d
BLAKE2b-256 7c0e79b4ae4edf423337b9d64c30fae87f313d3541b93cd492c8c1c741eaebba

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