• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Compute Graph Framework SDK Reference  5.6
    All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
    SimpleNodeT.hpp
    Go to the documentation of this file.
    1
    2//
    3// Notice
    4// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
    5// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
    6// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
    7// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
    8//
    9// NVIDIA CORPORATION & AFFILIATES assumes no responsibility for the consequences of use of such
    10// information or for any infringement of patents or other rights of third parties that may
    11// result from its use. No license is granted by implication or otherwise under any patent
    12// or patent rights of NVIDIA CORPORATION & AFFILIATES. No third party distribution is allowed unless
    13// expressly authorized by NVIDIA. Details are subject to change without notice.
    14// This code supersedes and replaces all information previously supplied.
    15// NVIDIA CORPORATION & AFFILIATES products are not authorized for use as critical
    16// components in life support devices or systems without express written approval of
    17// NVIDIA CORPORATION & AFFILIATES.
    18//
    19// SPDX-FileCopyrightText: Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
    20// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
    21//
    22// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
    23// property and proprietary rights in and to this material, related
    24// documentation and any modifications thereto. Any use, reproduction,
    25// disclosure or distribution of this material and related documentation
    26// without an express license agreement from NVIDIA CORPORATION or
    27// its affiliates is strictly prohibited.
    28//
    30
    31#ifndef DW_FRAMEWORK_SIMPLENODET_HPP_
    32#define DW_FRAMEWORK_SIMPLENODET_HPP_
    33
    38
    40#define NODE_GET_INPUT_PORT_INDEX(identifier) dw::framework::portIndex<NodeT, dw::framework::PortDirection::INPUT>(identifier)
    42#define NODE_GET_OUTPUT_PORT_INDEX(identifier) dw::framework::portIndex<NodeT, dw::framework::PortDirection::OUTPUT>(identifier)
    43
    45
    49#define NODE_REGISTER_PASS(identifier, ...) this->template registerPass<NodeT, dw::framework::passIndex<NodeT>(identifier)>(__VA_ARGS__)
    50
    52
    56#define NODE_INIT_INPUT_PORT(identifier, ...) \
    57 this->template initInputPort<NodeT, dw::framework::portIndex<NodeT, dw::framework::PortDirection::INPUT>(identifier)>(__VA_ARGS__)
    59
    63#define NODE_INIT_INPUT_ARRAY_PORT(identifier, ...) \
    64 this->template initInputArrayPort<NodeT, dw::framework::portIndex<NodeT, dw::framework::PortDirection::INPUT>(identifier)>(__VA_ARGS__)
    66
    70#define NODE_INIT_OUTPUT_PORT(identifier, ...) \
    71 this->template initOutputPort<NodeT, dw::framework::portIndex<NodeT, dw::framework::PortDirection::OUTPUT>(identifier)>(__VA_ARGS__)
    73
    77#define NODE_INIT_OUTPUT_ARRAY_PORT(identifier, ...) \
    78 this->template initOutputArrayPort<NodeT, dw::framework::portIndex<NodeT, dw::framework::PortDirection::OUTPUT>(identifier)>(__VA_ARGS__)
    79
    81
    84#define NODE_GET_INPUT_PORT(identifier) this->template getInputPort<NodeT, NODE_GET_INPUT_PORT_INDEX(identifier)>()
    86
    89#define NODE_GET_INPUT_ARRAY_PORT(identifier, index) this->template getInputPort<NodeT, NODE_GET_INPUT_PORT_INDEX(identifier)>(index)
    91
    94#define NODE_GET_OUTPUT_PORT(identifier) this->template getOutputPort<NodeT, NODE_GET_OUTPUT_PORT_INDEX(identifier)>()
    96
    99#define NODE_GET_OUTPUT_ARRAY_PORT(identifier, index) this->template getOutputPort<NodeT, NODE_GET_OUTPUT_PORT_INDEX(identifier)>(index)
    100
    101namespace dw
    102{
    103namespace framework
    104{
    105
    106template <typename T>
    108{
    109public:
    110 using NodeT = T;
    111
    115 {
    116 initialize();
    117 }
    118
    120 : SimpleNode(params)
    121 {
    122 initialize();
    123 }
    124
    125 // TODO(chale): make final virtual once other users of this class are migrated.
    127 std::unique_ptr<Pass> createSetupPass() override
    128 {
    129 throw Exception(DW_CALL_NOT_ALLOWED, "Not meant to be called");
    130 }
    131
    132 // TODO(chale): make final virtual once other users of this class are migrated.
    134 std::unique_ptr<Pass> createTeardownPass() override
    135 {
    136 throw Exception(DW_CALL_NOT_ALLOWED, "Not meant to be called");
    137 }
    138
    140 virtual dwStatus setupImpl()
    141 {
    142 return this->setup();
    143 }
    144
    146 virtual dwStatus teardownImpl()
    147 {
    148 return this->teardown();
    149 }
    150
    152 dwStatus reset() override
    153 {
    154 this->resetPorts();
    155 return DW_SUCCESS;
    156 }
    157
    159 dwStatus validate() override
    160 {
    161 if (getRegisteredInputPorts().empty() && getRegisteredOutputPorts().empty())
    162 {
    163 throw Exception(DW_NOT_IMPLEMENTED, "Not implemented");
    164 }
    165
    166 const PortCollectionDescriptor inputPorts = createPortCollectionDescriptor<NodeT, PortDirection::INPUT>();
    167 dwStatus status = SimpleNode::validate("input", inputPorts, getRegisteredInputPorts());
    168 if (status != DW_SUCCESS)
    169 {
    170 return status;
    171 }
    172 const PortCollectionDescriptor outputPorts = createPortCollectionDescriptor<NodeT, PortDirection::OUTPUT>();
    173 return SimpleNode::validate("output", outputPorts, getRegisteredOutputPorts(), inputPorts.getPortSize());
    174 }
    175
    176private:
    177 void initialize()
    178 {
    179 NODE_REGISTER_PASS("SETUP"_sv, [this]() -> dwStatus {
    180 return setupImpl();
    181 });
    182 NODE_REGISTER_PASS("TEARDOWN"_sv, [this]() -> dwStatus {
    183 return teardownImpl();
    184 });
    185 }
    186};
    187
    189template <typename T>
    191{
    192};
    193
    195template <typename T>
    197{
    198};
    199
    200} // namespace framework
    201} // namespace dw
    202
    203#endif // DW_FRAMEWORK_SIMPLENODET_HPP_
    #define NODE_REGISTER_PASS(identifier,...)
    Register a pass function with the node base class.
    Definition: SimpleNodeT.hpp:49
    dwStatus validate() override
    Validate that all registered ports which have the flag binding-required are bound to a channel.
    SimpleNodeT()
    Default constructor registering the setup and teardown passes.
    virtual dwStatus setupImpl()
    The default implementation calls SimpleNode::setup.
    std::unique_ptr< Pass > createTeardownPass() override
    std::unique_ptr< Pass > createSetupPass() override
    SimpleNodeT(NodeAllocationParams params)
    virtual dwStatus teardownImpl()
    The default implementation calls SimpleNode::teardown.
    dwStatus reset() override
    The default implementation calls SimpleNode::resetPorts.
    void resetPorts()
    Default implementation to reset ports managed by the base class.
    dwStatus validate() override
    Definition: SimpleNode.hpp:107
    const dw::core::HeapHashMap< size_t, std::shared_ptr< PortBase > > & getRegisteredInputPorts() const
    Definition: SimpleNode.hpp:559
    const dw::core::HeapHashMap< size_t, std::shared_ptr< PortBase > > & getRegisteredOutputPorts() const
    Definition: SimpleNode.hpp:564
    dwStatus setup()
    Default implementation of the setup pass.
    dwStatus teardown()
    Default implementation of the teardown pass.
    NodeAllocationParams createAllocationParams()
    Definition: SimpleNode.hpp:65
    Definition: Exception.hpp:47
    人人超碰97caoporen国产