Giter Club home page Giter Club logo

gemx's Introduction

General Matrix Operation

This README file contains the following sections:

  1. OVERVIEW
  2. SOFTWARE TOOLS AND SYSTEM REQUIREMENTS
  3. DESIGN FILE HIERARCHY
  4. BUILD GEMX-BASED EXAMPLE APPLICATIONS
  5. SUPPORT
  6. LICENSE AND CONTRIBUTING TO THE REPOSITORY
  7. ACKNOWLEDGEMENTS
  8. REVISION HISTORY

1. OVERVIEW

GEMX is a General Matrix Operation library, which is used for accelerating BLAS-like matrix operations on SDAccel supported FPGA cards. This library includes three components: an engine library, a host code compiler and an application or system building environment. The engine library consists of a set of C++ templates with BLAS-like function interfaces for realizing matrix operations on FPGAs. The host code compiler compiles the host code matrix function calls into a sequence of instructions for triggering matrix operations on FPGAs. The building environment utilizes GNU make flow to automate the FPGA and host code image generation process. It also allows users to configure different aspects of the system, e.g. FPGA platform, number of engines implemented in the FPGA image and etc. For detailed information about GEMX engine design, please refer to GEMX_ENGINE_UG

2. SOFTWARE AND SYSTEM REQUIREMENTS

Board DSA Name Software Version
Xilinx VU9P xilinx:vcu1525:dynamic:5_1 SDx 2018.2
Xilinx ALVEO xilinx:u200:xdma:201830_2 SDx 2019.1

3. DESIGN FILE HIERARCHY

Source code for building FPGA and host code images is located in the gemx/src directory. gemx/Makefile is used to build FPGA and host images with different configurations. gemx/hls_config.tcl is used to configure the hls compilation options. gemx/run-hls.tcl is used to create vivado_hls project from cpu emulation results. gemx/MLsuite_MLP provides Python bindings for GEMX engines. Those python bindings allow users to offload Python-based Matrix operations to GEMX engines.

4. Running GEMX Python APIs on Nimbix Cloud

To run the GEMX Python APIs on Nimbix Cloud, please follow the steps below:

  • run
git clone https://github.com/Xilinx/gemx

to clone the master branch of this repository

  • follow the user guide SDx On Nimbix to login to your Nimbix account
  • launch application "Xilinx SDAccel Development & Alveo FPGA 2018.3" and select "Desktop Mode with FPGA"
  • choose machine type "16 core, 128 GB RAM, Xilinx Alveo U200 FPGA (nx5u_xdma_201830_1)"
  • copy the gemx/MLsuite_MLP directory to the Nimbix machine, and navigate to the MLsuite_MLP directory
  • following GEMX Python APIs to setup Python environment on the Nimbix machine and run GEMX Python APIs.

5.BUILD GEMX-BASED EXAMPLE APPLICATIONS

A set of make commands are used in the verify.sh to demonstrate the GEMX engine usage with xilinx:u200:xdma:201830_2 DSA. Before compiling and building FPGA and host images, make sure SDAccel 2019.1 envioronment variales are set up properly and navigate to gemx/ directory, and enter command:

./verify.sh

enter one of the build process names (sw_em, hw_em or hw) and one of the four engine names (gemm, spmv or fcn) when the command line prompts for input. File gemx/set_env.sh provides an example about how to set up SDAccel 2019.1 environment variables.

6. SUPPORT

For more information about SDAccel check the SDAccel User Guides

For questions and to get help on this project or your own projects, visit the SDAccel Forums.

7. LICENSE AND CONTRIBUTING TO THE REPOSITORY

The source for this project is licensed under the Apache 2.0 license

To contribute to this project, follow the guidelines in the Repository Contribution README

8. ACKNOWLEDGEMENTS

This example is written by developers at

9. REVISION HISTORY

Date README Version Description
Oct2017 1.0 Initial Xilinx Release
Mar2018 2.0 Updated to SDx 2017.4
Sep2018 2.1 Updated to SDx 2018.2
May2019 2.2 Updated to SDx 2019.1

gemx's People

Contributors

kamranjk avatar yifei410 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.