两种GPU计算平台:CUDA 与 OpenCL

请添加图片描述


在这里插入图片描述

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

请添加图片描述

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值