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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.3.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.3.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dfa47c92c37677e70c1770e7c535d64cfead20d9241c2e60a4f2a3f6f086e987
MD5 8785fb3a851aa478eb6539656c15b95b
BLAKE2b-256 114ef66766af8cfb7d7b4852fdb2e5f816e80a1143c58e06597f4d6fe2db60b1

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ceb7986663bb2f8a88e6a02b41143f89804c882db40fe9bac9fd7c3fde21c742
MD5 afb06b017808be4c0bb4d9b31412aad2
BLAKE2b-256 d9bc2f9cae500ab6ff40637864c7dc3a127eb2690cbbca112769b10827e03f1b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f212716183fe021ac801ca78574dcfee881eaeb7c0e2e436911b69012ff1d1d3
MD5 ed2e3936c8a0ead6f2969b8e2cd2b8ec
BLAKE2b-256 f31a95179b9787529a4cb4cbed05414f6bd8ade20f320a8a21993f7abdbbae87

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 817927763627b165c7545a71c4e0b4ef49ae10106d62ea7480a36bb000c6b759
MD5 f6a02f30b1db948824fffaa1b5c2cff8
BLAKE2b-256 ce295aed7b730c437dff1352950a69a8f220c3d0498b0872494416d25e10a788

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 55fae620518122219b443d879ff880374e6d88f442a6c1cb73c6a58fb72c0f8a
MD5 0b1fbac3ceda57733d08ea5de8d0a948
BLAKE2b-256 3b3d768de7b1d8399614c62c812c8197168f83c8ae76f0ddd80bf73e64dad201

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22e82c194040e03758e18eff499afd43108d884bf3e758707425a7293490c2a0
MD5 2da2bfa6465859bbe3f6fcabcd543bfd
BLAKE2b-256 6f84c411e0593dd0fd379667ba49e7ef5084f507380c73fde8007538a032944e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5fa9e25733b5f03b6d55b5819921c76d35cbfcbc229dccb7726b97ec50265515
MD5 7848fb7f1f8dc2171b6195c1f73158e8
BLAKE2b-256 554a06c2691bfc3755562832138b21238fdc3e6627cb042ed255e4cd32a666d0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 34de0b95eec9011378fd52b34c560417ed157ac449716e3f652a54700f040d9b
MD5 c750b9b8919168482db41e6c47d445cb
BLAKE2b-256 088750d6fa08ab447f10ac68bf794c7410c22f06470fdbb2731df3237393b03f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 cc30554d5b8c4d26d648e51f092f36fe0e8459f2de06dcd4221c1b0a783d6f2a
MD5 6ad8abc8ff2d034073a3e16d067587e4
BLAKE2b-256 389c7fc36056e2b60c5f9cd320a462f35f6813aca304f3189df0db3c3d6f520e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 23b047e77db78e40e2a86f07e5fceeae80245aa2746d07f0c396b2488467126a
MD5 0e44e2d937bc9698462a07138f5cb596
BLAKE2b-256 8673affb406a361c211f3ef234fcda7facb4d7543852a0567285312358860fc6

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