Skip to content

OpenCAPI Transprecision Acceleration Framework: develop an accelerator with OpenCAPI technology

License

Notifications You must be signed in to change notification settings

oprecomp/oc-accel-tp

 
 

Repository files navigation

OC-Accel Transprecision Framework

OpenCAPI Transprecision Acceleration Framework, abbreviated as OC-Accel-TP, is a framework that helps you implement your FPGA acceleration solutions with OpenCAPI technology.

The framework is a fork of OC-Accel Framework, that also includes some examples with transprecision capabilities. The concept of transprecision computing is an initiative of OPRECOMP H2020 project.

Documentation

https://opencapi.github.io/oc-accel-doc/

Dependencies

  • On a X86 server:
    • Install Xilinx tools (tested with Vivado 2019.2) with the desired fpga family (used by the card you want to test).
    • set XILINX_ROOT and XILINXD_LICENSE_FILE accordingly and source Xilinx setting shell:
    export XILINX_ROOT=/opt/Xilinx/xxxx.y   # setup your xilinx tools install dir. eg xxxx.y = 2019.2
    export [email protected]	# Vivado license
    . $XILINX_ROOT/settings64.sh
  • On a POWER9 server:
    • Install lib-ocxl on server:
      sudo apt-get install libocxl-dev # for Ubuntu
      sudo yum install libocxl-devel   # for RHEL

Quick Start, Step 1: Simulate and Build FPGA on x86:

  • Clone OpenCAPI Simulation Engine and OC-Accel framework
    git clone https://github.com/OpenCAPI/ocse.git
    git clone https://github.com/OpenCAPI/oc-accel.git
    cd oc-accel
    make snap_config  ## this uses an opensource Kconfig menu
  • In the menu:
    • Select a card and an example (eg: hls_helloworld_1024) to test (use space bar)
    • Exit the menu
  • Now run a simulation on X86 with default xsim simulator
    make sim     ## (or make sim_tmux if no xterm available)
  • In the terminal run:
    snap_helloworld_1024 # the default help will propose the simulation example 
  • Run the proposed test and check it passes ok
  • To generate the flash content run:
    make image

This produces a .bin file (it is the full description of the FPGA content) to be loaded in memory of the chosen OC card plugged in a POWER9 server. File is located in ~/oc-accel/hardware/build/Images/

Quick Start, Step 2: Program and Test on POWER9 server:

  • Card flash programming:
    • Card is new : Check card supplier procedure. Some allow PCIe flash programming, other require JTAG probe.
    • Card is already programmed with a previous OC binary:
      • Transfer the .bin file into the POWER server by any mean (scp, ftp, ...)
      • Use OpenCAPI Utils tools to load the oc_date_XX_hls_helloworld_1024_YY_OC-card_YY.bin file.
        sudo git clone https://github.ibm.com/OC-Enablement/oc-utils.git
        sudo make install # default installation
      • Flash the card memory.
        sudo oc-flash-script oc_date_XX_hls_helloworld_1024_YY_OC-card_YY.bin
  • Install oc-accel on the POWER server and compile code:
    git clone https://github.com/OpenCAPI/oc-accel.git
    cd oc-accel
    make all
  • Run the default test:
    ./actions/hls_helloworld_1024/tests/hw_test.sh
  • Check results

Contributing

This is an open-source project. We greatly appreciate your contributions and collaboration. Before contributing to this project, please read and agree to the rules in

To simplify the sign-off, you may want to create a ".gitconfig" file in you home by executing:

$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]

Then, for every commit, use git commit -s to add the "Signed-off by ..." message.

By default the git repository is read-only. Users can fork the snap repository, make the changes there and issue a pull request. Even members with write access to this repository can't commit directly into the protected master branch. To contribute changes, please create a branch, make the changes there and issue a pull request.

Pull requests to merge into the master branch must be reviewed before they will be merged.

About

OpenCAPI Transprecision Acceleration Framework: develop an accelerator with OpenCAPI technology

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Verilog 37.9%
  • SystemVerilog 36.8%
  • C 10.2%
  • Shell 4.1%
  • Tcl 4.1%
  • C++ 2.2%
  • Other 4.7%