Skip to main content

cuTile Python

cuTile Python is a programming language for NVIDIA GPUs. The official documentation can be found on docs.nvidia.com, or built from source located in the docs folder.

Example

# This examples uses CuPy which can be installed via `pip install cupy-cuda13x`
# Make sure cuda toolkit 13.1+ is installed: https://developer.nvidia.com/cuda-downloads

import cuda.tile as ct
import cupy
import numpy as np

TILE_SIZE = 16

# cuTile kernel for adding two dense vectors. It runs in parallel on the GPU.
@ct.kernel
def vector_add_kernel(a, b, result):
    block_id = ct.bid(0)
    a_tile = ct.load(a, index=(block_id,), shape=(TILE_SIZE,))
    b_tile = ct.load(b, index=(block_id,), shape=(TILE_SIZE,))
    result_tile = a_tile + b_tile
    ct.store(result, index=(block_id,), tile=result_tile)

# Generate input arrays
rng = cupy.random.default_rng()
a = rng.random(128)
b = rng.random(128)
expected = cupy.asnumpy(a) + cupy.asnumpy(b)

# Allocate an output array and launch the kernel
result = cupy.zeros_like(a)
grid = (ct.cdiv(a.shape[0], TILE_SIZE), 1, 1)
ct.launch(cupy.cuda.get_current_stream(), grid, vector_add_kernel, (a, b, result))

# Verify the results
result_np = cupy.asnumpy(result)
np.testing.assert_array_almost_equal(result_np, expected)

More examples can be found at Samples and TileGym.

System Requirements

cuTile Python generates kernels based on Tile IR which requires NVIDIA Driver r580 or later to run. Furthermore, the tileiras compiler (version 13.2) only supports Blackwell GPU and Ampere/Ada GPU. Hopper GPU will be supported in the coming versions. Checkout the prerequisites for full list of requirements.

Installing from PyPI

cuTile Python is published on PyPI under the cuda-tile package name and can be installed with pip:

pip install cuda-tile[tileiras]

The optional tileiras dependency installs the tileiras compiler directly into your python environment.

If you do not want to have tileiras inside the python environment, run

pip install cuda-tile

and install CUDA Toolkit 13.1+ separately.

On a Debian-based system, use apt-get install cuda-tileiras-13.2 cuda-compiler-13.2 instead of apt-get install cuda-toolkit-13.2 if you wish to avoid installing the full CUDA Toolkit.

Building from Source

cuTile is written mostly in Python, but includes a C++ extension which needs to be built. You will need:

  • A C++17-capable compiler, such as GNU C++ or MSVC;
  • CMake 3.18+;
  • GNU Make on Linux or msbuild on Windows;
  • Python 3.10+ with development headers (venv module is recommended but optional);
  • CUDA Toolkit 13.1+

On an Ubuntu system, the first four dependencies can be installed with APT:

sudo apt-get update && sudo apt-get install build-essential cmake python3-dev python3-venv

The CMakeLists.txt script will also automatically download the DLPack dependency from GitHub. If you wish to disable this behavior and provide your own copy of DLPack, set the CUDA_TILE_CMAKE_DLPACK_PATH environment variable to a local path to the DLPack source tree.

Unless you are already using a Python virtual environment, it is recommended to create one in order to avoid installing cuTile globally:

python3 -m venv env
source env/bin/activate

Once the build dependencies are in place, the simplest way to build cuTile is to install it in editable mode by running the following command in the source root directory:

pip install -e .

This will create the build directory and invoke the CMake-based build process. In editable mode, the compiled extension module will be placed in the build directory, and then a symbolic link to it will be created in the source directory. This makes sure that the pip install -e . command above is needed only once, and recompiling the extension after making changes to the C++ code can be done with make -C build which is much faster. This logic is defined in setup.py.

Experimental Features (Optional)

cuTile now provides an experimental package containing APIs that are still under active development. These are not part of the stable cuda.tile API and may change.

To enable the experimental features when working from a source checkout, install the experimental package from the repository root:

pip install ./experimental/tile_experimental

You can also install it directly from a GitHub repository subdirectory:

pip install \
  "git+https://github.com/NVIDIA/cutile-python.git#egg=cuda-tile-experimental&subdirectory=experimental/tile_experimental"

For example, this will make the experimental namespace available for autotuner:

from cuda.tile_experimental import autotune_launch, clear_autotune_cache

Running Tests

cuTile uses the pytest framework for testing. Tests have extra dependencies, such as PyTorch, which can be installed with

For Python non-free-threading build:

pip install -r test/requirements.txt

Or for Python free-threading build:

