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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.8Windows x86-64

cumm_cu114-0.4.1-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.1-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu114-0.4.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.4.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cumm_cu114-0.4.1-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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0716bc8e88c2fe6cc0d367e23455b37cc2b1604ec0e2e86d93ecf90efa469e33
MD5 18e7c104cbe2aa506688bab64382e1c3
BLAKE2b-256 46fba0a8d05d2da286faee626b8b3b27cb7487c265139e543e3663c2a9fd7bdd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 97aaee082d84400ebd1067eab0941a544712cb56fff3e2531873920b516ff8a0
MD5 b935019229721ad9ed4dd2f137d46b5c
BLAKE2b-256 308b4d119d74a2af7367fcacd229197b523991bdb842c59b238e08f190a7fe9a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.1-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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cb5066a19c6eb20b385515f202b1e99e51a833c593cfb949fd36ac42102baa1d
MD5 ba6b37077fe217042afdd8543e85273c
BLAKE2b-256 6cf7bb8e45ccb2d63da5edd7ce88da953d61a535e9074740112ad7410ee12a03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9be55f91c37c126d2ed49d9e236d7abf1a234f63c5da726451f181efd74aaed
MD5 c8ccc0bd8d36d13a78df9c9b95d37506
BLAKE2b-256 3d68b0fba48e46a473385241a21350390b4e804e957aff29a53b24318857c534

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.1-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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2d1ef32727f2783bdfa67ac02f7fea21e7ddc4d05629b15b83bc43a768eab248
MD5 8fd3df9d18e4683842edbcef541878c0
BLAKE2b-256 faf1adba47171a5688051383b91de325d4bc8b270c915afca31e2d582a068bb3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83f727be59f281194862620ed4522a193ffb0627a699916f995786ae825c592f
MD5 a17191b571979972c704d0f205a1ee1d
BLAKE2b-256 73064ee99b9afe6e6586be4772fb7955e2193403f07380f774576e572e460ee4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.1-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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 90681a4a25ac1dc84f20579f2b51c8d2ca31a02e1cfbbb5bc29a96047e2a0636
MD5 9c792d441c42cc71a932e783155de32f
BLAKE2b-256 75214247b5844be61934653a54d5e6dca20138f47e9114ecc7958e8960d66d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d84bd00a18d4851dfda712e9c5af65de7883cc68f685fd4383486c2ab35e50d
MD5 824dadea5429a9a622357007165b3a7f
BLAKE2b-256 147e3459dfab14310949b38d33112f3feb02cce33cd88473f921e9408cf4be2a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cumm_cu114-0.4.1-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.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 25dff9ac8f57ee104ac6b8929139ec9fa35acda5f44a255519a0a767fd185df2
MD5 984b19ecaec3cb01efdb45b91483ee6a
BLAKE2b-256 3bafec66fe8315ac142efef9e3d5a4e0497bd92f71cec50585008eb332f39fc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cumm_cu114-0.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 927732976f062294edb72b284a18446706df06cd91b9b9d66ab83e944c10ed1d
MD5 d2f44626c775e23ddda256324878205e
BLAKE2b-256 b2a1191ac3e651c4c15d8edd2416a043ce0c0f51066018de0a6a4c7bf55b1fef

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