Tools

  • Benchmark Suites
    • LLVM Test Suite: In the LLVM test suite repository you can find a large collection of single-/multi-source benchmarks. It includes several free benchmark suites like: mediabench, olden, linpack, Dhrystone, etc. I found this collection very useful.
    • Graph 500 List: This is a collection of graph related memory bandwidth hungry applications.
  • Compilers
    • LLVM: The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them.
    • GCC: The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, Ada, and Go, as well as libraries for these languages (libstdc++, libgcj,…).
    • Omini Compiler Project: This is a source-to-source compiler for C and FORTRAN. It translates code fragments annotated with XScalableMP and/or OpenACC code to non-annotated (i.e., using only constructs present in the native language) parallel code.
    • Cetus Project: This is a C source-to-source compiler written in Java. One particular useful option of this compiler is the Dependence Analysis infrastructure.
    • OpenUH: This is a “HPC oriented” compiler based on the Open64 compiler infrastructure. It has a set of inter procedural and loop nest optimizations. It recognizes C, C++ and FORTRAN codes annotated with OpenMP 2.0. It has support for several x86 dialects and MIPS instruction sets.
  • Simulators
    • Graphite Multicore Simulator: Graphite is an open-source, distributed parallel simulator for multicore architectures. Graphite is designed from the ground up for exploration of future multicore processors containing dozens, hundreds, or even thousands of cores.
    • Gem5: This is a simulator infrastructure. Gem5 is able to simulate a full system, including architectural and microarchitectural components, and also a syscall emulation model (only usermode execution).
    • Sniper: This is a x86 manycore simulator based on the Graphite simulator. Sniper aims for fast x86 multisocket manycore architecture simulation. It also provides a set of reports for uncore events.
    • SPIM: A simple simulator for the MIPS instruction set.