Skip to main content
Atoms are the fundamental building blocks in CuTe DSL that define hardware-level operations. They encapsulate the metadata and behavior of copy instructions and MMA (Matrix Multiply-Accumulate) operations.

Overview

An Atom consists of:
  • An Operation (pure Python class modeling a specific instruction)
  • A Trait (wraps IR value with metadata using CuTe Layouts)
Atoms are composed into Tiled operations that map across thread blocks.

Copy Atoms

make_copy_atom

Creates a copy atom from a copy operation.
CopyOp
required
Copy operation (e.g., cute.nvgpu.CopyUniversalOp())
Type[Numeric]
required
Element data type (e.g., cute.Float32, cute.BFloat16)
Common Copy Operations:

make_tiled_copy

Creates a tiled copy operation with explicit tiling and thread-value layout.
CopyAtom
required
Base copy atom
Layout
required
Thread layout mapping thread IDs to coordinates
Layout
required
Value layout defining vectorization per thread
Example:

make_tiled_copy_tv

Creates a tiled copy with automatic TV (Thread-Value) layout inference.
Automatically infers the tiler and TV layout from thread and value layouts.

Specialized Tiled Copy Constructors

TiledCopy Operations

MMA Atoms

make_mma_atom

Creates an MMA atom from an MMA operation.
MmaOp
required
MMA operation (e.g., warp or warpgroup MMA)
Ampere Warp-Level MMA:
Hopper Warpgroup MMA:
Blackwell tcgen05 MMA:

make_tiled_mma

Creates a tiled MMA operation.
MmaAtom
required
Base MMA atom
Layout
default:"None"
Optional custom thread layout (auto-derived if None)
Example:

TiledMma Operations

Runtime State Management

Some atoms have runtime state (e.g., tcgen05 MMA accumulate flag).

set

Sets runtime fields of an atom.
Example:

get

Gets runtime fields of an atom.
Example:

with_

Returns a new atom with modified runtime state.

Architecture-Specific Atoms

Ampere (SM80)

Hopper (SM90)

Blackwell (SM100)

Complete Example: Tiled Copy

Complete Example: Tiled MMA

See Also