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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

cumm_cu118-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_cu118-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu118-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a935f06f0b887ea375eb46181d99753fe5ba8082d6599f4d51897be977af35ee
MD5 f4127a1ab06a7086f40e7cf046b069d8
BLAKE2b-256 f7654d26f47f1789a5d67b01c6e7280736c488a62602eeb016acbe4952aae323

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu118-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ada6415580e50bfbe6c4a5a4b50173082e4f116807c7006c3361162040981416
MD5 4efd54f6488661c546bd3413002e8d36
BLAKE2b-256 a0d14087437c79e4e166ac2075cb7e0859ad1a730cb8055c8c2f35a44cb98578

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu118-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a40c6ddcccd8f6bfbc6a586ab9dcc6249717636ca0efb991f80a21c537a47a4f
MD5 0ff779d7b96daafbbb887bc8f6d7533f
BLAKE2b-256 43eba965cf4f50e023c62c75afa0d6ee579c4c7ff41e6a15d6cdbfb95afaeab2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu118-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ea5a491f47d46d814d6a3ca87b33b89a1c9ecc9efae98da3b15ce0948d5d5957
MD5 82740a5edb10e308766d2d13785e6dc5
BLAKE2b-256 803e8a5ae1aaa11c649a7e1bd7fef1b8a4eb3503847a3d28683d44934b518ed6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu118-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ba026d53fe1bc2155231b7163f69851d41e9ec68d64043b3b5cbc1abfaabb6c4
MD5 a832ab26b2164fb4dbff848d4d95a392
BLAKE2b-256 ff1f94a9499b0925f5480f33a2c48c247121761e6f56316bc6c22840ba9411c8

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