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

If you're not sure about the file name format, learn more about wheel file names.

cumm_cu114-0.7.9-cp313-cp313-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.13Windows x86-64

cumm_cu114-0.7.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12Windows x86-64

cumm_cu114-0.7.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.7.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.7.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.7.9-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.7.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu114-0.7.9-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.7.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for cumm_cu114-0.7.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 43b2e501207a048922acb7f1495d3871aa546e4b132b846ccb8a897b1af15886
MD5 6187a3d087fd4075baf47d52a7ca1a53
BLAKE2b-256 209ead00a6337008b4e0a75de4e839826acdde363d8164e4383406c9f3abc32a

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5313b9e84b01d0a39d4ef9cb0dfc6baccc861031964a06957d7a065a47d109f
MD5 7eaa0f0a52b007508e530b8444924045
BLAKE2b-256 20ff8d0b97c41d9ad3195a41a334d9ffe9dccb5395c1d3c5a13eabe460a84516

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.7.9-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/6.0.1 CPython/3.12.7

File hashes

Hashes for cumm_cu114-0.7.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9be3a0e78213ca25b32180e852dff1b8b10b5e59a7e64a5c163b83eb33b4e88c
MD5 f0b451ce323bfd33dbfae25a8bb2c548
BLAKE2b-256 5283d8d54615e5eab3ae6b1cb49b7c289299373cd267e151bc33be0defeac70b

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a2a87de7450b3c107debcce977ecfc0d2285c549d50d712494d74e0ca8942fd
MD5 697d0e3034f3cb42c559d53b4c5a2a43
BLAKE2b-256 e7310abfd975dd367a352771bf5d92bfe59c7ff24eaff02085939ef1fa4df142

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.7.9-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/6.0.1 CPython/3.11.9

File hashes

Hashes for cumm_cu114-0.7.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 695cc0fddaed02009564d1b65fa0de7eadda9c1493a5cfc734ecf72dc54990e5
MD5 265ceb396a59d01c455a5e1f2389f848
BLAKE2b-256 85c27d653e604f9a2cb63768f6a5a2fab84e91a29f8be9713331acb17a4b9b4b

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b254d86e66b3615eca87c69dd3b889d578d3efac1ff7764deee4052c82383251
MD5 f2c6589e478ee070cbaa4d4cb7d34fc4
BLAKE2b-256 70367de999300510e9f7c02bc51c368252b93a856cb0710fc8b64f00b029de6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.7.9-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/6.0.1 CPython/3.10.11

File hashes

Hashes for cumm_cu114-0.7.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 45651056fd2d934583b5b3eeb99dde161adde158362647bc3e9a8f4fa4bf76fd
MD5 31b271737346d7d3157b03be6a61119f
BLAKE2b-256 4db71d95992e01be9acbd5575662acfbd30e9671103d7909d1ece087bbfefc9b

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cab68f9dd1fae8e64b7b6025e8799eefd3b33d09fd483f33a760a9472416c6ed
MD5 b670712b45792864480f378ffa95711e
BLAKE2b-256 2bbe2116dc8fc631c0d1b0149757fd0f33b9bd4d8b4a35515289141e9347ef29

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.7.9-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/6.0.1 CPython/3.9.13

File hashes

Hashes for cumm_cu114-0.7.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 10617fd9601a5dbbd6dfd4dad179cabcf208620a5845b49374989a45812e71a2
MD5 962f0988357e60a1b89f2c2a59fcd70d
BLAKE2b-256 2df5e65059206266fd23eb951ae5864c3224c1ff8fd1f1985aa470e77e28cfcc

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.7.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.7.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 935e059afc6459e9cbc441f0dfa62842759f497be5b326d2d8e5c0583a57dd95
MD5 70898e8e9c9d86207a01d1a7b9fcff5e
BLAKE2b-256 004c9722f6e28fd037b1d17e7ddafaf212efab65c63d7685d976f39de669f17a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page