No.1 AMD APP 对 OpenCL 的支持

本文详细介绍了AMD APP如何利用GPU的计算能力,重点解析了OpenCL在AMD GPU上的实现,包括工作项的创建与调度、硬件架构,以及如何在不同GPU系列设备上执行计算任务,展示了AMD GPU如何通过wavefronts隐藏内存访问延迟以提高性能。
摘要由CSDN通过智能技术生成

AMD APP(Accelerated Parallel Processing) 利用 GPU 强大的处理能力,来为广泛的高性能、数据并行计算应用提供服务。AMD APP 系统包括一个软件栈、AMD GPUs 和多核 AMD CPUs。下图描述了 AMD APP 中不同组成部分之间的关系:

AMD APP 软件栈为终端用户和开发人员提供了一套完整、灵活的工具包,以充分利用 AMD GPUs 的处理能力。软件包括下面的部分:

  • OpenCL 编译器和运行库;
  • 调试和性能分析工具,AMD CodeXL;
  • 高性能库。AMD APP 数学库(APPML),以优化 NDRange 相关的算法。

新一代的 AMD GPUs 使用统一着色器架构,可以在同一个硬件上交织运行不同功能类型的程序。可编程的 GPU 计算设备可以执行用户开发的不同程序,对于图形开发人员,我们把这些程序称为着色器程序;对于并行计算程序的开发人员,我们称作内核程序。使用数据并行编程模型,GPU 计算设备可以执行和图形无关的功能,这需要将执行的任务映射到计算单元。这种编程模型,称作 AMD APP(Accelerated Parallel Processing)。

运行在计算单元上的内核实例称作工作项。该概念和 Linux 系统环境下进程有些类似,运行在 cpu 上的程序实例称作进程,但是在 Linux 中进程可以作为调度单位,而在 AMD 的 GPU 中,调度单位是 wavefront,新一代的架构中它包含了 64 个工作项。工作项映射到一个 n-维 的索引空间,称作 NDRange。在执行工作项的时候,可以对每个维度的工作项进行单独的引用。

GPU 调度一定数量工作项到一组处理元素(processing element)上处理,直到所有的工作项处理完成。接着,可以执行内核程序,直到应用执行完成。 下图呈现了 AMD APP 的编程模型,以及如何将工作项映射到处理元素:

工作组被分配到计算单元上执行。同一工作组中的所有工作项只能被相同 CU 中的处理元素处理,而且一个处理元素在同一时刻只能处理一个工作项,但是一个 CU 可以处理多个工作组。

OpenCL 把所有将要执行的工作项映射到一个n-维 网格(NDRange)。开发人员可以指定如何将这些工作项划分到不同的工作组中。例如,可以根据任务的属性来指定。AMD 的 GPU 基于 wavefronts 执行(多个工作组在计算单元上以 lock-step 的方式执行),每个工作组包含整数个 wavefronts。如下图所示,在 AMD APP 环境中,硬件调度工作项执行的时候包括一个中间步骤,用来指定一个工作组中的 wavefronts,以在 AMD GPUs 上能获得最大性能。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值