最近某数码博主爆料:华为正彻底重构昇腾AI芯片的设计路线,由原本的ASIC(专用集成电路)向 GPGPU(通用图形处理器)转型。

这一消息如巨石入水,在科技与产业领域激起千层浪,有望成为推动相关产业链蓬勃发展的强大引擎。

图片

那么华为昇腾AI芯片为什么要转向呢?

很多人分析,这一变化背后的关键因素正是 CUDA。

今天我们就来聊聊 CUDA到底是什么、它有什么价值、它的发展历史,以及它对英伟达未来的重要性。

图片

▌01 华为昇腾的无奈,向CUDA生态低头。

华为昇腾芯片的转向并非偶然,而是基于对当前 AI 技术发展趋势的深刻洞察。

在 AI 训练领域,尤其是大模型的训练中,模型的参数规模和复杂性呈指数级增长。ASIC 芯片虽然在特定算法和任务上能够实现极高的能效比,但其“专用性”在面对模型结构快速迭代时,反而成为了限制。

相比之下,GPGPU 凭借其强大的并行计算能力和高度的编程灵活性,能够更好地适应这种“通用”的、探索性的训练需求。

全球范围内,超过 90% 的开源 AI 项目都基于 CUDA 开发,形成了一个庞大的生态系统。对于华为而言,单纯在硬件性能上追赶英伟达已远远不够,关键在于能否实现对 CUDA 生态的无缝移植。开发者已经习惯了 CUDA 的编程模型和工具链,他们不愿意也没有足够的时间和成本去为一套全新的硬件和软件栈重写所有代码。

因此,华为的战略转向势在必行,通过构建中间件和翻译层技术,让习惯于 CUDA 编程的开发者能够以最小的改动,甚至无需改动,就将现有模型和应用迁移到昇腾硬件上。

图片

在当前外部技术封锁加剧的背景下,华为试图通过兼容 CUDA 生态,搭建一座桥梁,将部分流量引导至自己的昇腾硬件之上。这不仅是华为在被动局面下的破局之路,更是其试图在 AI 芯片领域构建自己生态的重要一步。

▌02 到底什么是 CUDA?

我们来看下什么是CUDA?

CUDA是Compute Unified Device Architecture的简称,是英伟达(NVIDIA)于 2006 年推出的一种并行计算平台和编程模型。它的核心目标是让开发者能够充分利用 GPU(图形处理单元)的并行计算能力,将原本只能通过 CPU(中央处理单元)完成的计算任务转移到 GPU 上运行。

图片

简单来说,CUDA 是一个软件平台,它提供了一套编程接口和工具,使得开发者可以用高级语言(如 C、C++、Python 等)编写程序,让 GPU 执行复杂的计算任务,从而显著提高计算效率。

为了更好地理解 CUDA 的重要性,我们可以用一个生动的例子来说明。假设你有一个大型的拼图游戏,需要将成千上万的拼图片拼在一起。如果只有一个拼图高手(CPU),他需要一片一片地拼,这可能需要很长时间。但如果有一个团队(GPU),每个成员都可以同时拼一片,整个拼图的速度就会大大加快。

▌03 为什么需要CUDA?

在传统的计算模型中,CPU 负责执行所有计算任务。CPU 是一种高度优化的处理器,擅长处理复杂的单线程任务(如逻辑判断、顺序执行等)。

然而,当面对需要大规模并行计算的任务时(如深度学习、科学计算、图像处理等),CPU 的效率会显著下降,因为它的核心数量相对较少,每个核心主要用于顺序执行任务。

图片

相比之下,GPU 最初是为了图形渲染和图像处理设计的,它拥有大量的处理核心(例如,英伟达的高端 GPU 可能拥有数千个核心),这使得 GPU 在同时处理大量计算任务时能够实现比 CPU 更高的效率。

CUDA 的作用正是让开发者能够直接利用 GPU 的并行处理能力,完成像深度学习、科学计算、图像和视频处理等复杂任务。

CUDA 的核心原理是将计算任务分解成许多较小的任务,并将这些任务分配给 GPU 的各个处理核心并行执行。每个 GPU 核心可以独立执行这些任务,因此能够极大地提高计算效率。与传统的 CPU 不同,GPU 可以在同一时刻执行成千上万的任务,这对于一些计算密集型的应用来说,能够提供巨大的性能提升。

