《OpenCL异构并行编程实战》补充笔记散点,第一至四章
▶ 总体印象:适合 OpenCL 入门的书,有丰富的代码和说明,例子较为简单。先把 OpenCL 代码的基本结构(平台 → 设备 → 上下文 → 命令队列 → 创建缓冲区 → 读写缓冲区 → 编译代码 → 创建程序 → 创建内核 → 设定内核参数 → 执行内核 → 缓冲区读写 → 回收检查结果)定死了,在围绕这个结构展开算法和应用。 ▶ 第一章,并行编程入门 ● 开放计算语言(Open Computuing Language,OpenCL) ● 设备语言可以高效映射到众多的内存系统构架上;主机端语言的目标是以较低的开销来高效管理复杂点的并行程序。两者共同为开发人员提供了一种从算法设计高效过渡到实现的途径。 ● 并发性(Concurrency)考虑的是同时发生两个或两个以上的活动。并行性(Parallelism)指的是以提高总体性能为明确目标,并行进行两个或两个以上任务。并行程序必须有并发性,但是并发程序不一定要保证并行性。 ●支持完全一致的共享内存模型,会在硬件上有较大开销,因为共享总线式设计瓶颈。 ● 粒度,定义为计算与通信之比。并行粒度首先与应用程序算法的内在特性。 ■ 细粒度的并行,计算强度低;没有租后的任务来隐藏长时间的异步通信耗时;容易通过提供大量可管理的工作单元来实现负载均衡;如果粒度过细,则可能人物之间的通信和同步开开销过大 ■ 粗粒度的并行,计算强度高