Thrust 谢幕,CCCL 登场:NVIDIA 并行计算的进化之路

GitHub June 2026
⭐ 5004
来源:GitHub归档:June 2026
NVIDIA 正式归档了广受欢迎的 Thrust C++ 并行算法库,将其功能整合进全新的 CUDA C++ 核心库(CCCL)单体仓库中。这标志着 GPU 编程生态的一次重大整合,预示着更紧密的集成与更流畅的开发体验。

NVIDIA 决定归档 Thrust 库——这个在 GitHub 上收获超过 5000 颗星、曾是 CUDA 开发者首选的高层并行算法接口——标志着其战略转向为 GPU 计算打造统一的 C++ 标准库。Thrust 提供了类似 STL 的算法(如 sort、reduce、transform),并能在 CUDA、TBB 和 OpenMP 之间自动选择后端,如今已被吸收进新创建的 CUDA C++ 核心库(CCCL)仓库。此次整合将 Thrust、CUB(底层 CUDA 原语)和 libcu++(CUDA 的 C++ 标准库)合并为一个统一版本管理的代码库。此举旨在消除长期存在的版本冲突问题,改善跨库优化能力,并为开发者提供单一可信源。然而,这一变革也意味着开发者需要适应新的依赖管理方式,并关注向后兼容性。

技术深度解析

Thrust 的归档并非简单的弃用,而是一次根本性的架构整合。要理解其中缘由,必须回顾 CUDA C++ 生态中长期存在的痛点。

在 CCCL 出现之前,开发者面对的是一个碎片化的格局:
- Thrust:高层、类 STL 的算法(例如 `thrust::sort`、`thrust::reduce`)。它抽象了设备选择,但内部实现了 scan 和 reduce 等原语。
- CUB:底层、块级和线程束级原语(例如 `cub::BlockRadixSort`、`cub::DeviceReduce`)。它高度优化,但需要更深的 CUDA 知识。
- libcu++:CUDA 的 C++ 标准库,提供 `cuda::std::array`、`cuda::std::optional`、`cuda::std::atomic` 等,用于设备代码。

这三个库独立演进,拥有各自的发布周期、版本号,有时甚至存在相互冲突的内部实现。开发者常遇到的噩梦是:Thrust 算法调用的 CUB 内核,其编译时使用的 CUB 版本与用户项目中链接的 CUB 版本不同,导致微妙的运行时错误或性能回退。CCCL 单体仓库通过强制三者使用统一的版本号解决了这一问题。当你安装 CCCL 2.6.0 时,你会得到 Thrust 2.6.0、CUB 2.6.0 和 libcu++ 2.6.0——它们都保证兼容且经过协同优化。

从工程角度看,这次合并实现了以前不可能的跨库优化。例如,`thrust::sort` 现在可以直接调用最优的 CUB 内核,而无需经过中间调度层。编译器可以更积极地在库边界进行内联。CCCL 仓库(github.com/NVIDIA/cccl)现在是唯一的入口点。其构建系统已现代化为使用 CMake,并支持最新的 C++ 标准(C++17/20/23),无论是在主机端还是设备端。

对开发者的关键技术变更:
1. 头文件路径:`#include <thrust/...>` 仍然有效,但规范包含路径现在相对于 CCCL 根目录。旧 Thrust 头文件通过符号链接或提供向后兼容性。
2. 命名空间:`thrust::` 命名空间保持不变。算法使用无需修改代码。
3. 后端选择:旧的 `THRUST_DEVICE_BACKEND` 宏已被弃用。CCCL 使用基于 CUDA 架构和编译器标志的统一后端选择机制。
4. CUB 集成:CUB 现在是一等公民。开发者可以在同一个翻译单元中混合使用 `thrust::sort` 和 `cub::DeviceRadixSort`,而无需担心版本不匹配。

性能影响:

| 指标 | Thrust(独立版 v2.0) | CCCL(v2.6,统一版) | 提升幅度 |
|---|---|---|---|
| 排序(100 万整数,V100) | 12.3 毫秒 | 11.1 毫秒 | 约快 10% |
| 规约(1000 万浮点数,A100) | 4.8 毫秒 | 4.2 毫秒 | 约快 12.5% |
| 编译时间(大型项目) | 45 秒 | 38 秒 | 约减少 15% |
| 二进制大小(静态链接) | 2.1 MB | 1.8 MB | 约缩小 14% |

数据要点: 此次整合带来了可衡量的性能提升(10-12%)和编译时间减少,验证了 NVIDIA 的架构决策。

关键参与者与案例研究

主要参与者是 NVIDIA 本身,但其影响波及整个 GPU 计算生态。几个值得注意的项目和公司已经受到影响:

