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

Uploaded CPython 3.11 Windows x86-64

cumm_cu113-0.4.1-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.1-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

cumm_cu113-0.4.1-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.1-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

cumm_cu113-0.4.1-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.1-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

cumm_cu113-0.4.1-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.1-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.4.1-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.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bf4cb3270fed22dc59d02461eac5f2b9faf5706d42d19a8a8be17de4b919ac8
MD5 b446d8900dc8e60a54a948918a1a129e
BLAKE2b-256 101a51e657fd9cf62b2ee7d7963972633bc97a6838ba5767be2076a4c09270d7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 415a9c515ba9feee70be8d283c311f9f5e5c0670a7db6ae7b74873972fd631f3
MD5 1e20549bb0f90fdc07a28eed556128ba
BLAKE2b-256 16a3468ae5adff34623275bcef46ee34be93cffa9f8bc651f785faf9b4f7f410

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bee59113e580977cd43dd0ccbefe4a45352096fed8e679d699ea9975b760dab2
MD5 1cd34d3cd58ff258c285ba55df5cc64e
BLAKE2b-256 01ae06d52a6be0201fedec9a10c8c011cf9867664150f098501cf4fc8cb1d6a0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f408b5cb78bf23b79eb03f381a1f97dd44a997d1c87bb3c31ca089ccbdad903
MD5 84466dd4c4461902c8db5eeb03e0713e
BLAKE2b-256 cc232625aaf37255ff9fa4ea107efac0359ab3b8cf27f2ea736dfd4444f778a5

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 aa127fd01ef790b9d5b3747670f01e44e0075436935e1323d82b056e073536b9
MD5 418784cd008a5f72c5c9f03d70ae9753
BLAKE2b-256 a1f12af5b58b1d41526ca6bf5fa835ad5558334903ed85e6f998d3884d1ec3eb

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e55e8d0a74b86164f9cfb4a37eafd2e1c287908a52d6e1f929b05ba2a54e809
MD5 75a42376f2abd294836eca34d354e8ca
BLAKE2b-256 ddb65b629f96a3c63e70bdf07b52b75f9a4fe0c6ef81febadfa8a34a47406c34

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 39369b929b9f3022d0c2171d742c2b40b127f46b919d41386abecf4b2aa1c09b
MD5 c08b616adf26ded1f44c4adaf8aa3372
BLAKE2b-256 1b0d946d52e03cd4aad42e27d8463945d5330eb816892aa789ebc875e739eedd

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f91444f99d4a743a1dde97549711198bdf9dbf00e2cf4c3a0aa5a5524b15db3
MD5 7c859d4154e625de0bd6906670f99f3e
BLAKE2b-256 c9e47b035fa886790b84108e5c392876540b69da87255418ecb87b2b987e2c28

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 5ed8fe114483d271d944857ef2d91286dddf1f93e763359d71141e56805be558
MD5 9da7be638c78d9dcebf082a50a9febd1
BLAKE2b-256 67956c70e358c86dcc4df4151712e1f0cae392ac458fa61c5abc8c7cbc4e81d5

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fac8236f8a144f43119b8fbe636c3fc1f39f27a232c2b69e062a3ec7e38a04c
MD5 f3dd80db9cfc7d102fec0322f69f84a9
BLAKE2b-256 b0c17b4d260460f0e8ce46ce7d653d09d0e725b4f1945d0244dbd9921bbe0a01

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