OpenCL提供了一种统一的编程接口,使得程序员可以编写一次代码,然后在多种处理器上运行。

平台模型

  • OpenCL平台总是包括一个宿主机(host)。宿主机与OpenCL程序外部的环境交互,包括I/O或与程序用户的交互。宿主机与一个或多个OpenCL设备连接。OpencL设备通常称为计算设备,设备可以是CPU,GPU、DSP或硬件提供以及OpenCL开发商支持的任何其他处理器。
  • OpenCL进一步划分为计算单元,而计算单元还可以进一步划分为一个或多个处理单元。

执行模型

执行模型主要指出内核如何执行,它们与宿主机如何交互,以及它们与其他内核如何交互。主要目的是宿主机如何利用OpenCL设备的计算资源完成高效的计算处理过程。这也是一个“以硬件为中心”的模型。

  • OpenCL应用由两个不同部分组成:宿主机程序(host program)和一个或多个内核(kernel)组成的集合。

    PS:内核通常指的是一些简单的函数,将输入内存对象转换为输出内存对象。
  • OpenCL定义了两类内核:
    • OpenCL内核:用OpenCL C编程语言编写并用OpenCL编译器编译的函数。所有OpenCL实现都必须支持OpenCL内核。
    • 原生内核:OpenCL之外创建的函数,在OpenCL中可以通过一个函数指针来访问。

内存模型

目的是解决宿主机(Host)和OpenCL设备怎么处理数据

OpenCL定义了两种类型的内存对象:缓冲区对象和图像对象。

缓冲区对象: 就是内核可用的一个连续的内存区。

图像对象: 图像对象仅限于存储图像,图像内存对象是一个不透明的对象,图像对象的内容对于内核程序是隐藏的。

OpenCL内存模型定义了5种不同的内存区域,分别是:宿主机内存、全局内存、常量内存、局部内存和私有内存。

编程模型

使用编程模型将并行算法映射到OpenCL。

OpenCL定义了两种不同的编程模型:任务并行和数据并行

  • 数据并行编程模型:

    数据并行关注于在多个处理器核心之间同时执行相同的操作,但处理不同的数据元素。数据并行模型中一个任务分解成针对数据集各元素的多个相同子任务。然后将这些子任务分配给不同的处理核心。。例如:一个数组中的所有元素分别乘以2,在这种情况下,我们可以让许多个处理器并行计算,一个处理器负责一个数组元素的乘法运算。数据并行更适用于那些需要对大量数据执行相同操作的任务。

  • 任务并行编程模型:

    任务并行关注于在多个处理器核心之间执行不同的任务。每个核心运行一个独立的、不同的任务,但可能共享某些资源(比如内存)。这种并行模式有助于在多核处理器系统上提高吞吐量。任务并行更适用于那些一组组相互独立、没有什么相关性或直接联系的计算任务。

个人理解编程模型:其实就是将从CL代码中创建程序对象并编译,在运行时创建kernel(相关函数)对象以及内存对象,设置好相关的参数和输入之后,就可以将kernel送入到队列中执行,最终等待运算结束,获取计算结果即可。

其他编程模型

程序员完全可以结合OpenCL的编程模型来创建各种复合编程模型

