老莫

新书预告——FPGA异构计算目录抢先看

0
阅读(28246)

书名:FPGA异构计算——基于OpenCL的开发方法


第一部分 基于OpenCLFPGA开发方法


第一章 FPGA异构计算

这一章引入了OpenCL开发方法。不论你以前是不是FPGA开发者,本章都值得阅读。本章首先介绍了异构计算的发展历程,引入FPGA异构平台。其次阐述了FPGA的发展史及其内部结构原理和演变历史,对FPGA有更深入的理解,可以编写更高效的程序。最后,介绍了传统的FPGA开发方法及流程(主要为HDL编程,原理图方式不做介绍),针对HDL开发方法的不足,引入OpenCL开发方法及开发流程。通过阅读本章,你会喜欢上用OpenCL开发FPGA的开发方式。

10~17页。

1.1 异构计算的发展

1.2 FPGA发展简介

1.2.1 FPGA发展史

1.2.2 FPGA结构的演变

1.3 HDLOpenCL

1.3.1 传统HDL开发方法

1.3.2 OpenCL开发方法

第二章 OpenCL基础

这一章介绍OpenCL的基础知识。如果你以前是一名FPGA开发工程师,而且没有接触过OpenCL,那么仔细阅读本章是非常有必要的;如果你已经掌握了OpenCL,那么你可以跳过本章。本章首先介绍OpenCL的发展历程,使你对OpenCL的今生前世有一个大致的了解。其次介绍OpenCL规范的核心——四层模型,以及OpenCL编程时常用到的事件和同步机制。通过阅读本章,你将能够理解OpenCL的运行机制,这时你就已经一只脚踏在了OpenCL这扇门上。如果你想掌握OpenCL的具体细节,那么可以阅读《OpenCL编程指南》和OpenCL规范(权威)。

22~28页。

2.1 OpenCL简介

2.2 OpenCL模型

2.2.1 平台模型

2.2.2 执行模型

2.2.3 存储模型

2.2.4 编程模型

2.3 OpenCL事件

2.4 OpenCL同步

第三章 基于OpenCLFPGA开发流程

这一章将主要讲述开发环境的搭建及开发流程。只要你以前没有用OpenCL开发过FPGA,那么都应该阅读本章。与用OpenCL开发GPU、用HDL开发FPGA的流程相比,用OpenCL开发FPGA的流程是完全不一样的。本章将介绍开发环境的搭建过程,并用实例讲解,依据特定的FPGA开发板的要求,搭建对应的开发环境,并进行相应的环境和工程配置。接着,详细阐述开发流程,并通过矩阵乘法这个示例讲解具体的开发过程,让你能掌握FPGAOpenCL开发流程。通过阅读本章,你将能够使用OpenCL开发简单的FPGA应用,踏在门上的这只脚将进入门内,只等另一只脚踏入。

23~32页。

3.1 搭建OpenCL开发环境

3.1.1 开发环境选择

3.1.2 开发环境搭建

3.2 开发流程

3.2.1 建立FPGA工程

3.2.2 编写源程序

3.2.3 调试内核

3.2.4 内核编译及下载

3.2.5 工程配置及运行

3.3 开发实例:矩阵加法/矩阵转置


第四章 FPGAOpenCL运行机制

这一章将主要讲述AlteraFPGA实现OpenCL的原理和细节。如果你想用OpenCL开发出更加高效的FPGA应用,那么了解FPGA实现OpenCL的原理和细节就是非常必要的,这正是本章的内容。本章将首先介绍FPGA实现OpenCL的原理框图,使你能先有一个大致的认识。接着介绍了存储访问机制、同步机制和线程调度机制,通过这些介绍,你将更加深刻地理解FPGA实现OpenCL的内部细节。最后讲述内核的实现机制,并给出示例介绍,通过这部分的学习你将能把内核代码与实现结构对应起来,帮助你写出更高效的内核程序。要想写出高效的程序,都必须掌握底层的运行机制,也许不同的FPGA厂商实现OpenCL的机制不完全一样,即使同一FPGA厂商也会对实现机制进行更改优化,但只要掌握了其中一种机制,你都可以很容易掌握其他的实现机制。通过本章学习,你将完全理解FPGA实现OpenCL的原理和细节,另一只脚也踏在了门槛上。

3428~48页。

4.1 基于FPGA的异构计算平台

4.2 访存机制

4.2.1 全局存储

4.2.2 本地存储

4.2.3 访存对齐

4.2.4 访存流化

4.3 同步机制

4.4 线程调度机制

4.5 内核实现机制

4.5.1 迭代控制

4.5.2 分支跳转

4.5.3 内核总体框图

4.5.4 示例:内核代码与实现结构


第五章 OpenCL程序优化

这一章将讲解用OpenCL开发FPGA的优化技术。如果你想对你的OpenCL程序进行深入优化,那么非常有必要学习本章。由于FPGA实现OpenCL的原理与GPU实现OpenCL的原理是完全不一样的,因而其优化技术也不尽相同。本章将介绍FPGA上能够使用的各种优化技术,并给出优化的原理及实例,让你对这些优化技术能有一个直观的感觉。这些优化技术是非常多的,因而本章最后给出了优化建议,帮助你采用一个更高效的优化过程。通过本章学习,你写出的内核将更加高效,且更能充分利用FPGA资源,你的脚将完全踏入门内,在用OpenCL开发FPGA这个方向,你就已经入门了。

2420~36页。

5.1 OpenCL优化概述

5.2 数据传输优化

5.3 存储访问优化

5.3.1 全局访存

5.3.2 本地访存

5.4 数据处理优化

5.4.1 多流水线

5.4.2 向量化

5.4.3 循环展开

5.4.4 平衡树

5.5 其他优化手段

5.5.1 运算精度

5.5.2 控制流

5.5.3 吞吐率

5.5.4 运算开销平衡

5.5.5 内建函数

5.6 优化流程


第二部分 开发实例


预估共70~100页,4~6万字。

第六章 矩阵乘法

6.1 矩阵乘法算法

6.2 算法实现及结构

6.3 优化过程

6.3.1 增加工作量

6.3.2 确定工作组大小

6.3.1 循环展开

6.3.2 访存聚合

6.3.3 向量化及多流水线

6.4 优化结果

第七章 矩阵LU分解

7.1 LU分解算法介绍

7.2 算法实现及结构

7.3 优化过程

7.3.1 访存聚合

7.3.2 循环展开

7.3.3 内建函数

7.3.4 控制流

7.4 优化结果

第八章 矩阵广义逆

8.1 矩阵广义逆算法介绍

8.2 算法实现及结构

 

8.3 优化过程

8.3.1 减少冗余运算

8.3.2 循环展开

8.3.3 全局访存优化

8.3.4 本地访存优化

8.4 优化结果

第九章 快速傅里叶变换

9.1 FFT算法介绍

9.2 算法实现及结构

9.3 优化过程

9.3.1 合理分配任务

9.3.2 确定工作组大小

9.3.3 循环展开

9.3.4 本地访存优化

 

9.3.5 全局访存优化

9.3.6 使用多流水线

9.4 优化过程

第十章 K-means聚类

10.1 K-means介绍

10.2 算法实现及结构

10.3 优化过程

10.3.1 确定工作组大小

10.3.2 运算开销

10.3.3 平衡树

10.3.4 向量化

10.4 优化结果

第三部分 附录

预估共43~54页,3~4.4万字。

附录A 数据类型

附录B 操作符

附录C 限定符

附录D 内置函数

附录E 常用API