pip install -r test/requirements-ft.txt

The tests are located in the test/ directory. To run a specific test file, for example test_copy.py, use the following command:

pytest test/test_copy.py

Copyright and License Information

Copyright © 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.

cuTile-Python is licensed under the Apache 2.0 license. See the LICENSES folder for the full license text.

Release files for cuda-tile 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for cuda-tile 1.6.0
File
cuda_tile-1.6.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
cuda_tile-1.6.0-cp314-cp314t-manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
cuda_tile-1.6.0-cp314-cp314t-manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
cuda_tile-1.6.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
cuda_tile-1.6.0-cp314-cp314-manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
cuda_tile-1.6.0-cp314-cp314-manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
cuda_tile-1.6.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cuda_tile-1.6.0-cp313-cp313-manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
cuda_tile-1.6.0-cp313-cp313-manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
cuda_tile-1.6.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cuda_tile-1.6.0-cp312-cp312-manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
cuda_tile-1.6.0-cp312-cp312-manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
cuda_tile-1.6.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cuda_tile-1.6.0-cp311-cp311-manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
cuda_tile-1.6.0-cp311-cp311-manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
cuda_tile-1.6.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cuda_tile-1.6.0-cp310-cp310-manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
cuda_tile-1.6.0-cp310-cp310-manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details

Total release size: 6.7 MB

Release files / cuda_tile-1.6.0-cp314-cp314t-win_amd64.whl

Download URL cuda_tile-1.6.0-cp314-cp314t-win_amd64.whl
Size 365.7 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
a9a3064334d77cb58c0b643acf9cffba560b0c2920361c3611c829695a53bf0d
BLAKE2b-256 checksum
How to use checksums
347321113bc9e2581e1e0f2ee2a808f26be10bb549eeb5dd460356182e23f6af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp314-cp314t-manylinux2014_x86_64.whl

Download URL cuda_tile-1.6.0-cp314-cp314t-manylinux2014_x86_64.whl
Size 383.8 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
330fdfa470740a27f2f718215635c0ea7fa46d57e1246d48df495fdf7afc582c
BLAKE2b-256 checksum
How to use checksums
6df02cfd157e85f8364f8797fb4e1ee9f42d7a8667706398fd2896fe2b1d2f7c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp314-cp314t-manylinux2014_aarch64.whl

Download URL cuda_tile-1.6.0-cp314-cp314t-manylinux2014_aarch64.whl
Size 380.0 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
99010df35630368e6378b950d2bdafbd6256497b8de3dd0f7ce79d5e8191fa4a
BLAKE2b-256 checksum
How to use checksums
63c0da38a02f6132d600cf67981960b06a823e5d9562da34ed7aea37c24d25e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp314-cp314-win_amd64.whl

Download URL cuda_tile-1.6.0-cp314-cp314-win_amd64.whl
Size 356.3 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
527e407e89a1042c0c0a5eab8eeffbe208d2aff4061042aee1a846e87610cfef
BLAKE2b-256 checksum
How to use checksums
26966b8f202f94ecef0275cab75dabd7ad3674579e70e1587d4d9497a3f080c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp314-cp314-manylinux2014_x86_64.whl

Download URL cuda_tile-1.6.0-cp314-cp314-manylinux2014_x86_64.whl
Size 383.3 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3dde52fd09780f3fd9f5b17d5750a94b4a98e3a18a1660e10a424ed8941fdc8d
BLAKE2b-256 checksum
How to use checksums
3c949d174b601cf5e23eaf1590b63b1eb30f21944e91b99f61e6a0908b6f28ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp314-cp314-manylinux2014_aarch64.whl

Download URL cuda_tile-1.6.0-cp314-cp314-manylinux2014_aarch64.whl
Size 379.0 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4785cbe370186bd3a83e8815bc9907cf186d9c5b8e24b88fd9ba4c3531374db8
BLAKE2b-256 checksum
How to use checksums
393c02f9fde3751beced12b62fd42b419fdee26e27d18255295cba1dc77f0515
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp313-cp313-win_amd64.whl

Download URL cuda_tile-1.6.0-cp313-cp313-win_amd64.whl
Size 354.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
9defc23b669a06f1abff203c37899a46c826843b575890adfb5768f30e49cf71
BLAKE2b-256 checksum
How to use checksums
525847ee674b3834543fe6121787f9f55674884a514290c2f1b0752fb94d22f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp313-cp313-manylinux2014_x86_64.whl

