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.5.0-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu114-0.5.0-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.0-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.0-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.0-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu114-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for cumm_cu114-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1b43bd4dae29c5663336b61c6e1d91aa963c3b5cf9a1dc1b4c3aa7ee99103933
MD5 696c8e79931f02b603d76480fe82f984
BLAKE2b-256 bb0613dd1c2414240fd65b7cb3e9c51dd346a23b159a5aa4be3cffee57486f8c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for cumm_cu114-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 31b73e84d19b37bde3853450de7d7241cff443d0dbe33e51e919eb5839ba26f5
MD5 acaab3e8ff482cb5f79cbdbfee0db212
BLAKE2b-256 98973e9533344e70e088af2183ef270f44daeaee264977a1f3287b5e45df65c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 132c7058aec39fd947c4f16b5a73e2622bd244b72623adccaeca68d26c9268d5
MD5 c92552b21554decfb82e6b31bf3fa7ef
BLAKE2b-256 79246a3c4e07aff537bd0bff5ec3c53d9fafd17cfbec5809b41a4dd5ad946d5e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cumm_cu114-0.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6a6aef3754ade751da4dd86f89746a9d63b9f59610c5a2d5aa36f764752c3d4a
MD5 47a949856f7e836ef4735eb3219c430b
BLAKE2b-256 4a9e745b33c6af3200fdfb11c79a3533aa2b727622a0ae24fb1b711665f604ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 94bfe34eb6b2defd84c9d66a8abab4966f82b515f3cbf343eee823e895902923
MD5 56ce49c8eceb8aea15bd777c97706eee
BLAKE2b-256 f73119cb4cc2fb436f8113e94b816f456c438202b4a5c00d50982fa292976c4f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.2 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_cu114-0.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 26c1b7c19d9aeef3edda45832598be1d0bf1e04210b5b997405ee9c5bc53bc8d
MD5 d9fecaae05155e377b9b67e88b28a99f
BLAKE2b-256 48fb5dc6efb08203a9c5068ea3e6f8828cd9680c000933a0c9373e7ddd6d4d79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26a90a00c263daef199e592f260f8fa4e4c4fb1cefe542a928560fb86ecdc2d6
MD5 3f97cd8112e067f7c97157c7c67a19df
BLAKE2b-256 3bccd46bc5e7d804573ae4615bd99b4f4095670b2eada35aee6655a46aa949fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.2 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_cu114-0.5.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ff6bc5890158c9ace645944a3ef4dcba6cbc9dc530d3128276ed47e619eb2c79
MD5 b1b4655c7b7a6e1c08ee71b754bf4a9e
BLAKE2b-256 9e49dcc68de384c05ba54717dcc64dc55b2c70c8b07e8a79181d3e5828142ef7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a07ccc4a3cd11dc76cfdcaea853d98e7ed0aad1a843d186aeeca5798f5453a8
MD5 a8fd702e2e4cc47f6441b3919a317c0d
BLAKE2b-256 65d8a006c39f070245df767b094f02e3181100e35f8a0d028f1b37eb63e6fa58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99bfcd37fc858619379f604818362060e4451c6b89794d19f69e120719fc3aed
MD5 9e79131864d8b5cd1747dbdd3f82fee8
BLAKE2b-256 7cf0f4ad46a153bad292d2374f840ffcfe3d485ab27b936a4ed9c9892d5aefd6

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