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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

cumm_cu121-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_cu121-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu121-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4ca71a3f235a9a611f386e68e8cbbf50f9f1de937e3623369fe95967b1221deb
MD5 e3586416d4b021dd4ee1391c03d4cab9
BLAKE2b-256 f27d69851b918bcdcd3ba6619f2f001b224d575d28e3efa179b30bd0e499edb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu121-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 16315e1f45d4b228f73c4b6e9ce495532e72085549f75bd4bb4968e144cce325
MD5 3e5b3d8e70ace9e0060c08221215e263
BLAKE2b-256 728d47f0634acc44df82a55ad6944ea35687c8c3ed4fbc090ef345adcf131fe0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu121-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ff75946d3a2ebf4be5f28ecddbde8e92bc25db53c3661ce72b609ff8604770c7
MD5 dcabd3f5bb738460eebe5036568318d7
BLAKE2b-256 56b729e998ac8ef6c218a4256e30dd02d648c3e92430e9acb90764b22a64311b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu121-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e52a8eed03ec2cc31c8456536248c4a75dcc74b85f852615a3fe2f2634e73a1f
MD5 3a06a8a9622e192a44b5fef84ef368e6
BLAKE2b-256 f93d84a96633c374f3843937a4ed897bda882d62efbb066463b409dabf47d362

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu121-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 25d83757e5538afa5a9861db8dce8300edab6b831e109fd559be778e37472abc
MD5 78883fa35f43805bb04f885b53faefbc
BLAKE2b-256 126025ff14fa47dfab1614f62685fd2c18d098f1ee3c5e21dc4bc475c7b55226

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