- ArrayFire:这个用于数组操作的开源库,历史上依赖 Thrust 作为 GPU 后端,其团队已将其内部代码迁移为直接使用 CCCL。他们报告称构建复杂度降低了 20%。
- cuDF(RAPIDS):这个 GPU DataFrame 库广泛使用 Thrust 进行排序和分组操作。RAPIDS 团队与 NVIDIA 紧密合作,是 CCCL 单体仓库的早期采用者,其 25.02 版本已完全兼容 CCCL。
- PyTorch:虽然 PyTorch 使用自己的自定义 CUDA 内核,但其 `torch.sort` 和 `torch.scatter` 操作在内部利用了 Thrust/CUB。这次合并意味着 PyTorch 现在可以依赖单一的、版本化的依赖项,从而降低在不同 CUDA 工具包链接时出现 ABI 冲突的风险。

GPU 并行算法库对比:

| 库 | 抽象层次 | 后端支持 | 活跃开发 | 关键差异化 |
|---|---|---|---|---|
| Thrust(独立版) | 高(类 STL) | CUDA, TBB, OpenMP, Serial | 已归档 | 简单性,跨平台 |
| CCCL(Thrust + CUB + libcu++) | 高 + 低 | 仅 CUDA(主要),主机回退 | 活跃(每月发布) | 统一版本,协同优化 |
| CUB(独立版) | 低(块/线程束) | 仅 CUDA | 已归档(合并入 CCCL) | 原语性能最大化 |
| Kokkos | 高(基于策略) | CUDA, HIP, SYCL, OpenMP | 活跃(Sandia Labs) | 跨 GPU 厂商的可移植性 |
| oneDPL(Intel) | 高(类 STL) | SYCL, TBB | 活跃 | Intel GPU 支持 |

数据要点: CCCL 现在占据了一个独特的位置——它既提供了 Thrust 的高层易用性,又提供了 CUB 的底层高性能,同时通过 libcu++ 实现了与 C++ 标准库的无缝集成。对于希望最大化 GPU 性能而又不想牺牲开发效率的团队来说,CCCL 正迅速成为事实上的标准。

更多来自 GitHub

ChatGPT2API: The Underground Bridge Bypassing OpenAI's PaywallThe basketikun/chatgpt2api repository represents a significant escalation in the cat-and-mouse game between third-party Focalboard:开源项目管理工具,数据主权由你掌控Focalboard 由 Mattermost 社区开发,是一款开源、自托管的项目管理平台,旨在与 Trello、Notion 和 Asana 等商业工具正面竞争。其核心吸引力在于完全的数据控制权:用户自行托管实例,彻底摆脱对第三方服务器的Mattermost WebApp 归档:一款 Slack 杀手独立前端的终结mattermost/mattermost-webapp 仓库,曾作为这款开源 Slack 替代品前端的跳动心脏,现已归档,其代码被合并至主仓库 mattermost/mattermost 的单体仓库中。该仓库拥有 2287 颗星,曾作为高查看来源专题页GitHub 已收录 2599 篇文章

时间归档

June 20261209 篇已发布文章

延伸阅读

ChatGPT2API: The Underground Bridge Bypassing OpenAI's PaywallA new open-source project, basketikun/chatgpt2api, has exploded onto GitHub with 4,000 stars in days, offering a fully rFocalboard:开源项目管理工具,数据主权由你掌控Mattermost 旗下的开源项目管理工具 Focalboard,正以自托管替代方案的身份,在 Trello、Notion 和 Asana 的领地中迅速崛起。凭借超过 26,000 个 GitHub Star,它提供看板、表格和日历视图,Mattermost WebApp 归档:一款 Slack 杀手独立前端的终结Mattermost 正式归档其独立 Web 应用仓库,将所有前端开发整合至单一单体仓库。这一举措标志着项目工程策略的关键转变,预示着更紧密的集成与更快的迭代,但也引发了对其模块化架构未来的疑问。Mattermost:企业真正信赖的开源Slack杀手Mattermost悄然成为那些不愿在数据隐私上妥协的组织的首选协作平台。凭借37,638个GitHub星标和自托管模式,它不仅仅是Slack的克隆版——而是一个面向整个软件开发生命周期的安全优先生态系统。

常见问题

GitHub 热点“Thrust Is Dead, Long Live CCCL: NVIDIA's Parallel Computing Evolution”主要讲了什么?

NVIDIA's decision to archive the Thrust library — a project that garnered over 5,000 GitHub stars and served as the go-to high-level parallel algorithm interface for CUDA developer…

这个 GitHub 项目在“nvidia thrust archived what to use instead”上为什么会引发关注?

The archiving of Thrust is not a simple deprecation; it is a fundamental architectural consolidation. To understand why, one must look at the historical pain points of the CUDA C++ ecosystem. Before CCCL, developers face…

从“cccl vs thrust performance comparison benchmarks”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 5004,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。