Skip to content

Commit e9a0fbf

Browse files
authored
OP报错信息优化 (#27301)
paddle/fluid/operators/distributed_ops OP报错信息优化
1 parent da583ed commit e9a0fbf

2 files changed

Lines changed: 37 additions & 12 deletions

File tree

paddle/fluid/operators/distributed_ops/fake_init_op.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ class FakeInitOp : public framework::OperatorBase {
4343
tensor = out_var.GetMutable<framework::SelectedRows>()->mutable_value();
4444
tensor->Resize(framework::make_ddim(Attr<std::vector<int64_t>>("shape")));
4545
} else {
46-
PADDLE_THROW(
46+
PADDLE_THROW(platform::errors::InvalidArgument(
4747
"fake init op's output only"
48-
"supports SelectedRows and LoDTensor");
48+
"supports SelectedRows and LoDTensor"));
4949
}
5050
}
5151
};

paddle/fluid/operators/distributed_ops/listen_and_serv_op.cc

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,10 @@ void ListenAndServOp::RunSyncLoop(
134134
auto optimize_blocks =
135135
Attr<std::vector<framework::BlockDesc *>>(kOptimizeBlocks);
136136
PADDLE_ENFORCE_GE(num_blocks, 2,
137-
"server program should have at least 2 blocks");
137+
platform::errors::PreconditionNotMet(
138+
"Invalid number of blocks in server program. Expected "
139+
"equal or greater than 2. Recieved %zu",
140+
num_blocks));
138141

139142
// Prepare all the server block
140143
std::vector<int> optimize_blocks_list;
@@ -218,7 +221,8 @@ void ListenAndServOp::ResetReceivedVars(framework::Scope *recv_scope,
218221
VLOG(3) << "reset sparse var: " << varname;
219222
var->GetMutable<framework::SelectedRows>()->mutable_rows()->clear();
220223
} else {
221-
PADDLE_THROW("The type of sparse var should be SelectedRows");
224+
PADDLE_THROW(platform::errors::PreconditionNotMet(
225+
"The type of sparse var should be SelectedRows"));
222226
}
223227
}
224228
if (UNLIKELY(reset_all)) {
@@ -235,7 +239,8 @@ void ListenAndServOp::ResetReceivedVars(framework::Scope *recv_scope,
235239
math::set_constant(*dev_ctx, var->GetMutable<framework::Tensor>(),
236240
static_cast<float>(0));
237241
} else {
238-
PADDLE_THROW("The type of dense var should be in [LoDTensor, Tensor]");
242+
PADDLE_THROW(platform::errors::PreconditionNotMet(
243+
"The type of dense var should be in [LoDTensor, Tensor]"));
239244
}
240245
}
241246
}
@@ -254,8 +259,15 @@ void ListenAndServOp::RunAsyncLoop(framework::Executor *executor,
254259
std::vector<std::string> pieces;
255260
split(grad_and_id, ':', &pieces);
256261
VLOG(3) << "after split, key = " << pieces[0] << ", id=" << pieces[1];
257-
PADDLE_ENFORCE_EQ(pieces.size(), 2);
258-
PADDLE_ENFORCE_EQ(out_map->count(pieces[0]), 0);
262+
PADDLE_ENFORCE_EQ(pieces.size(), 2,
263+
platform::errors::PreconditionNotMet(
264+
"Invalid format of grad_and_id argument. "
265+
"Expected \"grad:block_id\". Recieved %s",
266+
grad_and_id.c_str()));
267+
PADDLE_ENFORCE_EQ(out_map->count(pieces[0]), 0,
268+
platform::errors::AlreadyExists(
269+
"The gradient name %s has already existed in out_map",
270+
pieces[0].c_str()));
259271

260272
int block_id = std::stoi(pieces[1]);
261273
(*out_map)[pieces[0]] = block_id;
@@ -267,7 +279,10 @@ void ListenAndServOp::RunAsyncLoop(framework::Executor *executor,
267279

268280
size_t num_blocks = program->Size();
269281
PADDLE_ENFORCE_GE(num_blocks, 2,
270-
"server program should have at least 2 blocks");
282+
platform::errors::PreconditionNotMet(
283+
"Invalid number of blocks in server program. Expected "
284+
"equal or greater than 2. Recieved %zu",
285+
num_blocks));
271286
std::vector<int> block_list;
272287
for (size_t blkid = 1; blkid < num_blocks; ++blkid) {
273288
block_list.push_back(blkid);
@@ -342,9 +357,9 @@ void ListenAndServOp::CacheVarsType(const std::vector<std::string> &varnames,
342357
var->IsType<framework::Tensor>()) {
343358
dense_vars_.push_back(varname);
344359
} else {
345-
PADDLE_THROW(
360+
PADDLE_THROW(platform::errors::PreconditionNotMet(
346361
"The type of received var should be in [SelectedRows, LoDTensor, "
347-
"Tensor].");
362+
"Tensor]."));
348363
}
349364
}
350365
}
@@ -450,7 +465,12 @@ void ListenAndServOp::RunImpl(const framework::Scope &scope,
450465
split(prefetch_var_name_and_id, ':', &pieces);
451466
VLOG(3) << "after split, prefetch_var = " << pieces[0]
452467
<< ", id=" << pieces[1];
453-
PADDLE_ENFORCE_EQ(pieces.size(), 2);
468+
PADDLE_ENFORCE_EQ(
469+
pieces.size(), 2,
470+
platform::errors::PreconditionNotMet(
471+
"Invalid format of prefetch_var_name_and_id argument. "
472+
"Expected \"xxx:xxx\". Recieved %s",
473+
prefetch_var_name_and_id.c_str()));
454474

455475
int block_id = std::stoi(pieces[1]);
456476
prefetch_block_id_list.push_back(block_id);
@@ -476,7 +496,12 @@ void ListenAndServOp::RunImpl(const framework::Scope &scope,
476496
sparse_grad_name_to_param_name_str) {
477497
std::vector<std::string> pieces;
478498
split(sparse_grad_name_and_param_name, ':', &pieces);
479-
PADDLE_ENFORCE_EQ(pieces.size(), 2);
499+
PADDLE_ENFORCE_EQ(
500+
pieces.size(), 2,
501+
platform::errors::PreconditionNotMet(
502+
"Invalid format of sparse_grad_name_and_param_name argument. "
503+
"Expected \"xxx:xxx\". Recieved %s",
504+
sparse_grad_name_and_param_name.c_str()));
480505
VLOG(3) << "after split, sparse_grad_name = " << pieces[0]
481506
<< ", param_name = " << pieces[1];
482507
sparse_grad_name_to_param_name[pieces[0]] = pieces[1];

0 commit comments

Comments
 (0)