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

Uploaded CPython 3.13 Windows x86-64

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

cumm_cu114-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_cu114-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fb775fa2b4b31ee7b88ffef618e885c0ee371003159c297cc6cce2722878942e
MD5 5f6bf98954a883e63d83c88a830cde5b
BLAKE2b-256 cd6bf57d1573e391b0d443789c4ceeaaa497bf2c964c5fa8c5058c905bfd9cea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5e172d7728c5c5673e515100f5e4e1696c00eee35483a004bb9553d8e884b8c3
MD5 cb7643a53cfdaa572bfa0e87bc8fd2c7
BLAKE2b-256 0d9c7398419d79ca959912ead45b028cd68472dd0224f395a47b1c17f9020f5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 59accbcf72930bdf139255c821b25c61a5b0c587da720bc1f3a13712fe743706
MD5 de93be2849a983306042106efb4f2d18
BLAKE2b-256 da46592a76cd0b5364eb603f23c405b32fe778d57108c421c36a824ca9eb54ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7fd5da236dd9f910b346713e59c92cfde7e75e819a1117788e8dd12ff0a92ff5
MD5 cb2ea6bbed46b0f9effd916ce47e0add
BLAKE2b-256 fb980b0eb49c0bf109e0f3eb9ac30f24292e7edd3f00a9fccd14881e9de5fbf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.7.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 af66a105aa3ee8862557f0e884fe421274e97acf0da219caa9885b4f6826ae94
MD5 00ce5dd60f334f88a83b058144348c1f
BLAKE2b-256 8a039b412c18ce8e105f059d41791c02f7cfb464faf6e2ea6808773a0aebddf1

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