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

Uploaded CPython 3.11 Windows x86-64

cumm_cu113-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

cumm_cu113-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

cumm_cu113-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB view details)

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

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0cece634aa3da8c85adaeaebdc24d4d3aea2a34ed53a0039b702439ffef359da
MD5 49de04ad9ae2372ac5551d7327d30698
BLAKE2b-256 40ce78c496563ab83609c29bc18804f9fe9befbfe63d3829e7a15fac7bd577e0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 338dca688ead7cec1bedebafe4a7b179c25f5ac0373b7d894a032bfbb985c0cd
MD5 cdad04bc7a95635a0d2d3d88057946c8
BLAKE2b-256 4b155662a2e03bf572355714b9ebb752baf951c46b5f77ea1916642e1e3e0027

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c3a4bd55771fd9f4341fc028141cfb104a971352010fde898163200da5081db1
MD5 c3ce55f8c6c42810c16d1e53cb1934e7
BLAKE2b-256 e62c9077b5a02347b5e413ac269ae6565585d948e855a86ac7a2ccc7fcc1c5a6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c58d0b0d283274b8cef6bcaef49f54624adec336a8c7b7672962319af234b629
MD5 bc9489c98dfb62e91665266e3cbf0ed6
BLAKE2b-256 4186a5dfe607dc897590904ec75e95c679d1540bbdbca213e4327c4b4564d2da

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1a10df193b574d63a2fbf1231ecd8b6d5ccd23868a875931a0149f151cbeb47b
MD5 cb82b6a222cc283c23aad24b74f4da65
BLAKE2b-256 10330dcf6498b18b94f90d8564a9207162cf7d0d662071da48dc2e9f1ca34d98

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 935a8ff8ea60c18935a367966e198b76c796cfbf0643b40d613dd30fc29b2b9a
MD5 3b04f99e562ba82cffa99746f897e384
BLAKE2b-256 318f03f15a6ec671ec7aa4cca1e86bfaa8b56be2f6f70b93a7c747fe369f1e16

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 69bb9685e9aafd25164e9eb8c1fb4ba8e71445a18dc2bdd35962abec09153707
MD5 734b6f22370694e10b428771d362e92e
BLAKE2b-256 8e4c5bedebea214a5849cc6166290e016a30c457a5969660b9446e53f968f6c5

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c6a92438fc2ea77964e231573ea880d3a590b688dc259c43360b3864290b2bb
MD5 d8d140d7819b950af15a6e0251d674bd
BLAKE2b-256 e6ceff010cd540124ea92a0250a10fef03d424e51bb6dd2c62b2cd245c98e464

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f9bfce122a90456b9e35af96b06083e74759273204632ab534059c7e7ee9ca2c
MD5 fc32dae0fc07bb39210ce953f1bec55f
BLAKE2b-256 856fe9f5b1c7e9e3be82eddf3c97b150928d8279a45635a61f6cf37ac0c6663a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a3bd7ada3fb5cce91906e48a92073471e6e2eddd614c53ecd83423114752de6
MD5 37fcc74be3b4249966710ca81cbdda14
BLAKE2b-256 32105677572299f1a86fd749f429d9dda24df555d07bfe58704c57af74773382

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