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.1-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu116-0.4.1-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.1-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu116-0.4.1-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.1-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu116-0.4.1-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.1-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu116-0.4.1-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.1-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu116-0.4.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu116-0.4.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 263a2c0cc99dd4bf0161b6f55296b52936cbc3d1a73b2ef380d66dad90603ad2
MD5 43755c9496e0c988a9733d18fcf590e0
BLAKE2b-256 9576bc7336bdcae991433dbff3c529979cac8c559845d78365fc59f08c3d24a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu116-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71e25d78bf5938599d90088c576e6d39cf013b4a3f72ec73202ddbcf9c85abb5
MD5 e457b3037f161fcc540be74a8533264f
BLAKE2b-256 d42d396c3704c500d7efe0c9aebb835dbf9f7f688daa1bdcad8ffe442e4fb0c6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu116-0.4.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 01313a09b3e65d535ab0591572a06b50158427fc5d5c08265534021cbed355ff
MD5 9aea8fa9b61a34399418bb2d46d376cb
BLAKE2b-256 551f1ee24fd1fc3fd68ea7a14afca54ecfd54c9a8ea528f0bcaee54b03e46ed9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu116-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f485d150de9bfc9cdc0683f738e89c67560a20b3139dec72a98d2169b377f45
MD5 bcf9c4a4b012a8c40ec8b287d768f672
BLAKE2b-256 32b7d02c1ab4b2142619f7146a5ffa225ab4a334f2b35259fa9cc525adb0361c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu116-0.4.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 de035ae1d663c7e2f85f75807fe25b97aedb2a6d402f149d1f07a69e1f01325d
MD5 9ee77c395f6e9e4c1ff9b97283c577e1
BLAKE2b-256 99ac35884bd35256dbbab066063f05db248421a938febdfab9dbf37be5f9a0ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu116-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30748ef0cc346d951f1a0147048b665fcf16d71969723330e5f720f0beace081
MD5 8d65a68cedbed02591523b93ee10431c
BLAKE2b-256 4282b2d32016822e089d97685ae73d5fe6f19dceecde9605df75d0c19de9174b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu116-0.4.1-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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9be40d9f6178a1ecfdbf8cfc1b37ccbc6c12d20241b78aaab0c17be32cd427b2
MD5 56c9eab07541e6d6fe00f062231e9a8b
BLAKE2b-256 395ff6dbe73734159012683818b4da62bb44a8c2eaf30f755af1a036f8f2428b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu116-0.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c7fb5f324d64c6d622dc5106f072e23d723db975008f963b4951457b4aaf9ef
MD5 22bc1088540e61bc8c47059c0fc8e072
BLAKE2b-256 69e84ac1e86e8ea705fd73bbd6f0f0a615956732a06b5911cd15f6f0fda80609

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu116-0.4.1-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.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 fca4bfbe862741e0653d935fdae98df43138c9a9dbfd99cdb691c33eb5652b0f
MD5 289b59f080e9dfb9cdcdd4b0b001af8d
BLAKE2b-256 212c0d532c7d9d71f3f1168c43db19be8cb0e20bcf2a6c977c1855cedd7c66a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu116-0.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e2caa7bbdfb21fcaae789c7b36f636f4e2b20fd6e448e6c5be31f7cf10fc6387
MD5 d302ffba6626339cabdaf79ba9c5a3e1
BLAKE2b-256 a28859c9a42a38659264d6582d3ca430cc7c7e608795519d3e2a8d2be93c73f4

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