diff --git a/BCLOUD b/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..6543cd7dad78b29b712a08f5ae43c2a737be76ce --- /dev/null +++ b/BCLOUD @@ -0,0 +1,19 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../') + +#gcc version, default 'gcc' +COMPILER('gcc482') + +CONFIGS('third-64/protobuf@protobuf_3-2-0-6274_PD_BL') +CONFIGS('baidu/third-party/mklml@v20180406@git_branch') +NEED_OUTPUT('baidu/third-party/mklml') + +#sub directory +Directory('pdcodegen') +Directory('configure') +Directory('predictor') +Directory('inferencer-fluid-cpu') +Directory('serving') +Directory('sdk-cpp') diff --git a/BCLOUD.client b/BCLOUD.client new file mode 100644 index 0000000000000000000000000000000000000000..f084478f340cb7cb3f124e55d685d2bce0d473ab --- /dev/null +++ b/BCLOUD.client @@ -0,0 +1,18 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../') + +#gcc version, default 'gcc' +COMPILER('gcc482') + +CONFIGS('third-64/protobuf@protobuf_3-2-0-6274_PD_BL') +CONFIGS('baidu/base/baidu-rpc@ci-base') +CONFIGS('baidu/third-party/gflags@v2.0.0@git_branch') +CONFIGS('baidu/third-party/glog@v0.3.x@git_branch') +CONFIGS('baidu/third-party/opencv@master@git_branch') + +#sub directory +Directory('pdcodegen') +Directory('configure') +Directory('sdk-cpp') diff --git a/configure/BCLOUD b/configure/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..0299ed3fd2951284a6b0dececc191d5aad76a271 --- /dev/null +++ b/configure/BCLOUD @@ -0,0 +1,15 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../../') +ImportConfigsFrom('..') + +INCPATHS('$INC') +INCPATHS('$OUT_ROOT/third-64/protobuf/output/include') + +HEADERS('include/configure_parser.h', '$INC/configure/include') +HEADERS(GLOB_GEN_SRCS('proto/*.pb.h'), '$INC/configure/') +configure_sources = GLOB('proto/*.proto src/*.cpp') + +#.a +StaticLibrary('pdconfigure', Sources(configure_sources)) diff --git a/configure/src/configure_parser.cpp b/configure/src/configure_parser.cpp index e19ec05bd3856bac030b8c07823b640c0f11310d..300d2509e882d5de8eaf2e8a3afa70b64a9d5f0c 100644 --- a/configure/src/configure_parser.cpp +++ b/configure/src/configure_parser.cpp @@ -17,7 +17,12 @@ #include #include #include + +#ifdef BCLOUD +#include "base/logging.h" +#else #include "butil/logging.h" +#endif #include "google/protobuf/io/zero_copy_stream_impl.h" #include "google/protobuf/text_format.h" diff --git a/inferencer-fluid-cpu/BCLOUD b/inferencer-fluid-cpu/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..b06196651250cee84b2f4388e8a5ba76a39e20b3 --- /dev/null +++ b/inferencer-fluid-cpu/BCLOUD @@ -0,0 +1,29 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../../') + +#Preprocessor flags. +CPPFLAGS(r'-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__const__= -Dtypeof=__typeof__ -DUSE_PTHREAD -DPYBIND_AVX_MKLML') + +#CPPFLAGS(r'-DVERSION=\"%s\"' % SVN_LAST_CHANGED_REV()) + +#C++ flags. +CXXFLAGS('-g -O2 -pipe -W -Wall -fPIC -fno-omit-frame-pointer -Wno-deprecated -Wno-unused-parameter -Wno-unused-variable -Wno-unused-local-typedefs -Wno-sign-compare -std=c++11') + +ImportConfigsFrom('..') + +INCPATHS('$INC') +INCPATHS('../') +INCPATHS('$OUT_ROOT/third-64/protobuf/output/include') + +PROTOC('third-64/protobuf/output/bin/protoc') +CONFIGS('baidu/paddlepaddle/paddle@v1.3.0_pb32@git_branch') + +HEADERS('include/fluid_cpu_engine.h', '$INC/inferencer-fluid-cpu/include') + +inferencer_fluid_cpu_sources = 'src/fluid_cpu_engine.cpp' +#.a +StaticLibrary('inferencer-fluid-cpu', + Sources(inferencer_fluid_cpu_sources)) + diff --git a/inferencer-fluid-cpu/include/fluid_cpu_engine.h b/inferencer-fluid-cpu/include/fluid_cpu_engine.h index 928d5f8723b10e72b839b8644b3875584d766e1d..f01f7fce418278ea45eee4cc3558a1da0b0dd094 100644 --- a/inferencer-fluid-cpu/include/fluid_cpu_engine.h +++ b/inferencer-fluid-cpu/include/fluid_cpu_engine.h @@ -21,7 +21,11 @@ #include #include "configure/include/configure_parser.h" #include "configure/inferencer_configure.pb.h" +#ifdef BCLOUD +#include "paddle/fluid/inference/api/paddle_inference_api.h" +#else #include "paddle/fluid/inference/paddle_inference_api.h" +#endif #include "predictor/framework/infer.h" namespace baidu { diff --git a/pdcodegen/BCLOUD b/pdcodegen/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..764769884bd4035c1dabe3094c52ab31b3e37992 --- /dev/null +++ b/pdcodegen/BCLOUD @@ -0,0 +1,35 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../../') +COMPILER('gcc482') + +#Preprocessor flags. +CPPFLAGS(r'-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__const__= -Dtypeof=__typeof__ -DUSE_PTHREAD') +#CPPFLAGS(r'-DVERSION=\"%s\"' % SVN_LAST_CHANGED_REV()) + +#C flags. +#CFLAGS('-g -pipe -W -Wall -fPIC') + +#C++ flags. +CXXFLAGS('-g -O2 -pipe -W -Wall -fPIC -fno-omit-frame-pointer -Wno-deprecated -Wno-unused-parameter -Wno-unused-variable -Wno-unused-local-typedefs -Wno-sign-compare -std=c++11') + +#link flags +LDFLAGS('-lpthread -lcrypto -lrt -lssl -ldl -lz') + +ImportConfigsFrom('..') + +INCPATHS('$INC') +INCPATHS('../') +INCPATHS('$OUT_ROOT/third-64/protobuf/output/include') + +HEADERS(GLOB_GEN_SRCS('../predictor/proto/pds_option.pb.h'), '$INC/pdcodegen') + +pdcodegen_sources = GLOB('plugin/*.cc') +pdcodegen_sources += ' ../predictor/proto/pds_option.proto' +pdcodegen_sources += ' src/pdcodegen.cpp' + +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/third-party/protobuf/output/lib/libprotobuf.a') +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/third-party/protobuf/output/lib/libprotobuf-lite.a') + +Application('pdcodegen', Sources(pdcodegen_sources)) diff --git a/pdcodegen/plugin/pdcodegen b/pdcodegen/plugin/pdcodegen new file mode 100755 index 0000000000000000000000000000000000000000..bb81217121a15b99cda8a320f357f716357f96c5 Binary files /dev/null and b/pdcodegen/plugin/pdcodegen differ diff --git a/pdcodegen/src/pdcodegen.cpp b/pdcodegen/src/pdcodegen.cpp index 4f0f1c95faac01e49e29066173353bbc863a1b7d..582423d313e4927f901954a74601932b8c1f83ef 100644 --- a/pdcodegen/src/pdcodegen.cpp +++ b/pdcodegen/src/pdcodegen.cpp @@ -116,7 +116,7 @@ class PdsCodeGenerator : public CodeGenerator { printer.Print("#include \"predictor/framework/service_manager.h\"\n"); } if (generate_stub) { - printer.Print("#include \n"); + printer.Print("#include \n"); printer.Print("#include \"sdk-cpp/include/factory.h\"\n"); printer.Print("#include \"sdk-cpp/include/stub.h\"\n"); printer.Print("#include \"sdk-cpp/include/stub_impl.h\"\n"); @@ -274,9 +274,9 @@ class PdsCodeGenerator : public CodeGenerator { google::protobuf::dots_to_colons(m->output_type()->full_name())); if (m->name() == "inference") { printer->Print( - " brpc::ClosureGuard done_guard(done);\n" - " brpc::Controller* cntl = \n" - " static_cast(cntl_base);\n" + " baidu::rpc::ClosureGuard done_guard(done);\n" + " baidu::rpc::Controller* cntl = \n" + " static_cast(cntl_base);\n" " ::baidu::paddle_serving::predictor::InferService* svr = \n" " " "::baidu::paddle_serving::predictor::InferServiceManager::instance(" @@ -311,9 +311,9 @@ class PdsCodeGenerator : public CodeGenerator { } if (m->name() == "debug") { printer->Print( - " brpc::ClosureGuard done_guard(done);\n" - " brpc::Controller* cntl = \n" - " static_cast(cntl_base);\n" + " baidu::rpc::ClosureGuard done_guard(done);\n" + " baidu::rpc::Controller* cntl = \n" + " static_cast(cntl_base);\n" " ::baidu::paddle_serving::predictor::InferService* svr = \n" " " "::baidu::paddle_serving::predictor::InferServiceManager::instance(" @@ -329,7 +329,7 @@ class PdsCodeGenerator : public CodeGenerator { "\"\]\";\n" " LOG(INFO) << \" service_name=\[\" << \"$name$\" << \"\]\";\n" // NOLINT " LOG(INFO) << \" log_id=\[\" << cntl->log_id() << \"\]\";\n" // NOLINT - " butil::IOBufBuilder debug_os;\n" + " base::IOBufBuilder debug_os;\n" " int err_code = svr->inference(request, response, &debug_os);\n" " if (err_code != 0) {\n" " LOG(WARNING)\n" @@ -371,7 +371,7 @@ class PdsCodeGenerator : public CodeGenerator { const std::string& service_name, const std::string& class_name) const { printer->Print( - "class $name$_StubCallMapper : public brpc::CallMapper {\n" + "class $name$_StubCallMapper : public baidu::rpc::CallMapper {\n" "private:\n" " uint32_t _package_size;\n" " baidu::paddle_serving::sdk_cpp::Stub* _stub_handler;\n" @@ -389,7 +389,7 @@ class PdsCodeGenerator : public CodeGenerator { class_name); printer->Print( - "brpc::SubCall default_map(\n" + "baidu::rpc::SubCall default_map(\n" " int channel_index,\n" " const google::protobuf::MethodDescriptor* method,\n" " const google::protobuf::Message* request,\n" @@ -409,7 +409,7 @@ class PdsCodeGenerator : public CodeGenerator { printer->Print("}\n"); printer->Print( - "brpc::SubCall sub_package_map(\n" + "baidu::rpc::SubCall sub_package_map(\n" " int channel_index,\n" " const google::protobuf::MethodDescriptor* method,\n" " const google::protobuf::Message* request,\n" @@ -458,7 +458,7 @@ class PdsCodeGenerator : public CodeGenerator { printer->Print("}\n"); printer->Print( - "brpc::SubCall Map(\n" + "baidu::rpc::SubCall Map(\n" " int channel_index,\n" " const google::protobuf::MethodDescriptor* method,\n" " const google::protobuf::Message* request,\n" @@ -473,8 +473,8 @@ class PdsCodeGenerator : public CodeGenerator { "return default_map(channel_index, method, request, response);\n"); } else { printer->Print( - "butil::Timer tt(butil::Timer::STARTED);\n" - "brpc::SubCall ret;\n" + "base::Timer tt(base::Timer::STARTED);\n" + "baidu::rpc::SubCall ret;\n" "if (_package_size == 0) {\n" " ret = default_map(channel_index, method, request, response);\n" "} else {\n" @@ -482,7 +482,7 @@ class PdsCodeGenerator : public CodeGenerator { "response);\n" "}\n" "tt.stop();\n" - "if (ret.flags != brpc::SKIP_SUB_CHANNEL && ret.method != NULL) {\n" + "if (ret.flags != baidu::rpc::SKIP_SUB_CHANNEL && ret.method != NULL) {\n" " _stub_handler->update_latency(tt.u_elapsed(), \"pack_map\");\n" "}\n" "return ret;\n"); @@ -496,7 +496,7 @@ class PdsCodeGenerator : public CodeGenerator { //////////////////////////////////////////////////////////////// printer->Print( - "class $name$_StubResponseMerger : public brpc::ResponseMerger {\n" + "class $name$_StubResponseMerger : public baidu::rpc::ResponseMerger {\n" "private:\n" " uint32_t _package_size;\n" " baidu::paddle_serving::sdk_cpp::Stub* _stub_handler;\n" @@ -514,7 +514,7 @@ class PdsCodeGenerator : public CodeGenerator { class_name); printer->Print( - "brpc::ResponseMerger::Result default_merge(\n" + "baidu::rpc::ResponseMerger::Result default_merge(\n" " google::protobuf::Message* response,\n" " const google::protobuf::Message* sub_response) {\n" " baidu::paddle_serving::sdk_cpp::TracePackScope " @@ -530,7 +530,7 @@ class PdsCodeGenerator : public CodeGenerator { printer->Print("}\n"); printer->Print( - "brpc::ResponseMerger::Result sub_package_merge(\n" + "baidu::rpc::ResponseMerger::Result sub_package_merge(\n" " google::protobuf::Message* response,\n" " const google::protobuf::Message* sub_response) {\n" " baidu::paddle_serving::sdk_cpp::TracePackScope " @@ -546,22 +546,22 @@ class PdsCodeGenerator : public CodeGenerator { printer->Print("}\n"); printer->Print( - "brpc::ResponseMerger::Result Merge(\n" + "baidu::rpc::ResponseMerger::Result Merge(\n" " google::protobuf::Message* response,\n" " const google::protobuf::Message* sub_response) {\n", "name", class_name); printer->Indent(); printer->Print( - "butil::Timer tt(butil::Timer::STARTED);\n" - "brpc::ResponseMerger::Result ret;" + "base::Timer tt(base::Timer::STARTED);\n" + "baidu::rpc::ResponseMerger::Result ret;" "if (_package_size <= 0) {\n" " ret = default_merge(response, sub_response);\n" "} else {\n" " ret = sub_package_merge(response, sub_response);\n" "}\n" "tt.stop();\n" - "if (ret != brpc::ResponseMerger::FAIL) {\n" + "if (ret != baidu::rpc::ResponseMerger::FAIL) {\n" " _stub_handler->update_latency(tt.u_elapsed(), \"pack_merge\");\n" "}\n" "return ret;\n"); @@ -580,7 +580,7 @@ class PdsCodeGenerator : public CodeGenerator { const std::string& class_name) const { printer->Print( "if (channel_index > 0) { \n" - " return brpc::SubCall::Skip();\n" + " return baidu::rpc::SubCall::Skip();\n" "}\n"); printer->Print( "google::protobuf::Message* cur_res = " @@ -591,14 +591,14 @@ class PdsCodeGenerator : public CodeGenerator { " if (cur_res == NULL) {\n" " LOG(ERROR) << \"Failed new response item!\";\n" " _stub_handler->update_average(1, \"pack_fail\");\n" - " return brpc::SubCall::Bad();\n" + " return baidu::rpc::SubCall::Bad();\n" " }\n" - " return brpc::SubCall(method, request, cur_res, " - "brpc::DELETE_RESPONSE);\n" + " return baidu::rpc::SubCall(method, request, cur_res, " + "baidu::rpc::DELETE_RESPONSE);\n" "}\n"); "LOG(INFO) \n" " << \"[default] Succ map, channel_index: \" << channel_index;\n"; - printer->Print("return brpc::SubCall(method, request, cur_res, 0);\n"); + printer->Print("return baidu::rpc::SubCall(method, request, cur_res, 0);\n"); return true; } bool generate_paddle_serving_stub_default_merger( @@ -610,11 +610,11 @@ class PdsCodeGenerator : public CodeGenerator { printer->Print( "try {\n" " response->MergeFrom(*sub_response);\n" - " return brpc::ResponseMerger::MERGED;\n" + " return baidu::rpc::ResponseMerger::MERGED;\n" "} catch (const std::exception& e) {\n" " LOG(ERROR) << \"Merge failed.\";\n" " _stub_handler->update_average(1, \"pack_fail\");\n" - " return brpc::ResponseMerger::FAIL;\n" + " return baidu::rpc::ResponseMerger::FAIL;\n" "}\n"); return true; } @@ -657,7 +657,7 @@ class PdsCodeGenerator : public CodeGenerator { printer->Print( "int start = _package_size * channel_index;\n" "if (start >= total_size) {\n" - " return brpc::SubCall::Skip();\n" + " return baidu::rpc::SubCall::Skip();\n" "}\n" "int end = _package_size * (channel_index + 1);\n" "if (end > total_size) {\n" @@ -670,7 +670,7 @@ class PdsCodeGenerator : public CodeGenerator { "if (sub_req == NULL) {\n" " LOG(ERROR) << \"failed fetch sub_req from stub.\";\n" " _stub_handler->update_average(1, \"pack_fail\");\n" - " return brpc::SubCall::Bad();\n" + " return baidu::rpc::SubCall::Bad();\n" "}\n", "name", class_name, @@ -685,7 +685,7 @@ class PdsCodeGenerator : public CodeGenerator { "req->$field_name$_size()\n" " << \", field: $field_name$.\";\n" " _stub_handler->update_average(1, \"pack_fail\");\n" - " return brpc::SubCall::Bad();\n" + " return baidu::rpc::SubCall::Bad();\n" "}\n", "field_name", field_name); @@ -718,7 +718,7 @@ class PdsCodeGenerator : public CodeGenerator { " if (!sub_req) {\n" " LOG(ERROR) << \"failed fetch sub_req from stub handler.\";\n" " _stub_handler->update_average(1, \"pack_fail\");\n" - " return brpc::SubCall::Bad();\n" + " return baidu::rpc::SubCall::Bad();\n" " }\n" "}\n", "req_type", @@ -761,9 +761,9 @@ class PdsCodeGenerator : public CodeGenerator { "if (sub_res == NULL) {\n" " LOG(ERROR) << \"failed create sub_res from res.\";\n" " _stub_handler->update_average(1, \"pack_fail\");\n" - " return brpc::SubCall::Bad();\n" + " return baidu::rpc::SubCall::Bad();\n" "}\n" - "return brpc::SubCall(method, sub_req, sub_res, 0);\n"); + "return baidu::rpc::SubCall(method, sub_req, sub_res, 0);\n"); return true; } bool generate_paddle_serving_stub_package_merger( diff --git a/predictor/BCLOUD b/predictor/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..101f31696df61ea5a70ef249eae34396934b5eda --- /dev/null +++ b/predictor/BCLOUD @@ -0,0 +1,34 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../../') + +#Preprocessor flags. +CPPFLAGS(r'-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__const__= -Dtypeof=__typeof__ -DUSE_PTHREAD') +#CPPFLAGS(r'-DVERSION=\"%s\"' % SVN_LAST_CHANGED_REV()) + +#C++ flags. +CXXFLAGS('-g -O2 -pipe -W -Wall -fPIC -fno-omit-frame-pointer -Wno-deprecated -Wno-unused-parameter -Wno-unused-variable -Wno-unused-local-typedefs -Wno-sign-compare -std=c++11') + +ImportConfigsFrom('..') + +INCPATHS('$INC') +INCPATHS('../') +INCPATHS('$OUT_ROOT/third-64/protobuf/output/include') + +CONFIGS('baidu/base/baidu-rpc@ci-base') + +cpp_source_dirs = [] +cpp_source_dirs.append('common/*.cpp') +cpp_source_dirs.append('op/*.cpp') +cpp_source_dirs.append('framework/*.cpp') +cpp_source_dirs.append('mempool/*.cpp') +cpp_source_dirs.append('proto/*.proto') + +HEADERS(GLOB_GEN_SRCS('proto/*.pb.h'), '$INC/predictor/') +HEADERS('common/*.h', '$INC/predictor/common') +HEADERS('framework/*.h', '$INC/predictor/framework') +HEADERS('mempool/*.h', '$INC/predictor/mempool') + +#.a +StaticLibrary('pdserving', Sources(GLOB(' '.join(cpp_source_dirs)), 'src/pdserving.cpp')) diff --git a/predictor/common/inner_common.h b/predictor/common/inner_common.h index d9c689f6ed23c2d6a528e3b30b5ff7a78bf7942e..ab8750d6f1f00fe3fe17ae55c4f706150d5841d5 100644 --- a/predictor/common/inner_common.h +++ b/predictor/common/inner_common.h @@ -31,13 +31,25 @@ #include "gflags/gflags.h" + +#ifdef BCLOUD +#include "bthread.h" +#include "baidu/rpc/channel.h" +#include "baidu/rpc/policy/giano_authenticator.h" +#include "baidu/rpc/server.h" +#include "base/logging.h" +#include "base/comlog_sink.h" +#include "base/object_pool.h" +#include "base/time.h" +#else +#include "bthread/bthread.h" #include "brpc/channel.h" #include "brpc/policy/giano_authenticator.h" #include "brpc/server.h" -#include "bthread/bthread.h" #include "butil/logging.h" #include "butil/object_pool.h" #include "butil/time.h" +#endif #include "configure/include/configure_parser.h" #include "configure/server_configure.pb.h" @@ -45,3 +57,8 @@ #include "predictor/common/constant.h" #include "predictor/common/types.h" #include "predictor/common/utils.h" + +#ifdef BCLOUD +namespace brpc = baidu::rpc; +namespace butil = base; +#endif diff --git a/predictor/common/utils.h b/predictor/common/utils.h index 4a582ac3fff4f1d067686063ed4886a29755c72c..8701be9bf03c518fef4f5dba97b9b969afccf20a 100644 --- a/predictor/common/utils.h +++ b/predictor/common/utils.h @@ -21,6 +21,10 @@ namespace baidu { namespace paddle_serving { namespace predictor { +#ifdef BCLOUD +namespace butil = base; +#endif + class TimerFlow { public: static const int MAX_SIZE = 1024; diff --git a/predictor/framework/bsf-inl-tensor.h b/predictor/framework/bsf-inl-tensor.h index 81a59ff0851bf7b890bd549db14f8e42b51c65de..15e11bb4d88420a1bbdc17e36c7648e460ccabbd 100644 --- a/predictor/framework/bsf-inl-tensor.h +++ b/predictor/framework/bsf-inl-tensor.h @@ -14,7 +14,12 @@ #pragma once +#ifdef BCLOUD +#include +#else #include +#endif + #include #include #include diff --git a/predictor/framework/bsf-inl.h b/predictor/framework/bsf-inl.h index e79a4c701f0d37ba2f70346042d28ea039c83030..8fa58f948721c29dadffff5c9e330e90342c8311 100644 --- a/predictor/framework/bsf-inl.h +++ b/predictor/framework/bsf-inl.h @@ -14,7 +14,12 @@ #pragma once +#ifdef BCLOUD +#include +#else #include +#endif + #include #include diff --git a/predictor/framework/bsf.h b/predictor/framework/bsf.h index 2dcb6c90cb02406007d4b35d65bdf902bb9810f9..d4bd32638b289825d7af84e36fe6e199b8b7a21f 100644 --- a/predictor/framework/bsf.h +++ b/predictor/framework/bsf.h @@ -18,7 +18,13 @@ #include #include #include + +#ifdef BCLOUD +#include "base/atomicops.h" +#else #include "butil/atomicops.h" +#endif + #include "predictor/common/inner_common.h" #include "boost/function.hpp" diff --git a/predictor/framework/dag_view.cpp b/predictor/framework/dag_view.cpp index cff94e6fa25286c159c2a87f19e2a937a0239b57..72f63f418a8ec1cbce2c7b3bcb842f743f79cdb3 100644 --- a/predictor/framework/dag_view.cpp +++ b/predictor/framework/dag_view.cpp @@ -13,7 +13,11 @@ // limitations under the License. #include "predictor/framework/dag_view.h" +#ifdef BCLOUD +#include // TRACEPRINTF +#else #include // TRACEPRINTF +#endif #include #include "predictor/common/inner_common.h" #include "predictor/framework/op_repository.h" diff --git a/predictor/framework/predictor_metric.cpp b/predictor/framework/predictor_metric.cpp index d9fa271cee25953ddfe7c588056c541033019131..fc3600b11608ace505ae78b94b33c951311f79b4 100644 --- a/predictor/framework/predictor_metric.cpp +++ b/predictor/framework/predictor_metric.cpp @@ -13,7 +13,11 @@ // limitations under the License. #include "predictor/framework/predictor_metric.h" +#ifdef BCLOUD +#include "base/memory/singleton.h" +#else #include "butil/memory/singleton.h" +#endif namespace baidu { namespace paddle_serving { diff --git a/predictor/framework/predictor_metric.h b/predictor/framework/predictor_metric.h index 201cf64ee0349331dd432150ca3530aacc8a8cd0..92fb057e41dfa2cc5934d404dff268bc7cff7198 100644 --- a/predictor/framework/predictor_metric.h +++ b/predictor/framework/predictor_metric.h @@ -13,12 +13,24 @@ // limitations under the License. #pragma once + +#ifdef BCLOUD +#include // FlatMap +#include // DefaultSingletonTraits +#include // BAIDU_SCOPED_LOCK +#else #include // FlatMap #include // DefaultSingletonTraits #include // BAIDU_SCOPED_LOCK +#endif + #include // bvar #include +#ifdef BCLOUD +namespace butil = base; +#endif + namespace baidu { namespace paddle_serving { namespace predictor { diff --git a/predictor/framework/server.cpp b/predictor/framework/server.cpp index 6c4525fe15751dd9737870dfbeebc091facdd7e4..a96f63f2847cf2518b5a8e907c161b75f92a125d 100644 --- a/predictor/framework/server.cpp +++ b/predictor/framework/server.cpp @@ -13,9 +13,15 @@ // limitations under the License. #include "predictor/framework/server.h" +#ifdef BCLOUD +#include // NovaServiceAdaptor +#include // NsheadMcpackAdaptor +#include // PublicPbrpcServiceAdaptor +#else #include // NovaServiceAdaptor #include // NsheadMcpackAdaptor #include // PublicPbrpcServiceAdaptor +#endif #include #include #include "predictor/common/inner_common.h" @@ -27,6 +33,10 @@ namespace baidu { namespace paddle_serving { namespace predictor { +#ifdef BCLOUD +namespace brpc = baidu::rpc; +#endif + volatile bool ServerManager::_s_reload_starting = true; bool ServerManager::_compare_string_piece_without_case( diff --git a/predictor/framework/server.h b/predictor/framework/server.h index 6c2e15c5d03987e1fdfe0a01ca67978ca5e0203d..8e011e6572ff291a0cd338a1b59a02a97e4c0339 100644 --- a/predictor/framework/server.h +++ b/predictor/framework/server.h @@ -20,6 +20,10 @@ namespace baidu { namespace paddle_serving { namespace predictor { +#ifdef BCLOUD +namespace brpc = baidu::rpc; +#endif + class ServerManager { public: typedef google::protobuf::Service Service; diff --git a/predictor/framework/service.cpp b/predictor/framework/service.cpp index 053b0859982c7e843a2b189bb147a8c2a76e14d9..968baab61e3639ad602a61a253a1ddcf57d62d92 100644 --- a/predictor/framework/service.cpp +++ b/predictor/framework/service.cpp @@ -13,7 +13,12 @@ // limitations under the License. #include "predictor/framework/service.h" +#ifdef BCLOUD +#include // butil::Timer +#else #include // butil::Timer +#endif + #include #include #include diff --git a/predictor/mempool/mempool.h b/predictor/mempool/mempool.h index cc68755954739fcd64c6454a2efc2fd465699ecd..4106532db2228834aa5c7ab6aeffa4a15a7b924b 100644 --- a/predictor/mempool/mempool.h +++ b/predictor/mempool/mempool.h @@ -13,8 +13,15 @@ // limitations under the License. #pragma once + +#ifdef BCLOUD +#include +#include +#else #include #include +#endif + #include #include #include @@ -25,6 +32,10 @@ namespace im { namespace fugue { +#ifdef BCLOUD +namespace butil = base; +#endif + namespace lockfree { template diff --git a/predictor/op/op.cpp b/predictor/op/op.cpp index 1a94bf5db8710719efb076f9778aa0230052accf..6b933b0bd1e999872c87a5d60a766f8eb49c796a 100644 --- a/predictor/op/op.cpp +++ b/predictor/op/op.cpp @@ -13,7 +13,12 @@ // limitations under the License. #include "predictor/op/op.h" -#include // butil::Timer + +#ifdef BCLOUD +#else +#include // base::Timer +#endif + #include #include "predictor/common/constant.h" #include "predictor/common/utils.h" diff --git a/predictor/src/pdserving.cpp b/predictor/src/pdserving.cpp index c4afc9c9b612000346880bc2de276047c2c0eff2..b24b8795e27b8f13db39a30cd2e7ba9d9e2c4633 100644 --- a/predictor/src/pdserving.cpp +++ b/predictor/src/pdserving.cpp @@ -16,10 +16,15 @@ #include #include +#ifdef BCLOUD +#include // bthread_set_worker_startfn +#else #include // bthread_set_worker_startfn +#endif + #include #include -#include "butil/logging.h" + #include "predictor/common/constant.h" #include "predictor/common/inner_common.h" #include "predictor/framework/manager.h" @@ -107,6 +112,21 @@ int main(int argc, char** argv) { g_change_server_port(); // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else if (FLAGS_log_dir == "") { FLAGS_log_dir = "./log"; } @@ -125,7 +145,7 @@ int main(int argc, char** argv) { google::InitGoogleLogging(strdup(argv[0])); FLAGS_logbufsecs = 0; FLAGS_logbuflevel = -1; - +#endif LOG(INFO) << "Succ initialize logger"; // initialize resource manager @@ -181,7 +201,10 @@ int main(int argc, char** argv) { LOG(ERROR) << "Failed finalize resource manager"; } +#ifdef BCLOUD +#else google::ShutdownGoogleLogging(); +#endif LOG(INFO) << "Paddle Inference Server exit successfully!"; return 0; } diff --git a/release.bcloud b/release.bcloud new file mode 100644 index 0000000000000000000000000000000000000000..3f76ab210331d9118393eb555fad9d1c0d61f487 --- /dev/null +++ b/release.bcloud @@ -0,0 +1,31 @@ +mkdir -p demo/serving/bin +mv bin/serving demo/serving/bin + +mkdir -p demo/client/bin +mv bin/dense_format demo/client/bin/ +mv bin/echo demo/client/bin +mv bin/int64tensor_format demo/client/bin +mv bin/sparse_format demo/client/bin +mv bin/text_classification demo/client/bin +mv bin/text_classification_press demo/client/bin +mv bin/ximage demo/client/bin + +cp baidu_third-party_mklml/so/* demo/serving/bin/ +rm -rf baidu_third-party_mklml + +# Download test model and test dataset +pushd . +cd demo/client/data +mkdir -p text_classification +cd text_classification +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/data/text_classification/test_set.tar.gz +tar zxvf test_set.tar.gz + +popd + +pushd . +cd demo/serving/ +mkdir -p data/model/paddle/fluid/ +cd data/model/paddle/fluid/ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/data/text_classification/text_classification_lstm.tar.gz +tar zxvf text_classification_lstm.tar.gz diff --git a/sdk-cpp/BCLOUD b/sdk-cpp/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..86540978a0969c52f07ec0036432f82dc04906bd --- /dev/null +++ b/sdk-cpp/BCLOUD @@ -0,0 +1,66 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../../') + +#Preprocessor flags. +CPPFLAGS(r'-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__const__= -Dtypeof=__typeof__ -DUSE_PTHREAD') +#CPPFLAGS(r'-DVERSION=\"%s\"' % SVN_LAST_CHANGED_REV()) + +#C++ flags. +CXXFLAGS('-g -O2 -pipe -W -Wall -fPIC -fno-omit-frame-pointer -Wno-deprecated -Wno-unused-parameter -Wno-unused-variable -Wno-unused-local-typedefs -Wno-sign-compare -std=c++11') + +#link flags +LDFLAGS('-lpthread -lcrypto -lrt -lssl -ldl -lz -std=c++11') + +ImportConfigsFrom('..') + +INCPATHS('$INC') +INCPATHS('$INC/sdk-cpp') +INCPATHS('$INC/sdk-cpp/include') +INCPATHS('$OUT_ROOT/third-64/protobuf/output/include') + +LIBS('$OUT/lib/libpdconfigure.a') + +CONFIGS('baidu/base/baidu-rpc@ci-base') +CONFIGS('baidu/third-party/gflags@v2.0.0@git_branch') +CONFIGS('baidu/third-party/glog@v0.3.x@git_branch') +CONFIGS('baidu/third-party/opencv@master@git_branch') + +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/third-party/protobuf/output/lib/libprotobuf.a') +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/third-party/protobuf/output/lib/libprotobuf-lite.a') +# DELETE_AUTO_LIBS('$OUT_ROOT/third-64/glog/output/lib/libglog.a') +DELETE_AUTO_LIBS('$OUT_ROOT/third-64/gflags/output/lib/libgflags.a') +DELETE_AUTO_LIBS('$OUT_ROOT/third-64/gflags/output/lib/libgflags_nothreads.a') + +PROTOFLAGS( + '--plugin=protoc-gen-pdcodegen=../pdcodegen/plugin/pdcodegen', + '--pdcodegen_out proto --proto_path=.', + '--proto_path=../predictor/proto') + +HEADERS(GLOB_GEN_SRCS('../configure/proto/sdk_configure.pb.h'), '$INC/sdk-cpp') +HEADERS(GLOB_GEN_SRCS('../predictor/proto/builtin_format.pb.h'), '$INC/sdk-cpp') +HEADERS(GLOB_GEN_SRCS('../predictor/proto/pds_option.pb.h'), '$INC/sdk-cpp') +HEADERS(GLOB_GEN_SRCS('proto/*.pb.h'), '$INC/sdk-cpp') + +HEADERS('include/*.h', '$INC/sdk-cpp/include') +HEADERS('include/*.hpp', '$INC/sdk-cpp/include') + +user_sources=GLOB("src/*.cpp proto/*.proto") +user_sources += ' ../predictor/proto/builtin_format.proto ../predictor/proto/pds_option.proto' + +# .a +StaticLibrary('pdsdk-cpp', Sources(user_sources)) + +# Application +#bin +Application('ximage', Sources('demo/ximage.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) +Application('echo', Sources('demo/echo.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) +Application('dense_format', Sources('demo/dense_format.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) +Application('sparse_format', Sources('demo/sparse_format.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) +Application('int64tensor_format', Sources('demo/int64tensor_format.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) +Application('text_classification', Sources('demo/text_classification.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) +Application('text_classification_press', Sources('demo/text_classification_press.cpp'), WholeArchives('$OUT/lib/libpdsdk-cpp.a')) + +OUTPUT('conf', '$OUT/demo/client') +OUTPUT('data', '$OUT/demo/client') diff --git a/sdk-cpp/demo/dense_format.cpp b/sdk-cpp/demo/dense_format.cpp index beb13877fffa1cc48c73a8b831ffda302987314a..ecf1ab04de6bb41a04668cae5e782e875eb5764d 100644 --- a/sdk-cpp/demo/dense_format.cpp +++ b/sdk-cpp/demo/dense_format.cpp @@ -63,6 +63,21 @@ int main(int argc, char** argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -75,6 +90,7 @@ int main(int argc, char** argv) { } FLAGS_log_dir = "./log"; google::InitGoogleLogging(strdup(argv[0])); +#endif if (api.create("./conf", "predictors.prototxt") != 0) { LOG(ERROR) << "Failed create predictors api!"; @@ -94,7 +110,7 @@ int main(int argc, char** argv) { Predictor* predictor = api.fetch_predictor("dense_service"); if (!predictor) { - LOG(ERROR) << "Failed fetch predictor: echo_service"; + LOG(ERROR) << "Failed fetch predictor: dense_service"; return -1; } @@ -130,8 +146,9 @@ int main(int argc, char** argv) { api.thrd_finalize(); api.destroy(); +#ifndef BCLOUD google::ShutdownGoogleLogging(); - +#endif return 0; } diff --git a/sdk-cpp/demo/echo.cpp b/sdk-cpp/demo/echo.cpp index ca68d2cbafd177864bb3e97164bb57959adf7430..7c4e472336f626e4b0d43f9c4d9f3b0c29a503fe 100644 --- a/sdk-cpp/demo/echo.cpp +++ b/sdk-cpp/demo/echo.cpp @@ -46,6 +46,21 @@ int main(int argc, char** argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -58,6 +73,7 @@ int main(int argc, char** argv) { } FLAGS_log_dir = "./log"; google::InitGoogleLogging(strdup(argv[0])); +#endif if (api.create("./conf", "predictors.prototxt") != 0) { LOG(ERROR) << "Failed create predictors api!"; @@ -113,7 +129,9 @@ int main(int argc, char** argv) { api.thrd_finalize(); api.destroy(); +#ifndef BCLOUD google::ShutdownGoogleLogging(); +#endif return 0; } diff --git a/sdk-cpp/demo/int64tensor_format.cpp b/sdk-cpp/demo/int64tensor_format.cpp index 97160d82969d5932cc89416c8aecdbad117705de..627e527e7ed33a1c2b09ed6b712628c8d5891fcb 100644 --- a/sdk-cpp/demo/int64tensor_format.cpp +++ b/sdk-cpp/demo/int64tensor_format.cpp @@ -75,6 +75,21 @@ int main(int argc, char** argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -87,6 +102,7 @@ int main(int argc, char** argv) { } FLAGS_log_dir = "./log"; google::InitGoogleLogging(strdup(argv[0])); +#endif if (api.create("./conf", "predictors.prototxt") != 0) { LOG(ERROR) << "Failed create predictors api!"; @@ -142,7 +158,9 @@ int main(int argc, char** argv) { api.thrd_finalize(); api.destroy(); +#ifndef BCLOUD google::ShutdownGoogleLogging(); +#endif return 0; } diff --git a/sdk-cpp/demo/sparse_format.cpp b/sdk-cpp/demo/sparse_format.cpp index c428881dc909237754a66f5c116fa2b4e266afeb..60e2c0ee848f61932b3cbdf25433f4d67fb44869 100644 --- a/sdk-cpp/demo/sparse_format.cpp +++ b/sdk-cpp/demo/sparse_format.cpp @@ -73,6 +73,21 @@ int main(int argc, char** argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -85,6 +100,7 @@ int main(int argc, char** argv) { } FLAGS_log_dir = "./log"; google::InitGoogleLogging(strdup(argv[0])); +#endif if (api.create("./conf", "predictors.prototxt") != 0) { LOG(ERROR) << "Failed create predictors api!"; @@ -140,7 +156,9 @@ int main(int argc, char** argv) { api.thrd_finalize(); api.destroy(); +#ifndef BCLOUD google::ShutdownGoogleLogging(); +#endif return 0; } diff --git a/sdk-cpp/demo/text_classification.cpp b/sdk-cpp/demo/text_classification.cpp index 6e9555d06a7c3d7c63645aa1f38bec2c62399318..4b7ea425d45482e29f411e4301079937e43e9c05 100644 --- a/sdk-cpp/demo/text_classification.cpp +++ b/sdk-cpp/demo/text_classification.cpp @@ -171,6 +171,21 @@ int main(int argc, char **argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -185,6 +200,7 @@ int main(int argc, char **argv) { google::InitGoogleLogging(strdup(argv[0])); FLAGS_logbufsecs = 0; FLAGS_logbuflevel = -1; +#endif g_pred_labels.clear(); @@ -261,6 +277,8 @@ int main(int argc, char **argv) { LOG(INFO) << "Accuracy " << static_cast(correct) / g_pred_labels.size(); + LOG(INFO) << "correct " << correct; + LOG(INFO) << "g_pred_labels " << g_pred_labels.size(); api.thrd_finalize(); api.destroy(); diff --git a/sdk-cpp/demo/text_classification_press.cpp b/sdk-cpp/demo/text_classification_press.cpp index 04a9d2f693fd391676e8655dfff9cbfdb3333734..d258dc8f870e39a4d7f11e77555f30a6e4c6c44d 100644 --- a/sdk-cpp/demo/text_classification_press.cpp +++ b/sdk-cpp/demo/text_classification_press.cpp @@ -249,6 +249,21 @@ int main(int argc, char **argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -264,6 +279,7 @@ int main(int argc, char **argv) { google::InitGoogleLogging(strdup(argv[0])); FLAGS_logbufsecs = 0; FLAGS_logbuflevel = -1; +#endif g_pred_labels.resize(FLAGS_concurrency); g_correct.resize(FLAGS_concurrency); diff --git a/sdk-cpp/demo/ximage.cpp b/sdk-cpp/demo/ximage.cpp index 426a138e6f186acbaa99acb2215cbff00100ebab..c19fe1699e9fe13525ef64cb537bd7ed764f27f0 100644 --- a/sdk-cpp/demo/ximage.cpp +++ b/sdk-cpp/demo/ximage.cpp @@ -22,6 +22,10 @@ #include "sdk-cpp/include/common.h" #include "sdk-cpp/include/predictor_sdk.h" +#ifndef BCLOUD +using json2pb::JsonToProtoMessage; +#endif + using baidu::paddle_serving::sdk_cpp::Predictor; using baidu::paddle_serving::sdk_cpp::PredictorApi; using baidu::paddle_serving::predictor::format::XImageReqInstance; @@ -87,7 +91,7 @@ void print_res(const Request& req, butil::IOBuf buf; buf.append(json); butil::IOBufAsZeroCopyInputStream wrapper(buf); - if (!json2pb::JsonToProtoMessage(&wrapper, &json_msg, &err_string)) { + if (!JsonToProtoMessage(&wrapper, &json_msg, &err_string)) { LOG(ERROR) << "Failed parse json from str:" << json; return; } @@ -119,6 +123,21 @@ int main(int argc, char** argv) { PredictorApi api; // initialize logger instance +#ifdef BCLOUD + logging::LoggingSettings settings; + settings.logging_dest = logging::LOG_TO_FILE; + + std::string filename(argv[0]); + filename = filename.substr(filename.find_last_of('/') + 1); + settings.log_file = (std::string("./log/") + filename + ".log").c_str(); + settings.delete_old = logging::DELETE_OLD_LOG_FILE; + logging::InitLogging(settings); + + logging::ComlogSinkOptions cso; + cso.process_name = filename; + cso.enable_wf_device = true; + logging::ComlogSink::GetInstance()->Setup(&cso); +#else struct stat st_buf; int ret = 0; if ((ret = stat("./log", &st_buf)) != 0) { @@ -131,6 +150,7 @@ int main(int argc, char** argv) { } FLAGS_log_dir = "./log"; google::InitGoogleLogging(strdup(argv[0])); +#endif if (api.create("./conf", "predictors.prototxt") != 0) { LOG(ERROR) << "Failed create predictors api!"; diff --git a/sdk-cpp/include/common.h b/sdk-cpp/include/common.h index 8e7138a234cc8a87a468df523278aa128cfc7a15..a29d5f104f55b1dc3c3bc7eb54a2655fdbf9f61b 100644 --- a/sdk-cpp/include/common.h +++ b/sdk-cpp/include/common.h @@ -27,6 +27,16 @@ #include "gflags/gflags.h" #include "google/protobuf/message.h" +#ifdef BCLOUD +#include "baidu/rpc/channel.h" +#include "baidu/rpc/parallel_channel.h" +#include "baidu/rpc/traceprintf.h" +#include "bthread.h" +#include "base/logging.h" +#include "base/comlog_sink.h" +#include "base/object_pool.h" +#include "base/time.h" +#else #include "brpc/channel.h" #include "brpc/parallel_channel.h" #include "brpc/traceprintf.h" @@ -34,10 +44,22 @@ #include "butil/logging.h" #include "butil/object_pool.h" #include "butil/time.h" +#endif + #include "bvar/bvar.h" + +#ifdef BCLOUD +#include "json_to_pb.h" +#else #include "json2pb/json_to_pb.h" +#endif #include "configure/include/configure_parser.h" #include "configure/sdk_configure.pb.h" #include "sdk-cpp/include/utils.h" + +#ifdef BCLOUD +namespace brpc = baidu::rpc; +namespace butil = base; +#endif diff --git a/sdk-cpp/include/factory.h b/sdk-cpp/include/factory.h index e49525be5772787c10ce8abf76f7573ddf6f7a7d..777f79df4e90a6b011df931963e1e7e47bd0fbb8 100644 --- a/sdk-cpp/include/factory.h +++ b/sdk-cpp/include/factory.h @@ -24,6 +24,10 @@ namespace baidu { namespace paddle_serving { namespace sdk_cpp { +#ifdef BCLOUD +namespace brpc = baidu::rpc; +#endif + #define INLINE_REGIST_OBJECT(D, B, E) \ do { \ Factory* factory = new (std::nothrow) Factory(); \ diff --git a/sdk-cpp/include/predictor.hpp b/sdk-cpp/include/predictor.hpp index de34040d2203d0c9792b77fd4b04b5e7dcbacafe..3f4ecd4a85a08c728be3246ebb352ae9d992220d 100644 --- a/sdk-cpp/include/predictor.hpp +++ b/sdk-cpp/include/predictor.hpp @@ -18,6 +18,10 @@ namespace baidu { namespace paddle_serving { namespace sdk_cpp { +#ifdef BCLOUD +namespace butil = base; +#endif + class MetricScope; class Stub; template diff --git a/sdk-cpp/include/stub_impl.hpp b/sdk-cpp/include/stub_impl.hpp index 068192b7c0b363fd0316520e0f29ea712f3bf095..30a1feae88a496e3e5beeb39298831e5de5d6d8d 100644 --- a/sdk-cpp/include/stub_impl.hpp +++ b/sdk-cpp/include/stub_impl.hpp @@ -17,6 +17,9 @@ namespace baidu { namespace paddle_serving { namespace sdk_cpp { +#ifdef BCLOUD +namespace butil = base; +#endif template int StubImpl::initialize(const VariantInfo& var, diff --git a/sdk-cpp/src/config_manager.cpp b/sdk-cpp/src/config_manager.cpp index d3aec8c886948e6aad99260cb460dfdf79b2100f..e019f2a71cd4c03471406faa38dab50c8c8947ec 100644 --- a/sdk-cpp/src/config_manager.cpp +++ b/sdk-cpp/src/config_manager.cpp @@ -13,7 +13,11 @@ // limitations under the License. #include "sdk-cpp/include/config_manager.h" +#ifdef BCLOUD +#include "baidu/rpc/server.h" +#else #include "brpc/server.h" +#endif #include "sdk-cpp/include/abtest.h" namespace baidu { diff --git a/serving/BCLOUD b/serving/BCLOUD new file mode 100644 index 0000000000000000000000000000000000000000..d279dd802a68751b9790d7933091aa880be283d5 --- /dev/null +++ b/serving/BCLOUD @@ -0,0 +1,61 @@ +#edit-mode: -*- python -*- +#coding:utf-8 + +WORKROOT('../../../../') + +#Preprocessor flags. +CPPFLAGS(r'-D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__const__= -Dtypeof=__typeof__ -DUSE_PTHREAD') +#CPPFLAGS(r'-DVERSION=\"%s\"' % SVN_LAST_CHANGED_REV()) + +#C++ flags. +CXXFLAGS('-g -O2 -pipe -W -Wall -fPIC -fno-omit-frame-pointer -Wno-deprecated -Wno-unused-parameter -Wno-unused-variable -Wno-unused-local-typedefs -Wno-sign-compare -std=c++11') + +#link flags +LDFLAGS('-lpthread -lcrypto -lrt -lssl -ldl -lz -std=c++11') + +ImportConfigsFrom('..') + +INCPATHS('$INC') +INCPATHS('$INC/predictor') +INCPATHS('../') +INCPATHS('../predictor/') +INCPATHS('$OUT_ROOT/third-64/protobuf/output/include') +INCPATHS('$OUT_ROOT/baidu/third-party/gflags/output/include') +INCPATHS('$OUT_ROOT/baidu/third-party/glog/output/include') +INCPATHS('$INC/predictor/proto') + +LIBS('$OUT/lib/libpdserving.a') +LIBS('$OUT/lib/libpdconfigure.a') +LIBS('$OUT_ROOT/baidu/third-party/mklml/output/so/libmklml_intel.so') +LIBS('$OUT_ROOT/baidu/third-party/mklml/output/so/libmklml_gnu.so') +LIBS('$OUT_ROOT/baidu/third-party/mklml/output/so/libiomp5.so') + +CONFIGS('baidu/base/baidu-rpc@ci-base') +CONFIGS('baidu/third-party/gflags@v2.0.0@git_branch') +CONFIGS('baidu/third-party/glog@v0.3.x@git_branch') +CONFIGS('baidu/third-party/opencv@master@git_branch') + +cpp_source_dirs = [] +cpp_source_dirs.append('op/*.cpp') +cpp_source_dirs.append('proto/*.proto') + +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/third-party/protobuf/output/lib/libprotobuf.a') +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/third-party/protobuf/output/lib/libprotobuf-lite.a') +# DELETE_AUTO_LIBS('$OUT_ROOT/third-64/glog/output/lib/libglog.a') +DELETE_AUTO_LIBS('$OUT_ROOT/third-64/gflags/output/lib/libgflags.a') +DELETE_AUTO_LIBS('$OUT_ROOT/third-64/gflags/output/lib/libgflags_nothreads.a') +DELETE_AUTO_LIBS('$OUT_ROOT/baidu/paddlepaddle/paddle/output/lib/libpaddle_fluid_noavx_openblas.a') + +PROTOFLAGS( + '--plugin=protoc-gen-pdcodegen=../pdcodegen/plugin/pdcodegen', + '--pdcodegen_out proto --proto_path=.', + '--proto_path=../predictor/proto') + +HEADERS(GLOB_GEN_SRCS('../configure/proto/server_configure.pb.h'), '$INC/serving') +HEADERS(GLOB_GEN_SRCS('proto/*.pb.h'), '$INC/serving') + +# Application +Application('serving', Sources(GLOB(' '.join(cpp_source_dirs))), WholeArchives('$OUT/lib/libinferencer-fluid-cpu.a')) + +OUTPUT('conf', '$OUT/demo/serving/') +OUTPUT('data', '$OUT/demo/serving') diff --git a/serving/op/classify_op.h b/serving/op/classify_op.h index 68eb05c7bbb23b63bb58363cce87e9c7e89f497b..4750f755d3e9aecacb8522530e98a0499fbeaa18 100644 --- a/serving/op/classify_op.h +++ b/serving/op/classify_op.h @@ -14,7 +14,11 @@ #pragma once #include +#ifdef BCLOUD +#include "paddle/fluid/inference/api/paddle_inference_api.h" +#else #include "paddle/fluid/inference/paddle_inference_api.h" +#endif #include "serving/image_class.pb.h" namespace baidu { diff --git a/serving/op/reader_op.h b/serving/op/reader_op.h index 9fb90234cb077cd21239b59002d538c61da93bfd..135a204edfe122823bc961377b98f3929b33881c 100644 --- a/serving/op/reader_op.h +++ b/serving/op/reader_op.h @@ -28,7 +28,11 @@ #include "opencv/cxcore.h" #include "opencv/highgui.h" +#ifdef BCLOUD +#include "paddle/fluid/inference/api/paddle_inference_api.h" +#else #include "paddle/fluid/inference/paddle_inference_api.h" +#endif namespace baidu { namespace paddle_serving { diff --git a/serving/op/text_classification_op.h b/serving/op/text_classification_op.h index 5f67a6e0ca93a025f69199a7db227bccaca86181..94e0d37667f1d58b5bca622e10bc44f6e494ee3a 100644 --- a/serving/op/text_classification_op.h +++ b/serving/op/text_classification_op.h @@ -14,7 +14,11 @@ #pragma once #include +#ifdef BCLOUD +#include "paddle/fluid/inference/api/paddle_inference_api.h" +#else #include "paddle/fluid/inference/paddle_inference_api.h" +#endif #include "serving/text_classification.pb.h" namespace baidu { diff --git a/serving/op/write_json_op.cpp b/serving/op/write_json_op.cpp index 49a74f0a666c2830b012fb3dd68b4445ca1c2703..9f23e89d3aa3f2c0d89257fb26b2e6f66b2ca3e4 100644 --- a/serving/op/write_json_op.cpp +++ b/serving/op/write_json_op.cpp @@ -14,11 +14,20 @@ #include #include + +#ifdef BCLOUD +#include "pb_to_json.h" +#else #include "json2pb/pb_to_json.h" +#endif #include "predictor/framework/memory.h" #include "serving/op/write_json_op.h" +#ifndef BCLOUD +using json2pb::ProtoMessageToJson; +#endif + namespace baidu { namespace paddle_serving { namespace predictor { @@ -53,7 +62,7 @@ int WriteJsonOp::inference() { return -1; } std::string* text = ins->mutable_response_json(); - if (!json2pb::ProtoMessageToJson( + if (!ProtoMessageToJson( classify_out->predictions(si), text, &err_string)) { LOG(ERROR) << "Failed convert message[" << classify_out->predictions(si).ShortDebugString() diff --git a/serving/op/write_op.cpp b/serving/op/write_op.cpp index f957e2f40f139a88e43afecf68753974586544a6..5da386af416327a171e436c6a74be6b3c9936e38 100644 --- a/serving/op/write_op.cpp +++ b/serving/op/write_op.cpp @@ -14,11 +14,20 @@ #include #include + +#ifdef BCLOUD +#include "pb_to_json.h" +#else #include "json2pb/pb_to_json.h" +#endif #include "predictor/framework/memory.h" #include "serving/op/write_op.h" +#ifndef BCLOUD +using json2pb::ProtoMessageToJson; +#endif + namespace baidu { namespace paddle_serving { namespace serving { @@ -53,7 +62,7 @@ int WriteOp::inference() { return -1; } std::string* text = ins->mutable_response_json(); - if (!json2pb::ProtoMessageToJson( + if (!ProtoMessageToJson( classify_out->predictions(si), text, &err_string)) { LOG(ERROR) << "Failed convert message[" << classify_out->predictions(si).ShortDebugString() diff --git a/serving/proto/native_tensor.proto b/serving/proto/native_tensor.proto deleted file mode 100644 index d8082086eea0513b2873116702d3b2ff762e6a9d..0000000000000000000000000000000000000000 --- a/serving/proto/native_tensor.proto +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2019 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. - -syntax = "proto2"; -import "pds_option.proto"; -package baidu.paddle_serving.predictor.native_tensor; - -option cc_generic_services = true; - -enum TensorType { - FLOAT = 0; - DOUBLE = 1; - INT32 = 2; - INT64 = 3; - UINT32 = 4; - UINT64 = 5; -}; - -message DenseTensor { - optional string name = 1; - repeated uint32 shape = 2; - required TensorType type = 3; - repeated float float_data = 4; - repeated double double_data = 5; - repeated int32 int32_data = 6; - repeated int64 int64_data = 7; - repeated uint32 uint32_data = 8; - repeated uint64 uint64_data = 9; -}; - -message DenseRequest { repeated DenseTensor tensors = 1; }; - -message DenseResponse { repeated DenseTensor tensors = 1; }; - -service BuiltinDenseFormatService { - rpc inference(DenseRequest) returns (DenseResponse); - rpc debug(DenseRequest) returns (DenseResponse); - option (pds.options).generate_impl = true; -}; - -message SparseTensor { - required string name = 1; - repeated uint32 keys = 2; - repeated uint32 shape = 3; - required TensorType type = 4; - repeated float float_data = 5; - repeated double double_data = 6; - repeated int32 int32_data = 7; - repeated int64 int64_data = 8; - repeated uint32 uint32_data = 9; - repeated uint64 uint64_data = 10; -}; - -message SparseRequest { repeated SparseTensor tensors = 1; }; - -message SparseResponse { repeated SparseTensor tensors = 1; }; - -service BuiltinSparseFormatService { - rpc inference(SparseRequest) returns (SparseResponse); - rpc debug(SparseRequest) returns (SparseResponse); - option (pds.options).generate_impl = true; -};