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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

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

File metadata

  • Download URL: cumm_cu114-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_cu114-0.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b274ca6217af7a50c7cd4e2543756f68878fcaef9b22c175d4ee9a371b3ae494
MD5 9bb71a29556881b2f89a61fe16cd667b
BLAKE2b-256 e1bcaad3600279362811151ec486c020e02b1a0561d9f5c8120e09a071ad4a94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7c80996e61f3971cb3a2b7ccbfe54ac0313d5d9d3037a689cc47a9baea752443
MD5 e43ef292e4390d4740bcd74c811d7049
BLAKE2b-256 51a6aa7a7ddee7e29af9656bd60c1f8d8cb1e069d82a9ff55de795421a4cc794

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-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_cu114-0.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7c8b404bf2df788e418ac6acde71e019322ef0641e459dd95ff3cd5579ee3342
MD5 0ce2a71b9abf5e182d1040335c47c2f5
BLAKE2b-256 cb66b09cf6f16d75f042f2b49f971a435ba5f9a10120d298fe161f152d8861e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aecd6ad18eba78715ff61ea10410ba7c297b24c3f1906ab15edb8141cf516b94
MD5 a531dc4c3304d3ef20a4babac8e6e6b8
BLAKE2b-256 a099137ff95f045cb7e3a0dce984ea3a571d99016849444a78fad085aecedc93

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-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_cu114-0.3.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6453d30e46d21da58aa681d8196f0779a01f716ee6ad148cf441a5c09b674bb2
MD5 13f75aa414023af1ebedf86083608409
BLAKE2b-256 f464aeefacb67d8f5381fd51496f3c7e2ebf712bdab301eb4e078ba48e152553

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5af5974118a9e492e4a5834aacb826004d43318ee520ca79c71b4cacdc79889c
MD5 c1011d0c6a199849e2e297fa1746dcec
BLAKE2b-256 9f68599b74cde45fee8f0ce98dfe1e4ad9aa9d8173efad912b8f56cd68fc3305

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-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_cu114-0.3.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 459254ca3f5345cdc9dc3e50a6187656c2725c665b533fa30fabcdd43d74469c
MD5 90c8073bd4fbf4dea078f2fb4ec87ed5
BLAKE2b-256 447f8b2edc8f1051d5a6645dccec58b68b87e4f77e8f302850d04e9c1848099a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3e83cb0945c049e5f7bad3347700bd4931d1d6d4aa179f5615e9003e8f08d3c
MD5 17814887c662fcea8589b5f46facab17
BLAKE2b-256 06abea67cc5982236e417e57b00a5b04e4d6360a73f3be7c4d86307bcd7b657a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-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_cu114-0.3.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 0c3f17754cabe96460815c8e16d421a3c10a2926788977cc460ae2316ce39ea1
MD5 4b37be7f2c4ab01d2784e6452ea582f5
BLAKE2b-256 eea797c6ea1eb12a292604729dc05305a788d14671030385928c6062ea1edae1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4dfb0a4f17871eedab43cd1a9c97340f248becf6bd43328cd99d9b6717d621b0
MD5 cb5eca7fada494b38b39c0f427c98e0d
BLAKE2b-256 da64ee8ff3d728ff6c8bc9b11e710bb493a5c359e038aef539497c3ed9b18b64

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