news 2026/1/15 12:25:26

并行编程实战—CUDA、OpenCL、SYCL和ROCm的介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
并行编程实战—CUDA、OpenCL、SYCL和ROCm的介绍

一、并行编程的平台和构架

并行编程目前是个趋势,无论是科学计算还是大数据处理,甚至目前爆火的AI大模型,其底层都已经与并行编程紧密不可分了。其实并行技术有很多种情况,最初是在软件上层,有不少的并行库,特别是一些大的公司都会有自己的一套并行库(比如微软PPL和谷歌的MapReduce模型等)。但后来硬件的发展也开始提供一些并行的处理技术(比如SIMD等),然后硬件厂商也开始提供并行库(如Intel和IBM等)。随着实际应用的不断推进和GPU技术的成熟,GPU并行基本已经成为目前最大的热门。而在GPU技术里,主要又分为AMD和NVIDIA两家。
同时,各种技术的不断演进,又催生出新的问题即标准的问题。这样,又出现了基于标准的开源侧和基于硬件的硬件侧。所以说现在的并行框架(库)还是比较多的,下面将对主流的进行一些初步的分析说明。

二、硬件阵营和开源阵营以及标准

刚刚提到过,硬件的并行技术发展,重点已经从CPU转向GPU(或者说二者融合)。AMD和NVIDIA两家公司作为目前世界上主要的GPU供应端,都有自己的并行框架技术,其中NVIDIA公司的CUDA(Compute Unified Device Architecture)框架是市场上的“当红炸子鸡”。而竞争对手AMD肯定不能坐视不顾,也推出了自己的并行框架ROCm(Radeon Open Compute)。其实大家往往有意无意的忽略另外一家GPU供应商,Intel。其实他在集成板卡上,占有重要的一席之地。当然,它也推出了自己的并行框架TBB。当然,目前在国内出现了不少的GPU厂商,如昇腾、摩尔在线等,但它们目前还处于一个成长阶段,还需要进一步努力和发展。
一谈到技术,就会有开源和闭源两大阵营。而作为主流的并行框架ROCm(AMD)和CUDA(NVIDIA)正如旗帜分明,前者开源后者闭源。开源对于开发者非常友好,可以提供整体流程及内部技术的深入理解和学习应用。而闭源一般提供了更好的技术支持和技术应用。目前看来CUDA以其优异的表现和成熟的生态系统,已经成为了主流。而AMD的ROCm则在奋起直追 ,不过目前看差距还是有点大。对于初学者来说,守选CUDA进入到并行编程是一个不错的选择。
而在并行技术发展过程中,标准的统一本身就是一个迫切的问题。但标准的制定又是一个复杂的博弈过程。这需要所有参与者都要向着一个共同的目标不断前进,这非常困难,但又是非常重要的。当然,它也有不少的小心思,比如打破某家的技术垄断等等。当前主要的并行标准是OpenCL,Open Computing Language,但它早已经不是单纯的并行标准而一个支持异构平台的开发的标准。它最初由苹果开发后由各大公司(AMD,IBM,INTEL等,但好像没有微软)共同合作逐步完善并最终提交到Khronos Group,进而在后面推出了OpenCL1.0,1.2,2.0,2.1,2.2,3.0等等版本。OpenCL还是一种编程框架,它主要由三部分组成即平台API,运行时API和编程语言。

三、语言及模型支持与发展

来到了开发者最关心的,这么多的框架、硬件、标准以及它们间的互相相爱相杀的过程,其实跟具体的程序员没多大关系。作为开发者,程序员更关心的怎么使用它们。而这其中最重要的一环就是开发它们需要使用什么语言。
从目前来看,直接进行这些框架的开发,普遍使用的是C/C++语言。当然,在上层的应用中,各种语言就大行其道了,特别是AI相关的Python占有绝对的主流。早期的GPU编程因为贴近于硬件,C语言是不二的选择。但随着抽象程度的增加C++被引入进来。但毕竟GPU编程不是C++设计的主要面对对象。所以在这方面,就有两个技术路线之争即异构平台上的语言模型之争。目前来看,一种是以各大厂商推出的C++ Extensions(C++语言扩展)模型为主,包括CUDA的C++,HIP(Heterogeneous-compute Interface for Portability)的C++等,它们选择以编译器扩展和原生语法的增强等方式,提供对GPU等硬件编程的优化和扩展能力。它强调对硬件的极致性能挖掘,允许对设备内存及特定的设备指令进行直接操作。另外一种则是希望能够有一种基于C++语言的更高层次的抽象的编程模型,典型的就是SYCL。它通过统一不同平台代码的编写,依靠OpenCL等底层运行时实现跨平台架构的兼容。它更倾向于可移植性和标准性,对CLang/LLVM等工具有较强的依赖性。
Intel的DPC++,也就是在前面分析TBB时需要的环境Intel oneAPI,对SYCL支持的相当不错。而且SYCL2020中全面支持了C++17标准,这是一个明显的进步。另外C++标准本身也在对并行技术不断的进行扩展和支持,有可能在不久的将来,C++标准库中就会有完全支持并行的相关库出现。

