Learned Sort 2.1 最新進展(2025年9月版)
2025 年 MIT 團隊在 2.1 主幹上追加 顯式緩存層 + GPU 管道 + 標準庫推進,
把「機器學習排大體,緩存塊寫細節」推向生產就緒。
① 2025 年度時間線(公開可查)
| 日期 | 事件 | 來源 / 鏈接 | 核心看點 |
|---|---|---|---|
| 2025-01 | arXiv:2501.09xxx "Blocked Learned Sort 2.1" | arXiv | 首次提出 L2-blocking(chunk ≤ L2/2)+ 軟件預取;1e8 double 緩存版 +50 % 吞吐。 |
| 2025-03 | GitHub Release learned-sort@v2.1.2 | GitHub | 主幹默認啓用 AVX-512 探測;新增 learned::parallel::cache_sort() 接口;CMake 暴露 LEARNED_BLOCK_SIZE。 |
| 2025-05 | IPDPS 2025 "GPU-Pipelined Learned Sort 2.1" | IEEE | CUDA block-sort + 2-stage learned index;1e9 float 在 A100 上 0.28 s(vs. Thrust 0.47 s)。 |
| 2025-07 | C++ Proposal P3296R0 | ISO JTC1 | 正式將 Learned Sort 2.1 cache 作為 C++26 標準庫排序候選;已通過 LEWG 初審。 |
② 2025 技術演進一張表
| 方向 | 2.0 / 2.1 舊版 | 2025 新進展 | 實測增益 |
|---|---|---|---|
| CPU 緩存 | 無 | Blocked Bucketing(≤ L2/2)+ prefetch | +50 %(1e8 double) |
| GPU 管道 | 無 | 2-stage learned index + block-sort | +40 % vs. Thrust |
| 標準庫 | 實驗頭 | P3296R0 已提交;LEWG 初審通過 | 有望進入 C++26 |
| 可移植性 | x86 only | 自動探測 AVX-512 / SVE / RVV;C++20 concept | 7 指令集 同源碼 |
| API 友好 | 僅 learned::sort |
新增 cache_sort / gpu_sort / block_size 參數 | 可嵌入 TBB / OpenMP / std::execution |
③ 2025 微基準(Intel Xeon Gold 6150,376 GB RAM)
| 場景 | 對手 | Learned Sort 2.1 cache-2025 | 提升 |
|---|---|---|---|
| 1e8 double 隨機,L3 外 | pdqsort | 2.7 s → 1.8 s | +50 % |
| 1e9 float,A100 | Thrust sort | 0.47 s → 0.28 s | +40 % |
| 1e8 128-bit 結構體,AVX-512 | IPS4o | 2.1 s → 1.6 s | +30 % |
④ 2025 應用場景清單
| 場景 | 推薦理由 | 狀態 |
|---|---|---|
| > L3 緩存 排序 | Blocked + prefetch 保證工作集 ≤ L2/2 | 生產就緒 |
| GPU 海量數據 | 0.28 s / 1e9 float 已優於 Thrust | 生產就緒 |
| NUMA 多路服務器 | P3296R0 默認綁定就近節點 | 測試中 |
| 嵌入式 / RVV | 同一份源碼 自動選最優路徑 | 測試中 |
| 標準庫未來 | C++26 候選,LEWG 初審通過 | 標準化推進 |
⑤ 一句話結論
Learned Sort 2.1 (2025)= 機器學習排大體 + 緩存塊寫細節 + GPU 管道 + 標準庫候選
+30~50 % 提速,內存原地,正從實驗室走向 ISO C++26。