提交 9cc2b119 编写于 作者: S syyxsxx

add cpu mkl supported

上级 5c5ff738
...@@ -29,6 +29,7 @@ using namespace std::chrono; // NOLINT ...@@ -29,6 +29,7 @@ using namespace std::chrono; // NOLINT
DEFINE_string(model_dir, "", "Path of inference model"); DEFINE_string(model_dir, "", "Path of inference model");
DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); DEFINE_bool(use_gpu, false, "Infering with GPU or CPU");
DEFINE_bool(use_trt, false, "Infering with TensorRT"); DEFINE_bool(use_trt, false, "Infering with TensorRT");
DEFINE_bool(use_mkl, true, "Infering with MKL");
DEFINE_int32(gpu_id, 0, "GPU card id"); DEFINE_int32(gpu_id, 0, "GPU card id");
DEFINE_string(key, "", "key of encryption"); DEFINE_string(key, "", "key of encryption");
DEFINE_string(image, "", "Path of test image file"); DEFINE_string(image, "", "Path of test image file");
...@@ -56,8 +57,10 @@ int main(int argc, char** argv) { ...@@ -56,8 +57,10 @@ int main(int argc, char** argv) {
model.Init(FLAGS_model_dir, model.Init(FLAGS_model_dir,
FLAGS_use_gpu, FLAGS_use_gpu,
FLAGS_use_trt, FLAGS_use_trt,
FLAGS_use_mkl,
FLAGS_gpu_id, FLAGS_gpu_id,
FLAGS_key); FLAGS_key,
FLAGS_thread_num);
// Predict // Predict
int imgs = 1; int imgs = 1;
......
...@@ -31,6 +31,7 @@ using namespace std::chrono; // NOLINT ...@@ -31,6 +31,7 @@ using namespace std::chrono; // NOLINT
DEFINE_string(model_dir, "", "Path of inference model"); DEFINE_string(model_dir, "", "Path of inference model");
DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); DEFINE_bool(use_gpu, false, "Infering with GPU or CPU");
DEFINE_bool(use_trt, false, "Infering with TensorRT"); DEFINE_bool(use_trt, false, "Infering with TensorRT");
DEFINE_bool(use_mkl, true, "Infering with MKL");
DEFINE_int32(gpu_id, 0, "GPU card id"); DEFINE_int32(gpu_id, 0, "GPU card id");
DEFINE_string(key, "", "key of encryption"); DEFINE_string(key, "", "key of encryption");
DEFINE_string(image, "", "Path of test image file"); DEFINE_string(image, "", "Path of test image file");
...@@ -61,8 +62,10 @@ int main(int argc, char** argv) { ...@@ -61,8 +62,10 @@ int main(int argc, char** argv) {
model.Init(FLAGS_model_dir, model.Init(FLAGS_model_dir,
FLAGS_use_gpu, FLAGS_use_gpu,
FLAGS_use_trt, FLAGS_use_trt,
FLAGS_use_mkl,
FLAGS_gpu_id, FLAGS_gpu_id,
FLAGS_key); FLAGS_key,
FLAGS_thread_num);
int imgs = 1; int imgs = 1;
std::string save_dir = "output"; std::string save_dir = "output";
// Predict // Predict
......
...@@ -30,6 +30,7 @@ using namespace std::chrono; // NOLINT ...@@ -30,6 +30,7 @@ using namespace std::chrono; // NOLINT
DEFINE_string(model_dir, "", "Path of inference model"); DEFINE_string(model_dir, "", "Path of inference model");
DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); DEFINE_bool(use_gpu, false, "Infering with GPU or CPU");
DEFINE_bool(use_trt, false, "Infering with TensorRT"); DEFINE_bool(use_trt, false, "Infering with TensorRT");
DEFINE_bool(use_mkl, true, "Infering with MKL");
DEFINE_int32(gpu_id, 0, "GPU card id"); DEFINE_int32(gpu_id, 0, "GPU card id");
DEFINE_string(key, "", "key of encryption"); DEFINE_string(key, "", "key of encryption");
DEFINE_string(image, "", "Path of test image file"); DEFINE_string(image, "", "Path of test image file");
...@@ -58,8 +59,10 @@ int main(int argc, char** argv) { ...@@ -58,8 +59,10 @@ int main(int argc, char** argv) {
model.Init(FLAGS_model_dir, model.Init(FLAGS_model_dir,
FLAGS_use_gpu, FLAGS_use_gpu,
FLAGS_use_trt, FLAGS_use_trt,
FLAGS_use_mkl,
FLAGS_gpu_id, FLAGS_gpu_id,
FLAGS_key); FLAGS_key,
FLAGS_thread_num);
int imgs = 1; int imgs = 1;
// Predict // Predict
if (FLAGS_image_list != "") { if (FLAGS_image_list != "") {
......
...@@ -35,8 +35,12 @@ using namespace std::chrono; // NOLINT ...@@ -35,8 +35,12 @@ using namespace std::chrono; // NOLINT
DEFINE_string(model_dir, "", "Path of inference model"); DEFINE_string(model_dir, "", "Path of inference model");
DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); DEFINE_bool(use_gpu, false, "Infering with GPU or CPU");
DEFINE_bool(use_trt, false, "Infering with TensorRT"); DEFINE_bool(use_trt, false, "Infering with TensorRT");
DEFINE_bool(use_mkl, true, "Infering with MKL");
DEFINE_int32(gpu_id, 0, "GPU card id"); DEFINE_int32(gpu_id, 0, "GPU card id");
DEFINE_string(key, "", "key of encryption"); DEFINE_string(key, "", "key of encryption");
DEFINE_int32(thread_num,
omp_get_num_procs(),
"Number of preprocessing threads");
DEFINE_bool(use_camera, false, "Infering with Camera"); DEFINE_bool(use_camera, false, "Infering with Camera");
DEFINE_int32(camera_id, 0, "Camera id"); DEFINE_int32(camera_id, 0, "Camera id");
DEFINE_string(video_path, "", "Path of input video"); DEFINE_string(video_path, "", "Path of input video");
...@@ -62,8 +66,10 @@ int main(int argc, char** argv) { ...@@ -62,8 +66,10 @@ int main(int argc, char** argv) {
model.Init(FLAGS_model_dir, model.Init(FLAGS_model_dir,
FLAGS_use_gpu, FLAGS_use_gpu,
FLAGS_use_trt, FLAGS_use_trt,
FLAGS_use_mkl,
FLAGS_gpu_id, FLAGS_gpu_id,
FLAGS_key); FLAGS_key,
FLAGS_thread_num);
// Open video // Open video
cv::VideoCapture capture; cv::VideoCapture capture;
......
...@@ -35,6 +35,7 @@ using namespace std::chrono; // NOLINT ...@@ -35,6 +35,7 @@ using namespace std::chrono; // NOLINT
DEFINE_string(model_dir, "", "Path of inference model"); DEFINE_string(model_dir, "", "Path of inference model");
DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); DEFINE_bool(use_gpu, false, "Infering with GPU or CPU");
DEFINE_bool(use_trt, false, "Infering with TensorRT"); DEFINE_bool(use_trt, false, "Infering with TensorRT");
DEFINE_bool(use_mkl, true, "Infering with MKL");
DEFINE_int32(gpu_id, 0, "GPU card id"); DEFINE_int32(gpu_id, 0, "GPU card id");
DEFINE_bool(use_camera, false, "Infering with Camera"); DEFINE_bool(use_camera, false, "Infering with Camera");
DEFINE_int32(camera_id, 0, "Camera id"); DEFINE_int32(camera_id, 0, "Camera id");
...@@ -42,6 +43,9 @@ DEFINE_string(video_path, "", "Path of input video"); ...@@ -42,6 +43,9 @@ DEFINE_string(video_path, "", "Path of input video");
DEFINE_bool(show_result, false, "show the result of each frame with a window"); DEFINE_bool(show_result, false, "show the result of each frame with a window");
DEFINE_bool(save_result, true, "save the result of each frame to a video"); DEFINE_bool(save_result, true, "save the result of each frame to a video");
DEFINE_string(key, "", "key of encryption"); DEFINE_string(key, "", "key of encryption");
DEFINE_int32(thread_num,
omp_get_num_procs(),
"Number of preprocessing threads");
DEFINE_string(save_dir, "output", "Path to save visualized image"); DEFINE_string(save_dir, "output", "Path to save visualized image");
DEFINE_double(threshold, DEFINE_double(threshold,
0.5, 0.5,
...@@ -64,8 +68,10 @@ int main(int argc, char** argv) { ...@@ -64,8 +68,10 @@ int main(int argc, char** argv) {
model.Init(FLAGS_model_dir, model.Init(FLAGS_model_dir,
FLAGS_use_gpu, FLAGS_use_gpu,
FLAGS_use_trt, FLAGS_use_trt,
FLAGS_use_mkl,
FLAGS_gpu_id, FLAGS_gpu_id,
FLAGS_key); FLAGS_key,
FLAGS_thread_num);
// Open video // Open video
cv::VideoCapture capture; cv::VideoCapture capture;
if (FLAGS_use_camera) { if (FLAGS_use_camera) {
......
...@@ -35,8 +35,12 @@ using namespace std::chrono; // NOLINT ...@@ -35,8 +35,12 @@ using namespace std::chrono; // NOLINT
DEFINE_string(model_dir, "", "Path of inference model"); DEFINE_string(model_dir, "", "Path of inference model");
DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); DEFINE_bool(use_gpu, false, "Infering with GPU or CPU");
DEFINE_bool(use_trt, false, "Infering with TensorRT"); DEFINE_bool(use_trt, false, "Infering with TensorRT");
DEFINE_bool(use_mkl, true, "Infering with MKL");
DEFINE_int32(gpu_id, 0, "GPU card id"); DEFINE_int32(gpu_id, 0, "GPU card id");
DEFINE_string(key, "", "key of encryption"); DEFINE_string(key, "", "key of encryption");
DEFINE_int32(thread_num,
omp_get_num_procs(),
"Number of preprocessing threads");
DEFINE_bool(use_camera, false, "Infering with Camera"); DEFINE_bool(use_camera, false, "Infering with Camera");
DEFINE_int32(camera_id, 0, "Camera id"); DEFINE_int32(camera_id, 0, "Camera id");
DEFINE_string(video_path, "", "Path of input video"); DEFINE_string(video_path, "", "Path of input video");
...@@ -62,8 +66,10 @@ int main(int argc, char** argv) { ...@@ -62,8 +66,10 @@ int main(int argc, char** argv) {
model.Init(FLAGS_model_dir, model.Init(FLAGS_model_dir,
FLAGS_use_gpu, FLAGS_use_gpu,
FLAGS_use_trt, FLAGS_use_trt,
FLAGS_use_mkl,
FLAGS_gpu_id, FLAGS_gpu_id,
FLAGS_key); FLAGS_key,
FLAGS_thread_num);
// Open video // Open video
cv::VideoCapture capture; cv::VideoCapture capture;
if (FLAGS_use_camera) { if (FLAGS_use_camera) {
......
...@@ -77,17 +77,29 @@ class Model { ...@@ -77,17 +77,29 @@ class Model {
void Init(const std::string& model_dir, void Init(const std::string& model_dir,
bool use_gpu = false, bool use_gpu = false,
bool use_trt = false, bool use_trt = false,
bool use_mkl = true,
int gpu_id = 0, int gpu_id = 0,
std::string key = "", std::string key = "",
int thread_num = 1,
bool use_ir_optim = true) { bool use_ir_optim = true) {
create_predictor(model_dir, use_gpu, use_trt, gpu_id, key, use_ir_optim); create_predictor(
model_dir,
use_gpu,
use_trt,
use_mkl,
gpu_id,
key,
thread_num,
use_ir_optim);
} }
void create_predictor(const std::string& model_dir, void create_predictor(const std::string& model_dir,
bool use_gpu = false, bool use_gpu = false,
bool use_trt = false, bool use_trt = false,
bool use_mkl = true,
int gpu_id = 0, int gpu_id = 0,
std::string key = "", std::string key = "",
int thread_num = 1,
bool use_ir_optim = true); bool use_ir_optim = true);
/* /*
......
...@@ -21,8 +21,10 @@ namespace PaddleX { ...@@ -21,8 +21,10 @@ namespace PaddleX {
void Model::create_predictor(const std::string& model_dir, void Model::create_predictor(const std::string& model_dir,
bool use_gpu, bool use_gpu,
bool use_trt, bool use_trt,
bool use_mkl,
int gpu_id, int gpu_id,
std::string key, std::string key,
int thread_num,
bool use_ir_optim) { bool use_ir_optim) {
paddle::AnalysisConfig config; paddle::AnalysisConfig config;
std::string model_file = model_dir + OS_PATH_SEP + "__model__"; std::string model_file = model_dir + OS_PATH_SEP + "__model__";
...@@ -57,6 +59,10 @@ void Model::create_predictor(const std::string& model_dir, ...@@ -57,6 +59,10 @@ void Model::create_predictor(const std::string& model_dir,
if (key == "") { if (key == "") {
config.SetModel(model_file, params_file); config.SetModel(model_file, params_file);
} }
if (use_mkl && name != "HRNet" && name != "DeepLabv3p") {
config.EnableMKLDNN();
config.SetCpuMathLibraryNumThreads(12);
}
if (use_gpu) { if (use_gpu) {
config.EnableUseGpu(100, gpu_id); config.EnableUseGpu(100, gpu_id);
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册