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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.3.1-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.3.1-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.3.1-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.3.1-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.1-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

cumm_cu114-0.3.1-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.3.1-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.11.0rc2

File hashes

Hashes for cumm_cu114-0.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 403d82b42025d6af7c8b2057ce8761e97d6ed67b5b5b85ef6044b72a41b12a1c
MD5 6d6e87295e53fb45bf2f64ed5dd19f20
BLAKE2b-256 ab9a88fb38a1b6427515247a6f3ab2fb5d2e469162a1cede8b20dbd341668a3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a6383480899f00e1ea373681f256ef1b7ac2f3629d19e9c6c69d4e2356af17f
MD5 d411d88fdc584eb20e1918d7aaf0574c
BLAKE2b-256 6c2b19bb4d20d85fa56a186bfb2f543ce585c5adf71d358fbdee08058efb154c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.10.7

File hashes

Hashes for cumm_cu114-0.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a95b3584b82e1d7d3e464f0009eb8e487ee2fa8123b81f853cdd085301e52ca8
MD5 a3a271793aca7495ecb0d98535248dac
BLAKE2b-256 7130bd543e8198d594e89fbc69e1b19de8a322d9bc94eb09b0778669e06919bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 acc1ee9831f8fac6f41ecf241ddd0820afed17971bfdc2fbec0ce5398705df90
MD5 219a9eb620783dfe51b05c6a1215ff9b
BLAKE2b-256 14f8224e8215a8b1abcd1c00439f535c97d206eff53a4fc25742f4960f131def

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.9.13

File hashes

Hashes for cumm_cu114-0.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fb254201ed60af17f4287b85fd03c5597894c19ba2bf50c901e87eb0025a9d23
MD5 b44c0974a854634e2ac673d848b466c9
BLAKE2b-256 0bdf653e51168b30621ffd31065ebe42711a3db2ed78fff91fb67f9b4975a5f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4452e50b412f4fa74dc1e0a16343b285e6b861e86821b5b190b8d26e0d361e9b
MD5 fd27264e886f5d14f71d4411f035fb50
BLAKE2b-256 1d10ccaa8c2650c19d374350275c7ade0042b3da285ae60a2cacee08757b0ee9

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.8.10

File hashes

Hashes for cumm_cu114-0.3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cd2b3cb120e7720682374b241339be944c47491d858267539b229826624902c2
MD5 2281af3233a56865dc89238c9f2ad694
BLAKE2b-256 11de0f9584a93870276f269484b79d6e57a2991e5fd62b9536ad9ec11828683e

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d732d19a5c53e25ee304f022f0fbb4360a58013d0e5646fdf0c01221eeaee78a
MD5 ead4a9eb83631b57c19688e78b321ca1
BLAKE2b-256 290548c75610224e0fbb1662d0d9fbed6c4fc2fc46271d35546590e3d0c57db9

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.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.1 CPython/3.7.9

File hashes

Hashes for cumm_cu114-0.3.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 a2c4f74229edaa7c6441e827389161f84d462bdad420fd8899a252d67ebdc5ef
MD5 8657e9504b7f81419311b8286820eb11
BLAKE2b-256 878b40d5be99328bbe39b2bf21ff4bdaa1bae4277ce50cdb783aff73532e112c

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu114-0.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 25eae9375d59e62189406f56595bc5e03dad2d159617db5e69cd13e0fab67d20
MD5 134b10cfbe48f0c21ecbf5666da4341b
BLAKE2b-256 cbb21451300b09ce37544a3f9b1f6ad5b0566e4a8982161bcd78cf58f4e30c43

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