Download URL cuda_tile-1.6.0-cp313-cp313-manylinux2014_x86_64.whl
Size 382.2 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ca4858770945aa40677eff4b0bd6b0bdad73ef372d665eae4ec41202aecda830
BLAKE2b-256 checksum
How to use checksums
9c70879ab39f2dab93eca6c9d5caa8b5195ceccf330f95bbd8cb5f35289ee9be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp313-cp313-manylinux2014_aarch64.whl

Download URL cuda_tile-1.6.0-cp313-cp313-manylinux2014_aarch64.whl
Size 378.6 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
43c846d903d3ed12680af28acbb936f141c71a306ac9c4b778974f81a6634550
BLAKE2b-256 checksum
How to use checksums
58095c3b6c8fc2f03303fe97156082792f2276deb94c974f57691ce86322f91c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp312-cp312-win_amd64.whl

Download URL cuda_tile-1.6.0-cp312-cp312-win_amd64.whl
Size 354.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
1f323f5c6255353d60bce88936a7c0013f87555cc646e4c2910e92e50a271209
BLAKE2b-256 checksum
How to use checksums
4570363bad8f80a719a71071e9bf3d4bee4dd21506bd20b8b0bf8a0cc582eb08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp312-cp312-manylinux2014_x86_64.whl

Download URL cuda_tile-1.6.0-cp312-cp312-manylinux2014_x86_64.whl
Size 382.2 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7e38f97bfedff359c926710387a40fbfc8f36efb7fe9ad2cb759d5a098eedde3
BLAKE2b-256 checksum
How to use checksums
40213dfeafbd3512e94a277a25ce022c10e7bdff5d43e364afffcc0928f7fcaf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp312-cp312-manylinux2014_aarch64.whl

Download URL cuda_tile-1.6.0-cp312-cp312-manylinux2014_aarch64.whl
Size 378.6 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
77fb2b15c61960514f62fc41eeae3722cf6468c051f7593fd43970691624214b
BLAKE2b-256 checksum
How to use checksums
1fccb4da247f624320c9898c14003e7b809b74c4a447251e1c98e33505f41757
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp311-cp311-win_amd64.whl

Download URL cuda_tile-1.6.0-cp311-cp311-win_amd64.whl
Size 353.2 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
92442089476b2317ae89ef490a94591090c2bfe79a1c1d1c358c577e66a472d8
BLAKE2b-256 checksum
How to use checksums
b6fb33947e3e661b5cc8985041ab17e42df443c602440e3d8846d2f5623a028e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp311-cp311-manylinux2014_x86_64.whl

Download URL cuda_tile-1.6.0-cp311-cp311-manylinux2014_x86_64.whl
Size 382.1 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7e72ea7c2616dcff1cbfa2380991eefe39b87449ad0092dcaa6dccbe2df20f39
BLAKE2b-256 checksum
How to use checksums
b507e11e97a0eb0bb59edf5a64e1099b5d47db18e925ffa0e89795ba2794750c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp311-cp311-manylinux2014_aarch64.whl

Download URL cuda_tile-1.6.0-cp311-cp311-manylinux2014_aarch64.whl
Size 378.9 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
658bd83126360821e87b1fe5c6f8a9c5e3e29bf93d1a28bd3f35883441733d44
BLAKE2b-256 checksum
How to use checksums
f2d48ecee8c2e93d5fea3347e624acedce4fc0bf0d03f0da2b660acd60580ab4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp310-cp310-win_amd64.whl

Download URL cuda_tile-1.6.0-cp310-cp310-win_amd64.whl
Size 353.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
bfb3c78e127ed4f6c59402ac15289849d814d8fd8477b2b752322ed6a736640e
BLAKE2b-256 checksum
How to use checksums
2a48cc28d6c22af708665655ecc8bb963fd37d7345ff51a749f022afca09e33c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp310-cp310-manylinux2014_x86_64.whl

Download URL cuda_tile-1.6.0-cp310-cp310-manylinux2014_x86_64.whl
Size 382.5 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c02d36111e16d7c001f1b167f4794995944a02dc8d3da024ac4199ea5b0e00e3
BLAKE2b-256 checksum
How to use checksums
0829dba077e13479b7eb91c02dfe608b057c7eb6a2f2002dfcc447a21a199625
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / cuda_tile-1.6.0-cp310-cp310-manylinux2014_aarch64.whl

Download URL cuda_tile-1.6.0-cp310-cp310-manylinux2014_aarch64.whl
Size 379.3 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
f83b0e8890d9da1e58697de2b68e7017b58ba3d7a2d881388102aae421527fe8
BLAKE2b-256 checksum
How to use checksums
43c4b3833d6178c2e3ef3e4e19a5890676d066c682ad6fb5547357dfa4a43af4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page