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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.7m Windows x86-64

cumm_cu113-0.4.5-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.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3ae1b122dad79a1dd66eca6c45c5995a19afbeae3a288a247c93367c8147c4fa
MD5 a0418309dca6f9457bd8f51ce9880028
BLAKE2b-256 21a4b448d393b4d628a144d8bf5ca158314a4a82fd33f397abd27c417ebaf5a4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc6360bbc5a3117e88c53d906ba2b6189922ca60789417d99e1e1cd243561c40
MD5 cbafcae6214cdebed5e754fe9ffab21c
BLAKE2b-256 d7b23b39d131f92affbe2b45f45d8f9bae417999957a1e3be405e2d23e9c7e32

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 94345b7263c5f0fba017ee78dd3e5f5b5e01c519e7be9c31c036a62b3985831c
MD5 058d39433dc6961767843c08c2eeddfd
BLAKE2b-256 d500054fa8737e4468988bb893835e6056c2b0c24418360222e0af2119bb104a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 acae2a96a36f41e45ca30af55c99d535e5bb2c57e5257c26c5889ccb018da32a
MD5 1eeb3124d31de6dbb3c1f00da9426008
BLAKE2b-256 a9ecf09245818f7439951040ca49ec4d81832effe0e40ea4a167f31f707391da

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9a0809c7fa128ee68d3c652eb9290b7ad7d84456ab764df3b7b4b1c04bdfdd0b
MD5 fcc24f4ba47cd7175973ea586b3d37a7
BLAKE2b-256 673b585829d4f128811210824e991ed265e987d70b6bfd81c54b2a94c5886362

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b519c46cba7eaeab330686b62d5a9293f3b49003a4d1ded4d90faadf98c17602
MD5 c499b03791b797b8df6066c1a7892037
BLAKE2b-256 ed2d0c05cf4ae493c41e2bc93a04f7ca1ea6a792dc846085cf1a2346553bb537

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e8ed3739c8a5c2bdd30330247a0dc2a1851ecf0f5f3bfdc232e8cde274e7353e
MD5 d6624b9fbd5411953c73602fc9160013
BLAKE2b-256 cc7826a22748441b2232123570d9e8e011b2f7f79fd9fc34dcf9dcb51843bcdf

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4461944103d2f15119775eff1cac744a659dd54f559e74d85a236a2d27464af7
MD5 6ffd74fa22352ea106508cfb0ac5fe80
BLAKE2b-256 38bb009e7588f7ba10476a4d5810c12659b3076c38922e5e61c516ce43ad5ec0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 987b0ef86948aa16b51f9ea27fa3f36cdea573f147df03283308e0f7f0dfd7bb
MD5 86d9131e237aea05605a50b316547697
BLAKE2b-256 f353b41f48fb552f6366e8d52e601401594330adaebb65f31d6b31e82387b382

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for cumm_cu113-0.4.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 967d85968fdc1b41be2597170b0a032e50c8f834e064cf4987fd78142d254d35
MD5 ecd2b4c44dd10070ad12b491133025c2
BLAKE2b-256 5dc8198b13a6302ee5aaa487f253b124801b4de1391e07091708a961bdd9d214

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