为了更好地理解 CUDA 的工作原理,我们可以用一个厨房烹饪的例子来类比。

假设你需要准备一顿丰盛的晚餐,包括炸薯条、烤鸡翅、煮汤和炒青菜。如果你只有一个厨师(CPU),他需要依次完成这些任务:

炸薯条:切土豆、洗土豆、炸薯条。

烤鸡翅:腌制鸡翅、烤鸡翅。

煮汤:切菜、煮汤。

炒青菜:洗菜、切菜、炒菜。

如果只有一个厨师,他需要依次完成这些任务,整个过程可能需要 2 小时。

现在,假设你有一个厨房团队(GPU),里面有 10 个厨师(CUDA 核心),每个厨师可以同时完成一个任务:

厨师 1:炸薯条。

厨师 2:烤鸡翅。

厨师 3:煮汤。

厨师 4:炒青菜。

厨师 5 - 10:帮忙准备食材(切菜、洗菜等)。

通过并行工作,整个晚餐的准备时间可以缩短到 30 分钟。这就是 CUDA 的核心思想——通过并行计算显著提高效率。

▌04 CUDA 的主要组成有哪几部分?

一般我们将CUDA包含五部分组成,有CUDA核心、CUDA线程、CUDA 编程模型、 CUDA 工具集和CUDA 库。下面我们来具体看下。

1 CUDA 核心(CUDA Cores)

CUDA 核心是 NVIDIA GPU 上的并行处理单元,每个核心可以独立执行线程。与 CPU 的多核架构不同,GPU 的核心数量通常要多得多。例如,英伟达的 Hopper 架构 GPU 拥有超过 5000 个 CUDA 核心。这些核心被组织成线程块(block),而多个线程块则进一步组成网格(grid)。这种层次结构使得任务管理更加高效。

2 CUDA 线程(CUDA Threads)

在 CUDA 中,计算任务被分解成许多小的、可以并行执行的线程。这些线程被组织成线程块(block),而多个线程块则进一步组成网格(grid)。这种层次结构使得任务管理更加高效。

例如,假设你需要计算一个 1000×1000 的矩阵乘法,你可以将这个任务分解成 1000×1000 个线程,每个线程负责计算矩阵中的一个元素。这些线程可以被组织成多个线程块,每个线程块包含 256 个线程,总共需要 1000×1000 / 256 = 3906 个线程块。

3 CUDA 编程模型(CUDA Programming Model)

CUDA 提供了一套完整的 API(应用程序编程接口),允许开发者编写可以在 GPU 上运行的程序。通过 CUDA C/C++ 扩展,开发者可以利用 GPU 的并行处理能力来加速计算任务。CUDA 的编程模型允许开发者使用传统的编程语言(如 C、C++、Fortran 等)来编写并行代码,并将这些代码高效地映射到 GPU 上执行。

4 CUDA 工具集(CUDA Toolkit)

CUDA 提供了丰富的工具集,包括编译器(如 NVCC)、调试器(如 Nsight)、性能分析工具(如 Nsight Compute 和 Nsight Systems),帮助开发者开发、调试和优化 CUDA 程序。这些工具使得开发者能够更高效地编写和优化并行计算程序。

5 CUDA 库(CUDA Libraries)

CUDA 提供了一系列高度优化的库,如 cuBLAS(线性代数库)、cuFFT(快速傅里叶变换库)、cuDNN(深度神经网络库)等。这些库为常见的数学运算提供了高效的实现,进一步提高了程序的性能。

例如,cuDNN 库为深度学习提供了高效的卷积和池化操作实现,开发者无需手动编写底层代码,只需调用相应的函数即可。这大大简化了开发流程,并提高了开发效率。

▌05 CUDA 有哪些价值价值?

1. 极高的并行计算能力

GPU 的架构设计使其在执行并行计算时极为高效。对于需要大规模并行处理的任务(如深度学习模型的训练、大数据处理、物理模拟等),GPU 的优势尤为明显。例如,在训练一个包含数十亿参数的深度学习模型时,使用 CUDA 加速的 GPU 可以在短时间内完成计算任务,而传统的 CPU 可能需要数天甚至数周的时间。

2. 简化开发流程

