From c95c2a9a0480b8ce687e46a08173056489d8ed8c Mon Sep 17 00:00:00 2001
From: auphelia <jakobapk@web.de>
Date: Tue, 25 Feb 2020 11:56:33 +0000
Subject: [PATCH] [Core] Edit comments in core module

---
 docs/finn/_build/doctrees/environment.pickle  | Bin 132928 -> 132739 bytes
 docs/finn/_build/html/end_to_end_flow.html    |  10 +++----
 .../fpgadataflow/hls_synth_res_estimation.py  |   1 +
 .../analysis/fpgadataflow/res_estimation.py   |   1 +
 src/finn/analysis/topology.py                 |  13 ++++++---
 src/finn/analysis/verify_custom_nodes.py      |   4 ++-
 src/finn/core/datatype.py                     |  25 +++++++++++-------
 src/finn/core/modelwrapper.py                 |  25 +++++++++++-------
 src/finn/core/onnx_exec.py                    |  20 ++++++++------
 9 files changed, 62 insertions(+), 37 deletions(-)

diff --git a/docs/finn/_build/doctrees/environment.pickle b/docs/finn/_build/doctrees/environment.pickle
index fea633144c18d76692cb8554887fae3ca177c98c..514b0d9424d1f5a1bd10354404412a83a8bba92d 100644
GIT binary patch
literal 132739
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
YJ|KaAt?t1)0dN>4a4({74r-PE4X1LQIsgCw

literal 132928
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
Ut?I#>0&p@VbT6Wp4yJ4WKPUzex&QzG

diff --git a/docs/finn/_build/html/end_to_end_flow.html b/docs/finn/_build/html/end_to_end_flow.html
index c9bdcf888..ae7c61e88 100644
--- a/docs/finn/_build/html/end_to_end_flow.html
+++ b/docs/finn/_build/html/end_to_end_flow.html
@@ -35,8 +35,8 @@
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="Getting Started" href="getting_started.html" />
-    <link rel="prev" title="FINN" href="index.html" /> 
+    <link rel="next" title="finn package" href="source_code/finn.html" />
+    <link rel="prev" title="Getting Started" href="getting_started.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -81,8 +81,8 @@
             
             
               <ul class="current">
-<li class="toctree-l1 current"><a class="current reference internal" href="#">FINN - End-to-End Flow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">FINN - End-to-End Flow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="source_code/finn.html">finn package</a></li>
 </ul>
 
@@ -161,10 +161,10 @@
   
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="getting_started.html" class="btn btn-neutral float-right" title="Getting Started" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="source_code/finn.html" class="btn btn-neutral float-right" title="finn package" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="index.html" class="btn btn-neutral float-left" title="FINN" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="getting_started.html" class="btn btn-neutral float-left" title="Getting Started" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
   
diff --git a/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py b/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py
index fe07b92a1..89f0c170a 100644
--- a/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py
+++ b/src/finn/analysis/fpgadataflow/hls_synth_res_estimation.py
@@ -7,6 +7,7 @@ import finn.util.basic as util
 
 def hls_synth_res_estimation(model):
     """Extracts the results from the vivado synthesis.
+    
     Returns {node name : resource estimation}."""
 
     res_dict = {}
diff --git a/src/finn/analysis/fpgadataflow/res_estimation.py b/src/finn/analysis/fpgadataflow/res_estimation.py
index 27ad91b85..8b9e3df94 100644
--- a/src/finn/analysis/fpgadataflow/res_estimation.py
+++ b/src/finn/analysis/fpgadataflow/res_estimation.py
@@ -4,6 +4,7 @@ import finn.util.basic as util
 
 def res_estimation(model):
     """Estimates the resources needed for the given model.
+    
     Returns {node name : resource estimation}."""
 
     res_dict = {}
diff --git a/src/finn/analysis/topology.py b/src/finn/analysis/topology.py
index 8f8d426dc..27cb111f5 100644
--- a/src/finn/analysis/topology.py
+++ b/src/finn/analysis/topology.py
@@ -4,7 +4,9 @@ import numpy as np
 def is_linear(model):
     """Checks whether the given model graph is linear. This is done by looking
     at the fan-out of each tensor. All tensors have a fan-out <= 1 in a linear
-    graph. Returns {"is_linear": Bool}."""
+    graph. 
+    
+    Returns {"is_linear": Bool}."""
     per_tensor_fanouts = get_per_tensor_fanouts(model)
     # check for tensors that have fanout > 1
     multi_fanouts = list(filter(lambda x: x[1] > 1, per_tensor_fanouts.items()))
@@ -23,7 +25,9 @@ def get_per_tensor_fanouts(model):
 
 def all_tensors_f32(model):
     """Checks whether all tensors have a float32 dtype, extra quantization
-    annotations notwithstanding. Returns {"all_tensors_f32": Bool}."""
+    annotations notwithstanding. 
+    
+    Returns {"all_tensors_f32": Bool}."""
     all_tensors = model.make_empty_exec_context().items()
     non_f32_tensors = filter(lambda x: x[1].dtype != np.float32, all_tensors)
     return {"all_tensors_f32": len(list(non_f32_tensors)) == 0}
@@ -33,8 +37,9 @@ def node_inputs_in_expected_order(model):
     """Verifies that the node inputs are ordered in the way that FINN expects
     them. When a node has a mixture of static (= constant, initialized) inputs
     and dynamic inputs, the dynamic input should come first, followed by the
-    static one. Only verifiable for a small subset of op_types for now. Returns 
-    {"node_inputs_in_expected_order": Bool}."""
+    static one. Only verifiable for a small subset of op_types for now. 
+    
+    Returns {"node_inputs_in_expected_order": Bool}."""
     op_types = ["MatMul", "Conv", "Add", "Mul"]
     nodes = filter(lambda x: x.op_type in op_types, model.graph.node)
     all_OK = True
diff --git a/src/finn/analysis/verify_custom_nodes.py b/src/finn/analysis/verify_custom_nodes.py
index e49a0e774..b7a2573e5 100644
--- a/src/finn/analysis/verify_custom_nodes.py
+++ b/src/finn/analysis/verify_custom_nodes.py
@@ -3,7 +3,9 @@ import finn.custom_op.registry as registry
 
 def verify_nodes(model):
     """Checks if custom ops in graph are correctly built, with all attributes
-    and inputs. Returns {node op_type : info_messages}
+    and inputs. 
+    
+    Returns {node op_type : info_messages}
     
     * info_messages: is list of strings about the result of the verification."""
 
diff --git a/src/finn/core/datatype.py b/src/finn/core/datatype.py
index 15fb661d6..21648caa5 100644
--- a/src/finn/core/datatype.py
+++ b/src/finn/core/datatype.py
@@ -32,9 +32,16 @@ import numpy as np
 class DataType(Enum):
     """Enum class that contains FINN data types to set the quantization annotation. 
     ONNX does not support data types smaller than 8-bit integers, whereas in FINN we are
-    interested in smaller integers down to ternary and bipolar."""
-    # important to maintain ordering here: unsigned to signed, fewer to more
-    # bits. The get_smallest_possible() member function is dependent on this.
+    interested in smaller integers down to ternary and bipolar.
+    
+    Assignment of DataTypes to indices based on following ordering: 
+
+    * unsigned to signed
+    
+    * fewer to more bits
+
+    Currently supported DataTypes: """
+    # important: the get_smallest_possible() member function is dependent on ordering.
     BINARY = auto()
     UINT2 = auto()
     UINT3 = auto()
@@ -105,7 +112,7 @@ class DataType(Enum):
     def allowed(self, value):
         """Check whether given value is allowed for this DataType.
 
-    value (float32): value to be checked"""
+        * value (float32): value to be checked"""
 
         if "FLOAT" in self.name:
             return True
@@ -125,7 +132,7 @@ class DataType(Enum):
             raise Exception("Unrecognized data type: %s" % self.name)
 
     def get_num_possible_values(self):
-        """Return the number of possible values this DataType can take. Only
+        """Returns the number of possible values this DataType can take. Only
         implemented for integer types for now."""
         assert self.is_integer()
         if "INT" in self.name:
@@ -136,7 +143,7 @@ class DataType(Enum):
             return 3
 
     def get_smallest_possible(value):
-        """Return smallest (fewest bits) possible DataType that can represent
+        """Returns smallest (fewest bits) possible DataType that can represent
       value. Prefers unsigned integers where possible."""
         if not int(value) == value:
             return DataType["FLOAT32"]
@@ -146,16 +153,16 @@ class DataType(Enum):
                 return dt
 
     def signed(self):
-        """Return whether this DataType can represent negative numbers."""
+        """Returns whether this DataType can represent negative numbers."""
         return self.min() < 0
 
     def is_integer(self):
-        """Return whether this DataType represents integer values only."""
+        """Returns whether this DataType represents integer values only."""
         # only FLOAT32 is noninteger for now
         return self != DataType.FLOAT32
 
     def get_hls_datatype_str(self):
-        """Return the corresponding Vivado HLS datatype name."""
+        """Returns the corresponding Vivado HLS datatype name."""
         if self.is_integer():
             if self.signed():
                 return "ap_int<%d>" % self.bitwidth()
diff --git a/src/finn/core/modelwrapper.py b/src/finn/core/modelwrapper.py
index b01c82399..cf5026ebf 100644
--- a/src/finn/core/modelwrapper.py
+++ b/src/finn/core/modelwrapper.py
@@ -52,16 +52,17 @@ class ModelWrapper:
         self._model_proto = value
 
     def save(self, filename):
-        """Save the wrapper ONNX ModelProto into a file with given name."""
+        """Saves the wrapper ONNX ModelProto into a file with given name."""
         onnx.save(self._model_proto, filename)
 
     def analysis(self, analysis_fxn):
-        """Run given anaylsis_fxn on this model and return resulting dict."""
+        """Runs given anaylsis_fxn on this model and return resulting dict."""
         return analysis_fxn(self)
 
     def transform(self, transformation, make_deepcopy=True):
         """Applies given Transformation repeatedly until no more changes can be made
         and returns a transformed ModelWrapper instance.
+        
         If make_deepcopy is specified, operates on a new (deep)copy of model.
         """
         transformed_model = self
@@ -76,8 +77,11 @@ class ModelWrapper:
 
     def check_compatibility(self):
         """Checks this model for FINN compatibility:
+        
         * no embedded subgraphs
+        
         * all tensor shapes are specified, including activations
+        
         * all constants are initializers
         """
         # TODO check for no embedded subgraphs
@@ -147,7 +151,7 @@ class ModelWrapper:
             return None
 
     def set_tensor_shape(self, tensor_name, tensor_shape, dtype=TensorProto.FLOAT):
-        """Assign shape in ValueInfoProto for tensor with given name."""
+        """Assigns shape in ValueInfoProto for tensor with given name."""
         new_vi = oh.make_tensor_value_info(tensor_name, dtype, tensor_shape)
         # find what container tis tensor's ValueInfo lives in
         # if not found anywhere, we assume it's a new value_info
@@ -161,7 +165,7 @@ class ModelWrapper:
         target_container.append(new_vi)
 
     def set_initializer(self, tensor_name, tensor_value):
-        """Set the initializer value for tensor with given name."""
+        """Sets the initializer value for tensor with given name."""
         graph = self._model_proto.graph
         # convert tensor_value (numpy array) into TensorProto w/ correct name
         tensor_init_proto = np_helper.from_array(tensor_value)
@@ -181,7 +185,7 @@ class ModelWrapper:
         self.set_tensor_shape(tensor_name, list(tensor_value.shape), dtype)
 
     def rename_tensor(self, old_name, new_name):
-        """Rename a tensor from old_name to new_name."""
+        """Renames a tensor from old_name to new_name."""
         graph = self.graph
         # sweep over inputs
         if util.get_by_name(graph.input, old_name) is not None:
@@ -211,7 +215,7 @@ class ModelWrapper:
                 n.output[list(n.output).index(old_name)] = new_name
 
     def get_initializer(self, tensor_name):
-        """Get the initializer value for tensor with given name, if any."""
+        """Gets the initializer value for tensor with given name, if any."""
         graph = self._model_proto.graph
         init_names = [x.name for x in graph.initializer]
         try:
@@ -221,7 +225,7 @@ class ModelWrapper:
             return None
 
     def find_producer(self, tensor_name):
-        """Find and return the node that produces the tensor with given name.
+        """Finds and returns the node that produces the tensor with given name.
         Currently only works for linear graphs."""
         all_outputs = [x.output[0] for x in self._model_proto.graph.node]
         try:
@@ -231,7 +235,7 @@ class ModelWrapper:
             return None
 
     def find_consumer(self, tensor_name):
-        """Find and return the node that consumes the tensor with given name.
+        """Finds and returns the node that consumes the tensor with given name.
         Currently only works for linear graphs."""
         all_inputs = [x.input[0] for x in self._model_proto.graph.node]
         try:
@@ -241,7 +245,7 @@ class ModelWrapper:
             return None
 
     def get_all_tensor_names(self):
-        """Return a list of all (input, output and value_info) tensor names
+        """Returns a list of all (input, output and value_info) tensor names
         in the graph."""
         graph = self.graph
         names = [x.name for x in graph.value_info]
@@ -259,6 +263,7 @@ class ModelWrapper:
 
     def make_empty_exec_context(self):
         """Creates an empty execution context for this model.
+        
         The execution context is a dictionary of all tensors used for the
         inference computation. Any initializer values will be taken into
         account, all other tensors will be zero."""
@@ -294,7 +299,7 @@ class ModelWrapper:
         return ret
 
     def get_tensor_fanout(self, tensor_name):
-        """Return the number of nodes for which the tensor with given name is
+        """Returns the number of nodes for which the tensor with given name is
         as input."""
         graph = self.graph
         fanout = 0
diff --git a/src/finn/core/onnx_exec.py b/src/finn/core/onnx_exec.py
index 5ed45339c..ebb5ee6d4 100644
--- a/src/finn/core/onnx_exec.py
+++ b/src/finn/core/onnx_exec.py
@@ -38,9 +38,10 @@ from finn.custom_op.registry import getCustomOp
 
 
 def execute_node(node, context, graph):
-    """Execute a single node by using onnxruntime, with custom function or
+    """Executes a single node by using onnxruntime, with custom function or
     if dataflow partition by using remote execution or rtlsim.
-    Input/output provided via context."""
+    
+    * Input/output provided via context."""
 
     if node.op_type == "StreamingDataflowPartition":
         sdp_node = getCustomOp(node)
@@ -94,10 +95,12 @@ def execute_node(node, context, graph):
 
 
 def execute_onnx(model, input_dict, return_full_exec_context=False):
-    """Execute given ONNX ModelWrapper with given named inputs.
-    If return_full_exec_context is False, a dict of named outputs is returned
+    """Executes given ONNX ModelWrapper with given named inputs.
+    
+    * If return_full_exec_context is False, a dict of named outputs is returned
     as indicated by the model.graph.output.
-    If return return_full_exec_context is True, the full set of tensors used by
+    
+    * If return return_full_exec_context is True, the full set of tensors used by
     the execution (including inputs, weights, activations and final outputs)
     will be returned as a dict."""
 
@@ -164,7 +167,7 @@ def execute_onnx(model, input_dict, return_full_exec_context=False):
 
 
 def execute_onnx_and_make_model(model, input_dict):
-    """Execute given ONNX ModelWrapper with given named inputs and return a new
+    """Executes given ONNX ModelWrapper with given named inputs and return a new
     ModelWrapper where an initializer is provided for each tensor as taken from
     the execution. This new model is useful for debugging, since it contains
     all the intermediate activation values."""
@@ -187,8 +190,9 @@ def compare_execution(
     input_dict,
     compare_fxn=lambda x, y: np.isclose(x, y, atol=1e-3).all(),
 ):
-    """Execute two ONNX models and compare their outputs using given function.
-    compare_fxn should take in two tensors and return a Boolean"""
+    """Executes two ONNX models and compare their outputs using given function.
+    
+    * compare_fxn should take in two tensors and return a Boolean"""
     # compare values from first output tensors produced
     res_a = list(execute_onnx(model_a, input_dict).items())[0][1]
     res_b = list(execute_onnx(model_b, input_dict).items())[0][1]
-- 
GitLab