/MicroBenchmarking-KNL

Repository to track my work on microbenchmarking the Intel Xeon Knights Landing processor.

Primary LanguageC++

MicroBenchmarking-KNL

Codacy Badge

This repository was used to track my Informatics Honours Project and Dissertation. The project involves evaluating the Latencies of core memory components, and the bandwidths of the MCDRAM and DRAM.

Background info on KNL

Repository Structure

/
├── Benchmarks
│   ├── Coherence Miss
│   ├── Latencies
│   ├── Memory Bandwidth
│   └── Tools
└── Docs
    ├── Dissertation
    ├── References
    └── Results

/Benchmarks/

Contains source-code and associated files for building and executing the different microbenchmarks.

/Benchmarks/Coherence Miss/

Contains source-code for multi-threaded benchmark which evaluates latencies of accessing data across Cores.

Usage

make
./run.sh State1Core ( M | E ) State2Core
./run.sh State1Core State2Core S State3Core

The following state diagrams show what each Task represents for the different modes:

Modified Access

[0] - KNL Overview

Exclusive Access

[0] - KNL Overview

Shared Access

[0] - KNL Overview

/Benchmarks/Latencies/

Contains source-code for microbenchmark for evaluating L1 Cache, L2 Cache, and DRAM/MCDRAM access Latencies.

Usage

make
./run.sh $numa_region

Where $numa_region is the numa-region you wish to run your benchmarks on. In Quadrant/All-to-All and Flat Mode, 0 is DRAM, and 1 MCRAM.

/Benchmarks/Memory Bandwidth/

Contains source-code for STREAM Benchmark purposed for Knights Landing. STREAM Courtesy of John McCalpin @ https://www.cs.virginia.edu/stream/

Usage

./run.sh $numa_region

Where $numa_region is the numa-region you wish to run your benchmarks on. In Quadrant/All-to-All and Flat Mode, 0 is DRAM, and 1 MCRAM.

/Benchmarks/Tools/

Contains small utility application for converting Cycles to NanoSeconds

/Docs/

Contains source-control files for the dissertation and results associated with the dissertation.