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_cu124-0.7.0-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

cumm_cu124-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_cu124-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu124-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0a6a70e991df7f6b4098e007fde85ea76ba46165e41f0758880e6a2194633e1a
MD5 06d643fe612a285f35ef57bd0b64a9c5
BLAKE2b-256 070900cbbc7ca3f78d95dea92fbf2dc54307e146409aa07c844f48aa9265a460

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bf645680e8a53db77e2cd6a8b4259a9debe3894875ff53d582a3ea7082a9295b
MD5 aa690775952be7ce7b86dcd9f557c74e
BLAKE2b-256 ee8c8d198d4c92dabbd6ecdd1ac0a012b22fc067a05d99b99ea1e9600614e312

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ce19d7b66d453c702e1937bf541631d5a3c5e78e4547c022dbf70acdfbd1206d
MD5 ea7b6eee8c22bed25d3ccec69d781d5b
BLAKE2b-256 4786d088e5752964734591516eb4550ae906a5095a69f62ce8691f5240d34f7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4770b0e5823dd42aefb65a8eba07c399921da906192167084c99fefdd9e9ece5
MD5 eeb50ad85bade88d4a3e37876a8b25c8
BLAKE2b-256 2148d861c5a23ab7e0967cf52337bda6643f5fad41ba142fddef3b22214c6f43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu124-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8cc5b721a21a04b4ac6278af53cb21596978e6045a38734baa0ec98f88c7acde
MD5 683273685b4758b324828e925621fb42
BLAKE2b-256 4302f412f096597bbcd487162fabfad84881e67a0bd0978c0386b70f5e62dde5

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