--- tags: [] date created: 星期四, 十一月 27日 2025, 11:54:57 中午 date modified: 星期四, 十一月 27日 2025, 11:44:56 晚上 --- # 3.1 异构协同模型与职责边界 (Heterogeneous Collaboration Model & Responsibility Boundary) - **设计目标**:最大化利用国产异构硬件特性(Feiteng 的逻辑控制能力 + Iluvatar 的并行浮点能力),同时最小化 PCIe 总线上的交互频率。 ## 3.1.1 Device 侧驻留图谱:信号处理流水线 (Device-Resident Workload: Signal Processing Pipeline) - **核心指向**:定义必须**“死锁”在 GPU 显存**中运行的算法全集。严禁数据在中间步骤回流 CPU。 - **算法栈与库选型**: - **波束形成 (DBF)**:利用 **cuBLAS** (Vendor) 进行矩阵乘法加速。 - **脉冲压缩 & 多普勒处理**:利用 **cuFFT** (Vendor) 执行批量 FFT。 - **恒虚警检测 (CFAR)**:利用 **Thrust** (Open Source/Vendor SDK) 的 `transform` 和 `stencil` 算法实现并行滑窗检测,避免手写复杂 Kernel。 - **边界法则**:**“GB 进,KB 出”**。输入是原始 I/Q (GB 级),输出是点迹列表 (KB 级)。中间过程(如 RDM 矩阵)绝不离开显存。 ## 3.1.2 Host 侧驻留图谱:逻辑控制与后处理 (Host-Resident Workload: Logic & Post-Processing) - **核心指向**:定义由 CPU 负责的标量计算和状态管理任务。 - **开源库集成**: - **数据关联与滤波 (Tracking)**:利用 **Eigen3** (Open Source) 实现卡尔曼滤波(Kalman Filter)和概率数据互联(PDA)算法。Eigen 的向量化指令(NEON)能极好地适配飞腾 CPU。 - **全链路日志与审计**:集成 **spdlog** 或 **glog** (Open Source),在控制路径上打点,记录任务调度延迟和状态变更,而非自己造日志轮子。 - **参数配置管理**:集成 **yaml-cpp** (Open Source) 解析雷达波位表和 CFAR 阈值参数。 ## 3.1.3 宏指令交互接口 (Macro-Instruction Interface) - **核心指向**:定义 Host 指挥 Device 的“语言”。摒弃微观的“启动这个 Kernel”式调用,转为 **“宏指令 (Macro-Op)”** 模式。 - **指令结构**:定义 `RadarProcessingJob` 结构体。 - 包含:`BatchID`、`WaveformParams`(波形参数)、`AlgoConfig`(算法开关)。 - **机制**:CPU 只需下发一个 Job 对象,GPU 侧的 **“执行器 (Executor)”** 自动展开为数十个 Kernel 的调用序列。这极大减少了 Host 端的调度抖动。 ## 3.1.4 算力回流边界:CFAR 截断点 (The "CFAR Cutoff" Boundary) - **核心指向**:精确定义数据从 GPU 流回 CPU 的唯一物理与逻辑时刻。 - **截断策略**: - **物理点**:CFAR 检测完成后。此时数据量从“全图像素”坍缩为“稀疏点迹”。 - **数据转换**:在 GPU 上直接使用 **Thrust** 的 `copy_if` 算子,将满足阈值的点收集到连续内存块(`DetectionResult` 数组),然后一次性 DMA 回传。 - **反模式警示**:严禁将整个 2D 距离 - 多普勒图(Range-Doppler Map)传回 CPU 做检测,这会瞬间击穿 PCIe x8 带宽。