Skip to main content

A JIT compiler for Numpy-based Python programs and bindings for stateful dataflow multigraphs (SDFG).

Project description

docc-compiler

A JIT compiler for Numpy-based Python programs targeting various hardware backends.

Installation

pip install docc-compiler

Features

  • JIT Compilation: Automatically compile Python/NumPy code to optimized native code
  • Multiple Backends: Support for CPU (OpenMP, SIMD), CUDA, and other accelerators
  • Stateful Dataflow Graphs (SDFGs): Based on a powerful intermediate representation for optimization
  • Performance Portability: Write once, run optimized on different hardware

Quick Start

import numpy as np
import docc

@docc.program
def matrix_multiply(A, B):
    return A @ B

# Automatically compiled and optimized
A = np.random.rand(1000, 1000)
B = np.random.rand(1000, 1000)
C = matrix_multiply(A, B)

Requirements

  • Python >= 3.11
  • NumPy >= 1.19.0

Attribution

The Python module is implemented based on the DaCe reference implementation. The license of the reference implementation is included in the licenses/ folder.

If you use the Python bindings and frontend, please cite:

@inproceedings{dace,
  author    = {Ben-Nun, Tal and de~Fine~Licht, Johannes and Ziogas, Alexandros Nikolaos and Schneider, Timo and Hoefler, Torsten},
  title     = {Stateful Dataflow Multigraphs: A Data-Centric Model for Performance Portability on Heterogeneous Architectures},
  year      = {2019},
  booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis},
  series = {SC '19}
}

License

BSD-3 Clause

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.

docc_compiler-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

docc_compiler-0.0.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

docc_compiler-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

docc_compiler-0.0.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

docc_compiler-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

docc_compiler-0.0.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

docc_compiler-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (33.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

docc_compiler-0.0.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (32.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file docc_compiler-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61789f26b940ef12acc9f29aacc6b35d406b5897eb4a89cda84e7b80a02edf6d
MD5 84d0efeea8b58b2e30444740ea711dcf
BLAKE2b-256 3f51326de6bc50361257e62eb961004fe7834c322d494b85788872bd790f08ab

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 32b401c98f05d92ab514b3ab482a98b3a0bb2e706ee46fdce7605aecd873689f
MD5 0cf23fa0244628f563e4429efc05a5ff
BLAKE2b-256 35245a46d8dddd293e3ccb516049db7b9534dee307fbe7fd3384400ff681669c

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6fba949dadae098150b98e0ba89bcc4979cf10de64db99cffbc1ddd309cd4433
MD5 a56d692e7b617e44256087e5d3414379
BLAKE2b-256 3236550ea3441a2533124859616f4652dd07413eb450950bfc618cd85e75d34d

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 689bb46d9b7ff5132e4070aef4701955aded0bdd8be5eabe079cf2c135ba1de6
MD5 b6b108b377a3d7290f84bd0e9d30017d
BLAKE2b-256 c93bcabe709b5496e5ced55a8760656e6896c848b4e212737fe440335ef67fa0

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6a7a778ab881f118f7fc76103f90260832f0f37bd085fca6e3d6fcecf291a378
MD5 1cb21d1702e2f52dabaeb15b8f528334
BLAKE2b-256 f2f1444ffc019451d37b592dcc654385b6ceaad6487e8fa2d19abc9e79e958e2

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89fb8449bb370256e9c2bf54e2bfe287de5c0cbd7c9ca0e0bd37be1eed3b51ef
MD5 cab935cba680e981dc72d49b93703191
BLAKE2b-256 26f2f05c94def48009ba8ce2dbe23041070fd81f4ddae6608b989aa8faa7ce12

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 96bfa2286931eec3cf204d774f4a8d028a564caffb21aaf4826674c8f662596e
MD5 827e55164556776a5260d7beaf88bbc8
BLAKE2b-256 e625aaea6bc6861facb519506b6e2f651d1c142b88d0dbe20913d54aabbbc700

See more details on using hashes here.

File details

Details for the file docc_compiler-0.0.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for docc_compiler-0.0.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7178e4dfaf5be23e63edb7141f6aaa04890e1bed4cbb623974f757f9b7c84b5a
MD5 1ba228cf44716c1f18d81dd78b356fde
BLAKE2b-256 0fce8bfe3c65d62b65c832d95a713b5f499dcdc24899d6a655cfaab8442564c6

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