Reading Notes - OpenCL 2.0 异构计算【第三版】

Reading Notes

- OpenCL 2.0 异构计算 【第三版】1/2

- JackG-2022/6/18

> 异构

        对应用负载进行类型划分,控制密集型负载和数据密集型负载分别交给专用,高效的硬件单元进行处理。

并发 - 多指令并发;多线程并发(单核多线程,多核多线程)。

并行 - 单指令,多数据并行;多指令,多任务并行;多线程并行(硬件多线程,一核一线程)。

> 设备架构

        设备架构的不同是OCL 抽象模型建立的直接驱动力。OCL 模型背后的设计哲学来自对不同设备架构的权衡使用的实践。

架构 - 硬件设计;指令集设计;SOC 设计;缓存设计;存储设计。

> OCL 标准

1)平台模型

        指定host和device, host - 任务调度;device - OCL C kernel 执行。

2)执行模型

        Host运行环境配置;host-device 交互机制;并发模型 - 如何分解OCL C kernel 算 法到work-item 和work-group模型上。

3)内核编程模型

        定义并发模型如何映射到物理硬件上。

4)内存模型

        抽象内存使用,屏蔽硬件实际内存架构;2.0 加入host-device 共享内存 SVM。

> 平台模型

        Get platform info and device info (PlatformID/DeviceID, DeviceType - CPU or GPU)

> 执行模型

        Topological system and Context setting; issuing command and data to Device.

*Create Context - 协调host和device的交互,管理设备端的内存对象(Buffer),持续跟踪在设备上创建的程序对象(Program)和内核对象(OCL C kernel)。

*执行的对象是设备端任务(host发送的command)

*command contains ? a) running OCL C kernel. b) passing data. c)syncing

*任务如何下发? create Command Queue, clCreatCommandQueueWithProperties() --> 创建Command Queue 并关联device。

*Event - 指定命令之间依赖关系的对象。

*clEnqueue* command, common three parameters - *event_list(等待事件列表), event_list_length(等待列表长度), *cur_event(当前命令事件标识)

*OCL 2.0 支持设备端入 - 执行中的kernel可以让另外一个kernel 入队(command queue created by device)

> OCL 编程模型/kernel

*work-item - OCL C上的并发执行单元,每一个work-item都会执行kernel 函数体。

*OCL C 提供的内置函数可以让work-item知道自己的编号 clGetGlobalId()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值