diff --git a/oneflow/core/framework/user_op_registry.h b/oneflow/core/framework/user_op_registry.h index 0bd9fd3ff27923688ed4c3d3eeec3831f4605af5..fa91c65370987549988d2a2564a32c153b63e58a 100644 --- a/oneflow/core/framework/user_op_registry.h +++ b/oneflow/core/framework/user_op_registry.h @@ -52,7 +52,8 @@ using InputArgModifyFn = std::function<void(GetInputArgModifier, const UserOpCon using OutputArgModifier = OutputBlobModifier; using GetOutputArgModifier = std::function<OutputArgModifier*(const std::string& out_arg_name, int32_t out_arg_index)>; -using OutputArgModifyFn = std::function<void(GetOutputArgModifier, const UserOpConfWrapper&)>; +using OutputArgModifyFn = + std::function<Maybe<void>(GetOutputArgModifier, const UserOpConfWrapper&)>; using OutputBlobTimeShapeInferFn = std::function<Maybe<void>(InferOutputBlobTimeShapeFnContext*)>; using ParallelDistributionInferFn = std::function<Maybe<void>(InferParallelDistributionFnContext*)>; diff --git a/oneflow/core/operator/acc_tick_op.cpp b/oneflow/core/operator/acc_tick_op.cpp index e8afe83eba8b6bc68f99f3bf42bd66801b86b77d..f36b433e6ea74cad89816d4e70986e1300f005b6 100644 --- a/oneflow/core/operator/acc_tick_op.cpp +++ b/oneflow/core/operator/acc_tick_op.cpp @@ -27,11 +27,12 @@ Maybe<void> InferBlobDescs(const std::function<BlobDesc*(const std::string&)>& G } // namespace -void AccTickOp::InitFromOpConf() { +Maybe<void> AccTickOp::InitFromOpConf() { CHECK(op_conf().has_acc_tick_conf()); EnrollInputBn("one", false); EnrollOutputBn("acc", false); + return Maybe<void>::Ok(); } Maybe<void> AccTickOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/acc_tick_op.h b/oneflow/core/operator/acc_tick_op.h index 27bb3bbe2d488727df858622d88c97c1f7a11c72..1bc1cb16d2582c0296a82562837b89e1202781d0 100644 --- a/oneflow/core/operator/acc_tick_op.h +++ b/oneflow/core/operator/acc_tick_op.h @@ -26,7 +26,7 @@ class AccTickOp final : public Operator { AccTickOp() = default; ~AccTickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, diff --git a/oneflow/core/operator/assign_op.cpp b/oneflow/core/operator/assign_op.cpp index 927669b9f2640febe740240eb877cb3b5ab2f988..963d09c862b0cdce75aa0fa95fbab3c352ecaf42 100644 --- a/oneflow/core/operator/assign_op.cpp +++ b/oneflow/core/operator/assign_op.cpp @@ -23,7 +23,7 @@ class AssignOp final : public Operator { AssignOp() = default; ~AssignOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; @@ -37,10 +37,11 @@ class AssignOp final : public Operator { cfg::SbpSignatureList* sbp_sig_list) const override; }; -void AssignOp::InitFromOpConf() { +Maybe<void> AssignOp::InitFromOpConf() { CHECK(op_conf().has_assign_conf()); EnrollInputBn("ref")->set_is_mutable(true); EnrollInputBn("value"); + return Maybe<void>::Ok(); } std::string DebugString(const BlobDesc& blob_desc) { diff --git a/oneflow/core/operator/boxing_identity_op.cpp b/oneflow/core/operator/boxing_identity_op.cpp index dd4c44d973f838f85b08b30e138681f5823ba017..9e26e519a1c11fe575a29e4dd75408f0d58a2904 100644 --- a/oneflow/core/operator/boxing_identity_op.cpp +++ b/oneflow/core/operator/boxing_identity_op.cpp @@ -25,7 +25,7 @@ class BoxingIdentityOp : public Operator { BoxingIdentityOp() = default; ~BoxingIdentityOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override { @@ -40,9 +40,10 @@ class BoxingIdentityOp : public Operator { LogicalBlobId lbi4obn(const std::string& output_bn) const override; }; -void BoxingIdentityOp::InitFromOpConf() { +Maybe<void> BoxingIdentityOp::InitFromOpConf() { EnrollInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } LogicalBlobId BoxingIdentityOp::lbi4ibn(const std::string& input_bn) const { diff --git a/oneflow/core/operator/boxing_op.cpp b/oneflow/core/operator/boxing_op.cpp index 15c4a343cd746bb644b36826b56db16ffa471b21..b2d74623ed30f8ff0b9c663dab9449750c36d875 100644 --- a/oneflow/core/operator/boxing_op.cpp +++ b/oneflow/core/operator/boxing_op.cpp @@ -42,7 +42,7 @@ void BoxingOp::VirtualGenKernelConf( EraseEmptyBnInVec(GetBlobDesc4BnInOp, op_attribute->mutable_output_bns()); } -void BoxingOp::InitFromOpConf() { +Maybe<void> BoxingOp::InitFromOpConf() { CHECK(op_conf().has_boxing_conf()); const BoxingOpConf& boxing_conf = op_conf().boxing_conf(); @@ -56,6 +56,7 @@ void BoxingOp::InitFromOpConf() { for (int32_t i = 0; i < boxing_conf.out_num(); ++i) { EnrollOutputBn("out_" + std::to_string(i), false); } + return Maybe<void>::Ok(); } LogicalBlobId BoxingOp::lbi4ibn(const std::string& input_bn) const { diff --git a/oneflow/core/operator/boxing_op.h b/oneflow/core/operator/boxing_op.h index 271ac9796b70e00f58aba165661f38b501ebde33..64da066c8b09582a15db95c88ff5759603781f3b 100644 --- a/oneflow/core/operator/boxing_op.h +++ b/oneflow/core/operator/boxing_op.h @@ -26,7 +26,7 @@ class BoxingOp final : public Operator { BoxingOp() = default; ~BoxingOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/boxing_zeros_op.cpp b/oneflow/core/operator/boxing_zeros_op.cpp index 0bbe62e6742cd58e9204e0b2f3005f36305e372b..c4bc585838afbdc3f85fb633e96f7d7f909bd6ea 100644 --- a/oneflow/core/operator/boxing_zeros_op.cpp +++ b/oneflow/core/operator/boxing_zeros_op.cpp @@ -24,7 +24,7 @@ class BoxingZerosOp : public Operator { BoxingZerosOp() = default; ~BoxingZerosOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override { @@ -39,7 +39,10 @@ class BoxingZerosOp : public Operator { LogicalBlobId lbi4obn(const std::string& output_bn) const override; }; -void BoxingZerosOp::InitFromOpConf() { EnrollOutputBn("out", false); } +Maybe<void> BoxingZerosOp::InitFromOpConf() { + EnrollOutputBn("out", false); + return Maybe<void>::Ok(); +} LogicalBlobId BoxingZerosOp::lbi4ibn(const std::string& input_bn) const { return this->op_conf().boxing_zeros_conf().lbi(); diff --git a/oneflow/core/operator/broadcast_to_compatible_with_op.cpp b/oneflow/core/operator/broadcast_to_compatible_with_op.cpp index 0e802287dbd32ed3d8934ca455675803cd6d52af..bb10f097f98b199d3bc5b11fbf8e97d4b4b8dfc6 100644 --- a/oneflow/core/operator/broadcast_to_compatible_with_op.cpp +++ b/oneflow/core/operator/broadcast_to_compatible_with_op.cpp @@ -58,11 +58,12 @@ class BroadcastToCompatibleWithOp final : public Operator { BroadcastToCompatibleWithOp() = default; ~BroadcastToCompatibleWithOp() override = default; - void InitFromOpConf() { + Maybe<void> InitFromOpConf() { CHECK(op_conf().has_broadcast_to_compatible_with_conf()); EnrollInputBn("x"); EnrollRepeatedInputBn("compatible", false); EnrollOutputBn("y"); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/callback_notify_op.cpp b/oneflow/core/operator/callback_notify_op.cpp index e215a83255a5e86b73c929e4fe4620143c4a6d9b..7f42c9ee723203a7e23c4e1ea6581efd7874af93 100644 --- a/oneflow/core/operator/callback_notify_op.cpp +++ b/oneflow/core/operator/callback_notify_op.cpp @@ -18,9 +18,10 @@ limitations under the License. namespace oneflow { -void CallbackNotifyOp::InitFromOpConf() { +Maybe<void> CallbackNotifyOp::InitFromOpConf() { CHECK(op_conf().has_callback_notify_conf()); EnrollInputBn("in", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/callback_notify_op.h b/oneflow/core/operator/callback_notify_op.h index b0b3f2bc2f6ed72288f5cd49d44acc3b6aba6a08..834b08472c28957c1f9dbb8086c99ad678c7f983 100644 --- a/oneflow/core/operator/callback_notify_op.h +++ b/oneflow/core/operator/callback_notify_op.h @@ -26,7 +26,7 @@ class CallbackNotifyOp final : public Operator { CallbackNotifyOp() = default; ~CallbackNotifyOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/case_op.cpp b/oneflow/core/operator/case_op.cpp index 23218ff2413565df7c527d6ca11947fca788d876..0ab79e05ad2054d6567b33d250b6f533076f9e84 100644 --- a/oneflow/core/operator/case_op.cpp +++ b/oneflow/core/operator/case_op.cpp @@ -18,9 +18,10 @@ limitations under the License. namespace oneflow { -void CaseOp::InitFromOpConf() { +Maybe<void> CaseOp::InitFromOpConf() { EnrollInputBn("in", false); EnrollRepeatedOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/case_op.h b/oneflow/core/operator/case_op.h index 64ce536c258853afac0e04b3a0634d7b36f44264..8248c4e1ec69f4a6139c1603980c0713b5d367b6 100644 --- a/oneflow/core/operator/case_op.h +++ b/oneflow/core/operator/case_op.h @@ -26,7 +26,7 @@ class CaseOp final : public Operator { CaseOp() = default; ~CaseOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/collective_boxing_ops.cpp b/oneflow/core/operator/collective_boxing_ops.cpp index f89446b5096d825daf1f76dfbf42d37910f2f099..791a806a38bdb1eb6f37e786a1d5b4bee418921c 100644 --- a/oneflow/core/operator/collective_boxing_ops.cpp +++ b/oneflow/core/operator/collective_boxing_ops.cpp @@ -27,11 +27,12 @@ class CollectiveBoxingGenericOp : public Operator { ~CollectiveBoxingGenericOp() override = default; private: - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { CHECK(op_conf().has_collective_boxing_generic_conf()); const RankDesc& rank_desc = op_conf().collective_boxing_generic_conf().rank_desc(); if (GenericOpHasInput(rank_desc)) { EnrollInputBn("in", false); } if (GenericOpHasOutput(rank_desc)) { EnrollOutputBn("out", false); } + return Maybe<void>::Ok(); } LogicalBlobId lbi4ibn(const std::string& input_bn) const override { diff --git a/oneflow/core/operator/collective_boxing_pack_op.cpp b/oneflow/core/operator/collective_boxing_pack_op.cpp index 43f13ddc967c4c11bb9daefe078fe047a39ea34d..ca80c192aa7ac0e0697a4c6cc213f2ab5df1a94f 100644 --- a/oneflow/core/operator/collective_boxing_pack_op.cpp +++ b/oneflow/core/operator/collective_boxing_pack_op.cpp @@ -25,7 +25,7 @@ class CollectiveBoxingPackOp : public Operator { CollectiveBoxingPackOp() = default; ~CollectiveBoxingPackOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -41,9 +41,10 @@ class CollectiveBoxingPackOp : public Operator { LogicalBlobId lbi4obn(const std::string& output_bn) const override; }; -void CollectiveBoxingPackOp::InitFromOpConf() { +Maybe<void> CollectiveBoxingPackOp::InitFromOpConf() { EnrollInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } LogicalBlobId CollectiveBoxingPackOp::lbi4ibn(const std::string& input_bn) const { diff --git a/oneflow/core/operator/collective_boxing_unpack_op.cpp b/oneflow/core/operator/collective_boxing_unpack_op.cpp index ec3005305b2ad733c535645420cdc7a25cbcda9e..d06923b455ea4b7dc017d4aa419619093126dd1d 100644 --- a/oneflow/core/operator/collective_boxing_unpack_op.cpp +++ b/oneflow/core/operator/collective_boxing_unpack_op.cpp @@ -25,7 +25,7 @@ class CollectiveBoxingUnpackOp : public Operator { CollectiveBoxingUnpackOp() = default; ~CollectiveBoxingUnpackOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -41,9 +41,10 @@ class CollectiveBoxingUnpackOp : public Operator { LogicalBlobId lbi4obn(const std::string& output_bn) const override; }; -void CollectiveBoxingUnpackOp::InitFromOpConf() { +Maybe<void> CollectiveBoxingUnpackOp::InitFromOpConf() { EnrollInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } LogicalBlobId CollectiveBoxingUnpackOp::lbi4ibn(const std::string& input_bn) const { diff --git a/oneflow/core/operator/constant_like_op.cpp b/oneflow/core/operator/constant_like_op.cpp index 1665bee678827455f5563133b1bf2af85e7ce9da..5ca0454375681f94de45433a0e9f3ac8b77c8866 100644 --- a/oneflow/core/operator/constant_like_op.cpp +++ b/oneflow/core/operator/constant_like_op.cpp @@ -36,10 +36,11 @@ class ConstantLikeOp final : public Operator { ConstantLikeOp() = default; ~ConstantLikeOp() = default; - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { CHECK(op_conf().has_constant_like_conf()); EnrollInputBn("like", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/copy_comm_net_op.cpp b/oneflow/core/operator/copy_comm_net_op.cpp index 9af4b120a9322cd40206f61edf2e7cec034a4e90..68a2b393398b6ddcf5fb4239c8186b7685a47abf 100644 --- a/oneflow/core/operator/copy_comm_net_op.cpp +++ b/oneflow/core/operator/copy_comm_net_op.cpp @@ -17,9 +17,10 @@ limitations under the License. namespace oneflow { -void CopyCommNetOp::InitFromOpConf() { +Maybe<void> CopyCommNetOp::InitFromOpConf() { EnrollInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } LogicalBlobId CopyCommNetOp::lbi4obn(const std::string& output_bn) const { diff --git a/oneflow/core/operator/copy_comm_net_op.h b/oneflow/core/operator/copy_comm_net_op.h index 929b1f405c214f1868fe87f7dd0cf815866b7279..2b227cd7f4b22e44a0a126dd88febdf55b799bfb 100644 --- a/oneflow/core/operator/copy_comm_net_op.h +++ b/oneflow/core/operator/copy_comm_net_op.h @@ -26,7 +26,7 @@ class CopyCommNetOp final : public Operator { CopyCommNetOp() = default; ~CopyCommNetOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override { diff --git a/oneflow/core/operator/copy_hd_op.cpp b/oneflow/core/operator/copy_hd_op.cpp index 94f726d7bbf6c76118bcc807fc84caebbd7b68f9..fc38c300a6215a4d851c80ebba45101763b0cbb7 100644 --- a/oneflow/core/operator/copy_hd_op.cpp +++ b/oneflow/core/operator/copy_hd_op.cpp @@ -23,7 +23,7 @@ class CopyHdOp final : public Operator { CopyHdOp() = default; ~CopyHdOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override { @@ -50,9 +50,10 @@ class CopyHdOp final : public Operator { LogicalBlobId lbi4obn(const std::string& output_bn) const override; }; -void CopyHdOp::InitFromOpConf() { +Maybe<void> CopyHdOp::InitFromOpConf() { EnrollInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } Maybe<void> CopyHdOp::InferOutBlobDescs( diff --git a/oneflow/core/operator/cwise_op.cpp b/oneflow/core/operator/cwise_op.cpp index 0b28a9d0f3146076df050beb7ec085b1bee52c60..c55579f0c6321281c860da01da47c61ffb0268d9 100644 --- a/oneflow/core/operator/cwise_op.cpp +++ b/oneflow/core/operator/cwise_op.cpp @@ -17,10 +17,11 @@ limitations under the License. namespace oneflow { -void CWiseOp::InitFromOpConf() { +Maybe<void> CWiseOp::InitFromOpConf() { EnrollRepeatedInputBn("in"); EnrollOutputBn("out")->set_mutable_inplace_ibn("in_0"); VirtualInitFromOpConf(); + return Maybe<void>::Ok(); } Maybe<void> CWiseOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/cwise_op.h b/oneflow/core/operator/cwise_op.h index 0a0327a321417fa7e20aa2c4a99853849dca53dc..f51608b2b66742bab60d7da6b9fb91d7baa7af44 100644 --- a/oneflow/core/operator/cwise_op.h +++ b/oneflow/core/operator/cwise_op.h @@ -26,7 +26,7 @@ class CWiseOp : public Operator { CWiseOp() = default; virtual ~CWiseOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, diff --git a/oneflow/core/operator/decode_random_op.cpp b/oneflow/core/operator/decode_random_op.cpp index debc90012997684a1a38a8a8c6cb6540ff5c9197..63f0e8681c4839eba2e2723d8e57eded28cc843a 100644 --- a/oneflow/core/operator/decode_random_op.cpp +++ b/oneflow/core/operator/decode_random_op.cpp @@ -17,10 +17,11 @@ limitations under the License. namespace oneflow { -void DecodeRandomOp::InitFromOpConf() { +Maybe<void> DecodeRandomOp::InitFromOpConf() { CHECK(op_conf().has_decode_random_conf()); if (op_conf().decode_random_conf().has_tick()) { EnrollInputBn("tick", false); } EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } void DecodeRandomOp::VirtualGenKernelConf( diff --git a/oneflow/core/operator/decode_random_op.h b/oneflow/core/operator/decode_random_op.h index 5940f9e09d347a9fad8d26d07694f648d6772f2d..5093c7547e01c4084621290f59196c40b34b3536 100644 --- a/oneflow/core/operator/decode_random_op.h +++ b/oneflow/core/operator/decode_random_op.h @@ -26,7 +26,7 @@ class DecodeRandomOp final : public Operator { DecodeRandomOp() = default; ~DecodeRandomOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, diff --git a/oneflow/core/operator/device_tick_op.cpp b/oneflow/core/operator/device_tick_op.cpp index 2720e11c03cf5f125acd1d2f451227ab2ab71b72..33342f9bd91af2468ad4a4a96c860c1423ae5261 100644 --- a/oneflow/core/operator/device_tick_op.cpp +++ b/oneflow/core/operator/device_tick_op.cpp @@ -18,10 +18,11 @@ limitations under the License. namespace oneflow { -void DeviceTickOp::InitFromOpConf() { +Maybe<void> DeviceTickOp::InitFromOpConf() { CHECK(op_conf().has_device_tick_conf()); EnrollRepeatedInputBn("tick", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/device_tick_op.h b/oneflow/core/operator/device_tick_op.h index 7d58355da9c51d16826a6296d63b43540052009f..0bc901d694b85a760f81fc83467db64ff2b16dfb 100644 --- a/oneflow/core/operator/device_tick_op.h +++ b/oneflow/core/operator/device_tick_op.h @@ -26,7 +26,7 @@ class DeviceTickOp final : public Operator { DeviceTickOp() = default; ~DeviceTickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/distribute_add_op.cpp b/oneflow/core/operator/distribute_add_op.cpp index 4d1833f68cc1859d98019a882d7bf8d862c5584e..5df0d4316e9d9ca53a86bba13849e117cd5a81e4 100644 --- a/oneflow/core/operator/distribute_add_op.cpp +++ b/oneflow/core/operator/distribute_add_op.cpp @@ -27,7 +27,7 @@ class DistributeAddOp final : public Operator { DistributeAddOp() = default; ~DistributeAddOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -45,11 +45,12 @@ class DistributeAddOp final : public Operator { const ParallelDesc& parallel_desc) const override; }; -void DistributeAddOp::InitFromOpConf() { +Maybe<void> DistributeAddOp::InitFromOpConf() { CHECK(op_conf().has_distribute_add_conf()); EnrollRepeatedInputBn("in"); EnrollOutputBn("out"); + return Maybe<void>::Ok(); } Maybe<void> DistributeAddOp::InferBlobParallelDesc() { diff --git a/oneflow/core/operator/distribute_clone_op.cpp b/oneflow/core/operator/distribute_clone_op.cpp index 2a27eecf7217e800d9990cc04db8c4532bf538d4..515842c403f11747316e7e5a8592655d45da108a 100644 --- a/oneflow/core/operator/distribute_clone_op.cpp +++ b/oneflow/core/operator/distribute_clone_op.cpp @@ -27,7 +27,7 @@ class DistributeCloneOp final : public Operator { DistributeCloneOp() = default; ~DistributeCloneOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; private: Maybe<void> InferBlobParallelDesc() override; @@ -44,13 +44,14 @@ class DistributeCloneOp final : public Operator { const ParallelContext* parallel_ctx) const override; }; -void DistributeCloneOp::InitFromOpConf() { +Maybe<void> DistributeCloneOp::InitFromOpConf() { CHECK(op_conf().has_distribute_clone_conf()); EnrollInputBn("in"); EnrollRepeatedOutputBnWithSetter("out", [&](OutputBlobModifier* ob_modifier) { ob_modifier->set_is_mutable(op_conf().distribute_clone_conf().is_variable_ref()); }); + return Maybe<void>::Ok(); } Maybe<void> DistributeCloneOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/distribute_concat_op.cpp b/oneflow/core/operator/distribute_concat_op.cpp index 077abb4f14bae66177923fc2c417b24ddbe7e406..aeecea897d52bed336c1984a59157074449a33f4 100644 --- a/oneflow/core/operator/distribute_concat_op.cpp +++ b/oneflow/core/operator/distribute_concat_op.cpp @@ -27,7 +27,7 @@ class DistributeConcatOp final : public Operator { DistributeConcatOp() = default; ~DistributeConcatOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -51,11 +51,12 @@ class DistributeConcatOp final : public Operator { int32_t FixAxis(const int32_t axis, const int64_t num_axes) const; }; -void DistributeConcatOp::InitFromOpConf() { +Maybe<void> DistributeConcatOp::InitFromOpConf() { CHECK(op_conf().has_distribute_concat_conf()); EnrollRepeatedInputBn("in"); EnrollOutputBn("out"); + return Maybe<void>::Ok(); } Maybe<void> DistributeConcatOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/distribute_split_op.cpp b/oneflow/core/operator/distribute_split_op.cpp index d0dc5777d3228d95a77cd87dc60228a5ea191f32..4224e55be8c001e9b5275c593c593e63621d973f 100644 --- a/oneflow/core/operator/distribute_split_op.cpp +++ b/oneflow/core/operator/distribute_split_op.cpp @@ -27,7 +27,7 @@ class DistributeSplitOp final : public Operator { DistributeSplitOp() = default; ~DistributeSplitOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; private: Maybe<void> InferBlobParallelDesc() override; @@ -50,13 +50,14 @@ class DistributeSplitOp final : public Operator { int32_t FixAxis(const int32_t axis, const int64_t num_axes) const; }; -void DistributeSplitOp::InitFromOpConf() { +Maybe<void> DistributeSplitOp::InitFromOpConf() { CHECK(op_conf().has_distribute_split_conf()); EnrollInputBn("in"); EnrollRepeatedOutputBnWithSetter("out", [&](OutputBlobModifier* ob_modifier) { ob_modifier->set_header_infered_before_compute(false); ob_modifier->set_is_mutable(op_conf().distribute_split_conf().is_variable_ref()); }); + return Maybe<void>::Ok(); } Maybe<void> DistributeSplitOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/dst_subset_tick_op.cpp b/oneflow/core/operator/dst_subset_tick_op.cpp index 183917a8833b2d46806eac14895ba547699ff334..1dbd6d5ba13a7d342613d8c09c86fb1fcd3e7d08 100644 --- a/oneflow/core/operator/dst_subset_tick_op.cpp +++ b/oneflow/core/operator/dst_subset_tick_op.cpp @@ -36,7 +36,7 @@ class DstSubsetTickOp final : public Operator { DstSubsetTickOp() = default; ~DstSubsetTickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; @@ -48,10 +48,11 @@ class DstSubsetTickOp final : public Operator { Maybe<void> GetSbpSignatures(cfg::SbpSignatureList* sbp_sig_list) const override; }; -void DstSubsetTickOp::InitFromOpConf() { +Maybe<void> DstSubsetTickOp::InitFromOpConf() { CHECK(op_conf().has_dst_subset_tick_conf()); EnrollRepeatedInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } Maybe<void> DstSubsetTickOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/dynamic_reshape_op.cpp b/oneflow/core/operator/dynamic_reshape_op.cpp index 83337c58f12315502f764725b97b37991ed771ac..bb24b5d402875ffa8087cbb49f92cda5978c2711 100644 --- a/oneflow/core/operator/dynamic_reshape_op.cpp +++ b/oneflow/core/operator/dynamic_reshape_op.cpp @@ -19,10 +19,11 @@ namespace oneflow { class DynamicReshapeOp final : public Operator { public: - void InitFromOpConf() { + Maybe<void> InitFromOpConf() { CHECK(op_conf().has_dynamic_reshape_conf()); EnrollInputBn("in"); EnrollOutputBn("out")->set_const_inplace_ibn("in"); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( @@ -116,11 +117,12 @@ REGISTER_OP(OperatorConf::kDynamicReshapeConf, DynamicReshapeOp); class DynamicReshapeLikeOp final : public Operator { public: - void InitFromOpConf() { + Maybe<void> InitFromOpConf() { CHECK(op_conf().has_dynamic_reshape_like_conf()); EnrollInputBn("x"); EnrollOutputBn("y"); EnrollInputBn("like", false); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, diff --git a/oneflow/core/operator/esac_op.cpp b/oneflow/core/operator/esac_op.cpp index 9cd178be0120679e45f2d1e3ffc344e9e922793b..f13aa7bd798df3117c8e01192ad52944bec07ff7 100644 --- a/oneflow/core/operator/esac_op.cpp +++ b/oneflow/core/operator/esac_op.cpp @@ -18,9 +18,10 @@ limitations under the License. namespace oneflow { -void EsacOp::InitFromOpConf() { +Maybe<void> EsacOp::InitFromOpConf() { EnrollRepeatedInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/esac_op.h b/oneflow/core/operator/esac_op.h index e6dc4db99f360e7dc9d6e5010137858a6705326c..c40db8f838fe1a2bc0d5b057f602fbfcdfe427a3 100644 --- a/oneflow/core/operator/esac_op.h +++ b/oneflow/core/operator/esac_op.h @@ -26,7 +26,7 @@ class EsacOp final : public Operator { EsacOp() = default; ~EsacOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/foreign_input_op.cpp b/oneflow/core/operator/foreign_input_op.cpp index 88a717b988a60e57e0b92c21be0038e92ced003e..459623771ff7e6a4f463a78b8732edb234040d82 100644 --- a/oneflow/core/operator/foreign_input_op.cpp +++ b/oneflow/core/operator/foreign_input_op.cpp @@ -36,10 +36,11 @@ Maybe<void> InferBlobDescs(const OperatorConf& op_conf, } // namespace -void ForeignInputOp::InitFromOpConf() { +Maybe<void> ForeignInputOp::InitFromOpConf() { CHECK(op_conf().has_foreign_input_conf()); if (op_conf().foreign_input_conf().has_tick()) { EnrollInputBn("tick", false); } EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } Maybe<void> ForeignInputOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/foreign_input_op.h b/oneflow/core/operator/foreign_input_op.h index d8c19c4260a398d4488372245e8cfdb9e9d06692..f790d4f0a2fc4e86f18dcca1574f542f7e4d42db 100644 --- a/oneflow/core/operator/foreign_input_op.h +++ b/oneflow/core/operator/foreign_input_op.h @@ -26,7 +26,7 @@ class ForeignInputOp final : public Operator { ForeignInputOp() : Operator() {} ~ForeignInputOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/foreign_output_op.cpp b/oneflow/core/operator/foreign_output_op.cpp index a1cbc127484c66c52b05014a43010508a0050aec..e58d87cc98265de19ef727093dcd6257eb3279ac 100644 --- a/oneflow/core/operator/foreign_output_op.cpp +++ b/oneflow/core/operator/foreign_output_op.cpp @@ -18,9 +18,10 @@ limitations under the License. namespace oneflow { -void ForeignOutputOp::InitFromOpConf() { +Maybe<void> ForeignOutputOp::InitFromOpConf() { CHECK(op_conf().has_foreign_output_conf()); EnrollInputBn("in"); + return Maybe<void>::Ok(); } Maybe<void> ForeignOutputOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/foreign_output_op.h b/oneflow/core/operator/foreign_output_op.h index 9ced84b7f2e1b193997666de61a2b8cc5c85b6ac..099fc4f27635713bbaf65887dd655301a6be9940 100644 --- a/oneflow/core/operator/foreign_output_op.h +++ b/oneflow/core/operator/foreign_output_op.h @@ -26,7 +26,7 @@ class ForeignOutputOp final : public Operator { ForeignOutputOp() = default; ~ForeignOutputOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/foreign_watch_op.cpp b/oneflow/core/operator/foreign_watch_op.cpp index 642c1c12628246c90f98b6e5849471ead6bdb6d2..317370c2ba5b1d380d730433feb1c265837ecdb2 100644 --- a/oneflow/core/operator/foreign_watch_op.cpp +++ b/oneflow/core/operator/foreign_watch_op.cpp @@ -18,9 +18,10 @@ limitations under the License. namespace oneflow { -void ForeignWatchOp::InitFromOpConf() { +Maybe<void> ForeignWatchOp::InitFromOpConf() { CHECK(op_conf().has_foreign_watch_conf()); EnrollInputBn("in"); + return Maybe<void>::Ok(); } Maybe<void> ForeignWatchOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/foreign_watch_op.h b/oneflow/core/operator/foreign_watch_op.h index 41360b8dc7753eff0d7d843a7b4925a987fa9748..09fdbfd0af4328f6b9f128e511219561f37d56cc 100644 --- a/oneflow/core/operator/foreign_watch_op.h +++ b/oneflow/core/operator/foreign_watch_op.h @@ -26,7 +26,7 @@ class ForeignWatchOp final : public Operator { ForeignWatchOp() = default; ~ForeignWatchOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/identity_op.cpp b/oneflow/core/operator/identity_op.cpp index 2fd72fdf4f23cbaa613ef741060334e35d888f99..1d63c06ae840eeaf0541cbe86a4c0e5db712700c 100644 --- a/oneflow/core/operator/identity_op.cpp +++ b/oneflow/core/operator/identity_op.cpp @@ -36,9 +36,10 @@ class IdentityOpTpl final : public Operator { IdentityOpTpl() = default; ~IdentityOpTpl() override = default; - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { EnrollInputBn("in"); EnrollOutputBn("out")->set_const_inplace_ibn("in"); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -75,9 +76,10 @@ class MirroredCastOp : public Operator { MirroredCastOp() = default; virtual ~MirroredCastOp() override = default; - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { EnrollInputBn("in"); EnrollOutputBn("out")->set_const_inplace_ibn("in"); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, diff --git a/oneflow/core/operator/image_decoder_random_crop_resize_op.cpp b/oneflow/core/operator/image_decoder_random_crop_resize_op.cpp index 6a6b0625eb260fe01fbd302a95cd0221e02527b9..4e87537adb754cc038a1c73c35f84d08310b919f 100644 --- a/oneflow/core/operator/image_decoder_random_crop_resize_op.cpp +++ b/oneflow/core/operator/image_decoder_random_crop_resize_op.cpp @@ -51,10 +51,11 @@ class ImageDecoderRandomCropResizeOp final : public Operator { ~ImageDecoderRandomCropResizeOp() override = default; private: - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { EnrollInputBn("in", false); EnrollOutputBn("out", false); EnrollTmpBn("tmp"); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/input_op.cpp b/oneflow/core/operator/input_op.cpp index b66b78720906982e2e6e93241fa4c1da4f628d62..ff191a290d38ceecf1b139e2f0d808d11eecb52f 100644 --- a/oneflow/core/operator/input_op.cpp +++ b/oneflow/core/operator/input_op.cpp @@ -20,12 +20,13 @@ limitations under the License. namespace oneflow { -void InputOp::InitFromOpConf() { +Maybe<void> InputOp::InitFromOpConf() { CHECK(op_conf().has_input_conf()); if (op_conf().input_conf().has_tick()) { EnrollInputBn("tick", false); } OutputBlobModifier* modifier = EnrollOutputBn("out", false); modifier->set_is_mutable(true); modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); } Maybe<void> InputOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/input_op.h b/oneflow/core/operator/input_op.h index 234632d74ca600755754e0ad118f99363a6f9246..6292f99fa3fc21a6aa2a59844486ac6a80dd6eaf 100644 --- a/oneflow/core/operator/input_op.h +++ b/oneflow/core/operator/input_op.h @@ -26,7 +26,7 @@ class InputOp final : public Operator { InputOp() : Operator() {} ~InputOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& GetBlobDesc4BnInOp, const ParallelContext* parallel_ctx) const override; diff --git a/oneflow/core/operator/learning_rate_schedule_op.cpp b/oneflow/core/operator/learning_rate_schedule_op.cpp index 3ac3cd854006b804361cfcd86a7f0b7fa88db808..2850b74c1db0fa91d038d9bf0ff783ce3368ca89 100644 --- a/oneflow/core/operator/learning_rate_schedule_op.cpp +++ b/oneflow/core/operator/learning_rate_schedule_op.cpp @@ -23,7 +23,7 @@ class LearningRateScheduleOp final : public Operator { LearningRateScheduleOp() = default; ~LearningRateScheduleOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; virtual Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const; @@ -37,10 +37,11 @@ class LearningRateScheduleOp final : public Operator { cfg::SbpSignatureList* sbp_sig_list) const override; }; -void LearningRateScheduleOp::InitFromOpConf() { +Maybe<void> LearningRateScheduleOp::InitFromOpConf() { CHECK(op_conf().has_learning_rate_schedule_conf()); EnrollInputBn("train_step"); EnrollOutputBn("out"); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/model_init_op.cpp b/oneflow/core/operator/model_init_op.cpp index 4017ab0e6af46293d71804d1b5413ad3c479a8f3..f720fa532b5d3f31348dd6bb8179b938cf57245e 100644 --- a/oneflow/core/operator/model_init_op.cpp +++ b/oneflow/core/operator/model_init_op.cpp @@ -19,7 +19,7 @@ namespace oneflow { class ModelInitOp : public Operator { public: - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; virtual Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -34,10 +34,11 @@ class ModelInitOp : public Operator { cfg::SbpSignatureList* sbp_sig_list) const override; }; -void ModelInitOp::InitFromOpConf() { +Maybe<void> ModelInitOp::InitFromOpConf() { CHECK(op_conf().has_model_init_conf()); if (op_conf().model_init_conf().has_tick()) { EnrollInputBn("tick", false); } EnrollRepeatedOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/model_io_v2_op.cpp b/oneflow/core/operator/model_io_v2_op.cpp index 611614f20a2d1212882a29b3f9036d916b0d84d3..dd935ed916adcd79d5bfbe9000fecca532bfe0a7 100644 --- a/oneflow/core/operator/model_io_v2_op.cpp +++ b/oneflow/core/operator/model_io_v2_op.cpp @@ -21,11 +21,12 @@ namespace oneflow { class ModelInitV2Op : public Operator { public: - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { CHECK(op_conf().has_model_init_v2_conf()); FOR_RANGE(int64_t, i, 0, op_conf().model_init_v2_conf().ref_size()) { EnrollInputBn(GenRepeatedBn("ref", i), false)->set_is_mutable(true); } + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( @@ -59,12 +60,13 @@ REGISTER_OP(OperatorConf::kModelInitV2Conf, ModelInitV2Op); class ModelLoadV2Op : public Operator { public: - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { CHECK(op_conf().has_model_load_v2_conf()); EnrollInputBn("path", false); FOR_RANGE(int64_t, i, 0, op_conf().model_load_v2_conf().ref_size()) { EnrollInputBn(GenRepeatedBn("ref", i), false)->set_is_mutable(true); } + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( @@ -109,10 +111,11 @@ class ModelSaveV2Op final : public Operator { ModelSaveV2Op() = default; ~ModelSaveV2Op() override = default; - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { CHECK(op_conf().has_model_save_v2_conf()); EnrollInputBn("path", false); EnrollRepeatedInputBn("in", false); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/model_load_op.cpp b/oneflow/core/operator/model_load_op.cpp index 24fc9750a50d1e3cda8481e3cd0c6e34159031aa..cf588d70e67c0184a73162833ef300e53399ffcd 100644 --- a/oneflow/core/operator/model_load_op.cpp +++ b/oneflow/core/operator/model_load_op.cpp @@ -19,7 +19,7 @@ namespace oneflow { class ModelLoadOp : public Operator { public: - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; virtual Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, @@ -34,10 +34,11 @@ class ModelLoadOp : public Operator { cfg::SbpSignatureList* sbp_sig_list) const override; }; -void ModelLoadOp::InitFromOpConf() { +Maybe<void> ModelLoadOp::InitFromOpConf() { CHECK(op_conf().has_model_load_conf()); EnrollInputBn("path", false); EnrollRepeatedOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/model_save_op.cpp b/oneflow/core/operator/model_save_op.cpp index c7b852d6375f67c05cb76e34a1cdd946ce6dcada..80af875c4a707ed483f7b092cdb1c9b5ebd2a236 100644 --- a/oneflow/core/operator/model_save_op.cpp +++ b/oneflow/core/operator/model_save_op.cpp @@ -23,7 +23,7 @@ class ModelSaveOp final : public Operator { ModelSaveOp() = default; ~ModelSaveOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override { @@ -64,10 +64,11 @@ class ModelSaveOp final : public Operator { } }; -void ModelSaveOp::InitFromOpConf() { +Maybe<void> ModelSaveOp::InitFromOpConf() { CHECK(op_conf().has_model_save_conf()); EnrollInputBn("path", false); EnrollRepeatedInputBn("in", false); + return Maybe<void>::Ok(); } REGISTER_CPU_OP(OperatorConf::kModelSaveConf, ModelSaveOp); diff --git a/oneflow/core/operator/operator.cpp b/oneflow/core/operator/operator.cpp index 914d0a47fcc573892374d5f76f416dface8488bc..93ff45c05f85e4a8133b09f5d4d1dc5eac23d4bb 100644 --- a/oneflow/core/operator/operator.cpp +++ b/oneflow/core/operator/operator.cpp @@ -45,7 +45,7 @@ std::shared_ptr<Operator> CheckAndConstructOp(std::shared_ptr<const OperatorConf Operator* rptr = NewObj<int32_t, Operator>(op_conf->op_type_case(), *op_conf); DeviceType device_type = CHECK_JUST(DeviceType4DeviceTag(op_conf->device_tag())); if (IsCpuOnly(*op_conf)) { CHECK_EQ(device_type, DeviceType::kCPU); } - rptr->Init(op_conf); + CHECK_JUST(rptr->Init(op_conf)); return std::shared_ptr<Operator>(rptr); } @@ -53,17 +53,18 @@ std::shared_ptr<Operator> CheckAndConstructOp(std::shared_ptr<const OperatorConf Operator::Operator() : device_type_(DeviceType::kInvalidDevice) {} -void Operator::Init(const OperatorConf& op_conf) { - Init(std::make_shared<const OperatorConf>(op_conf)); +Maybe<void> Operator::Init(const OperatorConf& op_conf) { + return Init(std::make_shared<const OperatorConf>(op_conf)); } -void Operator::Init(std::shared_ptr<const OperatorConf> op_conf) { +Maybe<void> Operator::Init(std::shared_ptr<const OperatorConf> op_conf) { op_conf_ = std::move(op_conf); - device_type_ = CHECK_JUST(DeviceType4DeviceTag(op_conf_->device_tag())); - InitFromOpConf(); + device_type_ = JUST(DeviceType4DeviceTag(op_conf_->device_tag())); + JUST(InitFromOpConf()); input_output_bns_.Reserve(input_bns().size() + output_bns().size()); for (const auto& bn : input_bns()) { *input_output_bns_.Add() = bn; } for (const auto& bn : output_bns()) { *input_output_bns_.Add() = bn; } + return Maybe<void>::Ok(); } const LogicalBlobId& Operator::BnInOp2Lbi(const std::string& bn_in_op) const { diff --git a/oneflow/core/operator/operator.h b/oneflow/core/operator/operator.h index 852f17b783c10f5e6853a7e49297c301d1b640c3..63c118288861b78760826150d9261af754996474 100644 --- a/oneflow/core/operator/operator.h +++ b/oneflow/core/operator/operator.h @@ -45,9 +45,9 @@ class Operator { virtual ~Operator() = default; // - void Init(const OperatorConf& op_conf); - void Init(std::shared_ptr<const OperatorConf> op_conf); - virtual void InitFromOpConf() = 0; + Maybe<void> Init(const OperatorConf& op_conf); + Maybe<void> Init(std::shared_ptr<const OperatorConf> op_conf); + virtual Maybe<void> InitFromOpConf() = 0; // bn_in_op <-> lbi const LogicalBlobId& BnInOp2Lbi(const std::string& bn_in_op) const; diff --git a/oneflow/core/operator/output_op.cpp b/oneflow/core/operator/output_op.cpp index cdc706879bfc652728db0aaf39c21c7ac7dc42ed..f886f3aec7602e54506bfcd7028cd5d6ab349b94 100644 --- a/oneflow/core/operator/output_op.cpp +++ b/oneflow/core/operator/output_op.cpp @@ -19,10 +19,11 @@ limitations under the License. namespace oneflow { -void OutputOp::InitFromOpConf() { +Maybe<void> OutputOp::InitFromOpConf() { CHECK(op_conf().has_output_conf()); EnrollInputBn("in"); EnrollOutputBn("out")->set_is_mutable(true); + return Maybe<void>::Ok(); } Maybe<void> OutputOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/output_op.h b/oneflow/core/operator/output_op.h index 0bf5c8a8396f4e16e699258e2c9979267b6327c8..b49e7cf2c08282c02a9555bbe563df3d3d1a077b 100644 --- a/oneflow/core/operator/output_op.h +++ b/oneflow/core/operator/output_op.h @@ -26,7 +26,7 @@ class OutputOp final : public Operator { OutputOp() = default; ~OutputOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& GetBlobDesc4BnInOp, const ParallelContext* parallel_ctx) const override; diff --git a/oneflow/core/operator/reentrant_lock_op.cpp b/oneflow/core/operator/reentrant_lock_op.cpp index 74cce058547dd98516c8533fa53c306f3a0b1ea0..52c47b06608a9dcb67de12dde936d51d289f6988 100644 --- a/oneflow/core/operator/reentrant_lock_op.cpp +++ b/oneflow/core/operator/reentrant_lock_op.cpp @@ -18,10 +18,11 @@ limitations under the License. namespace oneflow { -void ReentrantLockOp::InitFromOpConf() { +Maybe<void> ReentrantLockOp::InitFromOpConf() { EnrollInputBn("start", false); if (op_conf().reentrant_lock_conf().has_end()) { EnrollInputBn("end", false); } EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/reentrant_lock_op.h b/oneflow/core/operator/reentrant_lock_op.h index 6fd4f94c53e287c3d8e87a3c059b420734cd677e..28c40446d2657497d61f7dd0f29ff3148b0cfd4b 100644 --- a/oneflow/core/operator/reentrant_lock_op.h +++ b/oneflow/core/operator/reentrant_lock_op.h @@ -26,7 +26,7 @@ class ReentrantLockOp final : public Operator { ReentrantLockOp() = default; ~ReentrantLockOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/return_op.cpp b/oneflow/core/operator/return_op.cpp index 992ff20a80e23376140cf4b25d5b7c1e67021f48..c9c0a5605a7b73dd6e45f3d03e89b1deb95b997f 100644 --- a/oneflow/core/operator/return_op.cpp +++ b/oneflow/core/operator/return_op.cpp @@ -19,10 +19,11 @@ limitations under the License. namespace oneflow { -void ReturnOp::InitFromOpConf() { +Maybe<void> ReturnOp::InitFromOpConf() { CHECK(op_conf().has_return_conf()); EnrollInputBn("in"); EnrollOutputBn("out")->set_is_mutable(true); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/return_op.h b/oneflow/core/operator/return_op.h index c0a9f4d9c597b19e6a3221d5bd140fb595000a60..8732ad1aa228b65619cdb409db45fc85f346b5f9 100644 --- a/oneflow/core/operator/return_op.h +++ b/oneflow/core/operator/return_op.h @@ -26,7 +26,7 @@ class ReturnOp final : public Operator { ReturnOp() = default; ~ReturnOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/scalar_op_base.cpp b/oneflow/core/operator/scalar_op_base.cpp index bc42898cae39dcf56782f4a27d2172bf2bb3bfa5..faf72eb6b61c6e7b0d0c8f8fabfb0cc24c653a99 100644 --- a/oneflow/core/operator/scalar_op_base.cpp +++ b/oneflow/core/operator/scalar_op_base.cpp @@ -18,11 +18,11 @@ limitations under the License. namespace oneflow { -void ScalarOpBase::InitFromOpConf() { +Maybe<void> ScalarOpBase::InitFromOpConf() { EnrollInputBn("in"); EnrollInputBn("scalar"); EnrollOutputBn("out")->set_mutable_inplace_ibn("in"); - ; + return Maybe<void>::Ok(); } Maybe<void> ScalarOpBase::InferOutBlobDescs( diff --git a/oneflow/core/operator/scalar_op_base.h b/oneflow/core/operator/scalar_op_base.h index 6e2168b374e1da3aaec716a72aab283b4dc11d8d..8faeccd9d0787465664c790f42039de6b156511f 100644 --- a/oneflow/core/operator/scalar_op_base.h +++ b/oneflow/core/operator/scalar_op_base.h @@ -26,7 +26,7 @@ class ScalarOpBase : public Operator { ScalarOpBase() = default; ~ScalarOpBase() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& GetBlobDesc4BnInOp, const ParallelContext* parallel_ctx) const override; diff --git a/oneflow/core/operator/shape_elem_cnt_op.cpp b/oneflow/core/operator/shape_elem_cnt_op.cpp index 4987a0179324977bc7e2e19d37c2db76ee09823c..08d24f7712b2a5a0eaddae172350733a6306c4bc 100644 --- a/oneflow/core/operator/shape_elem_cnt_op.cpp +++ b/oneflow/core/operator/shape_elem_cnt_op.cpp @@ -49,9 +49,10 @@ HashSet<int32_t> GetInclusiveAxes(const ShapeElemCntOpConf& conf, int32_t num_ax } // namespace -void ShapeElemCntOp::InitFromOpConf() { +Maybe<void> ShapeElemCntOp::InitFromOpConf() { EnrollInputBn("x", false); EnrollOutputBn("y", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/shape_elem_cnt_op.h b/oneflow/core/operator/shape_elem_cnt_op.h index f3b39bf5c364e47128f1208bb3ce9b0dd1b5f953..065ea18bcff6b0f781d8c6fff631b78df7a5ddcf 100644 --- a/oneflow/core/operator/shape_elem_cnt_op.h +++ b/oneflow/core/operator/shape_elem_cnt_op.h @@ -26,7 +26,7 @@ class ShapeElemCntOp final : public Operator { ShapeElemCntOp() = default; ~ShapeElemCntOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/sink_tick_op.cpp b/oneflow/core/operator/sink_tick_op.cpp index 0055a82beaee53b85333193618897c3ff202ee09..8245ae8673c3d1aa516508c8791532c30b5e7e51 100644 --- a/oneflow/core/operator/sink_tick_op.cpp +++ b/oneflow/core/operator/sink_tick_op.cpp @@ -18,10 +18,11 @@ limitations under the License. namespace oneflow { -void SinkTickOp::InitFromOpConf() { +Maybe<void> SinkTickOp::InitFromOpConf() { CHECK(op_conf().has_sink_tick_conf()); EnrollRepeatedInputBn("tick", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/sink_tick_op.h b/oneflow/core/operator/sink_tick_op.h index 7fecc6ef285049afa8031e321d3556432016b2a6..922b3455f69f14e9f9e41e783cb6ad36dd81b70b 100644 --- a/oneflow/core/operator/sink_tick_op.h +++ b/oneflow/core/operator/sink_tick_op.h @@ -26,7 +26,7 @@ class SinkTickOp final : public Operator { SinkTickOp() = default; ~SinkTickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/slice_boxing_op.cpp b/oneflow/core/operator/slice_boxing_op.cpp index a839370b5e1ed8587b1ed47da0f45162958242c3..c2fc771fa452dea097cc9bfa6760e051752b3bd3 100644 --- a/oneflow/core/operator/slice_boxing_op.cpp +++ b/oneflow/core/operator/slice_boxing_op.cpp @@ -25,7 +25,7 @@ class SliceBoxingOp : public Operator { SliceBoxingOp() = default; ~SliceBoxingOp() override = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override { @@ -74,10 +74,11 @@ class SliceBoxingAddOp final : public SliceBoxingOp { Symbol<OperatorConf> GetOpConfWithoutOpNameAndLbn() const override; }; -void SliceBoxingOp::InitFromOpConf() { +Maybe<void> SliceBoxingOp::InitFromOpConf() { EnrollRepeatedInputBn("in", GetCustomizedBoxingConf().in_slice_size(), false); EnrollOutputBn("out"); VirtualInitFromOpConf(); + return Maybe<void>::Ok(); } LogicalBlobId SliceBoxingOp::lbi4ibn(const std::string& input_bn) const { diff --git a/oneflow/core/operator/source_tick_op.cpp b/oneflow/core/operator/source_tick_op.cpp index dcf7af10a64fc83e43292c68b0b8940603d75a06..52a1f26b50392c08fa94ee810c5e837aa0d17397 100644 --- a/oneflow/core/operator/source_tick_op.cpp +++ b/oneflow/core/operator/source_tick_op.cpp @@ -18,10 +18,11 @@ limitations under the License. namespace oneflow { -void SourceTickOp::InitFromOpConf() { +Maybe<void> SourceTickOp::InitFromOpConf() { CHECK(op_conf().has_source_tick_conf()); CHECK(op_conf().ctrl_in_op_name().empty()); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } Maybe<void> SourceTickOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/source_tick_op.h b/oneflow/core/operator/source_tick_op.h index 12c5447a396a97991e5b9e90bb7ba5023d470837..afb13428270e9cdd4204d3464595e8ca9ec3585e 100644 --- a/oneflow/core/operator/source_tick_op.h +++ b/oneflow/core/operator/source_tick_op.h @@ -26,7 +26,7 @@ class SourceTickOp final : public Operator { SourceTickOp() = default; ~SourceTickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/src_subset_tick_op.cpp b/oneflow/core/operator/src_subset_tick_op.cpp index bebfd10fd4226d6a7f189c3e24211dff0940dfa3..5c1f3d9cda2668c8531fd2e9f88aa1984e404d80 100644 --- a/oneflow/core/operator/src_subset_tick_op.cpp +++ b/oneflow/core/operator/src_subset_tick_op.cpp @@ -25,7 +25,7 @@ class SrcSubsetTickOp final : public Operator { SrcSubsetTickOp() = default; ~SrcSubsetTickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; @@ -37,10 +37,11 @@ class SrcSubsetTickOp final : public Operator { Maybe<void> GetSbpSignatures(cfg::SbpSignatureList* sbp_sig_list) const override; }; -void SrcSubsetTickOp::InitFromOpConf() { +Maybe<void> SrcSubsetTickOp::InitFromOpConf() { CHECK(op_conf().has_src_subset_tick_conf()); EnrollRepeatedInputBn("in", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/sync_dynamic_resize_op.cpp b/oneflow/core/operator/sync_dynamic_resize_op.cpp index 7a4f297f81151cd2a49f0ebe9c4515801deab521..40df71437e9f5cd05043a1ae94f1181564fb79ca 100644 --- a/oneflow/core/operator/sync_dynamic_resize_op.cpp +++ b/oneflow/core/operator/sync_dynamic_resize_op.cpp @@ -41,10 +41,11 @@ class SyncDynamicResizeOp : public Operator { SyncDynamicResizeOp() = default; ~SyncDynamicResizeOp() override = default; - void InitFromOpConf() override { + Maybe<void> InitFromOpConf() override { EnrollInputBn("in"); EnrollInputBn("size", false); EnrollOutputBn("out")->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); } Maybe<void> InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/tick_op.cpp b/oneflow/core/operator/tick_op.cpp index e9ec6825a0442e8cd4d730bf10f87fb639b87933..ae614a5474874947ef8777f11d491e8b3dede648 100644 --- a/oneflow/core/operator/tick_op.cpp +++ b/oneflow/core/operator/tick_op.cpp @@ -29,10 +29,11 @@ Maybe<void> InferBlobDescs(const std::function<BlobDesc*(const std::string&)>& B } // namespace -void TickOp::InitFromOpConf() { +Maybe<void> TickOp::InitFromOpConf() { CHECK(op_conf().has_tick_conf()); EnrollRepeatedInputBn("tick", false); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } Maybe<void> TickOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/tick_op.h b/oneflow/core/operator/tick_op.h index e97982634dc56a73aee96c55b43c85775965766e..094a8f87a13088fe4fcf99a63e73e90a83b34f1e 100644 --- a/oneflow/core/operator/tick_op.h +++ b/oneflow/core/operator/tick_op.h @@ -26,7 +26,7 @@ class TickOp final : public Operator { TickOp() = default; ~TickOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/core/operator/user_op.cpp b/oneflow/core/operator/user_op.cpp index 51008e5817146dc1b1235a487c03992635efd918..91a631b420a4efb2418079ca4d7edd281fdd75dd 100644 --- a/oneflow/core/operator/user_op.cpp +++ b/oneflow/core/operator/user_op.cpp @@ -488,7 +488,7 @@ class UserOpInferParallelDistributionFnContext parallel_distribution_infer_hint4ibn_fn_; }; -void UserOp::InitFromOpConf() { +Maybe<void> UserOp::InitFromOpConf() { CHECK(op_conf().has_user_conf()); for (const auto& pair : op_conf().user_conf().input()) { EnrollRepeatedInputBn(pair.first, pair.second.s_size()); @@ -528,9 +528,10 @@ void UserOp::InitFromOpConf() { } return nullptr; }; - val_->output_arg_modify_fn(GetOutputArgModifierFn, *user_op_conf_); + JUST(val_->output_arg_modify_fn(GetOutputArgModifierFn, *user_op_conf_)); } } + return Maybe<void>::Ok(); } Maybe<void> UserOp::InferInternalBlobDescs( diff --git a/oneflow/core/operator/user_op.h b/oneflow/core/operator/user_op.h index e49df807764ec15e9373644300d03b812406db4e..691a3b780514ffb3a8f73a72e6757b0d3761669f 100644 --- a/oneflow/core/operator/user_op.h +++ b/oneflow/core/operator/user_op.h @@ -29,7 +29,7 @@ class UserOp final : public Operator { using ArgVec = std::vector<std::pair<std::string, int32_t>>; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferInternalBlobDescs( const std::function<BlobDesc*(const std::string&)>& GetBlobDesc4BnInOp, const ParallelContext* parallel_ctx, const JobDesc* job_desc) const override; diff --git a/oneflow/core/operator/variable_op.cpp b/oneflow/core/operator/variable_op.cpp index 5813386137fa6c12adb2f4a9f22d4c6a465b277d..8f9113f7dcde83ff0d9afb7a044fe2e3a7ab0b44 100644 --- a/oneflow/core/operator/variable_op.cpp +++ b/oneflow/core/operator/variable_op.cpp @@ -41,11 +41,12 @@ Maybe<void> ParseParallelDistributionFromConf(const VariableOpConf& conf, } // namespace -void VariableOp::InitFromOpConf() { +Maybe<void> VariableOp::InitFromOpConf() { CHECK(op_conf().has_variable_conf()); if (op_conf().variable_conf().has_tick()) { EnrollInputBn("tick", false); } bool is_trainable = op_conf().variable_conf().trainable(); EnrollOutputBn("out", is_trainable)->set_is_mutable(true); + return Maybe<void>::Ok(); } Maybe<void> VariableOp::InferLogicalOutBlobDescs( diff --git a/oneflow/core/operator/variable_op.h b/oneflow/core/operator/variable_op.h index 73959427be0f68ce185d4e6cc4de6b4735bb4369..a11a249501478afafaae0979b2dd62a8eccf9610 100644 --- a/oneflow/core/operator/variable_op.h +++ b/oneflow/core/operator/variable_op.h @@ -26,7 +26,7 @@ class VariableOp final : public Operator { VariableOp() : Operator() {} ~VariableOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& GetBlobDesc4BnInOp, const ParallelContext* parallel_ctx) const override; diff --git a/oneflow/core/operator/wait_and_send_ids_op.cpp b/oneflow/core/operator/wait_and_send_ids_op.cpp index 76ae63f3ac9ad2b8721836921e2e73fa33f7fdad..3b4c75025ebc0129f01ba8d090edf342969d9663 100644 --- a/oneflow/core/operator/wait_and_send_ids_op.cpp +++ b/oneflow/core/operator/wait_and_send_ids_op.cpp @@ -18,9 +18,10 @@ limitations under the License. namespace oneflow { -void WaitAndSendIdsOp::InitFromOpConf() { +Maybe<void> WaitAndSendIdsOp::InitFromOpConf() { CHECK(op_conf().has_wait_and_send_ids_conf()); EnrollOutputBn("out", false); + return Maybe<void>::Ok(); } namespace { diff --git a/oneflow/core/operator/wait_and_send_ids_op.h b/oneflow/core/operator/wait_and_send_ids_op.h index 9e9a9ae5920425647a30ba2382981267d89d4989..8aa906fa6e2c1fb434f7db150cef849c9098e104 100644 --- a/oneflow/core/operator/wait_and_send_ids_op.h +++ b/oneflow/core/operator/wait_and_send_ids_op.h @@ -26,7 +26,7 @@ class WaitAndSendIdsOp final : public Operator { WaitAndSendIdsOp() = default; ~WaitAndSendIdsOp() = default; - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp, const ParallelDesc& parallel_desc) const override; diff --git a/oneflow/user/kernels/stateful_local_opkernel.cpp b/oneflow/user/kernels/stateful_local_opkernel.cpp index 2a9455034b2f23af699d3b342db37a30c05355db..9a2390c00558f7f430c340ce8948eef18cca9c29 100644 --- a/oneflow/user/kernels/stateful_local_opkernel.cpp +++ b/oneflow/user/kernels/stateful_local_opkernel.cpp @@ -313,7 +313,7 @@ Maybe<void> InitTensorTupleIndexes4Bns(const std::shared_ptr<const OperatorConf> auto* map = arg_modifier_signature.mutable_obn2output_blob_modifier(); return &map->at(obn); }; - op_reg_val->output_arg_modify_fn(GetOutputArgModifierFn, op_conf_wrapper); + JUST(op_reg_val->output_arg_modify_fn(GetOutputArgModifierFn, op_conf_wrapper)); } for (int i = 0; i < indexed_input_pairs.size(); i++) { diff --git a/oneflow/user/ops/coco_reader_op.cpp b/oneflow/user/ops/coco_reader_op.cpp index a4ba2a4b61a39e5b5e41c5ff7eb100b45b71badd..71f0b8b720bf3912775bd7ac9fb024f6a3bf3312 100644 --- a/oneflow/user/ops/coco_reader_op.cpp +++ b/oneflow/user/ops/coco_reader_op.cpp @@ -91,35 +91,36 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("COCOReader") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* image_modifier = GetOutputArgModifierFn("image", 0); - CHECK(image_modifier != nullptr); + CHECK_OR_RETURN(image_modifier != nullptr); image_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* image_id_modifier = GetOutputArgModifierFn("image_id", 0); - CHECK(image_id_modifier != nullptr); + CHECK_OR_RETURN(image_id_modifier != nullptr); image_id_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* image_size_modifier = GetOutputArgModifierFn("image_size", 0); - CHECK(image_size_modifier != nullptr); + CHECK_OR_RETURN(image_size_modifier != nullptr); image_size_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* gt_bbox_modifier = GetOutputArgModifierFn("gt_bbox", 0); - CHECK(gt_bbox_modifier != nullptr); + CHECK_OR_RETURN(gt_bbox_modifier != nullptr); gt_bbox_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* gt_label_modifier = GetOutputArgModifierFn("gt_label", 0); - CHECK(gt_label_modifier != nullptr); + CHECK_OR_RETURN(gt_label_modifier != nullptr); gt_label_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* gt_segm_modifier = GetOutputArgModifierFn("gt_segm", 0); - CHECK(gt_segm_modifier != nullptr); + CHECK_OR_RETURN(gt_segm_modifier != nullptr); gt_segm_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* gt_segm_index_modifier = GetOutputArgModifierFn("gt_segm_index", 0); - CHECK(gt_segm_index_modifier != nullptr); + CHECK_OR_RETURN(gt_segm_index_modifier != nullptr); gt_segm_index_modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); }) .SetDataTypeInferFn([](user_op::InferContext* ctx) -> Maybe<void> { user_op::TensorDesc* image_desc = ctx->OutputTensorDesc("image", 0); diff --git a/oneflow/user/ops/image_batch_align_op.cpp b/oneflow/user/ops/image_batch_align_op.cpp index 8a60d65ef311e2da03e81000b325d5f8eecaf5e4..51bc9f8c7c8b646f81bf3c3d93ab9e23dd02127f 100644 --- a/oneflow/user/ops/image_batch_align_op.cpp +++ b/oneflow/user/ops/image_batch_align_op.cpp @@ -77,10 +77,11 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("image_batch_align") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* out_modifier = GetOutputArgModifierFn("out", 0); - CHECK(out_modifier != nullptr); + CHECK_OR_RETURN(out_modifier != nullptr); out_modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); }) .SetDataTypeInferFn([](user_op::InferContext* ctx) -> Maybe<void> { const user_op::TensorDesc& in_desc = ctx->InputTensorDesc("in", 0); diff --git a/oneflow/user/ops/ofrecord_image_classification_reader_op.cpp b/oneflow/user/ops/ofrecord_image_classification_reader_op.cpp index 74e51cd9c8ae4e9b8f04139a16f25cf0276048e8..2e73940718f21b1772f81672df11fe6b2b2783d1 100644 --- a/oneflow/user/ops/ofrecord_image_classification_reader_op.cpp +++ b/oneflow/user/ops/ofrecord_image_classification_reader_op.cpp @@ -61,13 +61,14 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("ofrecord_image_classification_reader") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* image_modifier = GetOutputArgModifierFn("image", 0); - CHECK(image_modifier != nullptr); + CHECK_OR_RETURN(image_modifier != nullptr); image_modifier->set_header_infered_before_compute(false); user_op::OutputArgModifier* label_modifier = GetOutputArgModifierFn("label", 0); - CHECK(label_modifier != nullptr); + CHECK_OR_RETURN(label_modifier != nullptr); label_modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); }) .SetDataTypeInferFn([](user_op::InferContext* ctx) -> Maybe<void> { *ctx->OutputDType("image", 0) = DataType::kTensorBuffer; diff --git a/oneflow/user/ops/ofrecord_reader_op.cpp b/oneflow/user/ops/ofrecord_reader_op.cpp index ab410da8a55fde4f274d8c03340ab41f84b1494f..51f139bbb2226bfbfd06710656ccabe01b258de1 100644 --- a/oneflow/user/ops/ofrecord_reader_op.cpp +++ b/oneflow/user/ops/ofrecord_reader_op.cpp @@ -51,10 +51,11 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("OFRecordReader") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* out_modifier = GetOutputArgModifierFn("out", 0); - CHECK(out_modifier != nullptr); + CHECK_OR_RETURN(out_modifier != nullptr); out_modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); }) .SetDataTypeInferFn([](user_op::InferContext* ctx) -> Maybe<void> { *ctx->OutputDType("out", 0) = DataType::kOFRecord; diff --git a/oneflow/user/ops/onerec_decoder_op.cpp b/oneflow/user/ops/onerec_decoder_op.cpp index 64094a4c753989a6bc41abfb14f19c96d8a59df2..4c59f59c338a53188029c68c68420922f8772b3a 100644 --- a/oneflow/user/ops/onerec_decoder_op.cpp +++ b/oneflow/user/ops/onerec_decoder_op.cpp @@ -54,10 +54,11 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("onerec_decoder") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* out_modifier = GetOutputArgModifierFn("out", 0); - CHECK(out_modifier != nullptr); + CHECK_OR_RETURN(out_modifier != nullptr); out_modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); }) .SetDataTypeInferFn([](user_op::InferContext* ctx) -> Maybe<void> { const user_op::TensorDesc& in_tensor = ctx->InputTensorDesc("in", 0); diff --git a/oneflow/user/ops/ssp_variable_proxy_op.cpp b/oneflow/user/ops/ssp_variable_proxy_op.cpp index 4722b2e1a100fdd5dd6a7ae8595c9a76d8a40f8c..1af7c0c41385d24afc9e2372f617512a5daf7f6a 100644 --- a/oneflow/user/ops/ssp_variable_proxy_op.cpp +++ b/oneflow/user/ops/ssp_variable_proxy_op.cpp @@ -47,10 +47,11 @@ REGISTER_NO_GRAD_USER_OP("ssp_variable_proxy") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* out_modifier = GetOutputArgModifierFn("ref", 0); - CHECK(out_modifier != nullptr); + CHECK_OR_RETURN(out_modifier != nullptr); out_modifier->set_is_mutable(true); + return Maybe<void>::Ok(); }); } // namespace diff --git a/oneflow/user/ops/tensor_buffer_ops.cpp b/oneflow/user/ops/tensor_buffer_ops.cpp index 3b54004f632dc90006e52a21b228c41945c6491f..f1e964c50dbd97aed585da7821290462372f90a4 100644 --- a/oneflow/user/ops/tensor_buffer_ops.cpp +++ b/oneflow/user/ops/tensor_buffer_ops.cpp @@ -150,14 +150,15 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("tensor_buffer_to_list_of_tensors") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { if (conf.attr<bool>("dynamic_out")) { FOR_RANGE(int64_t, i, 0, conf.output_size("out")) { user_op::OutputArgModifier* out_i_modifier = GetOutputArgModifierFn("out", i); - CHECK(out_i_modifier != nullptr); + CHECK_OR_RETURN(out_i_modifier != nullptr); out_i_modifier->set_header_infered_before_compute(false); } } + return Maybe<void>::Ok(); }) .SetGetSbpFn(user_op::GetSbpFnUtil::DefaultBroadcastToBroadcast); @@ -194,14 +195,15 @@ REGISTER_NO_GRAD_CPU_ONLY_USER_OP("tensor_buffer_to_list_of_tensors_v2") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { if (conf.attr<bool>("dynamic_out")) { FOR_RANGE(int64_t, i, 0, conf.output_size("out")) { user_op::OutputArgModifier* out_i_modifier = GetOutputArgModifierFn("out", i); - CHECK(out_i_modifier != nullptr); + CHECK_OR_RETURN(out_i_modifier != nullptr); out_i_modifier->set_header_infered_before_compute(false); } } + return Maybe<void>::Ok(); }) .SetGetSbpFn(user_op::GetSbpFnUtil::DefaultBroadcastToBroadcast); diff --git a/oneflow/user/ops/test_ops.cpp b/oneflow/user/ops/test_ops.cpp index 53222e5c2de8ba2a952c35680055e3c774166364..6cb2480371230d04a7af20ad116b14927a249a17 100644 --- a/oneflow/user/ops/test_ops.cpp +++ b/oneflow/user/ops/test_ops.cpp @@ -254,10 +254,11 @@ REGISTER_USER_OP("TestDynamicSource") return Maybe<void>::Ok(); }) .SetOutputArgModifyFn([](user_op::GetOutputArgModifier GetOutputArgModifierFn, - const user_op::UserOpConfWrapper& conf) { + const user_op::UserOpConfWrapper& conf) -> Maybe<void> { user_op::OutputArgModifier* out_modifier = GetOutputArgModifierFn("out", 0); - CHECK(out_modifier != nullptr); + CHECK_OR_RETURN(out_modifier != nullptr); out_modifier->set_header_infered_before_compute(false); + return Maybe<void>::Ok(); }); REGISTER_USER_OP("TestRandomSource") diff --git a/oneflow/xrt/launch_op.cpp b/oneflow/xrt/launch_op.cpp index 662f21f07adf73c99bdbd15076956a4d85982735..07b4dfb441d37dc9786172392377660ff29e0a60 100644 --- a/oneflow/xrt/launch_op.cpp +++ b/oneflow/xrt/launch_op.cpp @@ -24,7 +24,7 @@ limitations under the License. namespace oneflow { -void XrtLaunchOp::InitFromOpConf() { +Maybe<void> XrtLaunchOp::InitFromOpConf() { CHECK(op_conf().has_xrt_launch_conf()); const auto& launch_conf = op_conf().xrt_launch_conf(); int inputs_num = launch_conf.in().size(); @@ -38,6 +38,7 @@ void XrtLaunchOp::InitFromOpConf() { EnrollInputBn(absl::StrCat("in_", i))->set_is_mutable(mutability); } if (outputs_num > 0) { EnrollRepeatedOutputBn("out"); } + return Maybe<void>::Ok(); } Maybe<void> XrtLaunchOp::InferLogicalOutBlobDescs( diff --git a/oneflow/xrt/launch_op.h b/oneflow/xrt/launch_op.h index 280da1d5c086dff866bd20ecc66f719ed13f3ef2..010c97ba47602f1e6bcba86bc2eb804661bd8b4e 100644 --- a/oneflow/xrt/launch_op.h +++ b/oneflow/xrt/launch_op.h @@ -24,7 +24,7 @@ namespace oneflow { class XrtLaunchOp : public Operator { public: - void InitFromOpConf() override; + Maybe<void> InitFromOpConf() override; Maybe<void> InferLogicalOutBlobDescs( const std::function<BlobDesc*(const std::string&)>& BlobDesc4BnInOp,