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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.8-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.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.4.8-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.2

File hashes

Hashes for cumm_cu114-0.4.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f393a88be75f096b07f18c9d9042246e51ead0f45ea70e4b76d38623bd40667d
MD5 ee3d9679c9ab40e63846d22ac322cc4e
BLAKE2b-256 21e2e15f4efa9498aeb51c3ae2d1fcf95e0520b9dcff2fa81780210e345ce4bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b67e397de51cadb8441cfaa5f78d8a8a484d4022cec0958010352d0f5dc6232d
MD5 1d897e386e2bebcdcfc1f5b87846242e
BLAKE2b-256 20dc8250a5ca687c343ff2850f0f098c7fead3e162ed3908609eeccfe65db62f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.8-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.10

File hashes

Hashes for cumm_cu114-0.4.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8ccefb3fca9546c9bcfc40892826319edc375259283a79ae882aa91fcb2e1f94
MD5 f1ce9e5b279337869631c495908f4536
BLAKE2b-256 1f4290249adb522be01ff09f06516bb51da3d3ddb0e1e93c70326045880ac58a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e62112b57928d4e776845577e7479217f1aa07b94244c10b0c84b9a9442de154
MD5 e03342515b225499b303c81e070b7a9a
BLAKE2b-256 f7883ee1343cebbc6a8f34de8c68c8cb0295052580024de850c92243f3122cbf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.8-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.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 39c630ec3ab55292da83f1b683a7e1ce17395968cf97aba511550a2bf4cb576f
MD5 a89e1c1af2d3b2d0f9243fd262c2e56e
BLAKE2b-256 ed13a593a7ca4fde703b9a2786b1ab44c644c8e64b1c8effd2721ca93ad45526

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b12694ece0fa983ecf1c54500de5ea15998d5e33b7ea8d4de396c15ec9acca2d
MD5 9cc8563647d897825ecf09d146ab274e
BLAKE2b-256 012749fc56daf1894f83fb22e78e862662adf4980142b0b58f77a6a173370b19

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.8-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.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 28d55e72f33cd808470798ffb81ad0865fdcdf780a2524701054d4ca7d91c8ed
MD5 86c5c9726c6d0c7cccef387de4ffd1dc
BLAKE2b-256 cfedfced0db8c961e685a88b4ad5619324309507bacc62d3a40353d46eae6185

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83cfaaa842df77cc91ff2958c272bf52c8cc73e7eedba2a479e198e5a8ad728a
MD5 21f93f8fb3702bfc76b2be6e08187ddd
BLAKE2b-256 317185b4ff55ff51f39f5491ef302870b915e56ec862858f45ba574ccdc1d2fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.8-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.8-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 182941be8e43d74eef0fa95e9479190efbfdea97d0beedbf117711134ebb86e1
MD5 d345e416b7f34b27a68ce0288190935c
BLAKE2b-256 4016808c2d5e5a5705d5b35c063f4f230f349a9de6ff16cef35b8922fd776816

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ccbe38a989d80e5af3ff391b7319cbf96a64ab28e0fe381a3d5999011b73d13f
MD5 015753389bf91ffa255dfb486420d6e5
BLAKE2b-256 b15221fa1c4d2c3cd19afb49a2bdba9bdb7f8886661e7a0f2bdf5bba69878e57

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