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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.4.9-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.9-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5ece4270edc10b70bb6252ffec9b2fc73b7638a13eca55f6f6f34ac0791eb29a
MD5 cb61be30110e8716d3b7aa1de59b58bd
BLAKE2b-256 e98b21dfbe64994f54d2b52aef866c96bd367b9d8ad3bc8881c378d2c5133653

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f178458b3ab6bf49d922c0c7db3d42f6dafc82ce066fac098ce67c65689e4808
MD5 41f1ddc71f68fa9a6dbf58ecf00f967d
BLAKE2b-256 9bf22e1813bbfd4902a46084aad9ff3346db52cf0ea467e57cff2c54940767ff

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4dfeb4e6d41992b38cdb3264c75dfbca84e56effeab39f6210851baa5566d632
MD5 d505fae098c342ad08485290481d788a
BLAKE2b-256 4db548ed174f51254ad51aadc211a8ed89ec038b02baa9fd217c95cc5577d85a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb223fc67274e9511db336f72ffb826b661d2bac384469bca18ae75e1302e832
MD5 ec8fc1146ba7ce1715966b6a0de8f25a
BLAKE2b-256 12a52952f67ee8b4e54aa79403003ea30e879d5406ca8dd412ff0389208a6639

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ec185af7ea027581f68525286abbd2d3adcf101008a4c8cd2a8d3b9b253c5b8c
MD5 477e44e5be1b58d5f7ee95cfde937071
BLAKE2b-256 835b730cbece24850ed9a837f43f761ee42b6c3b205427c09189b1335aac4c77

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c15ab44d5bffdcb11cefe93ae206b9a51a988d7cf36465ddc632044e03eee8ab
MD5 659827b90b213d1942f7d31a8c26d6cc
BLAKE2b-256 00e72cc2e8e7111d212afa15ddf4c47df7cc4b988cd727ee2d64cba98b8da02f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4b53a5d5155c922d31c83e0fc806f51dbbe642125b0b93f0b60e32b5511f2bdc
MD5 33635dd1776857c05a278af265e7ad23
BLAKE2b-256 bc0e9670c76368a364557c973afeadd57e8c804a6ef53fb517ed25d22bd4ae0e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f60ee0eb3a9b4eaa7075a4888e4878c7e913935926520b566e1a3e8b0ac26aff
MD5 c64e3fae6ac92aa043389e41a2ccf632
BLAKE2b-256 6cb840d8369567ccd5fef131bf63e354ea7f80795c58e9bce7ca6d13c2e737d8

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 347c006884cb530529c347b5df847caf3a12d0267dadb4b6206ed85b3e0ac1f5
MD5 4e6ea625fccadd2dc00895918b86e2e5
BLAKE2b-256 855bfe2dfd07f9fcac2c177761abbc1399868f99b69d236e4246523cb74ef4b2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58963c511d4ef73a3d0b4f50e2c0eecc5e8dff52443c81ac798b662055d8b4b2
MD5 ed42ec433cf9456df92e97cc160eceeb
BLAKE2b-256 af782d6d4a3acb4a917dbbdc07fc3e4471003970940b289eaf54f6e26b6123dd

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