Archives
All the articles I've archived.
CUDA Programming (7): Parallel Reduction and Kernel Optimization Techniques
A comprehensive case study on optimizing parallel reduction in CUDA, covering Roofline modeling, control divergence, shared memory bank conflicts, loop unrolling, warp shuffle instructions, and thread coarsening.
CUDA Programming (6): Shared Memory and Matrix Multiplication Optimization
An in-depth guide to GPU Shared Memory, explaining its role in overcoming register limits, boosting arithmetic intensity, and accelerating GEMM through tiled matrix multiplication.
CUDA Programming (5): Program Timing and Performance Metrics
A comprehensive guide to measuring CUDA kernel execution time using CUDA Events, calculating effective memory throughput and compute throughput, and analyzing workloads with the Roofline Model.
CUDA Programming (4): Building CUDA Projects with CMake and GoogleTest
A step-by-step guide to structuring a professional CUDA C++ project using modern CMake, configuring VS Code IntelliSense, and integrating GoogleTest for automated testing.
CUDA Programming (3): A Vector Addition Example
A practical hands-on guide to implementing vector addition in CUDA C++, covering memory allocation, kernel invocation syntax, and compilation with nvcc.
CUDA Programming (2): CUDA Programming Model
A foundational overview of the CUDA programming model, detailing thread hierarchies (threads, blocks, grids, warps), logical memory spaces, and execution scheduling mechanisms.
CUDA Programming (1): An Introduction to NVIDIA GPU Hardware Architecture
A foundational guide to NVIDIA GPU hardware architecture, covering SIMT execution model, Streaming Multiprocessors (SMs), unified memory hierarchy, and compute/bandwidth calculations.
Welcome to Fenriar Tech
Welcome to Fenriar Tech — a dedicated technical blog covering LLM internals, CUDA optimization, deep learning engineering, and algorithms.