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_cu117-0.4.11-cp311-cp311-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cumm_cu117-0.4.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.11-cp310-cp310-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cumm_cu117-0.4.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.11-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9Windows x86-64

cumm_cu117-0.4.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.11-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8Windows x86-64

cumm_cu117-0.4.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cumm_cu117-0.4.11-cp37-cp37m-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.7mWindows x86-64

cumm_cu117-0.4.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (23.2 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cumm_cu117-0.4.11-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cd0076c2e349eb1f907d2e84d1abfc0ad2efb5570057885cc2f5a4d9a79a2f4b
MD5 26cf55cf16456998de67e5ee4cdb4d55
BLAKE2b-256 fe35714c023dead73748034c180924c660da492c1a33bb0d9f5f3c2dc3895969

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38d15b13d9326cc2592afc9cd8b8f8cb5ae237c3d18a4b77efc4a03aadfc5be8
MD5 4a3f0c9f62d1d7be28b8c34994213613
BLAKE2b-256 f4a56a91ca7bd3615cff276fd365b06d10b57fece2373d1152dd45462fa8e19b

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 51d2442dbeae81e267e2b1a398fd2b7132345679d723c6bac0582e11987b6cd4
MD5 948d75eb59aec528fbb4bc4e3c44b7b0
BLAKE2b-256 1f9ff5f21a247ae18fe6390f9af3dcf00558d5d96206435ae7121d44a2039f38

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 60a347cffa2782f73c3833bcad9edae3413c325f4a281e8ece8466fbf7e21c9c
MD5 49dcc287e525fa4527ce4cb4a4abf2c0
BLAKE2b-256 bdc65be6e04f51fda4542958f0d9f66e781b2ee36a052802a6bc3ad263cbb739

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.11-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_cu117-0.4.11-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 8205bd84897f840d812b7636e8494db5aae5734c63a1ae0c67efc39f030a016a
MD5 7d41fbbdf37462b9f082d1e812524fe8
BLAKE2b-256 f7fef71b8a6e7ac53fde124852d6d55631ca662f7bebe0fa796f139dcc8668a1

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 379edb291abbb8aed8ae81d7edd5e94f9d187d674e5a5d0fef0d2105ed30ddf8
MD5 8e8803aabbe0ec1293a755dd3a9c4f9c
BLAKE2b-256 a46f75ecedae8396dac0c74fb45d797b95ee7c3e223f9f5c2c5520d516d20273

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cumm_cu117-0.4.11-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_cu117-0.4.11-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 459cb029d761fe485e3e892a7823686257b47977137dfd0a7cc30705be4dfa7f
MD5 2983ade7e694a1f597ee9f14c1ca2a1f
BLAKE2b-256 dbc2a3d7769557d9cec9f5a36e9769b525a1ea18b9df344c1a86a8732b18efaa

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af27340e2280f44bc0ca4515ce32ff8bdcdcdd39dbb7f0832981024c6b0cc30a
MD5 95412e48c90761e9730797996e06c1ec
BLAKE2b-256 9ac6bd6ce53b7bcd319e88ad9e95819ce3c053c2c8ae87ad77e28d52685e39f7

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e59622b3a8b0544dec1ed0e0ad69497c804c736651bf4496b3da15673f722a55
MD5 4916a95665b93cc3cd59becebbec1608
BLAKE2b-256 ed7a8994d73f71ee3368a95ae8c5705225eaabdf659d3a6575de2eda635e3655

See more details on using hashes here.

File details

Details for the file cumm_cu117-0.4.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cumm_cu117-0.4.11-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d536fa9b46c36ecdb360255bfcd0cae84e1d97c34ad5706b1104187f4786311
MD5 3f7cf05082277711a327232746fc32b1
BLAKE2b-256 0cf81c84689620e11736ff7ad56e83b16141181ebe24053f2f1293edfd6f08b0

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