GithubHelp home page GithubHelp logo

rc4ml / fpganic Goto Github PK

View Code? Open in Web Editor NEW
110.0 3.0 16.0 63.79 MB

FpgaNIC is an FPGA-based Versatile 100Gb SmartNIC for GPUs

CMake 0.39% Shell 0.09% Python 0.08% C++ 6.02% Makefile 3.18% C 8.25% Cuda 5.72% TeX 76.28%
dpu fpga gpu nvidia smartnic

fpganic's Introduction

FpgaNIC

FpgaNIC is an FPGA-based, GPU-centric, versatile SmartNIC

1, that enables direct PCIe P2P communication with local GPUs using GPU virtual address,

2, that allows GPUs to directly manipulate FpganIC without CPU intervention,

3, that provides reliable 100Gb network access to remote GPUs, and

4, that allows to offload various complex compute tasks to a customized data-path accelerator for line-rate in-network computing on the FPGA, thereby complementing the processing at the GPU.

image

Besides, FpgaNIC enables efficient efficient FPGA-GPU co-processing.

image

Check-list

  1. At least two nodes, each has a GPU that supports NVIDIA GPUDirect and a Xilinx U280 or U50 card.

  2. Each FPGA card is connected to a 100Gbps Ethernet switch.

  3. FPGA card and GPU are connected to the same PCIe switch.

  4. Host OS: Linux 4.15.0-20-generic

  5. Nvidia Driver Version: 450.51.05

  6. CUDA Version: 11.0

7, Make sure that each server has enabled Hugepages.

How to run Experiment: Three steps.

There are three steps to run each experiment. Before running FpgaNIC, please clone the source code:

$ git clone https://github.com/RC4ML/FpgaNIC

Hardware: FPGA Bitstream

  1. $ cd bitstream
  1. Using vivado and flush the bitstream to every FPGA card.

  2. Every time you download the bitstream to the FPGA, you have to reboot the machine, do not forget to reinstall xdma driver and GDR driver.

Software: Driver Installation

  1. $ cd FpgaNIC/driver

  2. $ make && sudo insmod xdma_driver.ko

  3. $ cd FpgaNIC/gdrcopy

  4. $ sudo ./insmod.sh

  5. Note that you need to reinstall xdma driver and gdr driver every time you reboot your machine.

Software: Running Application Code

  1. $ cd FpgaNIC/sw && mkdir build && cd build

  2. $ cmake ../src

  3. $ make

  4. $ sudo ./dma-example -b 0

  5. $ Above command would report GPU read CPU memory latency, for more details, please refer to sw/README.md

Cite this work

If you use it in your paper, please cite our work

@inproceedings{wang_atc22,
  title={FpgaNIC: An FPGA-based Versatile 100Gb SmartNIC for GPUs},
  author={Zeke Wang and Hongjing Huang and Jie Zhang and Fei Wu and Gustavo Alonso},
  year={2022},
  booktitle={2022 USENIX Annual Technical Conference (ATC)},
}

fpganic's People

Contributors

carlzhang4 avatar qqwert0 avatar wangzeke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fpganic's Issues

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.