OpenCL架构的更多相关文章

  1. CUDA与OpenCL架构

    CUDA与OpenCL架构 目录 CUDA与OpenCL架构 目录 1 GPU的体系结构 1.1 GPU简介 1.2 GPU与CPU的差异 2 CUDA架构 2.1 硬件架构 2.1.1 GPU困境 ...

  2. 从零開始学习OpenCL开发(一)架构

    多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零開始做OpenCL开发>系列文章的 ...

  3. 从零开始学习OpenCL开发(一)架构

    1 异构计算.GPGPU与OpenCL OpenCL是当前一个通用的由很多公司和组织共同发起的多CPU\GPU\其他芯片 异构计算(heterogeneous)的标准,它是跨平台的.旨在充分利用GPU ...

  4. 从零开始学习OpenCL开发(一)架构【转】

    转自:http://blog.csdn.net/leonwei/article/details/8880012 多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/ ...

  5. 【并行计算-CUDA开发】从零开始学习OpenCL开发(一)架构

    多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零开始做OpenCL开发>系列文章的 ...

  6. GPU 的硬件基本概念,Cuda和Opencl名词关系对应

    GPU 的硬件基本概念 Nvidia的版本: 实际上在 nVidia 的 GPU 里,最基本的处理单元是所谓的 SP(Streaming Processor),而一颗 nVidia 的 GPU 里,会 ...

  7. macOS的OpenCL高性能计算

    随着深度学习.区块链的发展,人类对计算量的需求越来越高,在传统的计算模式下,压榨GPU的计算能力一直是重点. NV系列的显卡在这方面走的比较快,CUDA框架已经普及到了高性能计算的各个方面,比如Goo ...

  8. 一文说清OpenCL框架

    背景 Read the fucking official documents! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: 对不 ...

  9. OPenCL

    OpenCLhttp://baike.baidu.com/link?url=7uHWCVUYB3Sau_xh3OOKP-A08_IvmT1SJixdAXKezCuCfkzeSQDiSmesGyVGk8 ...

  10. OpenCV整体的模块架构

    之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后,再重点学习自己感兴趣的部分的话,就会有一览众山小的感觉,于是,就决定写出这篇文章,作为启程OpenCV系列博文的第二 ...

随机推荐

  1. 【DataBase】XueSQL Training

    地址: http://xuesql.cn/ Lesson0 -- 认识SQL -- [初体验]这是第一题,请你先将左侧的输入框里的内容清空,然后请输入下面的SQL,您将看到所有电影标题: SELECT ...

  2. python3.13是否移除了GIL的限制

    近日看到新闻: https://baijiahao.baidu.com/s?id=1773013936355276204&wfr=spider&for=pc https://www.t ...

  3. AQS源码解读之ReentrantLock-图解

    1.背景 1.AQS简介AQS全称为AbstractQueuedSynchronizer(抽象队列同步器).AQS是一个用来构建锁和其他同步组件的基础框架,使用AQS可以简单且高效地构造出应用广泛的同 ...

  4. [COCI 2023/2024 #2] Zatopljenje 题解

    UPDATE on 2024.4.25 改掉奇怪压行码风,并稍作排版. 前言 题目链接:洛谷. 题目分析 首先发现区间中的个数等于 \(\texttt{高度大于 x 的位置的个数} - \texttt ...

  5. liunx下安装Nginx

    Linux下nginx的安装以及环境配置 https://blog.csdn.net/qq_42815754/article/details/82980326 第一步:下载nginx压缩包 在这里可以 ...

  6. SpringBoot 用的 spring-jcl 打印日志,与 LoggingSystem 有鸡毛关系?

    开心一刻 现实中,我有一个异性游戏好友,昨天我心情不好,找她聊天 我:我们两个都好久没有坐下来好好聊天了 她:你不是有女朋友吗 我:人家不需要我这种穷人啊 她:难道我需要吗 前情回顾 从源码分析 Sp ...

  7. Parallels Desktop 虚拟机网络地址

    bridge100 是宿主机在共享网络中的地址 bridge101 是宿主机在 Host-Only 网络中的地址 查询宿主机 IP 地址 $ ip addr show # 共享网络(默认) bridg ...

  8. GPG 用法

    GPG (GnuPG) 是一种加密工具,用于数据加密和数字签名. 密钥配置 # 生成密钥 gpg --full-generate-key # 列出密钥 gpg --list-keys # 列出公钥 g ...

  9. 【Linux】之切换root用户与重启系统相关命令

    一.切换用户 <Linux中怎么从root用户切换到普通用户> su是在用户间切换,可以是从普通用户切换到root用户, test@ubuntu:~$ su Password: root@ ...

  10. 推荐一个Python打造的开源自动驾驶平台:Donkeycar!

    1.引言 随着人工智能和自动驾驶技术的飞速发展,自动驾驶车辆的研究和开发成为了科技领域的热点.对于初学者.爱好者和学生而言,一款易于上手且功能强大的自动驾驶平台显得尤为重要.Donkeycar正是这样 ...