Introduction to FPGAs for Software Engineers Machine Learning

Machine Learning Technology Artificial Intelligence Technology Natural Language Processing Technology Semantic Web Technology Search Technology DataBase Technology Ontology Technology Algorithm Digital Transformation Technology User Interface and DataVisualization Workflow & Services IT Infrastructure Computer Hardware Navigation of this blog
Summary

An FPGA (Field Programmable Gate Array) is a programmable hardware device that can perform high-speed arithmetic operations. More specifically, as described in “Computing Elements and Semiconductor Chips that Compose Computers” computers are able to perform calculations by combining transistor switches, and FPGAs are hardware programmed to perform this combination (how to connect them).

FPGAs are also energy-efficient devices. By applying machine learning to FPGAs, it is expected to realize high-speed, real-time data processing that cannot be achieved with conventional CPUs.

Machine learning applications using FPGAs include image recognition, speech recognition, and natural language processing. Transformer described in Overview of Transformer Models, Algorithms, and Examples of Implementations) is often used for natural language processing, and FPGA implementations of these are used.

Challenges in applying FPGAs to machine learning include the fact that FPGAs are difficult to program, requiring specialized knowledge, and the high cost of FPGA boards and tools. Therefore, machine learning using FPGAs is limited to cases where large data sets or high-speed processing is required.

Here, we describe the application of machine learning to FPGAs based on “Introduction to FPGAs for Software Engineers: Machine Learning”.

For hardware approaches to machine learning and AI other than FPGAs, see “Thinking Machines: Machine Learning and Its Hardware Implementation” and “Applying AI to Semiconductor Design Processes and Semiconductor Chips for AI Applications.

Introduction to FPGAs for Software Engineers Machine Learning

FPGA stands for Field Programmable Gate Array and refers to reconfigurable hardware, which includes the logic, DSP, RAM, and dedicated hardware macros that make up the circuitry, and the FPGA industry is currently dominated by devices from Xillinx and Intel ( formerly Altera, acquired by Intel in 2015) dominate the market.

The technique of developing hardware such as FPGAs and ASICs from software has been around for a long time and is commonly referred to as high-level synthesis in the hardware industry.

In recent years, there have been presentations at AI and deep learning workshops on FPGA-related community-based workshops where FPGAs are also developed from software using high-level synthesis. High-level synthesis has become more prominent because the price of high-level synthesis tools themselves has come down, and tools that enable high-level synthesis not only from C but also from languages such as Java, Python, and buby have appeared, making it possible to use FPGAs without going to the trouble of using dedicated languages (conventional This means that there is no longer a need to use specialized languages (such as Verilog, HDL, VHDL, etc.) in order to use FPGAs.

Some software engineers dislike the mere mention of the word “hardware,” but thanks to the introduction of various tools like these, the threshold for high-level synthesis has been lowered and its use is increasing.

In addition, hardware acceleration using FPGAs in conjunction with software is being used not only for learning algorithms such as machine learning and deep learning for image recognition, but also in a wide variety of applications, such as in combination with search engines.

Advantages of using FPGAs include unique circuit design and parallel processing for higher speed.

Details are given below.

Chapter 1 Programmable Hardware

Basic Knowledge: What is FPGA
What FPGAs are good at
Designing Your Own Circuits
Parallel Processing
Differences between CPUs and FPGAs
Software Processing in CPUs
Hardware Processing in FPGAs
Processing Performance
Processing on CPU
Processing in FPGA
Pipelining
Pipelining in CPU
Pipelining in FPGA
Length of execution by interrupt
Variable bit length
When converting software to FPGA
FPGA Development Language (HDL: Hardware Description Language)
Verlog HDL
VHDL
FPGA Processing Structure
Combination Circuit
Flip-flops (registers)
FPGA Development Flow

Chapter 2 Development Environment

What is SDSoC
Development Environment (Linux Environment)
Download SDSoC
Installation
SDx Development Environments
Select Destination Directory
Installation Summary
Installation Progress
Installation Complete
Vivado Manager
Obtain License
Startup and License Setup
Evaluation Board
ZYBO
MicroZed
ZC702
ZC706
ZCU102
ZedBoard

Chapter 3 Hardware Programming (Getting Started)

Creating a Project
Creating a project
Creating Source Code
Compile
Operation check on the actual device
Specify functions to be FPGA

Chapter 4 Machine Learning Software

Establish the algorithm
Source Code
Composition of functions
Checking software operation

Chapter 5 Hardware Programming (Embedded)

Application to SDSoC
FPGA-ization of functions
Specifying the transfer method in SDSoC pragma
Moving up one hierarchy to FPGA
FPGAing two functions
Target upper function CNNLayer

Chapter 6 Hardware Programming (Tuning)

Understanding the algorithm
Trace FPGA-ized functions
Modification of data access
Tracing upper functions
Memory access
Refactoring of source code
Memory Access and Refactoring Example
Generated circuit size
Application of HLS pragma
Emulator

コメント

Exit mobile version
タイトルとURLをコピーしました