Computational Storage和GPUDirect Storage都在減少資料搬移,處理方式不同。Computational Storage把部分運算放到儲存裝置或Storage Array附近,先過濾、壓縮、掃描或轉換資料;GPUDirect Storage(GDS)則不在Storage執行模型邏輯,而是建立Storage和GPU Memory之間的直接DMA路徑,避免資料先經過CPU Bounce Buffer。
兩者可以互補。Storage端先把大型資料集縮小,再用GDS把結果送進GPU;也可以只使用GDS,把完整資料快速送給GPU計算。選擇取決於運算是否適合下放、結果縮減比例、Storage支援、GPU工作負載與端到端Break-even。
- Computational Storage在資料附近執行特定Computational Storage Function。
- SNIA目前以CSx統稱Computational Storage Device。
- CSD包含Storage與Compute Engine;CSP有Compute但不含持久Storage;CSA在Storage Array中提供Compute。
- SNIA於2026年4月21日發布Architecture and Programming Model v1.2。
- GPUDirect Storage讓Storage和GPU Memory直接DMA。
- cuFile提供同步、非同步、Batch與CUDA Stream I/O API。
- GPUDirect RDMA是GPU和遠端NIC路徑,不等於Storage近資料運算。
- 真正收益要比較資料縮減、I/O、CPU、GPU Idle與完整Pipeline。
這篇文章主要在談什麼? Computational Storage把篩選、壓縮與掃描放到儲存附近執行;GPUDirect Storage則讓Storage與GPU Memory直接DMA,減少CPU Bounce Buffer。本文比較SNIA CSx、CSD/CSP/CSA、cuFile、GPUDirect RDMA與AI工作負載。
讀者首先要掌握哪個重點? Computational Storage把篩選、壓縮與掃描放到儲存附近執行;GPUDirect Storage則讓Storage與GPU Memory直接DMA,減少CPU Bounce Buffer。本文比較SNIA CSx、CSD/CSP/CSA、cuFile、GPUDirect RDMA與AI工作負載。先抓住這個主軸,再閱讀後續細節。
標題中的關鍵對象有哪些? Computational Storage和GPUDirect Storage差在哪?近資料處理與GPU直接I/O;文中依此整理相關人物、作品、事件或概念。
本文整理了哪些背景或脈絡? 文章從「Computational Storage GPUDirect Storage」出發,補上形成背景、發展脈絡與讀者最容易混淆的重點。
這個主題的核心差異或看點是什麼? 核心看點在於把「Computational Storage GPUDirect Storage」放回具體例子與前後關係中比較,而不是只列出名詞。
讀者可以從文中得到哪些實用資訊? 文中依序整理關鍵名詞、人物/作品或事件,以及相關時間、地點、規格或觀察角度;細節以本文段落與引用來源為準。
這篇內容適合哪些搜尋需求? 適合想快速了解「Computational Storage GPUDirect Storage」定義、背景、差異與延伸脈絡的讀者。
閱讀與查證時應注意什麼? 若涉及活動、票價、上映、產品或時程,資訊可能更新,請以文中列出的官方或原始來源最新公告核對。
一句話怎麼總結? Computational Storage把篩選、壓縮與掃描放到儲存附近執行;GPUDirect Storage則讓Storage與GPU Memory直接DMA,減少CPU Bounce Buffer。本文比較SNIA CSx、CSD/CSP/CSA、cuFile、GPUDirect RDMA與AI工作負載。 YOLO LAB 將資訊整理成可快速理解與延伸查證的架構。
文章實體化:Computational Storage和GPUDirect Storage差在哪?近資料處理與GPU直接I/O
本文以「Computational Storage和GPUDirect Storage差在哪?近資料處理與GPU直接I/O」為主線,補回模型/工具、輸入輸出、版本、成本、測試與使用邊界,讓技術名詞回到可執行的工作流程。
- 核心元件:把標題中的模型、工具、格式、企業或協定對應到實際輸入、輸出與依賴。
- 驗證方法:記錄版本、資料、環境、基準、錯誤案例與人工檢查,避免只引用功能宣稱。
- 治理邊界:說明權限、資料保存、成本、失敗回復與何時需要人工介入。
涉及版本、價格、企業資料或 API 行為時,以文章原始資料與供應商/公司最新文件核對。
Computational Storage在做什麼?
傳統流程把大量資料從Storage搬到Host Memory,再由CPU或GPU篩選。若最後只保留很少結果,大部分I/O和Memory Bandwidth都被用來搬運會被丟棄的資料。Computational Storage嘗試在更靠近資料的位置先執行可下放工作。
- Predicate Filtering。
- 壓縮與解壓。
- 加密、Checksum和資料驗證。
- 固定格式Scan與Aggregation。
- Vector Search的部分候選過濾。
- 影像或Log的預處理。
適合的Function通常輸入大、輸出小、規則穩定且資料局部性高。需要大量跨資料關聯、頻繁變動程式或大型模型推理時,Host GPU仍更合適。
SNIA的CSx分類
| 類型 | 全名 | 特性 |
|---|---|---|
| CSD | Computational Storage Drive | 同一裝置包含Storage與Computational Storage Engine |
| CSP | Computational Storage Processor | 提供Compute Engine,但本身不一定含持久Storage |
| CSA | Computational Storage Array | Storage Array內含一或多個Compute Engine |
| CSx | Computational Storage Device | CSD、CSP與CSA的統稱 |
SNIA Architecture and Programming Model定義建議行為;Computational Storage API則定義Application和CSx之間的標準化函式。實際Transport可能是NVMe、NVMe-oF或其他連接。
GPUDirect Storage在做什麼?
Traditional:
Storage → CPU memory bounce buffer → GPU memory
GDS:
Storage → direct DMA → GPU memory
GDS的主要目標是降低CPU Copy、Memory Bandwidth與Context Switch,讓以GPU作為第一個和最後一個資料使用者的Pipeline更有效率。它不會在SSD內執行Filter或模型,只改變資料I/O路徑。
- Local NVMe與支援的Distributed Filesystem。
cuFileRead與cuFileWrite同步I/O。- Async與Batch API。
- CUDA Stream I/O。
- GPU Buffer Registration。
- Object Storage的cuObject介面。
Computational Storage與GDS比較
| 面向 | Computational Storage | GPUDirect Storage |
|---|---|---|
| 核心 | 把Compute靠近Data | 把Data直接送到GPU |
| 處理位置 | CSD/CSP/CSA | GPU |
| 資料量 | 可先縮減 | 通常搬運實際要求資料 |
| 程式 | CS Function與Device能力 | Host App使用cuFile |
| 適合 | Filter、Compress、Scan | Training、Inference、Analytics I/O |
| 風險 | Function、互通與除錯 | Filesystem、Alignment與Topology |
GPUDirect RDMA又是什麼?
GPUDirect RDMA讓Remote NIC直接讀寫GPU Memory,用於跨節點Collective、KV傳輸與分散式資料。GDS處理Storage I/O;RDMA處理Network I/O。部分Distributed Filesystem底層可能同時使用RDMA與GDS,但兩個名稱不等價。
| 技術 | 來源/目的地 |
|---|---|
| CUDA IPC | 同主機程序間GPU Allocation |
| GPUDirect RDMA | GPU ↔ Remote NIC/GPU |
| GPUDirect Storage | GPU ↔ Storage |
| Computational Storage | 在Storage附近執行Function |
同機程序共享可閱讀CUDA IPC怎麼共享GPU記憶體?。
cuFile基本流程
#include <cufile.h>
cuFileDriverOpen();
// open file with suitable flags, often O_DIRECT
cuFileHandleRegister(&cf_handle, &desc);
cuFileBufRegister(gpu_buffer, bytes, 0);
ssize_t read_bytes = cuFileRead(
cf_handle,
gpu_buffer,
bytes,
file_offset,
buffer_offset
);
cuFileBufDeregister(gpu_buffer);
cuFileHandleDeregister(cf_handle);
cuFileDriverClose();
現行GDS也提供Async、Batch與CUDA Stream API。實際使用需確認Filesystem、Mount、O_DIRECT、Driver、Topology與cufile.json配置。
Bounce Buffer 的概念
Bounce Buffer是Storage I/O先進入CPU可存取Memory,再複製到GPU。它提供廣泛相容性,也增加一次資料Copy、CPU Memory Bandwidth與同步。GDS嘗試在支援路徑直接DMA;不支援時可進Compatibility Mode或回退傳統I/O。
AI工作負載如何使用?
- Training Dataset直接送入GPU。
- Checkpoint讀寫。
- Embedding與Vector Batch。
- KV Cache SSD Offload和Reload。
- 影像、影片和Scientific Data。
- GPU ETL與資料分析。
KV Offloading若使用LMCache GDS Backend,可從SSD直接讀寫GPU Buffer;Storage只保存KV,不代表在Storage中執行Attention。KV分層可閱讀KV Cache Offloading怎麼做?。
兩種技術如何組合?
Raw dataset in storage
→ Computational Storage filter / decompress
→ reduced result
→ GDS direct DMA
→ GPU training or inference
組合是否值得,取決於下放Function節省的Bytes是否高於Device Compute、Dispatch和Integration成本。若資料幾乎全部都要進GPU,直接GDS可能更簡單。
Break-even怎麼算?
host_path =
full_data_transfer
+ host_compute
+ gpu_transfer
near_data_path =
cs_dispatch
+ storage_compute
+ reduced_data_transfer
+ gpu_compute
- Input Bytes與Selectivity。
- Storage Function Throughput。
- Host CPU和Memory Bandwidth。
- PCIe、NVMe與Network。
- 輸出大小和重用次數。
- Programming與維運成本。
Filter只移除1%資料時,Storage Compute可能沒有價值;移除99%且條件固定時,近資料處理更可能成立。
安全與多租戶
- CS Function需要簽署、版本與允許清單。
- Storage端Compute限制CPU、Memory與I/O。
- Tenant資料和Function隔離。
- GDS Buffer Registration不暴露超出範圍Memory。
- O_DIRECT和Filesystem Permission仍適用。
- Log需記錄Function、Object、Version和結果。
- 失敗時可回退Host Path。
Benchmark矩陣
| 維度 | 測試 |
|---|---|
| 資料量 | GB、TB與Burst |
| Selectivity | 1%、10%、50%、100% |
| Function | Filter、Compress、Checksum、Scan |
| Path | POSIX+Bounce、GDS、Computational Storage+GDS |
| Storage | Local NVMe、Shared FS、Object |
| 指標 | GB/s、Latency、CPU、GPU Idle、Energy、Cost |
常見問題
GDS會在SSD裡執行AI模型嗎?
不會。GDS只最佳化Storage到GPU的資料路徑,模型仍在GPU執行。
Computational Storage一定是特殊SSD嗎?
不一定。SNIA分類包含Drive、Processor和Array,Compute可能與Storage同裝置、相鄰或位於Array控制層。
用了GDS就完全不需要CPU嗎?
不會。CPU仍負責控制、Metadata、Application和部分I/O提交;GDS主要降低Data Copy和CPU Memory壓力。
官方資料
Computational Storage減少「不必離開Storage的資料」,GDS減少「必須進GPU但不必經CPU的複製」。兩者都在處理資料移動,但只有先定位資料量、運算位置與Break-even,才知道該把Compute移近Data,還是把Data更直接送往GPU。
先分清楚三件事:資料在哪裡、運算在哪裡、誰負責搬運
Computational Storage、GPUDirect Storage(GDS)與 GPUDirect RDMA 常被放在同一張架構圖裡,但它們解決的不是同一個瓶頸。Computational Storage 改變的是運算位置:把篩選、掃描、壓縮、解壓、checksum 或其他可下放的工作放到儲存裝置、Storage Processor 或 Storage Array 附近。GDS 改變的是 I/O 路徑:當資料仍然要交給 GPU 時,讓 storage 端的 DMA engine 直接把資料送進 GPU memory,減少 CPU system memory 的 bounce buffer。GPUDirect RDMA 則處理 GPU memory 與遠端 NIC 或其他網路端點之間的資料路徑。
這個區分會直接影響設計決策。若資料集有九成內容在進 GPU 前就能被固定條件排除,近資料 filter 可能降低跨 PCIe、CPU memory 與 GPU memory 的資料量;若幾乎所有資料都必須進 GPU,額外部署 Computational Storage Function 只會增加控制面與維運成本,此時 GDS 可能是較直接的路徑。若資料在另一個節點或另一個 rack,則要把 NIC、RDMA、檔案系統與 GDS 的支援一起評估,不能只看某一個 API 名稱。
| 問題 | 主要技術 | 要驗證的證據 |
|---|---|---|
| 哪些資料可以先丟掉? | Computational Storage | 輸入 bytes、輸出 bytes、filter selectivity、function latency、結果正確性 |
| 資料如何直接進 GPU? | GPUDirect Storage | cuFile path、GPU buffer、filesystem、DMA、CPU copy 與 fallback 狀態 |
| 資料如何跨節點移動? | GPUDirect RDMA/NCCL/專用傳輸 | NIC topology、RDMA capability、network path、順序與重試 |
| 如何讓系統可維護? | 控制面與可觀測性 | schema、版本、tenant、trace id、錯誤分類、回退路徑 |
SNIA CSx 模型:不要把「靠近儲存」誤寫成「一定是 SSD」
SNIA 的 Computational Storage Architecture 用 CSx 作為較大的統稱,並區分 CSD、CSP 與 CSA。CSD 可以把持久儲存與運算引擎放在同一個裝置內;CSP 提供運算能力但不一定包含持久儲存;CSA 則是在 Storage Array 層提供一個或多個運算引擎。這個分類很重要,因為 API、隔離邊界、更新方式、故障域與資料傳輸介面都可能不同。
對應用程式而言,最值得先定義的是 Computational Storage Function 的契約,而不是先決定硬體名稱。契約應說明輸入資料格式、輸出格式、可接受的版本、最大輸入大小、是否可串流、是否允許重試、是否保證 deterministic、錯誤碼、資源限制與安全身份。若 function 只支援某一個裝置的私有格式,未來更換 CSD、CSP 或 CSA 時,就可能需要重寫整條 pipeline。
可下放的工作通常有三個特徵:輸入量大、輸出量小;規則穩定、可以在裝置端安全執行;資料局部性清楚,不需要頻繁讀取遠端資料。Predicate filtering、固定格式 scan、壓縮與解壓、checksum、加密前後的資料整理比較容易符合這些條件。大型模型推理、複雜跨表 join、需要大量共享狀態的 graph traversal,通常更適合留在 CPU、GPU 或專用計算節點。
CSx 也不應被當成無限擴充的 CPU。裝置端的 compute engine 可能有不同的核心數、記憶體、溫度與韌體限制;同一個 function 在低併發、小資料或高頻更新條件下,初始化與 dispatch overhead 可能比節省的資料搬運更大。因此應保留 host path,讓應用程式可以在不支援某個 function、版本不相容或裝置過載時回到既有流程。
GDS 的實際路徑:控制路徑仍經過 CPU,資料路徑不必經過 CPU memory
NVIDIA GPUDirect Storage Overview Guide 將 GDS 描述成 storage 與 GPU memory 之間的直接 DMA 路徑。這不代表 CPU 完全消失:應用程式仍要由 CPU 發出 cuFile request、準備 file offset、transfer size、GPU virtual address、stream 或 batch;CPU 也要負責 metadata、權限、錯誤處理與 pipeline 控制。被減少的是資料本身經過 CPU system memory 的額外 copy。
在一般 bounce-buffer 路徑中,資料先進入 CPU 可存取的 buffer,再由 CPU 或 GPU 進行第二段 copy。這會消耗 CPU memory bandwidth、增加同步點,也可能讓 CPU 與 GPU 共享的 PCIe root port 成為瓶頸。GDS 會依 filesystem、storage driver、GPU topology 與 cuFile 設定選擇可用路徑;direct path、compatibility path、GPU intermediate buffer 與其他 routing path 的成本並不相同,不能只從程式碼呼叫 cuFileRead 就宣稱一定是 zero-copy。
cuFile API Reference 所描述的流程通常包含 driver initialization、file handle registration、GPU buffer registration、read/write、deregister 與 driver close。非同步、batch 與 CUDA stream API 可以把 I/O 和 kernel 排進同一個控制流程,但仍要測量 queue depth、stream ordering、資料生命週期與 completion event。若上游或下游仍在 CPU 解析資料,GDS 可能只改善其中一段,端到端結果未必顯著。
open file and validate mount / permission
cuFileDriverOpen()
cuFileHandleRegister(file)
cuFileBufRegister(gpu_buffer, bytes)
cuFileRead(handle, gpu_buffer, bytes, file_offset, buffer_offset)
wait for completion and validate checksum
cuFileBufDeregister(gpu_buffer)
cuFileHandleDeregister(handle)
cuFileDriverClose()
O_DIRECT、相容模式與「看起來成功」的陷阱
GDS O_DIRECT Requirements Guide 說明 direct path 與檔案開啟模式、filesystem、storage driver 及 buffer 條件的關係。應用程式即使拿到成功的 API 回傳,也要確認實際走的是 direct path 還是 compatibility mode。compatibility mode 可能透過 CPU system memory 完成 I/O,功能上可用但不代表已取得 GDS 的預期效益。
部署檢查至少要包含 filesystem mount、O_DIRECT 行為、GPU allocation 類型、buffer registration、file offset、transfer size、driver、CUDA/GDS 版本與 cuFile configuration。非對齊資料、過小的 I/O、細碎 random access、mmap 造成的隱式 fault,可能讓 direct path 的收益下降。測試報告應寫清楚每一個條件,而不是只有一個「GDS enabled」布林值。
| 檢查項目 | 常見誤判 | 應保留的證據 |
|---|---|---|
| File mode | 只看到 API 成功就當作 direct | O_DIRECT、相容模式、mount 與 filesystem 狀態 |
| GPU buffer | 任意 host/managed buffer 都有相同效果 | allocation type、registration、bytes、alignment |
| Topology | 所有 GPU 與 NVMe/NIC 都有相同路徑 | PCIe root、switch、GPU UUID、NIC/storage device |
| Async I/O | submission 完成就等於資料可用 | completion、stream event、sequence、checksum |
Computational Storage 加 GDS:何時真的值得組合
兩者組合的理想流程是「在 storage 附近先縮小資料,再把結果直接送進 GPU」。例如原始 log 先由 CS function 依時間、租戶或欄位條件篩選,再由 GDS 將較小的 columnar batch 送進 GPU;或先在裝置端完成解壓與格式整理,再讓 GPU 做 embedding、訓練或推論。這條路徑只有在 function 的 dispatch、執行與結果驗證成本小於節省的資料搬運成本時才有意義。
要做出可比較的 break-even,至少記錄五段時間:CS function dispatch、storage-side compute、縮減後資料傳輸、GPU kernel、以及 fallback 或 recovery。除了 bytes reduction,也要看 selectivity 是否穩定;若某些資料分區幾乎沒有可排除內容,系統可能在不同 partition 上有完全不同的最佳路徑。控制面應根據資料特徵選擇 host path、CSx path、GDS path 或兩者組合,而不是把所有流量固定送到最複雜的路徑。
raw object / block data
-> CSx function: validate + filter + decompress
-> versioned reduced batch
-> cuFile direct transfer when supported
-> GPU kernel / inference
-> checksum + offset + generation acknowledgement
資料一致性也要在兩層之間明確定義。CS function 回傳的 batch 要帶 schema version、source offset、input checksum、output checksum、function version 與 generation;GDS consumer 只有在 metadata 與 buffer 大小吻合後才可啟動 kernel。若 function 重試造成重複結果,consumer 必須使用 idempotency key 或 generation 去重。若 direct path 不可用,Host Copy 的結果要使用相同的 schema 與 checksum,讓上層不必依賴路徑判斷資料是否可信。
拓樸不是附註:PCIe switch、NIC、NVMe 與 GPU 的距離會改變答案
GDS 的實際路徑受 PCIe root complex、switch、NVMe、NIC、GPU BAR1、NVLink 與跨 socket 路徑影響。同一套 cuFile 程式在兩台機器上可能有不同結果;即使都沒有 CPU bounce buffer,資料也可能需要跨 root port 或先進入另一個 GPU 的 intermediate buffer。NVIDIA 文件也提到 dynamic routing 會依 storage NIC 與 GPU 的 PCI distance 選擇候選路徑,這正是為什麼 topology 應列入部署與 benchmark 的主欄位。
在多 GPU 系統,先繪製 storage device、NIC、GPU、CPU socket、PCIe switch 與 NVLink 的關係,再決定 buffer 放在哪一張 GPU。對分散式 filesystem,還要記錄 mount、RDMA device、IP、filesystem driver 與 dynamic routing 設定。對 local NVMe,則要測試 drive 數量、RAID、queue depth 與共享 PCIe link。結果若只報「單張 GPU 的讀取速度」,無法推論多 GPU、多 NIC 或多 tenant 的端到端能力。
同樣的原則適用於 Computational Storage。CSD、CSP 或 CSA 的位置可能靠近資料,但不一定與 GPU 位於同一個 PCIe tree;若先縮減的資料仍要經過昂貴的跨節點傳輸,function 的收益可能被網路 latency 吃掉。應把資料縮減率、function 所在位置、storage 到 GPU 的 hop 數、NIC bandwidth、GPU idle 與 queue wait 放在同一張表比較。
安全、租戶隔離與韌體生命週期
Storage-side function 具有讀取資料和消耗裝置資源的能力,不能只當成一個普通 query。function 應有簽章、版本、allowlist、資源上限與撤銷機制;資料來源、租戶、object、partition 與輸出 destination 也要在控制面做身份驗證。多租戶環境不應讓一個租戶透過 function 讀取另一個租戶的 metadata、快取或未授權的 storage range。
GDS 的 GPU buffer registration、file handle、configuration 與 device node 同樣需要最小權限。log 可以記錄 function version、allocation id、bytes、offset、錯誤碼與 trace id,但不應保存可重播的秘密、未遮罩的租戶內容或不必要的 handle。韌體、driver、CUDA、GDS library、filesystem module 與 CS function 更新應各自有 compatibility matrix,並且保留 host fallback。升級後先跑小型 pattern、錯誤注入與 recovery,再逐步增加資料量。
Benchmark 要測端到端,不只測峰值 GB/s
一個可用的 benchmark matrix 至少要比較 Host Copy、GDS direct path、GDS compatibility path、Computational Storage、Computational Storage 加 GDS,以及必要時的 RDMA path。資料內容要包含高 selectivity、低 selectivity、壓縮資料、不可下放的資料與不同 partition 大小。每一個結果都要固定 CUDA/driver/GDS 版本、GPU 型號、storage、filesystem、PCIe topology、buffer size、queue depth、stream 數、batch 大小與 tenant 數。
| 維度 | 最低測試組合 | 必看指標 |
|---|---|---|
| 資料縮減 | 1%、10%、50%、90% output ratio | 輸入/輸出 bytes、function time、GPU idle |
| I/O | 4 KiB、1 MiB、16 MiB、large streaming | p50/p95 latency、GB/s、CPU memory traffic |
| 路徑 | Host Copy、GDS、fallback、CSx+GDS | copy 次數、queue wait、completion time、錯誤率 |
| 拓樸 | 同 switch、跨 root、跨 socket、遠端 NIC | PCIe hop、NIC usage、GPU-to-storage distance |
| 故障 | function timeout、driver reset、storage error、重試 | recovery time、資料遺失、重複、回退比例 |
正確性驗收不能只看 checksum 的最後一個結果。要確認 offset、record count、schema version、順序、重試去重與部分失敗的處理;對訓練資料,要確認 sample 不會遺失或重複;對 checkpoint,要確認寫入完成與 rename/commit 的順序;對 KV 或 embedding,要確認版本和來源 partition 一致。效能提升只有在資料正確、可觀測、可回退且維運成本可接受時才算有效。
選型決策表
如果資料必須完整進 GPU,且瓶頸是 CPU copy、CPU memory 或 PCIe root path,優先測 GDS。若資料可以用穩定規則大幅縮減,且 CSx function 的部署與安全邊界可控,才把 Computational Storage 放進主路徑。若資料在遠端節點或物件儲存,先確認 NIC、RDMA、filesystem、cuFile 或 cuObject 的支援,避免把 local NVMe 的結果套到遠端環境。若資料量小、延遲要求不高或故障恢復最重要,Host Copy 仍可能是最合理的 baseline。
- 要降低資料量:先驗證 filter/compress/scan 的 selectivity 與 function 成本。
- 要降低 CPU copy:先驗證 GDS 的 direct path、buffer registration 與 filesystem 支援。
- 要跨節點傳輸:先驗證 NIC topology、RDMA、排序、重試與租戶隔離。
- 要簡化維運:保留 Host Copy,讓 unsupported、timeout、driver reset 都有清楚 fallback。
- 要宣稱效能改善:提供端到端矩陣與環境快照,不用單一 microbenchmark 代替整條 pipeline。
官方資料與圖片來源
本文依據 SNIA Computational Storage Architecture、NVIDIA GPUDirect Storage Design Guide、NVIDIA GPUDirect Storage Overview Guide、NVIDIA GDS cuFile API Reference與 NVIDIA O_DIRECT Requirements Guide整理。CSx 的實際能力、GDS direct/compatibility path、filesystem、driver、CUDA 版本與 PCIe topology 都需要在目標環境重新驗證;本文不把官方文件的架構描述當成特定硬體的效能保證。圖片使用 NVIDIA GPUDirect Storage Design Guide 官方圖,保留來源頁與原始圖片 URL,不主張超出 NVIDIA 文件的授權範圍。
__COMPUTATIONAL_STORAGE_26512_SOURCE_IMAGE_RECONCILE_20260816__
延伸閱讀:把計算移近資料,不代表系統複雜度消失
Computational Storage 與 GPUDirect Storage 都在處理資料搬移成本,但思路不同:前者把部分處理靠近儲存端,後者縮短資料進入 GPU 的路徑。比較兩者時,不能只看理論頻寬,也要看資料格式、工作負載、CPU 參與、故障邊界與實際可部署性。
選型應以端到端流程為單位:資料從哪裡來、需要幾次轉換、結果如何驗證、硬體故障時如何回退。若只把 bottleneck 從 CPU 搬到儲存或 GPU,整體未必更快。可重現的 benchmark、清楚的資料一致性模型與可觀測性,往往比單一峰值數字更有決策價值。

