浅尝ncnn优化&&vulkan api的应用

2022-03-17  本文已影响0人  Epimenides

vulkan 的显存管理

VkDeviceMemory结构 不同内存架构的对比

对GPU存储布局的优化

1.[c,h,w] 这种布局不太适合在GPU上做IO:[c, h, w] ---> [c/4, h, w, 4]

  1. 减少内存带宽的需求

    • ncnn 中的 Tensor float数据可以使用半精度
    • 在一些不直接支持 fp16 存储的情况下,ncnn 使用 packHalf2x16unpackHalf2x16 来模拟 fp16fp32 的转换(这两个函数是 GLSL 内置的函数)
  2. 更加方便的维护代码

    • ncnn 中创建了一个 GLSL 的宏。

      所以写代码的时候可以不用管类型上的事,运行时会自动转换为设备支持的 fp32fp16 的对应代码


cpu-gpu 混合推理

CPU和GPU转换

并行推理

11个任务同时在三块gpu上做推理

GLSL->SPIR-V 运行编译


Swiftshader


复用 VkPipeline 和相关的 vulkan object

降低第一次加载模型的耗时
上一篇 下一篇

猜你喜欢

热点阅读