mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-04 16:22:57 +08:00

* add GPL lisence * add GPL-3.0 lisence * add GPL-3.0 lisence * add GPL-3.0 lisence * support yolov8 * add pybind for yolov8 * add yolov8 readme * add cpp benchmark * add cpu and gpu mem * public part split * add runtime mode * fixed bugs * add cpu_thread_nums * deal with comments * deal with comments * deal with comments * rm useless code * add FASTDEPLOY_DECL * add FASTDEPLOY_DECL * fixed for windows * mv rss to pss * mv rss to pss * Update utils.cc * use thread to collect mem * Add ResourceUsageMonitor * rm useless code * fixed bug * fixed typo * update ResourceUsageMonitor * fixed bug * fixed bug * add note for ResourceUsageMonitor * deal with comments * add macros * deal with comments * deal with comments * deal with comments * re-lint * rm pmap and use mem api * rm pmap and use mem api * add mem api * Add PrintBenchmarkInfo func * Add PrintBenchmarkInfo func * Add PrintBenchmarkInfo func * deal with comments * fixed enable_paddle_to_trt * add log for paddle_trt * support ppcls benchmark * use new trt option api * update benchmark info * simplify benchmark.cc * simplify benchmark.cc * deal with comments --------- Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com>
100 lines
3.5 KiB
C++
Executable File
100 lines
3.5 KiB
C++
Executable File
// Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#pragma once
|
|
|
|
#include "fastdeploy/vision.h"
|
|
|
|
static bool CreateRuntimeOption(fastdeploy::RuntimeOption* option,
|
|
int argc, char* argv[], bool remove_flags) {
|
|
google::ParseCommandLineFlags(&argc, &argv, remove_flags);
|
|
if (FLAGS_profile_mode == "runtime") {
|
|
option->EnableProfiling(FLAGS_include_h2d_d2h, FLAGS_repeat, FLAGS_warmup);
|
|
}
|
|
if (FLAGS_device == "gpu") {
|
|
option->UseGpu(FLAGS_device_id);
|
|
if (FLAGS_backend == "ort") {
|
|
option->UseOrtBackend();
|
|
} else if (FLAGS_backend == "paddle") {
|
|
option->UsePaddleInferBackend();
|
|
} else if (FLAGS_backend == "trt" || FLAGS_backend == "paddle_trt") {
|
|
option->UseTrtBackend();
|
|
if (FLAGS_backend == "paddle_trt") {
|
|
option->UsePaddleInferBackend();
|
|
option->paddle_infer_option.enable_trt = true;
|
|
}
|
|
if (FLAGS_use_fp16) {
|
|
option->trt_option.enable_fp16 = true;
|
|
}
|
|
} else if (FLAGS_backend == "default") {
|
|
return true;
|
|
} else {
|
|
std::cout << "While inference with GPU, only support "
|
|
"default/ort/paddle/trt/paddle_trt now, "
|
|
<< FLAGS_backend << " is not supported." << std::endl;
|
|
PrintUsage();
|
|
return false;
|
|
}
|
|
} else if (FLAGS_device == "cpu") {
|
|
option->SetCpuThreadNum(FLAGS_cpu_thread_nums);
|
|
if (FLAGS_backend == "ort") {
|
|
option->UseOrtBackend();
|
|
} else if (FLAGS_backend == "ov") {
|
|
option->UseOpenVINOBackend();
|
|
} else if (FLAGS_backend == "paddle") {
|
|
option->UsePaddleInferBackend();
|
|
} else if (FLAGS_backend == "lite") {
|
|
option->UsePaddleLiteBackend();
|
|
if (FLAGS_use_fp16) {
|
|
option->paddle_lite_option.enable_fp16 = true;
|
|
}
|
|
} else if (FLAGS_backend == "default") {
|
|
return true;
|
|
} else {
|
|
std::cout << "While inference with CPU, only support "
|
|
"default/ort/ov/paddle/lite now, "
|
|
<< FLAGS_backend << " is not supported." << std::endl;
|
|
PrintUsage();
|
|
return false;
|
|
}
|
|
} else if (FLAGS_device == "xpu") {
|
|
option->UseKunlunXin(FLAGS_device_id);
|
|
if (FLAGS_backend == "ort") {
|
|
option->UseOrtBackend();
|
|
} else if (FLAGS_backend == "paddle") {
|
|
option->UsePaddleInferBackend();
|
|
} else if (FLAGS_backend == "lite") {
|
|
option->UsePaddleLiteBackend();
|
|
if (FLAGS_use_fp16) {
|
|
option->paddle_lite_option.enable_fp16 = true;
|
|
}
|
|
} else if (FLAGS_backend == "default") {
|
|
return true;
|
|
} else {
|
|
std::cout << "While inference with XPU, only support "
|
|
"default/ort/paddle/lite now, "
|
|
<< FLAGS_backend << " is not supported." << std::endl;
|
|
PrintUsage();
|
|
return false;
|
|
}
|
|
} else {
|
|
std::cerr << "Only support device CPU/GPU/XPU now, " << FLAGS_device
|
|
<< " is not supported." << std::endl;
|
|
PrintUsage();
|
|
return false;
|
|
}
|
|
PrintBenchmarkInfo();
|
|
return true;
|
|
}
|