Chart 2 OpenCL简介

编程入门 行业动态 更新时间:2024-10-27 10:28:00

Chart 2 OpenCL<a href=https://www.elefans.com/category/jswz/34/1769824.html style=简介"/>

Chart 2 OpenCL简介

文章目录

  • 前言
  • OpenCL简介
  • OpenCL 标准
    • API 函数
    • OpenCL C
  • OpenCL Profiles
  • 总结


前言

记录本人学习OpenCL的历程,总结一些重要的知识点,作为个人学习笔记,参考书籍
Qualcomm® Snapdragon™ Mobile Platform OpenCL General Programming and Optimization
介于这本书废话比较多,我只挑我认为重要的地方总结,如果有错误的地方,请各位指出


OpenCL简介

OpenCL是一种面向异构系统的跨平台并行编程的开放且免费标准。

OpenCL 标准

OpenCL标准主要包含两个组件,即OpenCL运行时API和OpenCL C语言。

  • API定义了一组在主机上运行的函数,用于资源管理、内核分派和其他任务
  • OpenCL C语言用于编写在OpenCL设备上执行的内核。

API 函数

OpenCL API函数可以分为平台层和运行时层。

表一 OpenCL平台层

功能描述
Discover the platform平台是否支持OpenCL
Discover OpenCL devicesGPU、CPU、设备支持是否支持OpenCL
查询OpenCl设备信息全局内存、本地内存、最大工作组size等
上下文上下文管理,如上下文创建、维护、释放

表二 OpenCL运行时

功能描述
命令队列管理用于设备和主机之间的通信,在一个应用程序中可以有多个队列。
创建和构建OpenCL程序和内核是否构建成功
创建内存,准备数据,初始化什么内存?是否是 0 拷贝内存
创建内核调用并提交到设备需要的工作组大小?
同步内存一致性
资源管理返回结果并释放资源

OpenCL C

OpenCL C是 C99 标准的一个子集,但有以下不同:

  • 部分功能(如函数指针、动态内存管理)在OpenCL C中不可用

  • OpenCL对C99进行了扩展,如:

    • 增加了内置函数,用于查询OpenCL内核执行参数
    • 增加了图像加载和存储函数,更有效的使用GPU硬件

OpenCL Profiles

OpenCL定义了两种配置文件(profile):嵌入式配置文件(embedded profile)和完整配置文件(full profile)。

  • 嵌入式配置文件针对移动设备,通常具有较低的精度能力和较少的硬件功能,而不像传统计算设备(如台式机GPU)那样强大。

总结

OpenCl具有可移植性和向后兼容性,但移植后的代码,性能受限于平台。

OpenCL支持向后兼容,由于新版本中可能会废弃一些API函数,因此如果要使用OpenCL 1.1或1.2的废弃API与OpenCL 2.x的头文件一起使用,需要定义宏,如:

  • CL_USE_DEPRECATED_OPENCL_1_1_APIS
  • CL_USE_DEPRECATED_OPENCL_1_2_APIS

类似的规则也适用于如果OpenCL 2.x的宏与OpenCL 3.0的头文件一起使用。此外,OpenCL扩展可能不会适用于新设备,因此使用扩展的应用程序需要检查新设备是否支持它们。

这一篇就小试牛刀,到这里了。

更多推荐

Chart 2 OpenCL简介

本文发布于:2023-11-16 09:19:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1615737.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简介   Chart   OpenCL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!