Skip to main content

An easy to use CUDA/OpenCL kernel tuner in Python

Project description


Build Status CodeCov Badge PyPi Badge Zenodo Badge SonarCloud Badge OpenSSF Badge FairSoftware Badge

Create optimized GPU applications in any mainstream GPU programming language (CUDA, HIP, OpenCL, OpenACC, OpenMP).

What Kernel Tuner does:

Installation

  • First, make sure you have your CUDA, OpenCL, or HIP compiler installed
  • Then type: pip install kernel_tuner[cuda], pip install kernel_tuner[opencl], or pip install kernel_tuner[hip]
  • or why not all of them: pip install kernel_tuner[cuda,opencl,hip]

More information on installation, also for other languages, in the installation guide.

Example

import numpy as np
from kernel_tuner import tune_kernel

kernel_string = """
__global__ void vector_add(float *c, float *a, float *b, int n) {
    int i = blockIdx.x * block_size_x + threadIdx.x;
    if (i<n) {
        c[i] = a[i] + b[i];
    }
}
"""

n = np.int32(10000000)

a = np.random.randn(n).astype(np.float32)
b = np.random.randn(n).astype(np.float32)
c = np.zeros_like(a)

args = [c, a, b, n]

tune_params = {"block_size_x": [32, 64, 128, 256, 512]}

tune_kernel("vector_add", kernel_string, n, args, tune_params)

More examples here.

Resources

Kernel Tuner ecosystem


C++ magic to integrate auto-tuned kernels into C++ applications


C++ data types for mixed-precision CUDA kernel programming


Monitor, analyze, and visualize auto-tuning runs

Communication & Contribution

  • GitHub Issues: Bug reports, install issues, feature requests, work in progress
  • GitHub Discussion group: General questions, Q&A, thoughts

Contributions are welcome! For feature requests, bug reports, or usage problems, please feel free to create an issue. For more extensive contributions, check the contribution guide.

Citation

If you use Kernel Tuner in research or research software, please cite the most relevant among the publications on Kernel Tuner. To refer to the project as a whole, please cite:

@article{kerneltuner,
  author  = {Ben van Werkhoven},
  title   = {Kernel Tuner: A search-optimizing GPU code auto-tuner},
  journal = {Future Generation Computer Systems},
  year = {2019},
  volume  = {90},
  pages = {347-358},
  url = {https://www.sciencedirect.com/science/article/pii/S0167739X18313359},
  doi = {https://doi.org/10.1016/j.future.2018.08.004}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kernel_tuner-1.3.3.tar.gz (192.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kernel_tuner-1.3.3-py3-none-any.whl (182.2 kB view details)

Uploaded Python 3

File details

Details for the file kernel_tuner-1.3.3.tar.gz.

File metadata

  • Download URL: kernel_tuner-1.3.3.tar.gz
  • Upload date:
  • Size: 192.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kernel_tuner-1.3.3.tar.gz
Algorithm Hash digest
SHA256 aa9fc6754fa9964c1e9891ab1d3da4350d98ccc3d0dc6cd9023b92d929bba8f8
MD5 648a29d3c250a975b79960bc6f11420d
BLAKE2b-256 1253fcf6ca6472d8db476977e737df941171968d59540285533889c53cba7a8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for kernel_tuner-1.3.3.tar.gz:

Publisher: publish-python-package.yml on KernelTuner/kernel_tuner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kernel_tuner-1.3.3-py3-none-any.whl.

File metadata

  • Download URL: kernel_tuner-1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 182.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kernel_tuner-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1b7a17d299e505b52024086042092147d652c0dc8fd06677c9570059b69b36db
MD5 a3f981855bd31742c646c93b5cd5947c
BLAKE2b-256 716eb3037112841dfc7c9a54bca930e20ece45b3696a821f5bce03b439aaa60c

See more details on using hashes here.

Provenance

The following attestation bundles were made for kernel_tuner-1.3.3-py3-none-any.whl:

Publisher: publish-python-package.yml on KernelTuner/kernel_tuner

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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