Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Examples of projects using FPGA and GPUs

This repository contains several projects examples showing how to make usage of FPGA accelerators and GPU devices on IBM POWER9 server. Those examples shows how to deals with these different accelerators in one main application using SNAP framework and Nvidia CUDA features (Unified memory, streams, synchronization)

Prerequisites :

  • User already familiar with SNAP (An open source framework that allows to easily take full advantage of CAPI technology on IBM POWER systems)
  • User has gone through SNAP tutorials and is familiar with SNAP workflow and terminology.
  • User is familiar with CUDA
  • All FPGA Images have been precompiled on x86 server using SNAP
  • SNAP is installed on the server
  • Nvidia driver and toolkit are installed on the server

Examples list

Example Description Key Concepts / Keywords
simple-vector-generator/ Simple example showing how an FPGA and a GPU can exchange data using SNAP Framework and NVIDIA CUDA Key Concepts
- Cross compilation
- SNAP Framework utilization
- CUDA kernel definition and memory copy handling
read-write-example/ This example shows different ways to efficiently exchange data between an FPGA and a GPU and to measure performance of each methods Key Concepts
- Cross compilation
- CUDA Streams
- Asynchronous memory copy and processing

Projects structure

project/
  ├── README.md
  ├── Makefile
  ├── include/
  │   ├── kernel.h
  │   └── ...
  └── src/                          # Contains all project sources
      ├── fpga/                     # Contains all FPGA related sources
      |   ├── Makefile (fpga)
      │   ├── action_sw.c
      │   ├── action_runner.c       # File to run only the FPGA related part of the project
      |   └── images                # FPGA images directory
      |       ├── primary.bin
      |       └── secondary.bin     
      ├── gpu/                      # Constains all GPU related sources
      │   ├── Makefile (gpu)
      │   ├── kernel.cu
      |   └── kernel_runner.cu      # File to run only the GPU related part of the project
      └── host/                     # Contains all HOST related sources
          ├── Makefile (host)
          ├── application_main.c    # File to run the all project (FPGA + GPU + HOST)
          ├── application_1.c
          ├── application_2.c
          └── application_3.c