less than 1 minute read

1 调用

int main()
{
    srand(time(NULL));
    ncnn::create_gpu_instance();
    ncnn::VulkanDevice vkdev;

    // high-level api
    ncnn::Net net;

    net.use_vulkan_compute = 1;
    net.set_vulkan_device(&vkdev);
    net.load_param("mnist.param");
    net.load_model("mnist.bin");

    ncnn::Extractor ex = net.create_extractor();
    ncnn::Mat in(28, 28, 1);
    in.fill(0.5f);
    ex.input("data", in);

    ncnn::Mat ip2;
    ex.extract("ip2", ip2);
    pretty_print(ip2);
    ncnn::destroy_gpu_instance();

    return 0;
}

2 问题

2.1 GPU 占用少

问题:

关闭vulkan, cpu4652, 占用90%,gpu显存占用为0;     
打开vulkan, cpu3614, 占用70%,gpu显存占用很少;     

原因:预处理和后处理是 cpu 函数

ncnn::Mat::substract_mean_normalize 调用了 Bias 层,该层 vulkan 不支持;深度网络模型有 bias 偏置参数,vulkan 不支持只能回退到cpu侧执行了;

TOP

附录

A 资源汇总

  1. vulkan compute

Comments