功夫过人呀 2023-11-30 10:17 采纳率: 0%
浏览 0

AsyncInferQueue C++ 的demo

《使用AsyncInferQueue进一步提升AI推理程序的吞吐量》
文章链接:https://blog.csdn.net/gc5r8w07u/article/details/128548344
AsyncInferQueue C++ 的demo有吗?

  • 写回答

2条回答 默认 最新

  • 睡觉觉觉得 2023-12-06 22:05
    关注

    参考GPT:
    根据您提供的引用[1],AsyncInferQueue是OpenVINO™ Toolkit中的一个类,用于异步推理。下面是一个使用AsyncInferQueue的C++示例代码:

    #include <iostream>
    #include <inference_engine.hpp>
    
    using namespace InferenceEngine;
    
    int main() {
        // 加载模型
        Core ie;
        CNNNetwork network = ie.ReadNetwork("model.xml");
        ExecutableNetwork executable_network = ie.LoadNetwork(network, "CPU");
    
        // 创建AsyncInferRequest
        AsyncInferRequest::Ptr async_infer_request = executable_network.CreateInferRequestPtr();
    
        // 创建AsyncInferQueue
        AsyncInferQueue queue("Custom", true, 1, async_infer_request);
    
        // 推送数据到队列
        float data[] = {1.0, 2.0, 3.0};
        Blob::Ptr input_blob = async_infer_request->GetBlob("input");
        MemoryBlob::Ptr input_memory_blob = as<MemoryBlob>(input_blob);
        auto input_data = input_memory_blob->wmap<float>();
        std::copy(std::begin(data), std::end(data), input_data.begin());
        queue.StartAsync();
    
        // 获取结果
        queue.WaitAll();
        Blob::Ptr output_blob = async_infer_request->GetBlob("output");
        MemoryBlob::Ptr output_memory_blob = as<MemoryBlob>(output_blob);
        auto output_data = output_memory_blob->rmap<float>();
        std::cout << "Result: " << output_data[0] << std::endl;
    
        return 0;
    }
    

    上述代码中,我们首先加载了一个模型,然后创建了一个AsyncInferRequest对象,并将其传递给AsyncInferQueue的构造函数。接着,我们将数据推送到队列中,并调用StartAsync()方法开始异步推理。最后,我们使用WaitAll()方法等待推理完成,并获取输出结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月30日