Supported GPUs
Ampere was the first architecture to support TensorFloat-32 (TF32), enabling FP32 acceleration through Tensor Cores without code changes.
Key Features
1. TensorFloat-32 (TF32)
TF32 is a 19-bit floating point format that provides the range of FP32 with the performance of FP16 Tensor Cores.- 8x throughput vs FP32 on CUDA cores
- No explicit conversion required
- Maintains FP32 dynamic range
2. BFloat16 (BF16) Support
BF16 provides better numeric stability than FP16 for many workloads:3. FP64 Tensor Cores
Ampere introduced the first FP64 Tensor Core operations:- 8 rows × 8 columns output
- 4 elements in K dimension
- 2x throughput vs FP64 CUDA cores
4. Asynchronous Copy (cp.async)
Ampere introducedcp.async for overlapping memory copies with computation:
5. Integer and Sub-byte Precision
INT8 Operations
INT4 Operations
Binary (1-bit) Operations
Binary operations support both AND and XOR modes, useful for neural network quantization and specialized applications.
Instruction Shapes
Multistage Pipeline
Ampere usescp.async to build efficient multistage pipelines:
Code Example
Here’s a complete Ampere TF32 GEMM example:Compilation
Compile for Ampere architecture:Performance Tuning
Optimal Tile Sizes
For Ampere, recommended threadblock shapes:- TF32/BF16: 128x128x32, 256x128x32
- FP16: 128x256x32, 256x128x64
- INT8: 128x256x64, 256x128x64
- FP64: 64x64x16, 128x64x16
Pipeline Stages
- Small kernels: 2-3 stages
- Large kernels: 4-5 stages
- Balance between latency hiding and shared memory usage
Shared Memory Configuration
Examples
CUTLASS provides numerous Ampere examples:examples/14_ampere_tf32_tensorop_gemm/- TF32 GEMMexamples/15_ampere_sparse_tensorop_gemm/- Sparse Tensor Core operationsexamples/18_ampere_fp64_tensorop_affine2_gemm/- FP64 Tensor Coresexamples/27_ampere_3xtf32_fast_accurate_tensorop_gemm/- 3xTF32 for accuracy
See Also
- Hopper Architecture - Next-generation features
- GEMM API Guide - Building GEMM kernels
- NVIDIA Ampere Architecture Whitepaper