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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.3-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.3-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.3.3-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.3-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.3-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.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.3.3-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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 db6eb54ea2159b7a105212d1cd3c641fad451bc5675e786934ec3ae597f32b5a
MD5 c95a819a740febebfbfb75104423182c
BLAKE2b-256 191509078635d9cf6aac8d1033d5b41cb9053fa1abba16c3dcff7fed009438f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad130d2f051758f4c4333f9f5e78df0e0c5097491822bab29c646ab7babfdbf4
MD5 2cd71a1a30bf19164b1c21aa08935cb4
BLAKE2b-256 a42d7601b3f4fafe816801e0906cac2182bfa6b2f97c5a47979b3d1f603264e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 61c16b9db6e36ff7928b117917b6c1e3a3428552a6b1789a95397d3313347edb
MD5 26542c76be252e609cc7a61c948fcff7
BLAKE2b-256 c3adac0529b8d5cfc61194ed23292249f818694d520183550f8d7ca6ec02d2bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4f0e35dc396770e30ba3e582ff112040ef4b8a1e007b35fa48bbdef532122fb
MD5 9a1396f63bbeb44b16042c0b96e0ff14
BLAKE2b-256 7909be648af084ce6665d0ef6dfbe08ae2f0ecb8b60d5644830142f0aee4c211

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.3-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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2797429b3e3aa0d183b60141cb76c7260c44035336235efd519fb926961eb655
MD5 36892298b711420433bcf46e402dcca1
BLAKE2b-256 c0b0dd28f83f27b5cc24bfe797989b70519d3401360f9f53bfeadd303d0700d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bff4e17324e15454a44190f5921c27873b238ef6adb1b0e13d4e93723aea33d6
MD5 490c256ef41ac4c7f9841e40e38a107b
BLAKE2b-256 dd352a2faafd934a5c2c6111c72a06b380faa761a6df4479d0cf5afee468af3d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.3-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.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 38208843b013235589fb0580a74b1c6b5f25ae2e1bf1d4a8254a8ada0301f464
MD5 bc16d7964d20873bd3916bd66e5b451c
BLAKE2b-256 cdd4ac3605187ab4316d9246d05c8aabe4399ea126bde851b77ea13713aab868

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a93b2b071e5cc505051fb2abbcef7097bc2243013bab29dd21bcf5261775953e
MD5 5999555f1fb1ac4f05cae700e3841bcb
BLAKE2b-256 3fdb3fd6caf2550d8435b1ea67a5eb238514ad0e3dda54f821705058e1abe818

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.3.3-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.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 632bd3947b8b2d673ab2d19471cbcbeb032141bdf93d7734b61468b2ae08a44f
MD5 285e38de91c03c92d86f59c093178712
BLAKE2b-256 90295edb58c6fce252fc877fdfe8b2564a5c827b269c2b251c24940d49bcf989

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa9884472c53dc849d32b3c773344a7895571e3b5fc7d385f04afc7daf0850fd
MD5 9f3fe6127716e2f96c2b7168cb9f3dc3
BLAKE2b-256 c2421b46a1d8de55564fec6d280817026f79f42b537f8ed9afbe31ec9f513aa6

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