Parallel Programming for FPGAs
University of California, San Diego
arXiv:1805.03648 [cs.AR], (9 May 2018)
@article{kastner2018parallel,
title={Parallel Programming for FPGAs},
author={Kastner, Ryan and Matai, Janarbek and Neuendorffer, Stephen},
year={2018},
month={may},
archivePrefix={"arXiv"},
primaryClass={cs.AR}
}
This book focuses on the use of algorithmic high-level synthesis (HLS) to build application-specific FPGA systems. Our goal is to give the reader an appreciation of the process of creating an optimized hardware design using HLS. Although the details are, of necessity, different from parallel programming for multicore processors or GPUs, many of the fundamental concepts are similar. For example, designers must understand memory hierarchy and bandwidth, spatial and temporal locality of reference, parallelism, and tradeoffs between computation and storage. This book is a practical guide for anyone interested in building FPGA systems. In a university environment, it is appropriate for advanced undergraduate and graduate courses. At the same time, it is also useful for practicing system designers and embedded programmers. The book assumes the reader has a working knowledge of C/C++ and includes a significant amount of sample code. In addition, we assume familiarity with basic computer architecture concepts (pipelining, speedup, Amdahl’s Law, etc.). A knowledge of the RTL-based FPGA design flow is helpful, although not required.
May 12, 2018 by hgpu