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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.5.3-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.3-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.5.3-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.3-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.5.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.5.3-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.5.3-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.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.5.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.5.3-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/5.1.0 CPython/3.12.3

File hashes

Hashes for cumm_cu114-0.5.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 964c5c31480370e05f73791109c7be8517cb4cd6efa87a9ddea40e960f26e3f4
MD5 cfdd5cd006c81665d73f9195f6a2d006
BLAKE2b-256 57a2a566b2c64f36a2c1d23500865136681e0367b3d62d632b45154d0ee0d201

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.3-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/5.1.0 CPython/3.11.9

File hashes

Hashes for cumm_cu114-0.5.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bf7806215f403f6ee86615de7a1546ae19dc6cb0a8ff9778fecbfa16c21dde65
MD5 b121c90449a7b9c5a0fe414379d273cd
BLAKE2b-256 eba1746a325b7037d77efd5d87635213c8944def60345bb39f64b5af015e9861

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 279c4d7658cd4cdfb3894d022923108fd8be0c94ca6b3359088f76954508f2b8
MD5 52aabff8f9780fe2ebfa24ef0e0855fd
BLAKE2b-256 0dc2103a18619cd9f421dd883af5618bea50904dd544d4c9bdf252ba7bb6a71a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.3-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/5.1.0 CPython/3.10.11

File hashes

Hashes for cumm_cu114-0.5.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c8a055cdcf189ca3bd10aab5c1c199e98a5f7922d1734d9b5437d2b25274f0b9
MD5 caba25e96ee05ac99515161e05339f7e
BLAKE2b-256 a5607617cd92424c77560ce0bb87f3ac1e86cdf41d4103cd4b76ae863c6a5e6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bb7e5225a48275e4da7105ef58cfcca876e710a270c33885791c489ca63dd41
MD5 ac1aad6ad36286acab43f2538fdeda63
BLAKE2b-256 d5aac0544dbd4128e8de2fc8d468883be12a4651999242fab4a860ae75095034

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.3-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/5.1.0 CPython/3.9.13

File hashes

Hashes for cumm_cu114-0.5.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 360b01124653d91a92aaf9985cbd3b614f1bb00d7addad710f589586f55982eb
MD5 d92b60cb8146fb50060a949936b07bb1
BLAKE2b-256 fad4d78a4b22f0f0553a8f7bc1602538480d66a711b83dccd53010879dd3972a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1c635aef7d8f5b9dd01fd98a8cebffbb60131d86f2686eaf1ee793bb2cf6ffb
MD5 b84e22e586cd7b945876982d3ad3acec
BLAKE2b-256 a7bf37c1100f6a2ec3fc7302c22c59e008567d2d507aa89643bcbfc7baa231bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.3-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/5.1.0 CPython/3.8.10

File hashes

Hashes for cumm_cu114-0.5.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a5a42e94c75a949c42f34fcfb51bd69b92ea464adb6b82fb1cc76b9a42eafaec
MD5 4ce43fc5de8169d6eb25c74dac1e9010
BLAKE2b-256 2be4b0e63e733d18d7249282b4088e879bd0f06f0633e8c0858c44f4361e507d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecb64f5ac4f3be48711b20fcf942a3c333d20a31fc83c5ee3deae652e7ce801d
MD5 ae9e362014fdee17107d43329f3de162
BLAKE2b-256 7e3e2b6910eb663d304422617463dc6d8776861758767b9d54b0e15a9d155b54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 249d8f32ddd195a3663d372af183036a0f0b8119a1510ba469465d21b384d72c
MD5 56b1fad0f7557cec3b5b728147189683
BLAKE2b-256 0b8df8ccc2cbfa73675c5e97acedbadec055581fa954b1fd18019fb7a04d1e4d

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