目录

  • 1、硬件层面
  • 2、操作系统
  • 3、软件和社区
  • 4、编程模型
  • 5、CUDA 的优点和局限性
    • 优点
    • 限制
  • 6、OpenCL 的优点和限制
    • 优点
    • 限制
  • 7、补充一点
  • 参考

1、硬件层面

图形加速器的三大制造商是:NVIDIA、AMD 和 Intel。

英伟达目前在市场上占据主导地位,占有最大份额。NVIDIA 为移动图形处理器 (Tegra)、笔记本电脑 GPU (GeForce GT)、台式机 GPU (GeForce GTX) 和 GPU 服务器(Quadro 和 Tesla)提供全面的计算和处理解决方案。

这种广泛的 NVIDIA 硬件可以与 CUDA 和 OpenCL 一起使用,但 CUDA 在 NVIDIA 上的性能更高,因为它是在设计时考虑到了 NVIDIA 硬件。

相关内容:阅读我们关于 NVIDIA CUDA的深入指南

AMD为嵌入式解决方案和移动系统、笔记本电脑和台式机创建 Radeon GPU,并为服务器创建 Radeon Instinct GPU。OpenCL 是用于在 AMD GPU 上运行图形处理的主要语言。

英特尔提供集成到其 CPU 中的 GPU。OpenCL 可以在这些 GPU 上运行,但对于笔记本电脑来说已经足够了,但它在通用计算方面却没有竞争力。

除了 GPU,您还可以在 CPU 和 FPGA / ASIC 上运行 OpenCL 代码。这是在集成解决方案中使用 OpenCL 时的主要趋势。

2、操作系统

CUDA可以在 Windows、Linux 和 MacOS 上运行,但只能在 NVIDIA 硬件上运行。

OpenCL应用程序几乎可以在任何操作系统上运行,并且可以在大多数类型的硬件上运行,包括 FPGA 和 ASIC。

3、软件和社区

NVIDIA致力于 CUDA 平台的商业化和开发。NVIDIA 开发了包括CUDA Toolkit、NVIDIA Performance Primitives (NPP)、Video SDK 和 Visual Profiler 在内的工具,并与 Microsoft Visual Studio 和其他流行平台进行了集成。CUDA 拥有广泛的第三方工具和库生态系统。CUDA 工具包可快速支持最新的 NVIDIA 硬件功能。

AMD 的社区活动更加有限。AMD 构建了CodeXL Toolkit,它提供了全系列的 OpenCL 编程工具。

4、编程模型

CUDA不是一种语言或 API。它是并行计算的平台和编程模型,它使用 GPU 加速通用计算。开发人员仍然可以使用 C 或 C++ 编写软件,并使用 CUDA 关键字包括并行化。

OpenCL不允许使用 C++ 编写代码,但您可以在类似于 C 编程语言的环境中工作,并直接使用 GPU 资源。

5、CUDA 的优点和局限性

优点

与具有图形 API 的传统通用图形处理器 (GPGPU) 计算机相比,CUDA 具有以下几个优势:

统一内存(在 CUDA 6.0 或更高版本中)和统一虚拟内存(在 CUDA 4.0 或更高版本中)
共享内存——为 CUDA 线程提供更快的共享内存区域。它可以用作缓存机制,并提供比纹理查找更多的带宽。
分散读取:可以从内存中的任何地址读取代码。
改进的下载和读取性能,在 GPU 和 GPU 之间运行良好
完全支持按位和整数运算

限制

CUDA 源代码在主机或 GPU 上提供,由 C++ 语法规则定义。较早版本的 CUDA 使用 C 语法规则,这意味着更新的 CUDA 源代码可能会也可能不会按预期工作。
CUDA 与 OpenGL 等渲染语言具有单向互操作性。OpenGL 可以访问 CUDA 注册的内存,但 CUDA 不能访问 OpenGL 内存。
更高版本的 CUDA 不为旧版本提供模拟器或回退支持。
CUDA 仅支持 NVIDIA 硬件。

6、OpenCL 的优点和限制

优点

由于其运行时执行模型,OpenCL 提供了抽象内存和可移植性。
OpenCL 内核可以在任何支持的软件实现上运行。
OpenCL 支持异构系统架构,可使用 C++ 17 原子实现 GPU 和处理器之间的高效通信。

限制

开发人员无法在不牺牲可移植性的情况下直接在 NVIDIA GPU 上实现专有硬件技术,例如内联并行线程执行 (PTX)。
一项在 NVIDIA GPU 上直接比较 CUDA 程序与 OpenCL 的研究表明,CUDA 比 OpenCL 快 30%。
OpenCL 很少用于机器学习。因此,社区很小,可用的库和教程很少。
使用 Run:AI 大规模运行 CUDA 和 OpenCL
Run:AI 自动化机器学习基础设施的资源管理和编排。借助 Run:AI,您可以根据需要自动运行尽可能多的计算密集型实验,并结合 CUDA 和/或 OpenCL。

以下是您在使用 Run:AI 时获得的一些功能:

高级可见性——通过汇集 GPU 计算资源来创建高效的资源共享管道。
不再有瓶颈——您可以设置 GPU 资源的保证配额,以避免瓶颈并优化计费。
更高级别的控制——Run:AI 使您能够动态更改资源分配,确保每个作业在任何给定时间都能获得所需的资源。
Run:AI 简化了机器学习基础设施管道,帮助数据科学家提高生产力和模型质量。

