Coder Social home page Coder Social logo

fvm-risc's Introduction

FVM-RISCV

Update: some references specific to Cloverleaf are here

Update: some references specific to MFC are here

Step 0: What we are doing

  • Testing different architectures for a specific computational method (FVM)

    • Method: Finite volume method (solves hyperbolic PDEs that are conservation laws)
      • Good example problems

        • Compressible flow equations: Euler equations, which is just a simpilification of Navier--Stokes in the no-viscosity limit
        • Burgers' equation
      • There are different finite volume methods

        • Examples
          • Standard linear finite volume
          • Flux limiters
          • Slope limiters
          • Godunov methods
          • Reconstruction schemes (MUSCL/WENO) + Riemann solvers (HLL/HLLC/Roe/etc.)
        • References
          • Wikipedia/Scholarpedia
          • Books:
            • In the Box -> People/Spencer/finite_volume_methods or books/finite_volume
            • OR Search "Leveque" on the Zotero
  • We want to take a rather straightforward implementation of the above method and benchmark/test it on

    • Different hardware (Intel CPU, AMD CPU, different NVIDIA GPU, etc.)

      • This is also why we applied for access to CRNCH/ROGUES gallary (they have wacky stuff), like ARM CPUs (a couple different ones, actually)
      • Also hope for AMD GPU, but not sure yet
    • Want the implementation to be sufficiently straightforward that we can mess around "a bit" with

      • Method: Meaning different FVM variations (per above)
      • Optimization: Meaning tiling, and other algorithmic optimizations one might make for a given architecture, or just in genereal

Step 1: Identify benchmarks (STATUS: COMPLETE)

Update: This step is done. Cloverleaf has been selected as option 1, in particular the Cpp port from the Bistol HPC group. More documentation here

Step 1.5: Document them (STATUS: COMPLETE)

Document

  • what each benchmark is capable of
  • what hardware it should be able to run on (hopefully everything)
  • what methods it has in it
  • how "complicated it is"

Update: Cloverleaf documentation here

Step 2: Run (STATUS: COMPLETE)

  • Run each benchmark and each method within each benchmark using appropriate compilers on different hardware
    • Intel CPU gets Intel compiler, for example
    • Nvidia GPU gets Cuda compiler

Update: Start with ARM? Check the HW_TEAM channel in the MS Teams team. It looks like Hyesoon's students are also going to be running the code themselves in some of these places. According to Jeff Young the ARM computer should have a few different compiler options, including gcc and Cray at the very least. Please ping the Slack channel on novel arch. if you have questions.

Step 3: Optimization (STATUS: COMPLETE)

General

  • Identify optimization opportunities for the different codes
    • This will be partially hardware dependent (e.g., GPUs vs. x86 vs. ARM would likely see some different optimizations)
  • Implement some of them and see what happens

Cloverleaf

  • A tiling parameter called tiles_per_chunk is available
  • Specific, appropriate compiler flags options can be extracted from the relevant repositories and papers here
    • This is particularly important for ARM I believe

Next

If this step is completed sooner rather than later, we can do one of the following

  1. Implement our own code-level optimizations
  2. Move onto implementing a variation of the FVM in Cloverleaf and test it

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.