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.5.1-cp312-cp312-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.12Windows x86-64

cumm_cu114-0.5.1-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu114-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.1-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu114-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.1-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu114-0.5.1-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.5.1-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu114-0.5.1-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.5.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for cumm_cu114-0.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c74e41c1acfa4cdfb6ee0839180995ecb29a5e75d65ebde096f34377473d0f55
MD5 a7780d67dfc5ae1581d4d11866857e38
BLAKE2b-256 f30b44d7806157738044134a17569ca54976f4aa323984c006ae66069e11e9f8

See more details on using hashes here.

File details

Details for the file cumm_cu114-0.5.1-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for cumm_cu114-0.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 81d911f259e43fed29e8d22be7f00d737e21aea40bcbcc75b855f3717ee66a6f
MD5 87ca0c0b82fb81b8e8ae31f4d4f4ba63
BLAKE2b-256 ffb588d93a77c1b80de7cb37bb0344d6a0d0c7ca73e9583440914fcf0372258c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6655887b07fa5dff7f6e0b4a1d9e3701a0320185f0345e593aaacad691dfd524
MD5 812a33f9cd4ab757f5186de33b46e3dc
BLAKE2b-256 c55354b7c864c831ec192918869c693c9be0dcdf61469a357f6ac92fb0d33a9d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cumm_cu114-0.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 0f9ae2804ec3149e6182414f50572233050c7e346ebe18db69d8cb742252dc4e
MD5 ceb73e77adf5a3e238db546a3a1688db
BLAKE2b-256 b889172799e64515c20ce694c66e9d3cc7efd1433dd3c9b96d31d3a4403ada6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 945b5a2169f1ddb1be4b47aa08789b3f0efb72ab47ac8e5bdb29db70a148a8b6
MD5 a6d95ab523726ca55b17445e65bcace1
BLAKE2b-256 649a6f050ac0d74e7aa733979dfb8462ae92adcdebdf0ba7da453a6e69c47db0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.5.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ef97eba89feb264502260f5b9fa756b7a206249d3b8990787ef4b9163aa4ae82
MD5 d6c982d8d1f7e6553035e932056c4af6
BLAKE2b-256 69dc433bd5b5a088f7bed5520c730b131da72b028181a24f503b8e5044a2f344

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 735a0e30da9ce29e17de4e7d3c0a945cf6ccb903a76125042159ef41ce86ebd3
MD5 69ada65b4f076c555d81b9bad70acac3
BLAKE2b-256 0317f402d58198585ef7facb130d0d295182fe77e2346781e9d4b0fc1a2cd27e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.5.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.2 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.5.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 622197c10e896968792a88d82d3872656561e2027434ce634f00790e0fa94281
MD5 dafd03b516a10d04f3c27735ebb81e3b
BLAKE2b-256 c65859b8fb90a2f34afb5235e8847c4be55d7dce56e1d86f609cc61b6ea25cb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5cf823cd8da2e9ea94d7a1121e6965d20f23301603e4c7107333fbc447808b70
MD5 c53e697ef04e1eec4e45231583a5a708
BLAKE2b-256 d16e7226143c11695de6ee8447714bad3edef7fd3fa525a73f462794a14bda3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.5.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e5717811c3701673ece0a8c275665143eab9aae3c65be22405ac1b864fd4272a
MD5 746a4c81b8d9edf5b0153e01f0417a53
BLAKE2b-256 a19d64296fe3e0f0060fab832ef5ddb03a47a9d82a6073998420dd44e03a2d58

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