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.7-3.11 and cuda 10.2/11.3/11.4/11.7/12.0 prebuilt binaries for linux (manylinux).

We offer python 3.7-3.11 and cuda 10.2/11.3/11.4/11.7/12.0 prebuilt binaries for windows 10/11.

pip install cumm for CPU-only

pip install cumm-cu102 for CUDA 10.2

pip install cumm-cu113 for CUDA 11.3

pip install cumm-cu114 for CUDA 11.4

pip install cumm-cu117 for CUDA 11.7

pip install cumm-cu120 for CUDA 12.0

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-0.6.3-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12 Windows x86-64

cumm-0.6.3-cp312-cp312-macosx_14_0_universal2.whl (1.4 MB view details)

Uploaded CPython 3.12 macOS 14.0+ universal2 (ARM64, x86-64)

cumm-0.6.3-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11 Windows x86-64

cumm-0.6.3-cp311-cp311-macosx_14_0_universal2.whl (1.4 MB view details)

Uploaded CPython 3.11 macOS 14.0+ universal2 (ARM64, x86-64)

cumm-0.6.3-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10 Windows x86-64

cumm-0.6.3-cp310-cp310-macosx_14_0_universal2.whl (1.4 MB view details)

Uploaded CPython 3.10 macOS 14.0+ universal2 (ARM64, x86-64)

cumm-0.6.3-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

cumm-0.6.3-cp39-cp39-macosx_14_0_universal2.whl (1.4 MB view details)

Uploaded CPython 3.9 macOS 14.0+ universal2 (ARM64, x86-64)

cumm-0.6.3-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

File details

Details for the file cumm-0.6.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cumm-0.6.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for cumm-0.6.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7b1380734ba24dc42bf51f9cdefd3ffa1a649fe5ed457b7758e19871bae52118
MD5 e44a9c90c4e895a677555b26726e9390
BLAKE2b-256 4ef1346548592f90f015fd505a59ce9396061a53c25dd7d3dd0fe840b84ed124

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for cumm-0.6.3-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 520f1f841aa5fd83e3f4312f5cd53963ee9a46ad84dc64e96cb6d759e711229e
MD5 cebd0e636d3b14a2dd66c59750617ddb
BLAKE2b-256 ec8756d5e26952b62a000b526c8c51a17f201527b75954001ba9124de3a05001

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm-0.6.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for cumm-0.6.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 92a66b5e6ec0dfc392f8b7b68a75580a280a9a9f90006d91bc5c6b60a0f1a2b3
MD5 c610f6418b6451f9110cbcd37affd3d7
BLAKE2b-256 1625b0b9dcc333e0e457cbf56ac8955b0eef720d1630b7924fe61e2f72eef5c7

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp311-cp311-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for cumm-0.6.3-cp311-cp311-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 243fad25ebbfe7b791cdeaf660045fb0b2a013cd9bc956682218b2a53d21ea40
MD5 5408d2ac8b3eccaca9f06a9521a5c64d
BLAKE2b-256 7a65d25997b60ecd57d4af582a203a94372daf0df28547d67c2b0d5af00bb8b6

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm-0.6.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for cumm-0.6.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4800401e6e8cbdd70b9b00a2c6cf21f175b099cbef6604804081c8bff478ff12
MD5 01bbbabb689ea1eecd6ce470fc772e5b
BLAKE2b-256 41db0da34a830cfcb68fb574585468ecd801ac2f7e542d8f9ff3b5ed0f8042a7

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp310-cp310-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for cumm-0.6.3-cp310-cp310-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 4426d801af5a725509460b6ce76a73ccb2b4fa87f226a29724ec6b341de6ecb4
MD5 4722a1f60003c2373d6b38b1491f21a3
BLAKE2b-256 9603d93bd8bdbdd2d1d23d42df0aaf8972d612260a6a7e8fe59e56508bf500e8

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm-0.6.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for cumm-0.6.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 21a05877ec8f99b95fcbf083eef780869a084607cf5ec7314d087566e4c4263a
MD5 2e07dbfec30515a79c716b165edaaf56
BLAKE2b-256 57d86e6e38e0a4a1a4dbe376dbe61cceacc39b243a08eadf2aeccee500641408

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp39-cp39-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for cumm-0.6.3-cp39-cp39-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 b803e55e712309aa2f3ae1ccdee85dd5f3cf957923ca5869f08643da98c1cefb
MD5 32cab1cf25e0b54777fee9ed73192ff2
BLAKE2b-256 1f4d3f7220465bd822bf1b62def0719ae3e09cd9097bf04cbbb6ed8355026d26

See more details on using hashes here.

File details

Details for the file cumm-0.6.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm-0.6.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.10

File hashes

Hashes for cumm-0.6.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 74d71bf7e5a0b9eca570576252e2ad30d27589222a30ea32967e85493edd966d
MD5 99257fd77c22b10071178cea57bd8922
BLAKE2b-256 263fd2ea0f11e89d7b96ae2dc5d24df9afdbbe34236be25775c176a39c846a08

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