在 CUDA 出现之前,开发者需要用低级语言或专门的硬件描述语言编写 GPU 程序,过程复杂且难度高。CUDA 的出现极大地简化了这一过程,开发者可以使用更为常见的编程语言(如 C、C++、Python 等)来开发并行计算程序。这种简化不仅降低了开发难度,还提高了开发效率,使得更多的开发者能够利用 GPU 的强大算力。

3. 丰富的库和工具支持

CUDA 提供的优化库和开发工具进一步简化了开发流程。例如,cuDNN 库为深度学习提供了高效的卷积和池化操作实现,开发者无需手动编写底层代码,只需调用相应的函数即可。此外,Nsight 系列工具提供了强大的调试和性能分析功能,帮助开发者优化程序性能。

4. 广泛的应用场景

CUDA 的应用已经不仅限于图形渲染领域,它广泛渗透到了科学计算、深度学习、医学影像处理、金融计算、虚拟现实等众多领域。例如,在医学影像处理中,CUDA 加速的 GPU 可以快速完成图像重建和分析任务,为医生提供更及时的诊断信息。

▌06 CUDA 对英伟达的重要性

CUDA对英伟达可以说是一个跨时代的东西。 不仅是英伟达的技术平台,更是其在 GPU 计算领域的核心战略。通过 CUDA,英伟达赋予了 GPU 强大的并行计算能力,使其不仅能够处理图形任务,还能承担深度学习、科学计算、大数据分析等多种复杂计算工作。

CUDA 的成功构建了一个庞大且高质量的开发者和应用生态系统,使得英伟达在 AI 计算领域占据了不可撼动的市场领导地位。

1. 构建开发者生态系统

截至 2024 年,英伟达的 CUDA 开发者社区已经超过 200 万人,涵盖了从学术界到产业界的广泛领域。CUDA 的成功吸引了全球成千上万的开发者,将 CUDA 作为并行计算的首选平台,形成了一个独特的技术生态圈。

这种强大的开发者社区不仅为英伟达带来了巨大的市场价值,还形成了强大的技术壁垒,使得其他平台难以快速吸引到同等规模且同样具备深厚背景的开发者。

2. 软硬件深度集成

CUDA 与英伟达的硬件(尤其是 GPU)深度绑定,形成了软硬一体化的优势。这种集成不仅提供了计算性能的提升,还能通过硬件特性为开发者提供更高的效率和更好的性能调优。相比之下,其他平台如果没有英伟达强大的 GPU 硬件支持,即使技术上做到类似的功能,仍然很难提供同样的性能和开发体验。

3. 持续技术创新与优化

CUDA 的持续优化与创新是英伟达巩固市场地位的重要手段。英伟达不断推出 CUDA 的新版本,不仅支持最新的硬件(如 Tensor Cores、Ampere 架构等),还加强了对机器学习、数据分析、图形渲染等领域的支持。这种持续的技术创新确保了 CUDA 始终处于并行计算领域的前沿。

4. 先发优势形成的网络效应

英伟达通过建立 CUDA 生态系统,获得了巨大的市场份额和先发优势,形成了强大的网络效应。截至 2023 年,英伟达在 AI 计算和深度学习 GPU 市场的占有率已经超过 70%。这种市场份额使得 CUDA 成为了 AI 领域几乎不可替代的计算平台,竞争者要想超越这一壁垒,不仅需要具有足够的技术创新,还需要在市场中占据同等规模的份额,才能挑战 CUDA 的主导地位。

▌07 CUDA 是英伟达的“护城河”,目前只能融入

CUDA 作为英伟达的核心技术平台,不仅推动了 GPU 从图形处理单元向通用计算平台的转变,还构建了一个庞大且高质量的开发者生态系统。

华为昇腾芯片的转向,正是看到了 CUDA 生态在 AI 训练领域的巨大价值。未来,CUDA 将继续在并行计算领域发挥重要作用,推动 AI 和高性能计算的持续发展。对于开发者和企业来说,掌握 CUDA 技术将成为在 AI 时代保持竞争力的关键。

通过深入解析 CUDA 的技术原理、价值、发展历史以及未来趋势,我们可以更好地理解其在现代计算领域的重要性。无论是对于硬件厂商、开发者还是企业用户,CUDA 都是一个值得深入研究和应用的技术平台。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