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

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

cumm_cu116-0.4.0-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu116-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.0-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu116-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.0-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu116-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.0-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu116-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu116-0.4.0-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu116-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu116-0.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for cumm_cu116-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4b2dce38949d7cea49e5c40ab30c8e062af5787fdb01e9d712582b5850069f23
MD5 8aa315ab9f1cd135c43d12c416e79ab0
BLAKE2b-256 8185902fc2bfc97458e0c0cd8eed0a90bbb43565c7084e951103bb02ca42f438

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c559612115f0059c641c1262c4750f98a7c48fce2c14db27a277d563869bef87
MD5 7cbad98a969772d35278850e2b87cfb1
BLAKE2b-256 f53322575e7561f4c9cc4a06123889bc9d915a1720c71136b84d4aa6473a263c

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for cumm_cu116-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 60bdd32961c4da3245c9dc99ad7b4e875de5875c12d11663c89de9d80fff1e76
MD5 5d57c6b9908de03d61e7c631b1e5ce39
BLAKE2b-256 47ce3ff70487460bb9e27c0d7f28418a0b7a34a620c1b8f3dd29aeeee8d76970

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee27389790a7c2c18be37bf1280dc1e0f89f04408938a0a4c5c657b5c1cf4345
MD5 59127a5edd68a711ac356c18e4ee50a3
BLAKE2b-256 00060207abf26674c044f2edfbec9051af4a574264591724450ee9586fc5fa41

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for cumm_cu116-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5ac428cdd968599a8614f892f2852e3fb6abafe4cc584193410427908d699e5d
MD5 7c22301ce3524ddebf666af00140f9a2
BLAKE2b-256 ff92360fe233355f92eacad55290ee1695e10e88c26b60f1ead5fcd89086494e

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8cefc88547c4e739faa4ce79433193c178e74df22fc0aee937a001fe0049235
MD5 4cf609d3f1f810a2740992e4f6874762
BLAKE2b-256 632f83745f436f6625c9f6c13e3480573c833ea0fc5987f9e81c1ce444aa47bd

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for cumm_cu116-0.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3df8853955005796123629f4e717b0a84e5394153052d1553e131e319d778059
MD5 03a78d36fd7f5fb496f26d3a4c1c3cf4
BLAKE2b-256 29aea7e408f2a01f833d4472252f4c80432dac7742e29f5a6ba9d0d49f31c81a

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95fb987e496f308af91047e6e6728ab3abcdede0f743a4520a4e96a8bcc147b5
MD5 049967c9d7fb295e6ecff0450155dda0
BLAKE2b-256 0e74f2f6df743a6e869bca3485b80e2d3c432beb39d3c35385d87eee389cd9f1

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for cumm_cu116-0.4.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 214c56d7ae3fbceff4bbd1547726c0db470267aa57f05a4aafa15af6db1136f3
MD5 cb7ef4c802ce30283865e7dc0b87b0f2
BLAKE2b-256 4d9a19f344bff4d5ba799a0926a916f3a63673b14932847e24d92e6b0b38f621

See more details on using hashes here.

File details

Details for the file cumm_cu116-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu116-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89a2f0e387c5614a8de03f4dacc3225a5d82877dedabc3366363c16fe21224e9
MD5 51b2d727cdcc723fa603b35c2d14bad6
BLAKE2b-256 07e4f464fea880ec7fab626b58a5eb0cdb36d26c3bedcbdb0aec7fe83f73f74b

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