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.9-3.13 and cuda 11.4/11.8/12.1/12.4/12.6 prebuilt binaries for linux (manylinux_2_28).

We offer python 3.9-3.13 and cuda 11.4/11.8/12.1/12.4/12.6 prebuilt binaries for windows 10/11.

We offer python 3.9-3.13 prebuilt binaries for Mac OS X >= 14.0 (Apple Silicon Only).

pip install cumm for CPU-only

pip install cumm-cu114 for CUDA 11.4

pip install cumm-cu126 for CUDA 12.6

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

cumm_cu126-0.7.0-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13 Windows x86-64

cumm_cu126-0.7.0-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12 Windows x86-64

cumm_cu126-0.7.0-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11 Windows x86-64

cumm_cu126-0.7.0-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10 Windows x86-64

cumm_cu126-0.7.0-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

File details

Details for the file cumm_cu126-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu126-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1be108d587969e20ebbd7caa428eaab4e5e53008ce2bfba2f45bfdfac0178d04
MD5 a5d115155b1555114ef0896f647c4629
BLAKE2b-256 1636a9fdc4bf2186e9c989f5e505f378eb7fad76246a1bd5f778b5a901d59eb4

See more details on using hashes here.

File details

Details for the file cumm_cu126-0.7.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu126-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8f1e10627e5271f54ebfbd01d37c39c56e8debfcc42d500b0b3f92a712a46c21
MD5 bd31a55e6abc501cf977c4c2e6c5da74
BLAKE2b-256 1a5f4c36e5c39bd064ae1b8227f19948b926269c4d48983a1ef6efffc68a0bab

See more details on using hashes here.

File details

Details for the file cumm_cu126-0.7.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu126-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5435dd8cd82ced80aa3e5805d362a57d9a2fd8c937b316b97a95bd5be0daa637
MD5 74ac0aace511ac019d32434fd11aeb26
BLAKE2b-256 7462406342e84b12dd940bffb0c8accd59fa8c89b19e98e4d9a7692b8d2bcc30

See more details on using hashes here.

File details

Details for the file cumm_cu126-0.7.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu126-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 02d3b7a3c41087ff0ada98adf3a06b914ad460c1828d99ca2314535a99d7c9a7
MD5 0adba5554ced507ff27b88f2752870f8
BLAKE2b-256 1615b108e1ff186033b56480a8bce54eb3f7da0007673d655b446922a3b98375

See more details on using hashes here.

File details

Details for the file cumm_cu126-0.7.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu126-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e7a7950cf5f457c3c824f3159e5005b422e70d6516e870f8e2b44c40d94daf09
MD5 c96feaf9691f0eb5df2c9b445efe6619
BLAKE2b-256 615592eca04b7db6e13935386a8e76dcdd7bbfc0141040ef69989e2925e4a059

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page