FPGA结构
1. FPGA与GPU 并行方式的不同点
FPGA相比GPU的核心优势在于延迟
FPGA的并行有两种:数据并行(GPU 也有)和流水线并行
因为FPGA 在烧录的时候,假设每个数据包有10个步骤,FPGA可以直接搭建一个10级的流水线。每个处理完的数据包可以直接输出。
联系CPU 和GPU的执行特点,都是取指,译指,执行。
数据并行的方式是做10个计算单元。每个计算单元在处理不同的数据包,但是所有计算单元必须按照统一的步调,做相同的事情(SIMD)。例如做矩阵乘法,事情都是相同的,数据不同。这就要求10个数据包必须同进同出。
因此,当任务是逐个而非成批到达的时候,流水线并行比数据并行可实现更低的延迟。
对与流水式计算的任务,FPGA比GPU天生有延迟方面的优势
2. FPGA的kernel结构
FPGA中的OpenCL有两种kernel结构:NDRange 和 Single-Work-Item
NDRange核函数中由多个workitem并行执行,并且workitem间通过global memory 或 local memory进行共享数据。一个节拍会启动一个work item,这些work item以一种流水线的方式进行数据处理。这种结构的核函数代码风格类似GPU上的,但是实际的执行方式很不同。GPU上的workitem是以一种SIMD的方式执