OpenCL与CUDA的搏弈

2024-02-25 17:10
文章标签 cuda opencl 搏弈

本文主要是介绍OpenCL与CUDA的搏弈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    作为GPU计算的两个主要的编程框架,OpenCL和CUDA在开发者社区里已竞争多年。直到最近,CUDA已经吸引了很多开发者的关注,尤其是在高性能计算领域。但OpenCL软件现已成熟到让HPC从业者也开始另眼相看。

    OpenCL和CUDA都是提供数据并行通用模型以及底层访问硬件,但只有  OpenCL提供了一个开放的、行业标准的框架。正因为如此,它已经引起了几乎所有的处理器厂商,包括AMD,英特尔和NVIDIA,以及其他服务于移动和嵌入式计算厂商的支持。因此,用OpenCL开发的应用可以方便地跨越各种GPU和CPU设备。
    2008年12月发布OpenCL 1.0,虽然只比NVIDIA推出的第一个版本的CUDA晚了1年半,但在普及性上,OpenCL仍旧大幅落后CUDA,尤其是在HPC领域。这主要是由于NVIDIA在这一领域努力推动CUDA 成为主导GPU开发编程框架的结果。
    AMD一直是OpenCL技术在计算技术最强烈的助推器,但它缺乏在高端GPU计算方面有竞争力的产品。OpenCL的使用迄今为止,已大多转移到客户端计算,尤其是那些越来越多地将GPU硅纳入其设计的移动平台厂商。
    OpenCL对于HPC用户来说一直保持着不够成熟的印象,相对CUDA技术,性能低。这也可能是高性能的芯片制造商(英特尔,AMD和NVIDIA)没有热烈地支持,至少在他们的高端处理器上。在许多方面,确实是这样,NVIDIA致力于其最关注自己的CUDA软件,而英特尔似乎已经解决自身的并行编程框架,主要是Cilk Plus和线程构建模块。
不过AMD继续推崇OpenCL,他们在最新的编译器和库版本上大大提高性能。事实上,来自于未来集团(位于美国橡树岭国家实验室内)的 Kyle Spafford已经对这两种技术做了一段时间的基准测试,他认为OpenCL的性能现在可以与CUDA看齐。 
     Spafford运行橡树岭国家实验室的可扩展异构计算基准套件(SHOC),它已为CUDA和OpenCL做好了优化。Spafford发现OpenCL在大多数基础数学内核上,性能已经与CUDA相匹配。他还发现,OpenCL的一些内核的性能,像SGEMM,自2009年以来增加了10倍。CUDA在一个代码上具有显着的性能优势就是快速傅立叶变换(FFT)。spafford 认为CUDA具有更好的FFT性能是因为它使用一个快速的内在属性,而AMD的OpenCL用的速度较慢但更精确的方式。Spafford说,如果执行匹配的话,性能上的差异就会消失。

      别人也在各自独立的科学应用上得出类似的结论。在Dartmouth的一个研究小组分别用OpenCL和CUDA运行引力波的数值模型,他们发现OpenCL和CUDA之间的相似的性能,他们用的是 Tesla  GPU和IBM的Cell BE处理器。 
GPU的软件制造商AccelerEyes已经看到CUDA和OpenCL性能均衡。该公司最近发布了他们的两个旗舰软件产品 ArrayFire Jacket 的OpenCL驱动的beta版本。AccelerEyes已经发现在很多内核代码上,这两种技术表现出相似的性能。还有如橡树岭国家实验室,他们发现在CUDA上执行FFT的速度依旧更快,但AMD的OpenCL的编译器和库,无论在广度和性能上都大大提高。 
据AccelerEyes首席执行官约翰Melonakos表示超过一半的客户用他们的电脑开发GPU加速程序,然后再部署到工作站或GPU集群上,因此能够支持非NVIDIA硬件是非常必要的。例如,客户作为开发平台使用的MacBook不能运行CUDA,因为苹果有没有在其最新的笔记本电脑里选择NVIDIA GPU。但是AccelerEyes提供AMD的OpenCL库,可以使用英特尔CPU、AMD的CPU和NVIDIA GPU,没有硬件不兼容的问题。 
          还有的用户只是不愿意采用供应商特定的软件栈,如CUDA。“有一类的人绝对要用到GPU计算的,但他们拒绝被供应商绑死。”Melonakos说,“这些人会将OpenCL产品最为首选。” 
为了对付这种感知,NVIDIA最近为第三方开发开放了CUDA编译器的源代码。但很明显,NVIDIA公司不把其所有重要的CUDA数学库,像CUBLAS和CUFFT,列入开放的列表里。据Melonakos,大型和成熟的库集是CUDA的技术计算领域的真正原因。不管开源与否,NVIDIA仍保留控制CUDA软件技术,这就是为什么它仍然认为作为一个供应商特定的解决方案。 
          即使是NVIDIA和英特尔都在OpenCL下了赌注,但双方还是为各自的硬件提供软件。在这一点上,这些公司在移动计算开发者提供OpenCL支持。但是,因为有越来越多的移动和HPC有交叉的用户,还不明确开发者将如何使用这些技术。 