增量:Computational Storage 與 GPUDirect Storage,先分清運算位置
Computational Storage 把部分資料處理或過濾推近儲存端;GPUDirect Storage 則著重讓資料更直接地在儲存系統與 GPU 記憶體之間移動,減少不必要的 CPU 路徑。兩者都可能降低資料搬運成本,但解決的是不同層次的瓶頸。
- 近資料處理:適合先過濾、壓縮、解碼或聚合,減少需要搬到主機的資料量。
- GPU 直接 I/O:重點在 DMA、驅動、檔案系統與 GPU buffer 的整體路徑。
- 系統設計:要一起看資料格式、故障恢復、可觀測性與軟體生態,不能只比較峰值頻寬。
實作評估應以完整 workload 為準:資料準備、傳輸、GPU kernel、同步與錯誤重試都要計時,避免把單一 I/O microbenchmark 當成端到端收益。
把「Computational Storage和GPUDirect Storage差在哪?近資料處理與GPU直接I/O」拆成可驗證的系統問題
這篇文章的主題不只是一個名詞或產品名稱,而是一套由資料、流程、資源與限制共同組成的系統。讀完主要敘述後,可以把焦點往前推一步:系統邊界在哪裡、關鍵機制如何運作、指標改善是否伴隨新的成本,以及哪些說法仍需要原始資料核對。
| 分析面向 | 要追問什麼 | 可查找的證據 |
|---|---|---|
| 系統邊界 | 本文的主題由哪些元件、角色與外部條件共同構成? | 架構圖、供應鏈、時間線與官方規格 |
| 運作機制 | 結果是由哪個流程、模型、設計或制度選擇造成? | 流程步驟、參數、介面、測試與案例 |
| 指標與代價 | 效率、速度或規模提升後,哪種成本或風險被轉移? | 功耗、延遲、可靠性、價格、勞動與環境資料 |
| 可驗證性 | 哪些結論可以重現,哪些仍只是公司說法或推測? | 原始文件、版本、第三方測試與反例 |
用這四個問題閱讀,能把技術敘事從「看起來很強」轉成可比較的證據鏈,也能看見一個系統真正改變的是什麼。
KEEP READING
接著讀什麼?
從同一主題繼續閱讀,或回到 YOLO LAB 的完整文章索引,找到下一個值得投入時間的問題。


發表迴響