Skip to content

设计决策

关键架构决策及其理由。

决策 1: RAII 内存管理

状态: 已采纳

背景: GPU 内存必须显式分配和释放。

决策: 使用 DeviceBuffer 类的 RAII 模式。

影响:

  • ✅ 无内存泄漏
  • ✅ 异常安全
  • ✅ 清晰的所有权语义

决策 2: 三层架构

状态: 已采纳

背景: 需要在简单性和灵活性之间平衡。

决策: 分离为应用层、算子层和基础设施层。

影响:

  • ✅ 清晰的关注点分离
  • ✅ 易于添加新算子
  • ✅ 可测试的组件

决策 3: 卷积使用共享内存分块

状态: 已采纳

背景: 卷积受内存带宽限制。

决策: 使用共享内存分块缓存图像数据。

影响:

  • ✅ 比朴素实现快 10 倍
  • ⚠️ 内核大小限制在 ~15×15

决策 4: 缩放使用纹理内存

状态: 已采纳

背景: 图像缩放需要插值。

决策: 使用带硬件插值的 CUDA 纹理内存。

影响:

  • ✅ 免费的硬件双线性插值
  • ✅ 缓存的纹理读取
  • ⚠️ 仅限于 2D 图像

决策 5: 直方图使用原子操作

状态: 已采纳

背景: 直方图需要跨线程计数。

决策: 使用原子操作配合共享内存归约。

影响:

  • ✅ 正确的并行直方图
  • ⚠️ 一定的原子竞争

另见

Released under the MIT License.