Files
Inbox/技术选择/清单.md
2025-12-11 07:24:36 +08:00

1.4 KiB
Raw Blame History

tags, date created, date modified
tags date created date modified
星期四, 十一月 20日 2025, 8:52:43 晚上 星期日, 十二月 7日 2025, 9:26:50 晚上

流的设计模式B. 多流乒乓/多缓冲 (Multi-Stream Ping-Pong) (推荐) 但是 先设计 A. 单流串行 (Serial Stream) 作为代码调试阶段的轻量级。

  1. 缓冲区管理状态机
stateDiagram-v2
    %% 状态定义
    state "HOST_OWNED<br/>(主机所有)" as HOST
    state "DEVICE_OWNED_H2D<br/>(传输中: H->D)" as H2D
    state "DEVICE_OWNED_COMPUTE<br/>(计算中: Kernel)" as COMPUTE
    state "DEVICE_OWNED_D2H<br/>(传输中: D->H)" as D2H
    state "RELEASED<br/>(待归还)" as RELEASED

    %% 流程流转
    [*] --> HOST : 从 MemoryPool 申请

    HOST --> H2D : I/O线程填充数据\n并调用 cudaMemcpyAsync
    note right of HOST
        此时数据位于页锁定内存
        CPU 写入完成
    end note

    H2D --> COMPUTE : 记录 H2D_Event\nStreamWaitEvent
    note right of H2D
        DMA 引擎正在搬运
        CPU 不阻塞
    end note

    COMPUTE --> D2H : Kernel 执行完毕\n自动触发 D2H
    note right of COMPUTE
        GPU 核心正在计算
        数据驻留显存
    end note

    D2H --> RELEASED : D2H 完成回调\n或 Event 同步
    note right of D2H
        结果已写回 Host
    end note

    RELEASED --> HOST : DataPacket 析构\n自动归还 Pool
    
    RELEASED --> [*]