關於MNN的OPENCL和Vulkan支援

笑眯眯办大事發表於2024-08-22

關於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,具體配置方式參照如下連結:
Windows OPENCV配置

相關文章