未验证 提交 dafb0e3b 编写于 作者: C Chen Weihang 提交者: GitHub

Polish framework error message part 6 (#27257)

* polish framework error msg part 6

* polish lossed item

* fix failed unittest

* polish by reviewer comments
上级 e6e2e537
...@@ -69,7 +69,8 @@ class OpInfo { ...@@ -69,7 +69,8 @@ class OpInfo {
const OpCreator& Creator() const { const OpCreator& Creator() const {
PADDLE_ENFORCE_NOT_NULL(creator_, PADDLE_ENFORCE_NOT_NULL(creator_,
"Operator's Creator has not been registered"); platform::errors::NotFound(
"Operator's Creator has not been registered."));
return creator_; return creator_;
} }
...@@ -79,11 +80,12 @@ class OpInfo { ...@@ -79,11 +80,12 @@ class OpInfo {
std::string type = proto_ ? proto_->type() : "unknown"; std::string type = proto_ ? proto_->type() : "unknown";
PADDLE_ENFORCE_NOT_NULL( PADDLE_ENFORCE_NOT_NULL(
grad_op_maker_, grad_op_maker_,
"Operator %s's GradOpMaker has not been " platform::errors::NotFound(
"registered.\nPlease check whether %s_op has " "Operator %s's GradOpMaker has not been "
"grad_op.\nIf not, please set stop_gradient to True " "registered.\nPlease check whether (%s) operator has "
"for its input and output variables using var.stop_gradient=True.", "gradient operator.\nIf not, please set stop_gradient to be True "
type.c_str(), type.c_str()); "for its input and output variables using var.stop_gradient=True.",
type.c_str(), type.c_str()));
return grad_op_maker_; return grad_op_maker_;
} }
...@@ -100,11 +102,12 @@ class OpInfo { ...@@ -100,11 +102,12 @@ class OpInfo {
std::string type = proto_ ? proto_->type() : "unknown"; std::string type = proto_ ? proto_->type() : "unknown";
PADDLE_ENFORCE_NOT_NULL( PADDLE_ENFORCE_NOT_NULL(
dygraph_grad_op_maker_, dygraph_grad_op_maker_,
"Operator %s's DygraphGradOpMaker has not been " platform::errors::NotFound(
"registered.\nPlease check whether %s_op has " "Operator %s's DygraphGradOpMaker has not been "
"grad_op.\nIf not, please set stop_gradient to True " "registered.\nPlease check whether (%s) operator has "
"for its input and output variables using var.stop_gradient=True.", "gradient operator.\nIf not, please set stop_gradient to be True "
type.c_str(), type.c_str()); "for its input and output variables using var.stop_gradient=True.",
type.c_str(), type.c_str()));
return dygraph_grad_op_maker_; return dygraph_grad_op_maker_;
} }
...@@ -130,14 +133,17 @@ class OpInfoMap { ...@@ -130,14 +133,17 @@ class OpInfoMap {
} }
void Insert(const std::string& type, const OpInfo& info) { void Insert(const std::string& type, const OpInfo& info) {
PADDLE_ENFORCE(!Has(type), "Operator %s has been registered", type); PADDLE_ENFORCE_NE(Has(type), true,
platform::errors::AlreadyExists(
"Operator (%s) has been registered.", type));
map_.insert({type, info}); map_.insert({type, info});
} }
const OpInfo& Get(const std::string& type) const { const OpInfo& Get(const std::string& type) const {
auto op_info_ptr = GetNullable(type); auto op_info_ptr = GetNullable(type);
PADDLE_ENFORCE_NOT_NULL(op_info_ptr, "Operator %s has not been registered", PADDLE_ENFORCE_NOT_NULL(
type); op_info_ptr,
platform::errors::NotFound("Operator (%s) is not registered.", type));
return *op_info_ptr; return *op_info_ptr;
} }
......
...@@ -33,10 +33,18 @@ size_t OpKernelType::Hash::operator()(const OpKernelType& key) const { ...@@ -33,10 +33,18 @@ size_t OpKernelType::Hash::operator()(const OpKernelType& key) const {
cur_loc += OpKernelType::kLibBits; cur_loc += OpKernelType::kLibBits;
int customized_value = key.customized_type_value_; int customized_value = key.customized_type_value_;
PADDLE_ENFORCE(customized_value < (1 << OpKernelType::kCustomizeBits)); PADDLE_ENFORCE_LT(customized_value, (1 << OpKernelType::kCustomizeBits),
platform::errors::Unavailable(
"Too many custom OpKernel attribute values, expected "
"maximum value is %d, received value is %d.",
(1 << OpKernelType::kCustomizeBits), customized_value));
customized_value = customized_value << cur_loc; customized_value = customized_value << cur_loc;
cur_loc += OpKernelType::kCustomizeBits; cur_loc += OpKernelType::kCustomizeBits;
PADDLE_ENFORCE(cur_loc < 64); PADDLE_ENFORCE_LT(cur_loc, 64,
platform::errors::Unavailable(
"Too many OpKernel attribute values, expected maximum "
"value is 64, received value is %d.",
cur_loc));
std::hash<int> hasher; std::hash<int> hasher;
return hasher(place + data_type + data_layout + library_type + return hasher(place + data_type + data_layout + library_type +
......
...@@ -43,7 +43,9 @@ OpProtoAndCheckerMaker::VariableBuilder OpProtoAndCheckerMaker::AddOutput( ...@@ -43,7 +43,9 @@ OpProtoAndCheckerMaker::VariableBuilder OpProtoAndCheckerMaker::AddOutput(
void OpProtoAndCheckerMaker::CheckNoDuplicatedInOutAttrs() { void OpProtoAndCheckerMaker::CheckNoDuplicatedInOutAttrs() {
std::unordered_set<std::string> names; std::unordered_set<std::string> names;
auto checker = [&](const std::string& name) { auto checker = [&](const std::string& name) {
PADDLE_ENFORCE(!names.count(name), "[%s] is duplicated", name); PADDLE_ENFORCE_EQ(
names.count(name), 0,
platform::errors::AlreadyExists("Attribute [%s] is duplicated.", name));
names.insert(name); names.insert(name);
}; };
for (auto& attr : proto_->attrs()) { for (auto& attr : proto_->attrs()) {
......
...@@ -54,9 +54,10 @@ class Registrar { ...@@ -54,9 +54,10 @@ class Registrar {
template <typename... ARGS> template <typename... ARGS>
struct OperatorRegistrar : public Registrar { struct OperatorRegistrar : public Registrar {
explicit OperatorRegistrar(const char* op_type) { explicit OperatorRegistrar(const char* op_type) {
if (OpInfoMap::Instance().Has(op_type)) { PADDLE_ENFORCE_EQ(
PADDLE_THROW("'%s' is registered more than once.", op_type); OpInfoMap::Instance().Has(op_type), false,
} platform::errors::AlreadyExists(
"Operator '%s' is registered more than once.", op_type));
static_assert(sizeof...(ARGS) != 0, static_assert(sizeof...(ARGS) != 0,
"OperatorRegistrar should be invoked at least by OpClass"); "OperatorRegistrar should be invoked at least by OpClass");
OpInfo info; OpInfo info;
......
...@@ -58,7 +58,8 @@ class MyTestOpProtoAndCheckerMaker : public OpProtoAndCheckerMaker { ...@@ -58,7 +58,8 @@ class MyTestOpProtoAndCheckerMaker : public OpProtoAndCheckerMaker {
AddInput("input", "input of cosine op").AsDuplicable(); AddInput("input", "input of cosine op").AsDuplicable();
AddOutput("output", "output of cosine op").AsIntermediate(); AddOutput("output", "output of cosine op").AsIntermediate();
auto my_checker = [](int i) { auto my_checker = [](int i) {
PADDLE_ENFORCE(i % 2 == 0, "'test_attr' must be even!"); PADDLE_ENFORCE_EQ(i % 2, 0, platform::errors::InvalidArgument(
"'test_attr' must be even!"));
}; };
AddAttr<int>("test_attr", "a simple test attribute") AddAttr<int>("test_attr", "a simple test attribute")
.AddCustomChecker(my_checker); .AddCustomChecker(my_checker);
......
...@@ -152,10 +152,10 @@ class OpVersionRegistrar { ...@@ -152,10 +152,10 @@ class OpVersionRegistrar {
return instance; return instance;
} }
OpVersion& Register(const std::string& op_type) { OpVersion& Register(const std::string& op_type) {
if (op_version_map_.find(op_type) != op_version_map_.end()) { PADDLE_ENFORCE_EQ(
PADDLE_THROW("'%s' is registered in operator version more than once.", op_version_map_.find(op_type), op_version_map_.end(),
op_type); platform::errors::AlreadyExists(
} "'%s' is registered in operator version more than once.", op_type));
op_version_map_.insert({op_type, OpVersion()}); op_version_map_.insert({op_type, OpVersion()});
return op_version_map_[op_type]; return op_version_map_[op_type];
} }
......
此差异已折叠。
...@@ -495,9 +495,9 @@ TEST(IndicateVarDataTypeTest, other) { ...@@ -495,9 +495,9 @@ TEST(IndicateVarDataTypeTest, other) {
EXPECT_TRUE( EXPECT_TRUE(
ex_msg.find( ex_msg.find(
"The Input Variable(Other) of " "The Input Variable(Other) of "
"indicate_other_data_type_test Op used to " "(indicate_other_data_type_test) Operator used to "
"determine kernel data type " "determine kernel data type "
"is empty or not LoDTensor or SelectedRows or LoDTensorArray") != "is empty or not LoDTensor or SelectedRows or LoDTensorArray.") !=
std::string::npos); std::string::npos);
} }
ASSERT_TRUE(caught); ASSERT_TRUE(caught);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册