View Code? Open in Web Editor
NEW
Micro-benchmarks of hyperthreading
CMake 8.63%
C++ 72.77%
Shell 2.76%
Python 15.84%
hyperthreading's Introduction
Multi-threaded kernel functions
- Kernels run on any number of threads
- Each stress the CPU in slightly different ways
- Timing and plotting done with a quick python script.
- Varies number of threads from 1-8
- Plot speedup vs number of threads per kernel
![./figs/add.png](./figs/add.png)
![./figs/div.png](./figs/div.png)
![./figs/mem.png](./figs/mem.png)
![./figs/skylake_scheduler.png](./figs/skylake_scheduler.png)
Multiple kernel benchmarks
![./figs/div_add.png](./figs/div_add.png)
![./figs/add_mem.png](./figs/add_mem.png)
![./figs/div_mem.png](./figs/div_mem.png)
![./figs/nbody.png](./figs/nbody.png)
![./figs/nbody_add.png](./figs/nbody_add.png)
![./figs/nbody_mem.png](./figs/nbody_mem.png)
Building and running IACA
- mkdir build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release ..
- make
Running intel architecture code analyser
- Uncomment IACA_BEGIN and IACA_END from the kernel code
- cmake –build build
- iaca/iaca -arch HSW build/libkernels.a