OpenCL基础

高弘光
2023-12-01

OpenCL基础

零、概述

官网
OpenCL官网
OpenCL 3.0官网指南(在线)

简介
OpenCL(Open Computing Language)通过一种低级别、高性能、可移植的抽象,支持广泛的应用(包括:嵌入式、用户软件和HPC解决方案)。通过创建一个高效、接近硬件(close-to-the-metal)的编程接口,OpenCL形成了一个由独立于平台的并行计算生态系统的基础层。

OpenCL由API接口,跨平台的编程语言和一个中间表示组成。

特点:

  1. OpenCL需要显式地选择要使用异构平台
  2. OpenCL提供了两种层面的并行机制:任务并行数据并行

名词的概念:

(详见官网词汇表

  • Aplication:
    在主机和OpenCL设备上运行的程序的组合。

  • Platform:
    主机加上OpenCL框架管理下的若干设备构成了这个平台:

    P l a t f o r m = h o s t + d e v i c e Platform = host + device Platform=host+device

    通过这个平台,应用程序可以与设备共享资源并在设备上执行kernel。

  • Device:
    官方的解释是计算单元(Compute Units)的集合。举例来说,GPU是典型的device。Intel和AMD的多核CPU也提供OpenCL接口,所以也可以作为Device。

  • Memory Object:
    在主机和设备之间传递数据的对象,一般映射到OpenCL程序中的global memory。有两种具体的类型:Buffer Object(缓存对象)和Image Object(图像对象)。

  • Command Queue:
    在指定设备上管理多个指令(Command)。队列里指令执行可以顺序也可以乱序。一个设备可以对应多个指令队列。

  • Context:
    Platform上共享和使用资源的环境,包括kernel、device、memory objects、command queue等。一般一个Platform对应一个Context。

  • Kernel:
    可以从主机端调用,运行在设备端的函数。

  • Program:
    OpenCL程序,由kernel函数、其他函数和声明等组成。


一、OpenCL架构

(详见官网:The OpenCL Architecture

我们将使用层次性的模型的来描述OpenCL背后的核心思想:

  • Platform Model

  • Memory Model

  • Execution Model

  • Programming Model

Platform Model

 类似资料: