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

Uploaded CPython 3.11Windows x86-64

cumm_cu118-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu118-0.3.6-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu118-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu118-0.3.6-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu118-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu118-0.3.6-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu118-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu118-0.3.6-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu118-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.5 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu118-0.3.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu118-0.3.6-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.0

File hashes

Hashes for cumm_cu118-0.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5c5197222d92e3697274b0b5445d4532ef63c34a12d26ba67d7daaf811bc768a
MD5 515a038386b1b38e788077507c48554e
BLAKE2b-256 c7f98ca8418a88e734c7475fe13e40639c0d5b9cf346b3635476cff81e6e8270

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu118-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fab67974b8f789c611dd44ce2e71cef5a6ad4e94d2e11f497bfff118cf85bf7c
MD5 79e873225eb6a48c7a62a7625730abb9
BLAKE2b-256 fc5c0fd71221ab5e97157c0d5f8e96fcb5bec5510a4b353ea99acf93ce70a844

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cumm_cu118-0.3.6-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.8

File hashes

Hashes for cumm_cu118-0.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 450e4af8f1dfcc961c45cde216a8df365bc7709336336447cb0ceb8a3ec54984
MD5 32a6e1fc01b6c48f2e4dc473ee316283
BLAKE2b-256 487666c13cb6e702e412d7a9769198697a5d10dae060f1c1353be65f8882d0d8

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu118-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c968125380e7a6608de48d0ac18708b43676822061768e1b39da7a22ff708166
MD5 c1a61c1fa9dc66293a2bc504aae3199b
BLAKE2b-256 8c4356cdc2822b263c9195969eb4b5cf5cb9fa199d8c0a9fee2fb36626a30fa0

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu118-0.3.6-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_cu118-0.3.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e2fdf67723a75128f7dd50747feb29fe3a856048843636bb2c2af116709432ea
MD5 c970113ca24367c7003a15d2cd740ace
BLAKE2b-256 c91e078e86aa4235de8e130ae55c7ea06f5bc2cd8997e39d397a1c2f2b93a66c

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu118-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f08480d74416c19c88b5b2f06b193d3803257f3aeaa8a40d8df25f1dda0061b2
MD5 0b355cccfb6cbd9d74396dcf389fed61
BLAKE2b-256 351e5d01d5001f9db418f630334256c6dd439749100c7d409af74ccf5c6b9fb5

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu118-0.3.6-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_cu118-0.3.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 8a6c43cb37772b119c579f04296af0eaf982617c2c21fcec4c9d00479c1549c7
MD5 5af8a6b650f58c295323ef7307274db2
BLAKE2b-256 9092856c3e2c9769eb07359fa258c25120f2d7df4b60a4685198f7cee6d230b6

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu118-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a981846cc95722d7ba1f90678237d6b63f5595d0aeab6f351534934559949281
MD5 9fd95ee582cbd1831202160d02f767b2
BLAKE2b-256 cbaaccd7149fbdbb708079ed0775589d1dc9e96dc1e81ed55e814e1e2e02f768

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu118-0.3.6-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_cu118-0.3.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 01d46132e22579b7d91919937bc5e2bab1876b5abb32bf47b400963d69cc06b6
MD5 44de6b1d9138ee7c9836193cfd5ea7ef
BLAKE2b-256 efddb3b6c87f731f30be178a4917bbb196cffaf544b65e1754fc6f684551e661

See more details on using hashes here.

File details

Details for the file cumm_cu118-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu118-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3014b268573754c84ae51005082ce4f390ec449508a3b9ae08c48891199d7af3
MD5 7d37293c35763fc1a4d4c52c7ac8fea9
BLAKE2b-256 2c33605186b6dfc19c0492a7b5b0a7db640c48ded6f1181638feb4f11a2df4fd

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