《使用AsyncInferQueue进一步提升AI推理程序的吞吐量》
文章链接:https://blog.csdn.net/gc5r8w07u/article/details/128548344
AsyncInferQueue C++ 的demo有吗?
AsyncInferQueue C++ 的demo
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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()方法等待推理完成,并获取输出结果。
解决 无用评论 打赏 举报