事实上,如果移动领域在更大范围里紧抓OpenCL,并且它成为标准低层次异构计算解决方案,将有助于加快其在高端领域里的普及。而一旦OpenCL有一定的普及度,对强健编译器和库的需求会迅速增加。正如Melonakos所说:“我不认为OpenCL是要走了。”


 转自     http://bbs.gpuworld.net/thread-129-1-1.html

这篇关于OpenCL与CUDA的搏弈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/746136

相关文章

PyInstaller问题解决 onnxruntime-gpu 使用GPU和CUDA加速模型推理

前言 在模型推理时,需要使用GPU加速,相关的CUDA和CUDNN安装好后,通过onnxruntime-gpu实现。 直接运行python程序是正常使用GPU的,如果使用PyInstaller将.py文件打包为.exe,发现只能使用CPU推理了。 本文分析这个问题和提供解决方案,供大家参考。 问题分析——找不到ONNX Runtime GPU 动态库 首先直接运行python程序

CUDA:用并行计算的方法对图像进行直方图均衡处理

(一)目的 将所学算法运用于图像处理中。 (二)内容 用并行计算的方法对图像进行直方图均衡处理。 要求: 利用直方图均衡算法处理lena_salt图像 版本1:CPU实现 版本2:GPU实现  实验步骤一 软件设计分析: 数据类型: 根据实验要求,本实验的数据类型为一个256*256*8的整型矩阵,其中元素的值为256*256个0-255的灰度值。 存储方式: 图像在内存中

ffmpeg安装测试(支持cuda支持SRT)

文章目录 背景安装ffmpeg直接下载可执行文件选择版本选择对应系统版本下载测试Linux下安装 查看支持协议以及编码格式 常见错误缺少 libmvec.so.1LD_LIBRARY_PATH 错误 GPU加速测试SRT服务器搭建下载srs5.0源码解压安装配置启动 SRT推流测试SRT播放测试 背景 在音视频开发测试中,FFmpeg是一个不可或缺的工具,它以其强大的音视频处理

【FFMPEG】Install FFmpeg CUDA gltransition in Ubuntu

因为比较复杂,记录一下自己安装过程,方便后续查找,所有都是在docker环境安装cuda11.7的 **ffmpeg 4.2.2 nv-codec-headers-9.1.23.3 ** 手动下载安装吧 https://github.com/aperim/docker-nvidia-cuda-ffmpeg/blob/v0.1.10/ffmpeg/Dockerfile最好手动一个一个安装,错误跳

windows 机器学习 tensorflow-gpu +keras gpu环境的 相关驱动安装-CUDA,cuDNN。

本人真实实现的情况是: windows 10 tensorboard             1.8.0 tensorflow-gpu          1.8.0 pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ tensorflow-gpu==1.8.0 Keras                   2.2.4 pip

CUDA与TensorRT学习三:TensorRT基础入门

文章目录 一、TensorRT概述二、TensorRT应用场景三、TensorRT模块四、导出并分析ONNX五、剖析ONNX架构并理解Protobuf六、ONNX注册算子的方法七、快速分析开源代码并导出ONNX八、使用trtexec九、trtexec log分析 一、TensorRT概述 二、TensorRT应用场景 三、TensorRT模块 四、导出并分析ONNX 五、

【并行计算】CUDA基础

cuda程序的后缀:.cu 编译:nvcc hello_world.cu 执行:./hello_world.cu 使用语言还是C++。 1. 核函数 __global__ void add(int *a, int *b, int *c) {*c = *a + *b;} 核函数只能访问GPU的内存。也就是显存。CPU的存储它是碰不到的。 并且核函数不能使用变长参数、静态变量、函数指

GPU环境配置:1.CUDA、Anaconda、Pytorch

一、查看显卡适配CUDA型号         查看自己电脑的显卡版本:         在 Windows 设置中查看显卡型号:使用 Windows + I 快捷键打开「设置」,依次点击「系统」-「屏幕」和「高级显示器设置」,在「显示器 1」旁边就可以看到显卡名称。        右键点菜单图标,选择系统,查看自己的Windows版本        右键菜单,设备管理器,点开“显示

Pytorch安装 CUDA Driver、CUDA Runtime、CUDA Toolkit、nvcc、cuDNN解释与辨析

Pytorch的CPU版本与GPU版本 Pytorch的CPU版本 仅在 CPU 上运行,适用于没有显卡或仅使用 CPU 的机器。安装方式相对简单,无需额外配置 CUDA 或 GPU 驱动程序。使用方式与 GPU 版相同,唯一不同的是计算将自动在 CPU 上进行。 Pytorch的GPU版本 在 NVIDIA GPU 上运行,充分利用 CUDA(Compute Unified Device