Skip to content

Commit 2b5edfb

Browse files
committed
Add ceil model pooling for trt (ocr attention)
test=develop
1 parent fa2ab33 commit 2b5edfb

33 files changed

+2471
-429
lines changed

paddle/fluid/API.spec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ paddle.fluid.layers.reduce_min ArgSpec(args=['input', 'dim', 'keep_dim', 'name']
8585
paddle.fluid.layers.reduce_prod ArgSpec(args=['input', 'dim', 'keep_dim', 'name'], varargs=None, keywords=None, defaults=(None, False, None))
8686
paddle.fluid.layers.sequence_first_step ArgSpec(args=['input'], varargs=None, keywords=None, defaults=None)
8787
paddle.fluid.layers.sequence_last_step ArgSpec(args=['input'], varargs=None, keywords=None, defaults=None)
88+
paddle.fluid.layers.sequence_slice ArgSpec(args=['input', 'offset', 'length', 'name'], varargs=None, keywords=None, defaults=(None,))
8889
paddle.fluid.layers.dropout ArgSpec(args=['x', 'dropout_prob', 'is_test', 'seed', 'name'], varargs=None, keywords=None, defaults=(False, None, None))
8990
paddle.fluid.layers.split ArgSpec(args=['input', 'num_or_sections', 'dim', 'name'], varargs=None, keywords=None, defaults=(-1, None))
9091
paddle.fluid.layers.ctc_greedy_decoder ArgSpec(args=['input', 'blank', 'name'], varargs=None, keywords=None, defaults=(None,))

paddle/fluid/framework/executor.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ void InitializeVariable(Variable* var, proto::VarType::Type var_type) {
101101
} else if (var_type == proto::VarType::FETCH_LIST) {
102102
var->GetMutable<FeedFetchList>();
103103
} else if (var_type == proto::VarType::STEP_SCOPES) {
104-
var->GetMutable<std::vector<framework::Scope>>();
104+
var->GetMutable<std::vector<framework::Scope*>>();
105105
} else if (var_type == proto::VarType::LOD_RANK_TABLE) {
106106
var->GetMutable<LoDRankTable>();
107107
} else if (var_type == proto::VarType::LOD_TENSOR_ARRAY) {

paddle/fluid/framework/feed_fetch_method.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ void SetFeedVariable(Scope* scope, const LoDTensor& input,
2727
// be created.
2828
VLOG(3) << "SetFeedVariable name=" << var_name << " index=" << index;
2929
Variable* g_feed_value = scope->Var(var_name);
30-
auto& feed_inputs =
31-
*(g_feed_value->GetMutable<std::vector<paddle::framework::LoDTensor>>());
30+
auto& feed_inputs = *(g_feed_value->GetMutable<FeedFetchList>());
3231
if (index >= feed_inputs.size()) {
3332
feed_inputs.resize(index + 1);
3433
}

paddle/fluid/framework/naive_executor.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ static void InitializeVariable(Variable *var, proto::VarType::Type var_type) {
3737
} else if (var_type == proto::VarType::FETCH_LIST) {
3838
var->GetMutable<FeedFetchList>();
3939
} else if (var_type == proto::VarType::STEP_SCOPES) {
40-
var->GetMutable<std::vector<framework::Scope>>();
40+
var->GetMutable<std::vector<framework::Scope *>>();
4141
} else if (var_type == proto::VarType::LOD_RANK_TABLE) {
4242
var->GetMutable<LoDRankTable>();
4343
} else if (var_type == proto::VarType::LOD_TENSOR_ARRAY) {

paddle/fluid/framework/operator.cc

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,17 @@ void OperatorBase::Run(const Scope& scope, const platform::Place& place) {
149149
platform::SetDeviceId(dev_id);
150150
#endif
151151
}
152-
platform::DeviceContextPool& pool = platform::DeviceContextPool::Instance();
153-
platform::RecordEvent record_event(Type(), pool.Get(place));
154-
RunImpl(scope, place);
152+
153+
// The profile has a process-wide mutex, results in serious performance issue
154+
// in concurrency scenerio. Here use an `if` to fix this issue.
155+
// Please not remove the `if`, ask @Superjomn if there are any concern.
156+
if (platform::IsProfileEnabled()) {
157+
platform::DeviceContextPool& pool = platform::DeviceContextPool::Instance();
158+
platform::RecordEvent record_event(Type(), pool.Get(place));
159+
RunImpl(scope, place);
160+
} else {
161+
RunImpl(scope, place);
162+
}
155163
VLOG(3) << place << " " << DebugStringEx(&scope);
156164
}
157165

paddle/fluid/framework/var_desc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ class VarDesc {
5959
public:
6060
explicit VarDesc(const std::string &name) {
6161
desc_.set_name(name);
62+
// TODO(paddle-dev): Why default to lodtensor.
6263
desc_.mutable_type()->set_type(proto::VarType::LOD_TENSOR);
6364
}
6465

paddle/fluid/framework/variable.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ class Variable {
3838

3939
template <typename T>
4040
T* GetMutable() {
41-
if (!IsType<T>()) {
41+
if (!holder_) {
4242
holder_.reset(new PlaceholderImpl<T>(new T()));
43+
} else {
44+
PADDLE_ENFORCE(IsType<T>(),
45+
"Variable must be type %s, the holding type is %s",
46+
typeid(T).name(), holder_->Type().name());
4347
}
4448
return static_cast<T*>(holder_->Ptr());
4549
}

paddle/fluid/framework/variable_test.cc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ TEST(Variable, GetMutable) {
3333
const Tensor& tt = v->Get<Tensor>();
3434
EXPECT_EQ(1234, tt.content_);
3535

36-
std::string* s = v->GetMutable<std::string>();
37-
*s = "hello";
38-
39-
const std::string& ss = v->Get<std::string>();
40-
EXPECT_EQ("hello", ss);
36+
try {
37+
v->GetMutable<std::string>();
38+
} catch (std::exception& e) {
39+
return;
40+
}
41+
EXPECT_TRUE(false);
4142
}

paddle/fluid/inference/api/analysis_predictor.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,19 @@ bool AnalysisPredictor::LoadProgramDesc() {
340340
}
341341
return true;
342342
}
343+
344+
AnalysisPredictor::~AnalysisPredictor() {
345+
#if !defined(_WIN32)
346+
if (FLAGS_profile) {
347+
platform::DisableProfiler(platform::EventSortingKey::kTotal,
348+
"./profile.log");
349+
}
350+
#endif
351+
if (sub_scope_) {
352+
scope_->DeleteScope(sub_scope_);
353+
}
354+
}
355+
343356
std::unique_ptr<PaddlePredictor> AnalysisPredictor::Clone() {
344357
auto *x = new AnalysisPredictor(config_);
345358
x->Init(scope_, inference_program_);

paddle/fluid/inference/api/analysis_predictor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class AnalysisPredictor : public PaddlePredictor {
7272
template <typename T>
7373
void GetFetchOne(const framework::LoDTensor &fetchs,
7474
PaddleTensor *output_data);
75+
~AnalysisPredictor();
7576

7677
private:
7778
contrib::AnalysisConfig config_;

0 commit comments

Comments
 (0)