Git Product home page Git Product logo

hardcloud's Introduction

HardCloud - Intel HARP2 as an OpenMP Offloading Device.

The computing industry has recently proposed the use of FPGAs as a way to improve performance and energy efficiency in modern cloud clusters. Unfortunately, using such FPGA clusters is a very hard and complex task. In this context, we present HardCloud a novel and simple mechanism to offload computation to the FPGAs available in the Intel HARP2 platform. HardCloud extends OpenMP directives in such a way that the FPGA becomes just another OpenMP acceleration device that can be used directly from any user program. The example below shows a simple use of the syntax that was adopted.

#pragma omp target device(HARPSIM) map(to: A) map(from: B)
#pragma omp parallel for use(hrw) module(loopback)
// Code that represents the loopback bitstream
for (int i = 0; i < NI; i++) {
    B[i] = A[i];
}

Documentation, Installation, and Configuration

All the information is provided in the Wiki.

hardcloud's People

Contributors

ciroceissler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

hardcloud's Issues

any idea for zero copy?

The latest version of MPF added the functionality to automatically pin pages in FPGA page table when AFU accesses them. This makes it possible for zero copy in Hardcloud.

check clause

A code example of OpenMP check clause use:

#pragma omp target device(HARP) map(to: X) map(from: Y)
#pragma omp parallel for use(hrw) module(myhrw) check
for (int i = 0; i < size; i++) {
  Y[i] = f(X[i]);
}

The implementation of the proposed technique consists of modifying the Clang OpenMP
runtime code generation to create LLVM intermediate representation (IR) to verify the
results. Moreover, besides the offloading, the new IR transforms the code to execute the
software in the host and write the results in a temporary variable. After the device finishes the
computation, a match function, also inserted, will compare the device output to a temporary
variable.

Finally, a message will inform the user if any error occurs during this comparison and
could provide additional information, like power consumption and cache miss in Intel HARP
platform. When comparing the results, the target device might work with a different precision
than the host device because of that if the values mismatch, an error percent will be
shown.

fifo overflow bug

In multiple example designs, the fifo in the requestor may overflow if the TX channel is full. I'm trying to solve this problem and I hope we can have some discussion. Thanks.

variables map between OpenMP and HardCloud buffer

Consider the following example:

#pragma omp target device(HARPSIM) map(to: A, B, C) map(from: D, E, F, G, H)
#pragma omp parallel for use(hrw) module(loopback)
for (int i = 0; i < NI; i++) {
  // some code
}

In the hardware side, the IP developer expect the pattern below:

Variable Buffer Number
A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7

However, this is not true because depend of the code inside the for loop.

Synopsys VCS support

If you follow the tutorial, the compilation will crash. The makefile only supports ModelSim AE 10.5c.

The temporary solution:

  • if your project don't use vhdl, remove line 8 of file hardcloud/ase/ase_sources.mk
  • change the relative path from '../../' to '../' in hardcloud/samples//hw/vlog_files.list

I will modify the files to support the Synopsys VCS simulator.

tks!

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.