品牌型网站建设哪里好,网页微信版下载,什么是网络营网络营销的特点,网页版微信怎么截图一、CUDA为什么会出现
大家都知道#xff0c;计算机最初的任务处理#xff0c;基本是CPU来完成#xff0c;所以CPU承受了各种任务调度和IO管理等复杂的场景管理。但随着计算机技术的发展#xff0c;特别是游戏、视频等对图像和视频处理的需求越来越高#xff0c;就出现了…一、CUDA为什么会出现
大家都知道计算机最初的任务处理基本是CPU来完成所以CPU承受了各种任务调度和IO管理等复杂的场景管理。但随着计算机技术的发展特别是游戏、视频等对图像和视频处理的需求越来越高就出现了专门处理这类任务的计算机模块——显卡而显卡的核心就是GPU模块。如果说CPU是一个多面手那么相对来说GPU就是一个屠龙刀专门用来处理图像和视频。而稍微有一点这方面知识的都知道图像和视频底层其实就是大量数据的处理由于它们有很类似的处理结构所以在GPU中可以有大量的相同的处理核心。一般来说单颗CPU的核心最多也就是在百量级上通常就是几十颗而单个显卡核心的量级最少也会在千量级以上三五千颗很正常。 看到这个大家是不是想到了一个重要的编程范式也就是并行编程CPU胜任于复杂场景下的任务和数据处理而GPU更适合于单纯数据计算和数据处理的任务。理论上讲核心数量越多并行编程的并行量可能越高那么并行的效率也就可能越高。而随着近年来大数据的兴起特别是AI编程的兴起对数据处理无论是量上还是速度上都提出了更高的要求而以CPU为代表的并行编程已经出现了严重瓶颈但对GPU来说处理这种大数据反而更具有天然的优势。 于是GPU编程便当仁不让的充当了AI时代的编程先锋。而GPU编程离不开显卡厂商的支持而现在的GPU的核心技术厂商只有两家一个是NVIDIA俗称N卡一个是AMD即以前的ATI俗称A卡。 而CUDA就是NVIDIA开发一种统一计算平台用来支持并行计算的编程模型。
二、GPU编程和CUDA
GPU的核心数量众多更适合于大规模的并行处理大数据特别是适合计算密集型及高并行任务的设计最典型的如区块链中的最小哈希寻找。GPU编程被广泛应用于机器学习、深度学习、医学、仿真技术、超算以及科学建模等领域。 而为了更好的复用显卡中的核心并压榨出其最大的并行效率NVIDIA开发出了CUDA框架CUDACompute Unified Device Architecture。它是NVIDIA用来处理并行计算的平台和编程模型可以理解为为方便在其显卡上进行二次开发的底层库。CUDA支持直接在NVIDIA GPU充分利用GPU算力进行通用计算。 CUDA本身有一套扩展的C/C语言如__global__等一系列关键字和相应的开发工具链如nvcc编译器等方便开发者在GPU上编写和运行、测试相关的代码。
三、CUDA的特点
CUDA框架的特点非常鲜明 1、支持高并行架构设计 前面提到过GPU中有成千上万个处理核心单元对并行的大规模数据处理有着天然的优势 2、高性能计算 由于并行计算和大数据的吞吐使得单张显卡的数据处理量相对于CPU来说是一个无法比拟的存在所以其性能和效率是非常高的 3、平台的专用性 由于某些大家熟悉的原因CUDA的计算是依赖于其特定的硬件平台的而这种情况既是优势也是劣势。在NVIDIA显卡上CUDA框架可以尽可能的提供更强大的算力而在非此平台的显卡上就力有所不歹了。
四、CUDA与OPENCL
其实其它一些公司也有自己的此类开发框架如AMD的ROCm苹果的Metal。但实际的应用中CUDA占有非常重要的地位。同样有专业的平台框架就会有通用的平台框架那就是OPENCL。 OPENCLOpen Computing Language它是一种通用的并行计算框架支持主流的显卡平台甚至是FPGA平台。但相对来说通用的技术在某些平台上是无法与专业的技术相比的也就是性能较低。而且由于支持不同的硬件可能在环境安装与支持上都有一些特殊的要求特别是可能由于硬件驱动的支持不到位使得相关的最新硬件支持不好。一些特殊的硬件性能无法发挥出来。而软件相关的一些细节支持也无法做到专业平台的那种尽可能的完善比如一些调试的支持等。 目前OPENCL的更高级方向是 Vulkan Compute 和 SYCL基于C的高层抽象在前面学习intel oneAPI时给大家一笔带过这个技术。 CUDA的优势正是OPENCL的劣势同时大量的AI框架和数据计算平台等都天然的支持CUDA这也是CUDA的一个最大的应用优势。
五、总结
不管哪种技术哪种平台和框架不要硬要比出一个优劣。要通晓其自身的特点应用场景在哪种场景上能发挥其优势在哪种情况下可以替代应用开发者需要做知已自己的应用场景需要什么知彼各种并行框架的特点和其优势找出最恰到好处的结合点来完成自己的任务。 老生常谈最合适的才是最好的。