NVIDIA NvNeural SDK  2022.2
GPU inference framework for NVIDIA Nsight Deep Learning Designer
IPrototypeLayer.h
Go to the documentation of this file.
1 /*
2 * SPDX-FileCopyrightText: Copyright (c) 2020-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3 * SPDX-License-Identifier: MIT
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 */
23 
25 
26 #ifndef NVNEURAL_IPROTOTYPELAYER_H
27 #define NVNEURAL_IPROTOTYPELAYER_H
28 
29 #include <nvneural/CoreTypes.h>
30 
31 namespace nvneural {
37  class IPrototypeLayer : public IRefObject
38  {
39  public:
41  static const IRefObject::TypeId typeID = 0xb24d9c4a56a0c3f7ul;
42 
52  virtual NeuralResult loadPrototypeInfo(const IParameterNode* pParameters) noexcept = 0;
53 
63  std::size_t inputsCount,
64  const char* pType,
65  NetworkBackendId backend,
66  TensorFormat format,
67  const char* pDim,
68  const char* pImpl) noexcept = 0;
69 
76  virtual NeuralResult addPrototypeCode(const char* pName, const char* pCode) noexcept = 0;
77 
84  virtual NeuralResult addForwardEvalCall(const char* pName, const char* pCall) noexcept = 0;
85 
88  virtual NeuralResult addParameterKey(const char* pKey) noexcept = 0;
89  };
90 } // namespace nvneural
91 #endif // NVNEURAL_IPROTOTYPELAYER_H
Fundamental NvNeural data types are declared here.
NetworkBackendId
Enumeration describing common network backends.
Definition: CoreTypes.h:239
NeuralResult
NeuralResult is a generic success/failure result type similar to COM HRESULT.
Definition: CoreTypes.h:275
Represents a serialized parameter block in a model definition.
Definition: CoreTypes.h:1889
IPrototypeLayer is an optional interface that marks a layer as a prototype layer.
Definition: IPrototypeLayer.h:38
virtual NeuralResult addParameterKey(const char *pKey) noexcept=0
Adds a named parameter to the layer.
virtual NeuralResult loadPrototypeInfo(const IParameterNode *pParameters) noexcept=0
Loads prototype definitions from a parameter node.
static const IRefObject::TypeId typeID
Interface TypeId for InterfaceOf purposes.
Definition: IPrototypeLayer.h:41
virtual NeuralResult setPrototypeInfo(std::size_t inputsCount, const char *pType, NetworkBackendId backend, TensorFormat format, const char *pDim, const char *pImpl) noexcept=0
Sets details of the prototype layer explicitly.
virtual NeuralResult addForwardEvalCall(const char *pName, const char *pCall) noexcept=0
Adds a call script for a particular tensor format and backend.
virtual NeuralResult addPrototypeCode(const char *pName, const char *pCode) noexcept=0
Adds a kernel definition for a particular tensor format and backend.
Base class for all objects, similar to COM's IUnknown.
Definition: CoreTypes.h:343
std::uint64_t TypeId
Every interface must define a unique TypeId. This should be randomized.
Definition: CoreTypes.h:349
TensorFormat describes a specific tensor shape (element type and layout).
Definition: CoreTypes.h:88