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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.3-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.4.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.4.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.2 CPython/3.11.1

File hashes

Hashes for cumm_cu114-0.4.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 20046483d09605769b9c9f241c267b169e62d4d1d83ce97cd906556955a7bd83
MD5 9ae770ea0d52519de6506bbb93f388a6
BLAKE2b-256 318a6905e514f57d76c8f545243a62df9e6b87ebd82bc6ee45166257362df7d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c8a0f66a748523820eafd2088214a2b0532e55939c51433b4cca9b7d1ac1949
MD5 083e61cc619f21a8d5e41013c5e92ae3
BLAKE2b-256 8c884d587d0969fd036366a5e3b82565679566920da8831dcf68c1ac72551a72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.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.2 CPython/3.10.9

File hashes

Hashes for cumm_cu114-0.4.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4ff8be1a36847f157f5c86788dbccdb47c4d544318ee4569cd53752e8ba92a67
MD5 e5f7566fd5fdb2328782b87da4baf7d8
BLAKE2b-256 62f794bef8e6cc57ac91e2f36775b3b9757175bd56d90421679d574ce930626b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c5e127f216e76c6ce3352b9d2db922c0a0d95d64cdf39b2886776f6f59b021c
MD5 c65a4af10910602223cc5b99e95bc6df
BLAKE2b-256 538dc70fc3d808618ee63335261236c598396c31d681d9cfa69d5b18141fc0fe

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 94766c97d4b0e5d5f6bf8e19f771cc78f359339da4efcc659c93fb818f5849f8
MD5 cdc0a40bee6d0142eab278562e568cdf
BLAKE2b-256 49a9fae7f957b3322f194bda525b5fcbe57a0d0e8f7a28aaf8a871bff0118850

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9b7a258e38e5501f58d0c582441f8d599af37a65ae89d6962909f2df4f16ea8
MD5 1435f6afc2d11086071b7c09b322c72a
BLAKE2b-256 ddbfaf22230f949b7464dc855db7beaa59f8275dba37287802481d3d9b8bec42

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7daddab004ebb5b5e95365fd1126490bc19498822c3379b3a90cd83fb9d2690e
MD5 020a6c4f120f611e6c8c708d037810c2
BLAKE2b-256 e88df84aea5ceb7e4dc43b5529717f0c67705889e7cb387f3a65fce2dc2f06b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b93204fb0d4d9728bae0800da44bc1d18de8c334283a663feacb8d414bc8f4c
MD5 aa380f5ac79d7d57ff4140b39b3dcaab
BLAKE2b-256 74208024a18b858ca9d26c604cd5b8e0511bc4192ff15a55d7fb4020284a1537

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.4.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 9f3c2c246fee34ea6ac25302c2f9e9dec7438a93d993ff08d72d4b1faf1044a5
MD5 5fd454b2eaf5d36008bdb9d065b3645a
BLAKE2b-256 4e528eed1bd727a9966058823dcc920dcdb45044c1be03fb596a833a0c24fbd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1f81b724ae2941c9ad76403e513c7a5dd780eb597499370170bf9f3ec2832b62
MD5 844ca160428e01037b250b0838640e82
BLAKE2b-256 02a7e317cb201bf7e0dd22efb2ef852b36ec3e554dbcf9959464ad3452263361

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