Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 ██████╗ ██╗      █████╗  ██████╗██╗███████╗██████╗    ██╗  ██╗██████╗  ██████╗
██╔════╝ ██║     ██╔══██╗██╔════╝██║██╔════╝██╔══██╗   ██║  ██║██╔══██╗██╔════╝
██║  ███╗██║     ███████║██║     ██║█████╗  ██████╔╝   ███████║██████╔╝██║     
██║   ██║██║     ██╔══██║██║     ██║██╔══╝  ██╔══██╗   ██╔══██║██╔═══╝ ██║     
╚██████╔╝███████╗██║  ██║╚██████╗██║███████╗██║  ██║██╗██║  ██║██║     ╚██████╗
 ╚═════╝ ╚══════╝╚═╝  ╚═╝ ╚═════╝╚═╝╚══════╝╚═╝  ╚═╝╚═╝╚═╝  ╚═╝╚═╝      ╚═════╝ 
 
Glacier.HPC: Profiling, Benchmarking and Analysis of Numerical Kernels derived from common Supervised Machine Learning 
Algorithms on consumer grade computing hardware.    

Project scope: Major project for B.E CSE (AI&ML)
Author: Skandan C.Y                                       

Goals

Software and Runtime goals

  • Write clean, safe C17, C++20 with CMake as build system
  • Study kernel behavior under different release configurations and compiler optimization flags
  • Profile numerical kernels to identify behavior and system roofline
  • Act as a controlled benchmarking environment to optimize numerical algorithms on Glacier.ML

Research goals

  • Study kernel behavior under iterative optimization techniques
  • Study performance scaling across multiple threads
  • Finally, establish a roofline model depicting textbook vs observed kernel behaviour

Scope

Numerical kernels derived from common supervised machine learning algorithms, especially used in Glacier.ML

  • SAXPY (roofline model established)
  • GEMM
  • pth order distance (kNN)

Benchmarking Environment

Benchmarks have been conducted on:

AMD Ryzen 6600H (6 cores / 12 threads)
NVidia RTX 3050

Refer hardware_info.txt for detailed information.

Manual performance settings

  • Laptop connected to power source
  • Power mode set to Performance
  • No other applications or background tasks opened manually

Memory Bandwidth

Memory Bandwidth scaling across multiple threads was benchmarked using the original Triad kernel from STREAM benchmarking suite. Peak Memory Bandwidth was found to be 18.956 GB/s when set to threads=2. See STREAM/README.md for further infomation.

Benchmark results are exploratory and used primarily for relative comparison and profiling, not for leaderboard claims.

Methodology

  • Cache lines are heated before everytime the driver is run.
  • Kernels are run 1000 times to ensure capture of coherent results.
  • A Python based harness is used to perform benchmarking experiments, ensuring minimal human interference.

Languages and Frameworks used:

Language: C++20, C17

Core stack:

OpenMP

Development and Profiling:
CMake perf

Build instructions 🔨

To build with debug flags (-g, -O0)

cmake -S . -B cmake-build-debug -DCMAKE_BUILD_TYPE=Debug       
cmake --build cmake-build-debud -j$(nproc)

To build with release flags (-O3, -march=native, fopenmp, -ffast-math)

cmake -S . -B cmake-build-release -DCMAKE_BUILD_TYPE=Release        
cmake --build cmake-build-release -j$(nproc)

About

Profiling, Benchmarking and Analysis of Numerical Kernels derived from common Supervised Machine Learning Algorithms on consumer grade computing hardware.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages