
Sr. Research Scientist @NVIDIA. Building cuTile Rust: safe, data-race-free GPU kernels in Rust 🦀 Prev: Ray, NumS. Speaking @ RustConf 2026.
- Tweets34
- Following27
- Followers55
- Likes26

ALT The above example defines a device-side module named my_module, which contains the tile kernel add. The add kernel is marked as an entry point, allowing it to be executed from the host-side (e.g. the main function). Our kernel is defined such that x and y are input tensors, and z is an output tensor. On the host-side, we allocate our device-side tensors x, y and z. The kernel indicates that z must be mutable. Since the same tile kernel executes in parallel by many tile threads, we will need a way to provide each tile thread exclusive access to z. It is enough to wrap x and y in an Arc (see cuda-async for details), however, the tensor z is partitioned into a grid of 4x4 sub-tensors. In cuTile Rust, any &mut Tensor<...> requires the host to pass a Partition<Tensor<T>> as the argument. Any &Tensor<...> requires the host to pass an Arc<Tensor<...>> as an argument. The expression add(z, x, y) constructs a representation of a kernel launcher: A structure which encodes how the GPU applies


















