关于MNN的OPENCL和Vulkan支持

关于MNN框架推理的时候,通过调用库当中结构体的内容,可以切换选择创建Session的具体配置。关于结构的描述见官方文档:
官方文档——创建Session
CPU是编译的时候默认选择的配置方式,通过文档可知在结构体:

MNN::ScheduleConfig

当中有可以选择的2个成员,分别是:

type(配置方式)
numThread(设置并发数和线程数)

故我们在创建Session之前可以进行相应的配置,大体如下:

// 配置调度配置结构体,并手动设置CPU的并发数与线程数
MNN::ScheduleConfig barcodeConfig;
//barcodeConfig.type = MNN_FORWARD_VULKAN; // 使用GPU-VULKAN进行推理
//barcodeConfig.type = MNN_FORWARD_OPENCL; // 使用GPU-OPENCL进行推理
barcodeConfig.type = MNN_FORWARD_CPU;   // 使用CPU进行推理
//barcodeConfig.numThread = 4; // 设置并发数和线程数
// 创建Session并传递配置
MNN::Session* barcodeSession = barcodeNet->createSession(barcodeConfig);

其中以下配置三选一,且在配置为CPU的时候可以进行配置并发数和线程数

//barcodeConfig.type = MNN_FORWARD_VULKAN; // 使用GPU-VULKAN进行推理
//barcodeConfig.type = MNN_FORWARD_OPENCL; // 使用GPU-OPENCL进行推理
barcodeConfig.type = MNN_FORWARD_CPU;   // 使用CPU进行推理

如果选择了OPENCL配置方式,还需要电脑本身支持OPENCL,具体配置方式参照如下链接:
OPENGL在Windwos上环境配置

如果选择了Vulkan配置方式,同样需要电脑本身支持Vulkan,具体配置方式参照如下链接:
Vulkan在Windows上环境搭建

posted @ 2024-08-22 10:38  笑眯眯办大事  阅读(61)  评论(0编辑  收藏  举报