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

cumm_cu113-0.4.8-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

cumm_cu113-0.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.8-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

cumm_cu113-0.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.8-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

cumm_cu113-0.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.8-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

cumm_cu113-0.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

cumm_cu113-0.4.8-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu113-0.4.8-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5e27ed040a453f22cc65d83bbc186e47b83ddb5613bc3344562e381a4b3f4402
MD5 2916ca11a1a77671cee509609eceda7d
BLAKE2b-256 db77d6f070c314c52f5d216f2d7e3e953c87c437bf864d181b2b2443d9a24622

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d233880f1739d395bd9570545eae4c1da642097881bd82ad0f46a7c006d7a07
MD5 67b2bdec317c75958f6387b214546ffe
BLAKE2b-256 22caf866063b8a4aac97acd52613d0d144d7069cf2647b258c3b17ca19f332f1

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ac39b1c98684ec0100072b6d726046b7d9c9aeecf7e36c906776d72c3c3b4250
MD5 04fab6f189a54db06770f257890306d6
BLAKE2b-256 f08f64aa3c8a4f66d10d6f5b49a23fe99cf9d1f05119a25b38ac3b632ada8cce

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c70ad73a082bc2453fc483af630a41188e306d932bdf6a28c6a6f4156724b9d
MD5 2197e55b10ec1b49471bca31efae1464
BLAKE2b-256 6802fd8a6c7dd92e601fd4aa645f285dcc5b145a66a9b28b2b96a58dd4575b91

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1e43b408a1d39bb9252daaae6758a9578cf4202e295bd76dd841dce8dc2f4b2e
MD5 8fb1ab6f3fd0d0fc6d163d53fd3f5daa
BLAKE2b-256 9d96ab30697fb32c71ce8e17bd96de244818d6f9c5abd9947478d4d57e374443

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb90c592776e7e1a3b1c6ffed5503cf27dd9696ce34c66a9ff34e51f30700b6b
MD5 fea02e3a5a858a15ee892b93458d8f54
BLAKE2b-256 50509a7447f16a448cf6ba38891af48fadd722915c85973975c10aab07f83a61

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 23703f8aebdae4316903fa724c7784e769ba82b945cbe631a70f01bd77b35602
MD5 0e5be7dae280322f505ea0d5dbf4594a
BLAKE2b-256 1387190077df8758ec53b492a33af236d2a9fb2f0e5500ae0a151fde532a2d34

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ba7cd1b5704ee0a4e7cd9ca680b5acab81d0d4561fa02ce923d18c2c1517ad8
MD5 0ad8c3660059a55580778cab19a4b437
BLAKE2b-256 674655cdf4c9cbbe3017fd089e93c6ea2dedbc08a4ca8072e32d4557b40fd10e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 4638b57fd406c92f16736fbc2fc0f684fde93f5551033aca7516ff9631d8ba5e
MD5 f56755cad58783f711afbcb48fcda625
BLAKE2b-256 f04d858921d9bf0544520d81d96ad1fe2a36fce8d34cbb10022746db9ecb0b88

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2957a6ddbfd1839884329112565a0b62e16bdd30b8f4e2ceb92b2d153460da96
MD5 36a083e4c2c72c27ad88e8a8ccc523a4
BLAKE2b-256 4ad2075bee2e874e543cf6426c96ca29665e25298468ee9dbadb40fe17cac4bd

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page