7、补充一点

CUDA 的竞争对手OpenCL于 2009 年推出,试图为异构计算提供一个全新的行业技术标准,不仅仅限于带有 NVIDIA GPU 的 Intel/AMD CPU的计算平台。虽然OpenCL因其通用性听起来很有吸引力,但它在 NVIDIA GPU 上的性能不如 CUDA,而且许多深度学习框架要么不支持OpenCL,要么仅在其 CUDA 支持发布后才支持它。

转载文章:https://www.run.ai/guides/nvidia-cuda-basics-and-best-practices/cuda-vs-opencl

参考

https://nvidianews.nvidia.com/
https://www.infoworld.com/article/3299703/what-is-cuda-parallel-programming-for-gpus.html

两种GPU计算平台:CUDA 与 OpenCL相关推荐

  1. CUDA编程(一):GPU计算与CUDA编程简介

    CUDA编程(一):GPU计算与CUDA编程简介 GPU计算 GPU硬件资源 GPU软件资源 GPU存储资源 CUDA编程 GPU计算 NVIDIA公司发布的CUDA是建立在GPU上的一个通用并行计算 ...

  2. [PowerBI]两种方法计算每月或每季开发的新客户数量

    12月追加:欢迎加入知乎[微软BI技术圈],一起讨论.分享包括PowerBI在内的一切BI话题! 两种方法计算每月或每季开发的新客户数量 简述 客户分析中,有时你可能需要分析每隔一段时间有多少新客户流 ...

  3. Google Earth Engine(GEE)——用两种方法计算NDWI水域面积提取(Landsat 8)

    使用 Landsat 8 使用指标 NDWI 使用两种方法计算水域面积 ,这次我们随便选择了陕西附近的一个部分作为我们的研究区, 我们所需用到的函数: ee.Image(args) An object ...

  4. matlab gup绘图,Matlab GPU计算平台 Gisdom图形工作站得心应手

    在医疗,气象等行业领域,我们时刻都可以感受到计算机图形技术所带来的便利.而在制造,广告,娱乐等企业运作中,图形工作站更多地被人们赋予生产工具的地位.通过图形工作站的使用,制造业者在做产品设计时可以完全 ...

  5. 【Python】两种方法计算平均值、中值、众数、方差、标准差、百分位数

    目录 数据特征 数据集 均值(Mean) - 平均值 中值(Median) - 中点值,又称中位数 众数(Mode) - 最常见的值 方差 标准差(欧式距离) 百分位数 数据特征 特征探索主要是对数据 ...

  6. 两种方法计算斐波那契数列第n项

    百度斐波那契数列定义: 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为&qu ...

  7. 基于“总价、首付、贷款年限、利息、贷款额度”信息,计算每月最低还款额度。需要能按“等额本金、等额本息”两种形式计算还款

    #include <stdio.h> void debj(); void debx(); int main() {int n;while(1){printf("0退出\n1等额本 ...

  8. CUDA刷新:GPU计算生态系统

    CUDA刷新:GPU计算生态系统 CUDA Refresher: The GPU Computing Ecosystem 这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键 ...

  9. 温故知新之GPU计算

    据说,ChatGPT用了5000块GPU,而对于普通工程师而言,看看过去,或许可以帮助望见未来.那么,GPU是什么呢? 图形处理器(GPU,Graphic Processing Unit)是面向吞吐率 ...

最新文章

  1. thinkphp-join
  2. Github 又不能访问了!!!
  3. 阿里P8架构师谈:阿里双11秒杀系统如何设计?
  4. apereo cas mysql_Apereo CAS 5.0.X 默认提供的数据库认证的四种方式
  5. CEV模型与质量甜点算法设计
  6. python中提取几列_Python一键提取PDF中的表格到Excel(实例50)
  7. 学Python必须背的42个常见单词
  8. insert php code test
  9. java 随机抽取数组内容_工具类:随机抽取数组或集合中的几个不重复元素
  10. Java Post/Get请求 工具类
  11. 【目标检测】2020年遥感图像目标检测综述
  12. oracle nav函数,WordPress函数wp_nav_menu()怎样用_CMS体系建站教程
  13. 是什么导致了脸上的痤疮呢?
  14. spark报错:java.io.IOException: Filesystem closed
  15. scrapy---下载中国大学慕课课程视频及文件
  16. oracle组合单词是什么意思,oracle-bone是什么意思
  17. asp.net930-绿能店电动车租赁系统
  18. 外卖订单爬虫 定时自动抓取三大外卖平台上商家订单
  19. 用turtle画奥运五环
  20. 位运算常用技巧分析汇总(算法进阶)

热门文章

  1. lims实验室管理系统是什么?
  2. 微信小程序如何解决社区团购的痛点
  3. 【影像常识】CT的“层“与“排”的区别
  4. 4月连锁药店行业O2O外卖单平台品牌及药品销量排行榜
  5. (四)深入理解蓝牙BLE之“ACL Packet格式”
  6. Multiple linear regression
  7. U盘做成系统盘后从64G变成32G,怎么办?
  8. Linux网络实战(二)- WWW服务器搭建
  9. 防止程序猿和前端狗打架的几条约定
  10. 小红书用户画像分析_小红书用户运营策略分析报告