# Programming models and profiling

<!-- https://learn-kernels.com/chapters/programming-models -->

Chapter 1 built a kernel out of threads, blocks, and warps: the programmer decides what each thread does. Triton and CUTLASS both reject that unit of work and ask the programmer to describe tiles instead, leaving the mapping onto threads to a compiler. Once the compiler is making those decisions, profiling and correctness checking stop being optional reading of the source and become separate tools in their own right.

## 4 sections

1.  [3.1Triton](https://learn-kernels.com/chapters/programming-models/triton)
2.  [3.2CUTLASS, CuTe, and CUDA Tile](https://learn-kernels.com/chapters/programming-models/cutlass-cute-and-cuda-tile)
3.  [3.3Other hardware stacks](https://learn-kernels.com/chapters/programming-models/other-hardware-stacks)
4.  [3.4Profiling, benchmarking, and correctness](https://learn-kernels.com/chapters/programming-models/profiling-and-correctness)
