GPU异构编程模型

 

OpenCL编程模型:

       数据并行模型。将数据进行划分。

       任务并行。

 

OpenCL平台模型:

host包含多个CD(计算设备),每个CD包含多个CU(计算单元),每个CU包含多个PE(处理元素)。

对应到CUDA架构:CD就是GPU,CU是streaming多处理器,PE是streaming处理器。

 

OpenCL程序:

       host代码,C/C++,运行在host上。

       device代码,OpenCL C,运行在device上。

host代码发送命令给device:传送数据(hostmemory  <--- >  device memory),执行device代码。

 

OpenCL的执行模型:

       kernel是一个函数,它代表一个work item,是计算的基本单元。它有一个PE来执行。

       多个kernel构成一个work gropu,由一个CU来执行。

      

kernel有私有内存。

workgroup有共享的局部内存。

一个CD有全局内存。

CPU有host内存。

 

 

 

 

 

 

FPGA编程

1)  Verilog和VHDL语言。

2)  Xilinx和Altera提供从C/OpenCL到FPGA的转换工具。

 

OpenCL编程。

CUDA和OpenACC。

 

OpenACC

OpenACC是一个语法制导的编程接口。在传统C/C++代码中添加OpenACC制导语句,使用OpenACC编译器编译出的代码可以使用加速器(一般为GPU)。OpenACC既有商业编译器(GCC 6,只支持CUDA的PTX汇编语言生成),也有学术界的开源编译器(筑波大学)。详见https://www.openacc.org/tools。

 

 

加速器除了GPU、FPGA,还有DSP。

你可能感兴趣的:(体系结构)