作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题
代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等
释放21集全网最深ConcurrentHashMap的vip视频,复现每一行源码
1. 介绍

- OpenCL(Open Computing Language,开放计算语言):
从软件视角看,它是用于异构平台编程的框架;
从规范视角看,它是异构并行计算的行业标准,由Khronos Group来维护; - 异构平台包括了CPU、GPU、FPGA、DSP,以及最近几年流行的各类AI加速器等;
- OpenCL包含两部分:
1)用于编写运行在OpenCL device上的kernels的语言(基于C99);
2)OpenCL API,至于Runtime的实现交由各个厂家,比如Intel发布的opencl_runtime_16.1.2_x64_rh_6.4.0.37.tgz
以人工智能场景为例来理解一下,假如在某个AI芯片上跑人脸识别应用,CPU擅长控制,AI processor擅长计算,软件的flow就可以进行拆分,用CPU来负责控制视频流输入输出前后处理,AI processor来完成深度学习模型运算完成识别,这就是一个典型的异构处理场景,如果该AI芯片的SDK支持OpenCL,那么上层的软件就可以基于OpenCL进行开发了。
话不多说,看看OpenCL的架构吧。
2. OpenCL架构
OpenCL架构,可以从平台模型、内存模型、执行模型、编程模型四个角度来展开。
2.1 Platform Model
平台模型:硬件拓扑关系的抽象描述

- 平台模型由一个Host连接一个或多个OpenCL Devices组成;
- OpenCL Device,可以划分成一个或多个计算单元
Compute Unit(CU); - CU可以进一步划分成一个或多个处理单元
Processing Unit(PE),最终的计算由PE来完成; - OpenCL应用程序分成两部分:host代码和device kernel代码,其中Host运行host代码,并将kernel代码以命令的方式提交到OpenCL devices,由OpenC

最低0.47元/天 解锁文章
628

被折叠的 条评论
为什么被折叠?



