This README file contains the following sections:
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
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 |
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.
To run the GEMX Python APIs on Nimbix Cloud, please follow the steps below:
git clone https://github.com/Xilinx/gemx
to clone the master branch of this repository
Important update:
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.
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.
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
This example is written by developers at
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 |
Oct2019 | 2.3 | Added .xclbin with FP32 FCN engine |