Reference Resources:https://blog.csdn.net/wd1603926823/article/details/79139172#commentBox
(Intel核显--OpenCL环境--Linux)
https://blog.csdn.net/chifredhong/article/details/73931017( OpenCL浅析(1)-GPU和FPGA平台搭建)
https://blog.csdn.net/greenlight_74110/article/details/78461464 ('clinfo'找不到Intel GPU(Intel HD graphics))
OpenCL简介
OpenCL是由非盈利性组织Khronos Group组织发布的针对异构设备进行并行化计算的一套开源的API以及程序语言。
它提供两种并行化的模式,包括任务并行以及数据并行,目前针对GPU的引用,主要是以数据并行为主。OpenCL API是按照 C API定义的,由C和C++封装而成。使用OpenCL C语言编写的代码可以在支持OpenCL的设备上运行。OpenCL C是C99语言的子集,并适当地扩展到众多异构设备上执行数据并行代码的能力。
所谓异构设备,就是指底层硬件架构有较大不同的设备,比如CPU与GPU,FPGA(可编程门阵列),CPU中负责分支预测及跳转的控制单元和cache占据较大的面积,而ALU(算术逻辑单元)占据的比重远远小于GPU中的ALU面积比重,换句话说,CPU强于控制,弱于计算,而GPU强于计算,弱于控制。
上图中,绿色部分是逻辑计算单元,红色的存储单元,橙黄色的是控制单元。
安装OpenCL前的准备
OpenCL是一系列库和头文件,需要根据硬件安装对应的SDK,也就是说,如果希望使用Intel CPU作为并行设备,则必须安装Intel SDK,如果使用NVIDIA GPU作为并行设备,则必须安装NVIDIA SDK。这里给出在Intel CPU和NVIDIA GPU运行OpenCL的配置方法,可以根据自己的硬件情况选择,