GPU Architecture
A graphics processing unit, or GPU, is a processor built to run many similar operations in parallel. Its architecture combines groups of execution lanes, fast on-chip memory, caches, and specialized graphics or matrix hardware to favor throughput over fast completion of one instruction stream.
itComputer architecture and hardware | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — GPU Architecture
A GPU is a processor built to keep a great many similar operations moving at once. It is not a CPU with more enthusiasm. A CPU spends considerable hardware on finishing a few instruction streams quickly. A GPU spends more of it on parallel execution, which is excellent news for pixels, matrix elements, and other large, regular collections. It is less exciting for tiny jobs, serial dependencies, and data that must keep commuting between host and device.
The first useful map is the execution hierarchy. The host submits a kernel. The launch becomes blocks or work-groups. Hardware then issues nearby work items as warps, wavefronts, or subgroups. Those names occupy the same place in the map, but they do not promise identical widths or resources. Blocks must be independently schedulable, because the device was not designed to consult an application about which block feels emotionally ready.
Inside a compute unit, ready execution groups take turns using arithmetic, load and store, and sometimes matrix or fixed-function units. When one group waits for memory, another can issue. That is latency hiding. Occupancy describes how much resident work is available for this trick, but it is not a medal to maximize. A kernel can instead be limited by memory bandwidth, arithmetic pipelines, launch gaps, or transfers. The profiler gets the vote.
The other half of the story is the memory hierarchy. Registers are close and limited. Shared or local memory lets a work-group reuse data. Caches help without being asked. Device memory holds the larger working set, while host and peer memory live beyond an interconnect. Neighboring lanes that read nearby addresses can combine their requests. Scattered access asks for more transactions, which is a very efficient way to move less useful information more often.
Control flow has a similar wrinkle. Work items look independent in source code, but a group usually issues together. When lanes take different branch paths, the required paths run with masks and some lanes wait their turn. That is not automatically wrong. It does mean data layout and grouping affect how much useful work each issued instruction accomplishes.
For the wider explanation, open the Intro for the architecture and failure behavior. The Slides turn the hierarchy into a compact map. The Cheatsheet is the reference for vocabulary, limits, and diagnostic signals. Then use the Reference tab to move from this mental model into vendor documentation and profiling tools. The hardware will still have opinions. At least they will be measurable ones.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.nvidia.com/cuda/cuda-programming-guide/01-introduction/programming-model.html
Supports
- Kernel, grid, block, thread, warp, and SIMT execution hierarchy
- Thread-block scheduling and block independence
- CUDA memory hierarchy and synchronization scope
- Warp divergence and lane grouping
- https://docs.nvidia.com/cuda/archive/12.5.0/cuda-c-programming-guide/index.html
Supports
- Streaming multiprocessor scheduling and hardware multithreading
- Register and shared-memory limits on residency
- Occupancy, warp scheduling, divergence, and independent thread scheduling
- Host and device memory spaces
- https://docs.nvidia.com/cuda/archive/12.8.0/cuda-c-best-practices-guide/
Supports
- GPU throughput orientation and CPU comparison
- Memory coalescing, data locality, divergence, and transfer guidance
- Memory-bound performance and workload suitability
- https://rocm.docs.amd.com/en/latest/reference/glossary/device-hardware.html
Supports
- AMD compute-unit, wavefront, work-group, and local-data-share vocabulary
- Shared instruction stream within a wavefront
- https://rocm.docs.amd.com/en/latest/reference/gpu-arch-specs.html
Supports
- Architecture-specific wavefront sizes
- Compute-unit, register, local-storage, and cache variation across AMD GPUs
- https://rocm.docs.amd.com/projects/rocprofiler-compute/en/docs-6.3.0/conceptual/compute-unit.html
Supports
- Scheduler, scalar unit, vector memory unit, and execution resources in an AMD compute unit
- https://www.amd.com/content/dam/amd/en/documents/instinct-business-docs/white-papers/amd-cdna-white-paper.pdf
Supports
- CDNA compute-unit organization and matrix cores
- Data-center emphasis on HPC and machine-learning compute
- https://www.intel.com/content/www/us/en/docs/oneapi/optimization-guide-gpu/2025-2/intel-xe-gpu-architecture.html
Supports
- Intel vector engines, Xe-cores, matrix engines, registers, caches, and shared local memory
- Multi-stack GPU organization
- Architecture and product variation
- https://www.intel.com/content/www/us/en/docs/oneapi/optimization-guide-gpu/2024-2/execution-model-overview.html
Supports
- Host, command queue, kernel, compute-device, and vector-engine flow
- GPU compute engines, caches, shared local memory, and high-bandwidth memory
- https://www.intel.com/content/www/us/en/docs/oneapi/programming-guide/2024-2/gpu-offload-flow.html
Supports
- Work-item, subgroup, work-group, compute-unit, and global-range mapping
- https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html
Supports
- Host and device environment
- Asynchronous queues, dependencies, graphics, compute, transfer, and video functionality
- Pipeline, shader, memory, and synchronization concepts
- https://docs.nvidia.com/nsight-compute/NsightCompute/index.html
Supports
- Kernel profiling, performance metrics, report comparison, and analysis workflow
- Occupancy, memory, instruction, and throughput evidence
- https://rocm.docs.amd.com/en/latest/components/profilers-and-debuggers.html
Supports
- AMD kernel counters, system tracing, debugging, and wavefront fault tools
- https://images.nvidia.com/aem-dam/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf
Supports
- Programmable shader resources with tensor, ray-tracing, texture, and graphics units
- Fixed-function and programmable graphics acceleration
- https://developer.apple.com/metal/
Supports
- Integrated Apple GPU graphics and compute programming
- GPU profiling, debugging, and machine-learning integration
- https://github.com/coderonion/awesome-cuda-and-hpc
Supports
- Discovery of CUDA Python, CuPy, CUDA.jl, HIP, and NVBench ecosystem projects
- https://nvidia.github.io/cuda-python/latest/
Supports
- Pythonic CUDA core access and low-level CUDA C API bindings
- https://docs.cupy.dev/en/stable/
Supports
- GPU array operations, custom kernels, memory management, and performance guidance
- https://cuda.juliagpu.org/stable/
Supports
- Julia GPU arrays, hand-written kernels, and low-level CUDA APIs
- https://rocm.docs.amd.com/projects/HIP/en/docs-6.3.1/programming_guide.html
Supports
- Portable C++ GPU kernels and architecture-aware parallelism
- https://github.com/NVIDIA/nvbench
Supports
- CUDA kernel benchmarking, parameter sweeps, timing, and memory-throughput reporting
- https://www.nvidia.com/content/timeline/time_99.html
Supports
- August 1999 GeForce 256 launch and GPU naming milestone
- https://www.nvidia.com/content/timeline/time_01.html
Supports
- February 2001 GeForce3 programmable GPU launch
- https://docs.nvidia.com/cuda/archive/13.1.0/cuda-programming-guide/01-introduction/introduction.html
Supports
- Progression from fixed-function graphics to programmable stages
- 2006 introduction of CUDA for general computational workloads
- https://www.khronos.org/news/permalink/opencl_1.0_released
Supports
- December 2008 ratification and release of OpenCL 1.0
- Cross-platform parallel programming across CPUs, GPUs, and other processors
- https://www.nvidia.com/en-us/drivers/pg-57689/
Supports
- September 2009 announcement of the Fermi CUDA GPU architecture
- https://ir.amd.com/news-events/press-releases/detail/201/amd-launches-worlds-fastest-single-gpu-graphics-card----the-amd-radeontm-hd-7970
Supports
- December 2011 launch of Radeon HD 7970 with Graphics Core Next architecture
- Unified emphasis on graphics and compute capability
- https://www.khronos.org/news/press/khronos-releases-vulkan-1-0-specification
Supports
- February 2016 Vulkan 1.0 release
- Explicit cross-platform graphics and compute control
- https://nvidianews.nvidia.com/news/nvidia-launches-revolutionary-volta-gpu-platform-fueling-next-era-of-ai-and-high-performance-computing
Supports
- May 2017 Volta and Tesla V100 launch
- Introduction of Tensor Cores in a GPU architecture
- https://developer.nvidia.com/blog/?p=11872
Supports
- September 2018 Turing architecture details
- Integration of ray-tracing and tensor hardware with shader resources
- https://instinct.docs.amd.com/projects/system-acceptance/en/latest/gpus/mi100.html
Supports
- First-generation CDNA architecture in AMD Instinct MI100
- Compute-focused GPU for HPC and accelerated computing
- https://www.amd.com/en/newsroom/press-releases/2021-11-8-new-amd-instinct-mi200-series-accelerators-bring-.html
Supports
- November 2021 AMD Instinct MI200 launch
- Multi-die GPU packaging and CDNA 2 matrix acceleration
- https://nvidianews.nvidia.com/news/nvidia-announces-hopper-architecture-the-next-generation-of-accelerated-computing
Supports
- March 2022 Hopper and H100 announcement
- Transformer Engine, newer Tensor Cores, and expanded GPU interconnect
- https://www.nvidia.com/en-us/data-center/
Supports
- NVIDIA data-center GPU platform for AI and accelerated computing
- https://www.amd.com/en/products/accelerators/instinct.html
Supports
- AMD Instinct GPU portfolio for AI and HPC
- https://www.intel.com/content/www/us/en/products/details/discrete-gpus/data-center-gpu.html
Supports
- Intel data-center GPU portfolio for media, AI, and HPC
- https://www.nvidia.com/en-us/geforce/graphics-cards/
Supports
- NVIDIA GeForce discrete graphics product family
- https://www.amd.com/en/technologies/rdna.html
Supports
- AMD Radeon RDNA graphics architecture and product family
- https://www.intel.com/content/www/us/en/products/docs/discrete-gpus/arc/arc-graphics.html
Supports
- Intel Arc discrete graphics product family and Xe architecture
- https://developer.apple.com/metal/capabilities/
Supports
- Apple GPU families and Metal feature sets across Apple silicon
- https://www.qualcomm.com/processors/adreno
Supports
- Qualcomm Adreno integrated mobile GPU and sliced architecture
- https://www.arm.com/products/silicon-ip-multimedia?showall=true
Supports
- Arm Mali and Immortalis configurable GPU IP for mobile and embedded systems
- https://www.imaginationtech.com/products/gpu/
Supports
- PowerVR configurable GPU IP for graphics, AI, ray tracing, and power-constrained devices
- https://developer.nvidia.com/blog/the-peak-performance-analysis-method-for-optimizing-any-gpu-workload/
Supports
- Field Notes: measure the limiting hardware unit before selecting an optimization
- Field Notes: occupancy changes help only when issue throughput and stalls show they are the active limit
- https://developer.nvidia.com/blog/advanced-api-performance-async-compute-and-overlap/
Supports
- Field Notes: async overlap requires complementary datapaths and can degrade performance when cache, memory, or synchronization resources conflict
- Field Notes: queue barriers and workload transitions can create wait-for-idle gaps
- https://developer.nvidia.com/blog/cuda-pro-tip-minimize-the-tail-effect/
Supports
- Field Notes: a partial final wave of blocks can underutilize GPU resources and dominate a short kernel run
- https://developer.nvidia.com/blog/fast-dynamic-indexing-private-arrays-cuda/
Supports
- Field Notes: dynamic indexing of private arrays can use local memory and replay instructions; shared-memory alternatives trade this against capacity and occupancy
- https://developer.nvidia.com/blog/best-practices-gpu-performance-events/
Supports
- Field Notes: hierarchical GPU performance events make profiler output navigable and should represent logical workloads