四、AI大模型与并行技术

并行技术的发展,其实与近些年AI特别是大模型的发展有着重要的关联。如果说原来并行技术在实际的应用中并不多见,到现在几乎不管搞不搞AI的都要聊一聊并行。主要原因就在于这些年不论是从国际到国内,从上层到民间,都对AI持续不断的投入有着强相关。
AI大模型一个显著的特点就是需要对大量的数据进行处理,而大数据的处理,并行技术会极大的提高处理效率;而AI模型训练和推理都需要海量计算,这些任务又具有很强的并行性(如矩阵的计算),而这恰恰又是并行技术的特长。综合之下,现在的AI技术可以简单的认为已经与并行计算绑定在了一起。最典型的就是,现在NVIDIA的高档GPU一卡难求,进而表现为其股价一飞冲天。
如果在未来的时间内仍然无法解决AI技术对算力的简单线性需求这一前提,那么GPU的需求依然会快速增长,也就是意味着并行编程框架(库)及其周围生态会成为一种天然的护城河。大家应该明白这句话的意思。CUDA开发依然会是主流。

五、总结

这篇文章不是技术文章,是对技术整体路线和发展的一个整体的概要说明,并没有深入的进行分析和对比。目的也很简单,让广大的初学者在遇到一系列的名词术语时,能够有一个清醒的认知。既不会陷入一家独大的思维,又会眼花缭乱不知所措。正如小品中说的“先混个脸儿熟”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/12 17:01:18

Spring Boot与MySQL交互

Spring Boot与MySQL交互的核心步骤 配置MySQL依赖与数据源 在pom.xml中添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <depend…

作者头像 李华
网站建设 2025/12/24 13:54:47

Spring Boot与mysql交互的注意事项

数据库连接配置 在application.properties或application.yml中正确配置MySQL连接参数&#xff0c;包括URL、用户名、密码及驱动类。URL需指定时区&#xff08;如serverTimezoneUTC&#xff09;&#xff0c;避免时区不一致导致的查询异常。 spring.datasource.urljdbc:mysql://l…

作者头像 李华
网站建设 2026/1/7 8:58:56

【强烈收藏】RAG智能问答系统核心:知识库质量与召回率提升实战指南

本文阐述了知识库质量对RAG系统召回率的关键影响&#xff0c;指出召回率低的主要原因是知识覆盖不足、内容理解偏差和结构策略粗糙。提升召回率需通过提高数据覆盖率&#xff08;多渠道内容、多种接入方式、数据清理更新机制&#xff09;和提升内容理解质量&#xff08;合理分块…

作者头像 李华
网站建设 2026/1/12 20:24:02

pot-desktop:重新定义你的跨平台翻译体验

还在为阅读外文资料而烦恼吗&#xff1f;&#x1f914; 每次遇到不认识的单词或句子&#xff0c;都要手动复制粘贴到翻译网站&#xff0c;这种繁琐的操作简直让人抓狂&#xff01;今天&#xff0c;我要向你介绍一个能彻底改变你翻译体验的神器——pot-desktop&#xff0c;这款跨…

作者头像 李华
网站建设 2025/12/27 18:19:49

【制造业数据驱动系列 3】质量控制与闭环追溯:如何关联多维度数据,实现质量问题根源分析与改进?

质量问题的处理常陷于“救火”模式&#xff1a;缺陷发生后&#xff0c;排查原因需要跨部门调取大量分散记录&#xff0c;追溯缓慢&#xff1b;相同问题反复发生&#xff0c;改进措施难以固化。建立基于数据的质量分析与追溯闭环是破局关键。助睿BI能够将来自质检、生产、物料等…

作者头像 李华
网站建设 2025/12/12 16:59:33

【制造业数据驱动系列 4】设备效能与维护分析:如何利用现有数据,提升设备管理水平?

非计划停机是生产最大的浪费源之一。传统的维护往往基于固定周期或故障后维修&#xff0c;缺乏对设备真实运行状态的把握&#xff0c;导致过度维护或维护不足。在无法直接连接设备传感器数据的情况下&#xff0c;通过深度挖掘已有的维修工单、生产日志和能耗数据&#xff0c;同…

作者头像 李华