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

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.0-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.0-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.4.0-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.4.0-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.4.0-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.0-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.4.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for cumm_cu114-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cf408cad8afae40bfeb7583c218f5abcea31f9ab6d739ae2c12f31c801fba7e7
MD5 582875de0b1cafa0b9c45108cfc4535c
BLAKE2b-256 027cd775a0c86bb85ff0b93fdde842249a0a1cc8e5bd221e0122545a67f51939

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f999c7b34bc5442c1ef8291cdc54068f233a4618437da836af09030fffa1d064
MD5 6824be5823533c28f8463fce38173c32
BLAKE2b-256 87e9a646027ee8e4a5da0b437dc81bb88d8df6a6d6f6899d11692260f994b26a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for cumm_cu114-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a402da92b4b80dce53fb62e8d5fa04238acd9378d0f2b59fa9975c23f394c67d
MD5 c3265c69aba19d3175ae8135590fe13e
BLAKE2b-256 c40cafcce094871878c617c23811830d293ad1319dd94ba08c2471fc39fbd89f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4dbe59c3ab086412a96d1b8d363bdd13d423f26c2562777d2495db9bf3ca219
MD5 6c0c3d9d8c63844684966f321e923bb6
BLAKE2b-256 646bdc828c8f284c94fe8cd911571ff7fc9fa8cc30332b3d2249ce7f84fde139

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for cumm_cu114-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 15c7f28f9cf2d891c7624ba25fba56f844054cdf4e1904c0ec59b586c6a6378d
MD5 00ca681bd2e830e35345f8d004073762
BLAKE2b-256 27d7ff2322303e73c575dc83d490e9d15809eafd0a8fc792ec8b28a05fb417b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 053bcd670fd3b7d0456d563fec264da6f2bee2fcfa437784577a87d0959c1862
MD5 f8ae306a408b3d0f461af0ac7361cddc
BLAKE2b-256 0e6de48899f87914a53d1ac038d2a65128dc19cd384b162f344a689b7a54ad43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for cumm_cu114-0.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 8b3514700d2c6482be628364a9987231958fdf9e03534e63f799075d011029d8
MD5 84ca7ab05cf5073c65b141ee03bf8627
BLAKE2b-256 e4e62a3b306bdcfb4a904ec28e1f996689d21aa12816b615566262bfb04003d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 712ccb0a51920453a4382bf869573caacb88179d2c2f6f43d2c972d014162cf6
MD5 c2b107d0ddf5d36f87e1fc8c7d08f632
BLAKE2b-256 2908e5cbc63ad006276f6f819513f0b70ecb2f8c3df78e8886e7b100667e27d5

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.4.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.4.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for cumm_cu114-0.4.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 a7bbf089d7b1ad2aca7741889be8c1939c62b3254f40592e672dce4847d08a61
MD5 da2f3ad191192785074761fc6d0329cf
BLAKE2b-256 a9473cfdb95877e9e8744809fc7435abcc310bd9ac115a5cbbf4146d4433edd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ba2f4c8c4db4a1dc948778ac18c92b51ace5ccde804a6bee3c47991a8368c46
MD5 d57a7f125e1f0a42e717768722d30170
BLAKE2b-256 5c90a6dd09853be3983fb6b8ac5035f4b48eeeb98dc4af10a391cca8c77ab19d

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