图书目录

目录

第1章绪论1

1.1异构计算系统1

1.2OpenCL2

1.3FPGA3

1.4FPGA+CPU异构计算系统5

1.5HDL和OpenCL6

1.5.1OpenCL的优点7

1.5.2OpenCL的缺点7

1.6人工神经网络8

1.6.1人工神经网络的基本概念8

1.6.2人工神经网络的基本特征9

1.6.3人工神经网络的应用10

习题112第2章TensorFlow基础知识及运行环境搭建14

2.1TensorFlow简介14

2.2TensorFlow两步编程模式14

2.3TensorFlow 两步编程模式实例15

2.3.1定义计算图的基本操作15

2.3.2运行计算图的基本操作18

2.4TensorFlow环境搭建23

2.4.1软件安装23

2.4.2TensorFlow软件运行25

2.4.3计算图例程运行实例25

习题230第3章TensorFlow实现神经网络模型训练与测试31

3.1神经网络训练与测试的基本概念31

3.1.1神经网络的训练31

3.1.2神经网络的测试32

3.2基于TensforFlow训练神经网络实现MNIST数据集识别32

3.2.1MNSIT数据集32

3.2.2Softmax Regression模型33

3.2.3MNIST数据识别的Softmax Regression神经网络模型35

3.2.4MNIST数据识别的卷积神经网络模型40

3.3MNIST数据集转换49

3.3.1将数据集转换为以txt文件保存的数据49

3.3.2将数据集转换为以bmp文件保存的图片50

3.3.3将bmp转换为tfrecords格式54

3.4读取tfrecords格式数据实现MNIST手写字体识别56

3.4.1Softmax Regression模型56

3.4.2卷积神经网络模型58

习题361第4章OpenCL基础63

4.1OpenCL标准框架63

4.2OpenCL基本概念基础64

4.3OpenCL程序的组成部分65

4.4OpenCL框架的4种模型66

4.5编写第一个OpenCL程序71

4.5.1kernel程序71

4.5.2host程序72

4.6OpenCL基本知识点78

4.6.1kernel函数格式78

4.6.2kernel编程模式79

4.6.3kernel地址限定符79

4.6.4kernel语句描述80

4.6.5kernel数据类型80

4.6.6kernel编程限制80

习题480第5章面向Intel FPGA的OpenCL运行平台搭建82

5.1搭建OpenCL平台的软硬件要求82

5.2面向OpenCL应用的DE10_nano开发板简介83

5.3平台所需软件下载84

5.3.1Quartus Prime Standard下载84

5.3.2Intel FPGA SDK for OpenCL下载85

5.3.3Intel SoC FPGA EDS下载85

5.4平台所需软件安装86

5.4.1安装Quartus Prime Standard Edition+Intel FPGA SDK for 

OpenCL86

5.4.2安装SoCEDS91

5.4.3安装DE10_nano BSP95

5.5环境变量设置96

5.5.1环境变量设置步骤96

5.5.2环境变量测试97

5.6编译OpenCL kernel98

5.7编译host 程序98

5.8烧写img文件到SD卡(在Windows系统下完成)99

5.9minicom驱动安装与测试101

5.9.1minicom驱动安装101

5.9.2minicom 使用测试102

5.10hello world kernel运行测试103

5.11DE10_nano与PC交换数据104

习题5108第6章单层神经网络算法模型的FPGA实现流程109

6.1基于OpenCL的神经网络算法设计与FPGA实现的基本流程109

6.2无隐形层的简易神经网络算法原理110

6.3神经网络的TensorFlow实现及训练111

6.4TensorFlow 框架下输入数据的转换114

6.5神经网络算法的OpenCL实现115

6.5.1kernel代码编写及编译115

6.5.2host代码编写及编译116

6.6数据移植复制到FPGA开发板120

6.7FPGA运行神经网络123

6.8kernel report.html文件查看124

6.8.1高层设计报告布局124

6.8.2系统概要125

6.8.3迭代分析127

6.8.4资源分析128

6.8.5系统视图131

6.9log文件查看FPGA资源使用估计信息133

习题6133第7章单层神经网络算法的kernel程序实现方式分析比较135

7.1批量读取输入数据的OpenCL程序135

7.1.1kernel程序135

7.1.2host程序136

7.1.3执行结果142

7.2神经网络算法的不同kernel代码实现对比142

7.2.1single work item和NDRange(private)142

7.2.2local和private(single work item)145

7.2.3local和private(NDRange)148

7.2.4single work item和NDRange(local)150

7.2.5float和char(single work itemlocal)154

7.2.6float和char(NDRangeprivate)156

7.3神经网络算法的ARM与FPGA实现方式对比159

7.3.1ARM和FPGA(float 数据类型)159

7.3.2ARM和FPGA(char数据类型)162

7.4host代码与kernel的对应165

习题7165第8章具有一个隐形层的神经网络算法模型的OpenCL实现166

8.1一个隐形层的简易神经网络算法原理166

8.2具有一个隐形层的神经网络的TensorFlow实现及训练168

8.3具有一个隐形层的神经网络算法的OpenCL实现171

8.3.1ARM实现171

8.3.2single work item格式,一个kernel171

8.3.3NDRange格式,一个kernel174

8.3.4single work item格式,两个kernel176

8.3.5NDRange格式,两个kernel178

8.3.6single work item格式,两个kernel,channel181

8.3.7single work item格式,两个kernel,pipe182

习题8186第9章简易卷积神经网络的OpenCL实现187

9.1简易卷积神经网络算法结构与原理187

9.2简易卷积神经网络的TensorFlow实现及训练189

9.3简易卷积神经网络算法的OpenCL实现194

9.3.1NDRange实现194

9.3.2single work item实现206

习题9218第10章上机实验219

实验1TensorFlow基础命令219

实验2TensorFlow实现简易神经网络模型的训练与测试219

实验3TensorFlow实现卷积神经网络模型的训练与测试220

实验4TensorFlow实现MNIST数据集转换220

实验5读取tfrecords格式数据并实现MNIST手写字体识别220

实验6DE10_nano开发板运行OpenCL程序220

实验7DE10_nano与PC数据交换221

实验8OpenCL程序编译221

实验9编写一个OpenCL程序221

实验10单层神经网络算法模型的FPGA实现流程221

实验11单层神经网络算法的kernel程序的不同实现方式221

实验12具有一个隐形层的神经网络算法模型的OpenCL实现222

实验13简易卷积神经网络算法模型的OpenCL实现223

参考文献224