Giter Club home page Giter Club logo

blandwidth's Introduction

Blandwidth r1

Blandwidth is a compact memory bandwidth tester for x64 CPUs running Windows. It was developed during creation of the Star Code Galaxy programming course because publicly available per-core bandwidth measurements seemed scarce. It is difficult to tell students to learn about their processor's per-core memory bandwidth numbers when nobody seems to publish them!

Blandwidth is designed to determine the sustainable real bandwidth from the processor to L1, L2, L3, and main memory during single thread and multiple thread workloads. It is meant to produce numbers programmers can use to create realistic estimates of how much read, write, or read-write bandwidth their algorithms can expect for each specific processor and number of concurrent threads.

Building

To build Blandwidth, install either Visual Studio or CLANG, cd to the blandwidth directory and run:

build.bat

Note that Blandwidth on Windows has no prerequisites and no dependencies other than the user32.lib and kernel32.lib import libraries. It does not require a C runtime library of any kind, or any other library.

If your system supports llvm-mca, the build.bat file will run it and write into the build directory a cycle analysis of the memory routines. This can be useful for ensuring that your version of the C compiler is generating efficient memory test routines.

Usage

To run Blandwidth, run a release executable and pipe the output to the file where measurements should be stored, eg.:

build\blandwidth_msvc_release.exe > intel_core_i9_test.csv

During testing, it will write summary messages to stderr which you can use to track its progress. Once complete, it will write a CSV to stdout with the statistics gathered for each test.

Limitations

As of r1, Blandwidth does not test CPU core patterns, so it does not properly discover all interesing memory bandwidth differences. As time permits, in future versions it would be nice to use core-locked threads and test different distribution patterns to see which patterns produce the best and worst bandwidth on NUMA architectures.

blandwidth's People

Contributors

cmuratori avatar jimmylefevre avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.