Giter Club home page Giter Club logo

cloverleaf_serial's Introduction

CLoverLeaf_Serial

A C port of the serial (no-MPI) version of CloverLeaf, for use with TAFFO (Tuning Assistant for Floating Point to Fixed Point Optimization).

Original repository: UK-MAC/CloverLeaf_Serial

Performance

Performance should be on par with the Fortran version using C kernels.

Building

Building is done using GNU Make. See the Makefile available targets and options.

Motivation

This port was created as part of an individual university project. The goal of the project was to apply TAFFO annotations to the CloverLeaf benchmark, to compare the possible peformance gains from replacing floating point variables with fixed point ones. As TAFFO only supports C/C++, a C port of CloverLeaf was needed. The port was done by hand, without the use of any automatic tools. It should also be feature complete with the Fortran version, and an attempt was made to keep both the code and the output as similar as possible. For this reason, possible performance optimizations were not performed (e.g. replacing the indexing macros in the kernels).

TAFFO Usage

To ease the process of annotating the code, an effort was made to be able to generate annotations automatically. A rudimental usage tracker is able to periodically collect data about the program's working arrays, thus being able to report the minimum and maximum values used per-array. It can then print out those values as a human-readable report, or as ready-to-use TAFFO annotations, which can then be applied to the code directly.

To enable the usage tracker, user callbacks need to be enabled at compile time:

make USER_CALLBACKS=1

Usage info will be saved to the usage_tracker.txt file.

User Callbacks

User callbacks are functions that can be used to run custom code at specific execution points in the program, allowing for user defined code to be executed without having to modify the original source. For example, they are used to run the usage tracker.

cloverleaf_serial's People

Contributors

lynxnb 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.