/clambench

Trying to figure various CPU things out

Primary LanguageAssemblyApache License 2.0Apache-2.0

Microbenchmarks

Trying to figure various CPU (or GPU) things out.

Basically my playground to microbenchmark various CPU-related things like ROB/register file sizes, lock/cache coherency latency, and cache/memory performance. This repo is loose collection of various experiments and is more of a playground than a well maintained piece of software. As such, various benchmarks may not work, or may not even compile. They're also not well documented and details of what's being tested may not be intuitive. Due to time constraints and real life priorities I won't be able to maintain this repo to an acceptable standard for public use.

Feel free to try running the stuff here, but I highly suggest writing your own code because that'll provide a better understanding of the theory behind the benchmarks. Consider checking out https://github.com/travisdowns/robsize or https://github.com/Veedrac/microarchitecturometer.

Building Clammicrobench with Generated Code

Get NASM (https://www.nasm.us/) and make sure it's in your path. Then things should build under Visual Studio 2022.

Some microbenchmarks have the source code and assembly generated by C# code, to avoid crazy stuff like self modifying code. For clammicrobench, build/run the AsmGen project. Pass "autocopy" on the command line to have it automatically place generated ASM files for Visual Studio. Then, the clammicrobench project should build.