Abstract: In an embodiment, a method of partitioning a graph for distribution amongst a plurality of computing nodes is disclosed. In an embodiment, the method includes receiving a portion of the graph at a first computing node of the plurality of computing nodes. The method further includes segmenting, by the first computing node, the portion of the graph into a plurality of sub-portions, based on an objective function, wherein the objective function is based on a first function and a second function, wherein the first function is based on a half perimeter wire length (HPWL), and wherein the second function is based on a density of a plurality of vertices of the portion of the graph. Further, the method includes distributing, by the first computing node, the plurality of sub-portions amongst the plurality of computing nodes.
Claims:1. A method of partitioning a graph for distribution amongst a plurality of computing nodes, the method comprising:
receiving a portion of the graph at a first computing node of the plurality of computing nodes;
segmenting, by the first computing node, the portion of the graph into a plurality of sub-portions, based on an objective function, wherein the objective function is based on a first function and a second function, wherein the first function is based on a half perimeter wire length (HPWL), and wherein the second function is based on a density of a plurality of vertices of the portion of the graph; and
distributing, by the first computing node, the plurality of sub-portions amongst the plurality of computing nodes.
2. The method as claimed in claim 1, wherein the step of segmenting further comprises:
randomly allocating a plurality of vertices of the portion of the graph to a first bin; and
determining the plurality of sub-portions based on a movement of the plurality of vertices from the first bin to a second bin, and a value of the first function and the second function, wherein a number of the sub-portions is equal to a number of the plurality of computing nodes, wherein the determining of each of the sub-portions, comprises:
moving one or more vertices of the plurality of vertices from the first bin to a second bin;
calculating, iteratively, a value of the first function and the second function during the movement of the one or more vertices from the first bin to the second bin;
stopping movement of further vertices from the first bin to the second bin, when the value of the first function is minimum, and about 1/N of the density of the plurality of vertices has moved to the second bin, wherein N is the number of the plurality of computing devices; and
determining a first sub-portion of the plurality of sub-portions based on the one or more vertices included in the second bin.
3. The method as claimed in claim 2, further comprising, updating a value of the N after determination of each of the plurality of sub-portions till N becomes equal to 1/2, wherein the updating comprises reducing the value of N by one.
4. The method as claimed in claim 2, wherein the value of the first function is indicative of the number of edges between the first bin and the second bin.
5. The method as claimed in claim 2, further comprising cutting one or more edges existing between the plurality of vertices present in the first bin and the one or more vertices included in the second bin, after stopping the movement of the one or more vertices from the first bin to the second bin.
6. The method as claimed in claim 2, wherein the first bin and the second bin are one dimensional bins.
7. The method as claimed in claim 1, wherein the plurality of computing nodes comprises at least 3 computing nodes.
8. The method as claimed in claim 1, wherein the method further comprises:
creating, by the first computing node, N number of bins, wherein N is equal to a number of plurality of computing nodes, and wherein each bin of the N number of bins has a dimension equal to N-1; and
determining a plurality of pairs of bins from the N number of bins, wherein the plurality is equal to NC2;
determining NC2 objective functions corresponding to the plurality of pairs of the bins;
randomly allocating a set of vertices to each pair of bins of the plurality of pairs of bins; and
simultaneously optimizing the NC2 objective functions for each pair of bins from the plurality of bins, for simultaneously segmenting the portion of the graph into the plurality of sub-portions, wherein the optimizing comprises, for each pair of bins from the plurality of pairs of bins:
moving one or more vertices of the set of vertices corresponding to the pair of bins from one bin to another bin;
calculating, iteratively, a value of the first function and the second function during the movement of the one or more vertices from the one bin to the another bin;
stopping movement of further vertices from the one bin to another bin, when the value of the first function is determined to be minimum, and when a density of vertices in the one bin is approximately equal to a density of vertices in the another bin; and
cutting one or more edges existing between the bin and the another bin, after stopping the movement of the one or more vertices from the bin to the another bin.
9. A computing node for partitioning a graph for distribution amongst a plurality of computing nodes, the computing node comprising:
a processor;
a memory coupled to the processor;
a communication unit coupled to the processor, wherein the processor is configured to:
receive a portion of the graph at a first computing node of the plurality of computing nodes;
segment the portion of the graph into a plurality of sub-portions, based on an objective function, wherein the objective function is based on a first function and a second function, wherein the first function is based on a half perimeter wire length (HPWL), and wherein the second function is based on a density of a plurality of vertices of the portion of the graph; and
distribute the plurality of sub-portions amongst the plurality of computing nodes.
10. The computing node as claimed in claim 9, wherein for segmenting the portion of the graph into a plurality of sub-portions, the processor is further configured to:
randomly allocate a plurality of vertices of the portion of the graph to a first bin; and
determine the plurality of sub-portions based on a movement of the plurality of vertices from the first bin to a second bin, and a value of the first function and the second function, wherein a number of the sub-portions is equal to a number of the plurality of computing nodes, wherein the determining of each of the sub-portions, comprises:
moving one or more vertices of the plurality of vertices from the first bin to a second bin;
calculating, iteratively, a value of the first function and the second function during the movement of the one or more vertices from the first bin to the second bin;
stopping movement of further vertices from the first bin to the second bin, when the value of the first function is minimum, and about 1/N of the density of the plurality of vertices has moved to the second bin, wherein N is the number of the plurality of computing devices; and
determining a first sub-portion of the plurality of sub-portions based on the one or more vertices included in the second bin.
11. The computing node as claimed in claim 10, wherein the processor is further configured to update a value of the N after determination of each of the plurality of sub-portions till N becomes equal to 1/2, wherein the updating comprises reducing the value of N by one.
12. The computing node as claimed in claim 10, wherein the value of the first function is indicative of the number of edges between the first bin and the second bin.
13. The computing node as claimed in claim 10 wherein the processor is further configured to cut one or more edges existing between the plurality of vertices present in the first bin and the one or more vertices included in the second bin, after stopping the movement of the one or more vertices from the first bin to the second bin.
14. The computing node as claimed in claim 10, wherein the first bin and the second bin are one dimensional bins.
15. The computing node as claimed in claim 9, wherein for segmenting the portion of the graph into a plurality of sub-portions, the processor is further configured to:
create N number of bins, wherein N is equal to a number of plurality of computing nodes, and wherein each bin of the N number of bins has a dimension equal to N-1; and
determine a plurality of pairs of bins from the N number of bins, wherein the plurality is equal to NC2;
determine NC2 objective functions corresponding to the plurality of pairs of the bins;
randomly allocate a set of vertices to each pair of bins of the plurality of pairs of bins; and
simultaneously optimize the NC2 objective functions for each pair of bins from the plurality of bins, for simultaneously segmenting the portion of the graph into the plurality of sub-portions, wherein the optimizing comprises, for each pair of bins from the plurality of pairs of bins:
moving one or more vertices of the set of vertices corresponding to the pair of bins from one bin to another bin;
calculating, iteratively, a value of the first function and the second function during the movement of the one or more vertices from the one bin to the another bin;
stopping movement of further vertices from the one bin to another bin, when the value of the first function is determined to be minimum, and when a density of vertices in the one bin is approximately equal to a density of vertices in the another bin; and
cutting one or more edges existing between the bin and the another bin, after stopping the movement of the one or more vertices from the bin to the another bin.
, Description:FIELD OF THE INVENTION
[0001] The present disclosure, in general, relates to graph partitioning and, in particular, relates to k-way partitioning of streaming graphs.
BACKGROUND
[0002] Processing of hypergraphs or graphs that are immensely huge in volume is generally done using a distributed computing system comprising a plurality of computing nodes. Herein, the graph is divided into small portions by making cuts along the edges of the graph and distributing the small portions amongst the plurality of computing nodes. Hypergraph partitioning has its applications in many areas such as very large scale integration (VLSI) physical design, VLSI formal veri?cation, parallel computing, sparse matrix-vector multiplication, and data mining.
[0003] Subsequent to the distribution of the portions, one or more functions may be applied on the graph. During the processing of the function, interaction amongst the computing nodes may be required. For instance, a first computing node may require some information from a second computing node. Now, in certain cases or in certain functions, the processing time of the function may be proportional to the number of existing between any two given computing nodes. In other words, more the number of edges, more the processing time for the function. The processing time becomes more critical in cases of streaming graphs, where application of functions become critical to the overall processing time related with the streaming graphs. Thus, it is desirable to keep the number of edges between two computing nodes to minimum, in order to minimize the delay of processing of the functions on such graphs.
[0004] Thus, there is a need for a solution that overcomes the above deficiencies.
SUMMARY
[0005] This summary is provided to introduce a selection of concepts, in a simplified format, that are further described in the detailed description of the invention. This summary is neither intended to identify key or essential inventive concepts of the invention and nor is it intended for determining the scope of the invention.
[0006] In an embodiment, a method of partitioning a graph for distribution amongst a plurality of computing nodes is disclosed. In an embodiment, the method includes receiving a portion of the graph at a first computing node of the plurality of computing nodes. The method further includes segmenting, by the first computing node, the portion of the graph into a plurality of sub-portions, based on an objective function, wherein the objective function is based on a first function and a second function, wherein the first function is based on a half perimeter wire length (HPWL), and wherein the second function is based on a density of a plurality of vertices of the portion of the graph. Further, the method includes distributing, by the first computing node, the plurality of sub-portions amongst the plurality of computing nodes.
[0007] In another embodiment, a computing node is disclosed. The computing node includes a processor, a memory, and a communication unit. In said example embodiment, the computing node may be configured to perform the aforementioned disclosed method.
[0008] Aspect and embodiments of the present subject matter provide for at least the following advantages. The proposed subject matter provides for partitioning of a streaming graph into any number of partitions. Furthermore, the present subject matter provides a means for k-way partitioning of graphs and is applicable to partitioning of large streaming graphs. The proposed subject matter and its embodiments produces high quality partitions which optimize the mincut and leads to improved(lesser) inter-machine communication, thereby, reducing power consumption and increasing throughput associated with processing of large graphs.
[0009] To further clarify advantages and features of the present invention, a more particular description of the invention will be rendered by reference to specific embodiments thereof, which is illustrated in the appended drawings. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] These and other features, aspects, and advantages of the present invention will become better understood when the following detailed description is read with reference to the accompanying drawings in which like characters represent like parts throughout the drawings, wherein:
[0011] Fig. 1 illustrates a flowchart of a method of partitioning a graph for distribution amongst a plurality of computing nodes, according to an embodiment of the present subject matter;
[0012] Fig. 2 illustrates a flowchart of a method of segmenting a portion of a graph into a plurality of sub-graphs, according to an embodiment of the present subject matter;
[0013] Fig. 3 illustrates placement of vertices of a graph into two bins, according to an embodiment of the present subject matter;
[0014] Fig. 4 illustrates a flowchart of a method of determining a plurality of sub-portions from a portion of a graph, according to an embodiment of the present subject matter;
[0015] Fig. 5 illustrates a flowchart of a method of determining a plurality of sub-portions from a portion of a graph, according to another embodiment of the present subject matter;
[0016] Fig. 6(a) illustrates an environment for K-way partitioning of streaming graphs, according to an embodiment of the present subject matter; and
[0017] Fig. 6(b) illustrates a schematic block diagram of a computing node, according to an embodiment of the present subject matter.
[0018] Further, skilled artisans will appreciate that elements in the drawings are illustrated for simplicity and may not have been necessarily been drawn to scale. For example, the flow charts illustrate the method in terms of the most prominent steps involved to help to improve understanding of aspects of the present invention. Furthermore, in terms of the construction of the device, one or more components of the device may have been represented in the drawings by conventional symbols, and the drawings may show only those specific details that are pertinent to understanding the embodiments of the present invention so as not to obscure the drawings with details that will be readily apparent to those of ordinary skill in the art having benefit of the description herein.
DETAILED DESCRIPTION OF FIGURES
[0019] For the purpose of promoting an understanding of the principles of the invention, reference will now be made to the embodiment illustrated in the drawings and specific language will be used to describe the same. It will nevertheless be understood that no limitation of the scope of the invention is thereby intended, such alterations and further modifications in the illustrated system, and such further applications of the principles of the invention as illustrated therein being contemplated as would normally occur to one skilled in the art to which the invention relates.
[0020] It will be understood by those skilled in the art that the foregoing general description and the following detailed description are explanatory of the invention and are not intended to be restrictive thereof.
[0021] Reference throughout this specification to “an aspect”, “another aspect” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrase “in an embodiment”, “in another embodiment” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
[0022] The terms "comprises", "comprising", or any other variations thereof, are intended to cover a non-exclusive inclusion, such that a process or method that comprises a list of steps does not include only those steps but may include other steps not expressly listed or inherent to such process or method. Similarly, one or more devices or sub-systems or elements or structures or components proceeded by "comprises... a" does not, without more constraints, preclude the existence of other devices or other sub-systems or other elements or other structures or other components or additional devices or additional sub-systems or additional elements or additional structures or additional components.
[0023] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skilled in the art to which this invention belongs. The system, methods, and examples provided herein are illustrative only and not intended to be limiting.
[0024] Embodiments of the present invention will be described below in detail with reference to the accompanying drawings.
[0025] Fig. 1 illustrates a flowchart of a method 100 of partitioning a graph for distribution amongst a plurality of computing nodes, according to an embodiment of the present subject matter. The method 100 may be implemented in computing nodes, such as, but not limited to, a server, a desktop computer, a workstation computer, and a laptop.
[0026] In an example, the method 100 may be implemented for achieving k-way partitioning of a streaming graph or a hypergraph for distribution amongst the plurality of computing nodes. Herein, in an example embodiment, the value of k may be 3 or more.
[0027] To begin with, at step 102, the method 100 includes receiving a portion of the graph at a first computing node of the plurality of computing nodes. In an example, the first computing node may be a master node, designated from amongst the plurality of computing nodes either randomly or by an administrator who is administrating the graph partitioning.
[0028] At step 104, the method 100 includes segmenting the portion of the graph into a plurality of sub-portions based on a first function and a second function. In an example, the first function may be based on a half perimeter wire length (HPWL) and the second function may be based on a density of a plurality of vertices of the portion of the graph.
[0029] According to aspects of the present subject matter, a pairwise bins approach is implemented. In the pairwise bins approach, i.e., where the vertices of the portion of the graph are placed into a pair of bins, the number of crossing of edges, hereinafter interchangeably “mincut”, is equal to the HPWL associated with the pairwise bins. Obtaining the mincut is equvivalent to obtaining the HPWL. Thus, in an example embodiment of the present subject matter, the HPWL is modeled as a smooth function of the coordinates of the vertices in physical space. Furthermore, a balance of the partitions is represented by smooth density function. In said example embodiment, a smooth multi-objective function of wirelength and density may be minimized using calculus. To that end, a derivative of the function may be obtained and solving the equations presented in the following description using modified nesterov’s method. Thus, at the end of step 104, a plurality of sub-portions of the portion of the graph are obtained. In an example, the first computing node may segment the portion of the graph into sub-portions. A detailed explanation of the step 104 is provided below in conjunction with Fig. 2.
[0030] At step 106, the method 100 includes distributing the plurality of sub-portions amongst the plurality of computing nodes. In an example, the first computing node may distribute the sub-portions amongst the computing nodes. As was mentioned above, the method 100 may be implemented for streaming graphs or hypergraphs. Accordingly, a next portion of the streaming graph or hypergraph may be received at the first computing node, where it is segmented and distributed as explained above.
[0031] Fig. 2 illustrates a flowchart of a method 200 of segmenting a portion of a graph into a plurality of sub-graphs, according to an embodiment of the present subject matter.
[0032] At step 202, the method 200 includes randomly including a plurality of vertices of the portion of the graph to a first bin. In an example embodiment, the terminal vertices of the portion of the graph may not movable. Furthermore, coordinates of the non-terminal vertices are updated during the partitioning. In an example, as shown in Fig. 3, terminal vertices of the portion of the graph are assigned center coordinates in Bins 1 and 2. Furthermore, the non-terminal vertices are placed randomly around the center coordinate of one of the bins. As shown in the Fig. 3, the non-terminal vertices are placed around the center of Bin 2. Randomization in the placement of vertices is required to give a nonzero value of the wirelength gradient. If initial placement is not randomized, the calculation of initial value of ? (described later) would be incorrect.
[0033] The initial placement of vertices of the graph is important step in optimization of the objective function, i.e., the function based on the first function and the second function. The initialization of the coordinates of the vertices defines values for the x and y coordinates of the vertices along the one-dimensional bins. This helps to initialize the value of lambda (?). In an example, any arbitrary value of lambda may lead to an incorrect optimization and incorrect subsequent solution. Initializing the placement of the vertices provides for advantages, such as initializing the value of lambda which leads to convergence of objective function and initializing the values of gradients of wirelength and gradients of density. Furthermore, if initialization not performed, it may lead to wrong values for the gradients and may results in the system crashing out or out of bound values on gradient variables.
[0034] At step 204, the method 200 includes determining the plurality of sub-portions based on a movement of the plurality of vertices from the first bin to a second bin, and a value of the first function and the second function. In an example, the number of sub-portions into which the portion is segmented into is equal to a number of the computing nodes. In an example, the determination of each of the sub-portions based on the movement of the plurality of vertices and the first function and the second function is explained below in conjunction with reference to Fig. 4.
[0035] Fig. 4 illustrates a flowchart of a method 400 of determining a plurality of sub-portions from a portion of a graph, according to an embodiment of the present subject matter.
[0036] At step 402, the method 400 includes moving one or more vertices of the plurality of vertices from the first bin to a second bin. In an example, for segmenting the portion into sub-portions, the movement of the vertices from the first bin to the second bin is triggered. Referring to fig. 3, one or more vertices may be moved from the Bin 2 to Bin 1.
[0037] At step 404, the method 400 includes calculating, iteratively, a value of the first function and the second function during the movement of the one or more vertices from the first bin to the second bin. In an example, the value of the first function and the second function may be determined as explained below.
[0038] In an example embodiment, the first function may be defined as given below in function 1:
min W (x, y), such that Bb = Ab (1)
In the above first function, Ab is the maximum area of movable vertices in bin-cell ‘b’, W(x) is the wirelength, Bb(x) is the potential which is the total area of movable vertices in the bin-cell ‘b’. Since W(x) is neither differentiable nor smooth, it cannot be minimized directly. In an example, conventional log-sum-exp model, as provided below in model (2), may be used for obtaining smooth wirelength approximations.
[0039] In an example embodiment, the second function may be a density penalty function based on the below density function (3).
(3)
[0040] Herein, in the density function (3), Qx is the overlap functions of bin-cell ‘b’ and vertex v along the x directions.
[0041] In an example embodiment, for density penalty minimization using nonlinear method, it is desired that the density function should be either differentiable or smooth. Since the density function Bb(x) is not smooth it cannot be minimized directly. In said example embodiment, a bell shaped density function which is differentiable at all the points may be used, as is known in the conventional art. Equation (4), provided below, states bell-shaped potential for smoothening Qx. where, dx is the centre-to-centre distance between the vertex v and the bin-cell b in the x-direction and wb is the bin-cell width.
(4)
The notations used in the above equation (4), and in other functions used herein are provided below.
Notations
[0042] As mentioned above, the second function is based on the density of the vertices included in the bins. In an example, embodiment, the second function based on the smoothened density function and lambda (?) is denoted below in function (5).
(5)
[0043] In an example embodiment, an equation based on the first function and the second function may be used for determining when to stop the movement of vertices from the first bin to the second bin. An example of the equation is provided below in equation (6).
(6)
[0044] In an example embodiment, as mentioned above, the vertices are placed in one bin randomly. After random placement of the vertices, the movement of the vertices is triggered and iteratively the values of the first function and the second function are calculated, using equations and functions as described above. In said example embodiment, at first a gradient of the wirelength function may be calculated and accordingly, the first function is calculated. Subsequently, a density may be calculated using function (3) and thereafter, a gradient of the density function may be calculated. Based thereon, the second function may be calculated. As is mentioned in step 402, these calculations are performed iteratively using function calculation technique (7), illustrated below.
Function Calculation technique (7)
In an example, the exit criterion (8) for the above technique (7) is:
….. (8)
[0045] In an example, the exit criterion is such that, the value of the first function is minimum, and about 1/N of the density of the plurality of vertices has moved to the second bin, wherein N is the number of the plurality of computing devices. Upon meeting the aforementioned criterion, the method proceeds to step 406.
[0046] At step 406, the method 400 includes stopping movement of further vertices from the first bin to the second bin, when the value of the first function is minimum, and about 1/N of the density of the plurality of vertices has moved to the second bin, wherein N is the number of the plurality of computing devices. That is, in other words, when the above criteria is met, the movement of the vertices may be stopped.
[0047] Subsequently, at step 408, the method 400 includes determining a first sub-portion of the plurality of sub-portions based on the one or more vertices included in the second bin. In other words, the number of vertices present in the second bin constitutes the first sub-portion. In an example embodiment, the method 400 may further include cutting one or more edges existing between the plurality of vertices present in the first bin and the one or more vertices included in the second bin, after stopping the movement of the one or more vertices from the first bin to the second bin. This is done to determine the first sub-portion. Subsequently, the method 400 may be performed N-1 number of times to obtain N sub-partitions. Herein, N is the number of computing nodes.
[0048] In an example embodiment, the method 400 may further include updating a value of the N after determination of each of the plurality of sub-portions till N becomes equal to 1/2, wherein the updating comprises reducing the value of N by one.
[0049] At step 406, the method 400 includes stopping movement of further vertices from the first bin to the second bin, when the value of the first function is minimum, and about 1/N of the density of the plurality of vertices has moved to the second bin, wherein N is the number of the plurality of computing devices.
[0050] Fig. 5 illustrates a flowchart of a method 500 of determining a plurality of sub-portions from a portion of a graph, according to another embodiment of the present subject matter.
[0051] At step 502, the method 500 includes creating N number of bins. In an example embodiment, N is equal to the number of computing nodes. In an example, the first computing node which receives the portion of the graph may create the N number of bins. Furthermore, in the aforementioned example embodiment, each bin may have a dimension equal to N-1.
[0052] At step 504, the method 500 includes determining a plurality of pairs of bins from the N number of bins. In an example embodiment, NC2 number of pairs of bins may be determined. As an example, for 3 bins A, B, and C, the pairs of bins may include, AB, BC, and AC.
[0053] At step 506, the method 500 includes determining NC2 objective functions corresponding to the plurality of pairs of the bins. Thereafter, the method proceeds to step 508. At step 508, the method includes randomly allocating a set of vertices to each pair of bins of the plurality of pairs of bins.
[0054] At step 510, the method 500 includes simultaneously optimizing the NC2 objective functions for each pair of bins from the plurality of bins, for simultaneously segmenting the portion of the graph into the plurality of sub-portions. In an example embodiment, for each pair of bins from the plurality of pairs of bins, the optimizing includes the following steps.
[0055] In a first step, one or more vertices of the set of vertices corresponding to the pair of bins may be moved from one bin to another bin. Furthermore, in the next step, a value of the first function and the second function during the movement of the one or more vertices from the one bin to the another bin may be calculated iteratively, as explained above in the Fig. 4. In the next step, movement of further vertices from the one bin to another bin may be stopped, when the value of the first function is determined to be minimum, and when a density of vertices in the one bin is approximately equal to a density of vertices in the another bin.
[0056] Fig. 6(a) illustrates an environment for K-way partitioning of streaming graphs, according to an embodiment of the present subject matter. Fig. 6(b) illustrates a schematic block diagram of a computing node, according to an embodiment of the present subject matter. In an example, the environment may include a plurality of computing nodes 600-1 to 600-N. Examples of the computing node 600 may include, but are not limited to, a server, a workstation computer, a desktop computer, and a laptop. Furthermore, the environment may include a server 602. In an example, the server 602 may be configured to transmit portions of a streaming graph to the plurality of computing nodes 600-1 to 600-N.
[0057] In an example, the computing node 600-1 may receive the portion of the streaming graph. Accordingly, the computing node 600-1 may segment the portion into a plurality of sub-portions and may distribute the sub-portions amongst the plurality of computing nodes 600-1 to 600-N, according to aspects of the present subject matter as described above in one or more of the Figs. 1 to 5.
[0058] In an example embodiment, the computing node 600 may include a processor 604, a memory 606, data 608, and communication unit 610.
[0059]
[0060] In an example, the processor 604 may be a single processing unit or a number of units, all of which could include multiple computing units. The processor 604 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. Among other capabilities, the processor 604 is configured to fetch and execute computer-readable instructions and data stored in the memory 606.
[0061] The memory 606 may include any non-transitory computer-readable medium known in the art including, for example, volatile memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM), and/or non-volatile memory, such as read-only memory (ROM), erasable programmable ROM, flash memories, hard disks, optical disks, and magnetic tapes.
[0062] The data 608 serves, amongst other things, as a repository for storing data processed, received, and generated by one or more of the processor 604, the training engine 112, the model creator 114, and the height estimator 116. Writing further, in a non-limiting manner, one or more of the aforementioned components of the system 102 may send or receive data, for example, using one or more input/output ports and one or more communication units, not shown in the figure.
[0063] In an example, the communication unit 610 may include one or more hardware units that support wired or wireless communication between the computing nodes 600. Furthermore, the communication unit 602 may also support communication between the communication node 600 and server 602.
[0064] While specific language has been used to describe the present disclosure, any limitations arising on account thereto, are not intended. As would be apparent to a person in the art, various working modifications may be made to the method in order to implement the inventive concept as taught herein. The drawings and the foregoing description give examples of embodiments. Those skilled in the art will appreciate that one or more of the described elements may well be combined into a single functional element. Alternatively, certain elements may be split into multiple functional elements. Elements from one embodiment may be added to another embodiment.
| # | Name | Date |
|---|---|---|
| 1 | 202041045169-TRANSLATIOIN OF PRIOIRTY DOCUMENTS ETC. [16-10-2020(online)].pdf | 2020-10-16 |
| 2 | 202041045169-STATEMENT OF UNDERTAKING (FORM 3) [16-10-2020(online)].pdf | 2020-10-16 |
| 3 | 202041045169-FORM 1 [16-10-2020(online)].pdf | 2020-10-16 |
| 4 | 202041045169-DRAWINGS [16-10-2020(online)].pdf | 2020-10-16 |
| 5 | 202041045169-DECLARATION OF INVENTORSHIP (FORM 5) [16-10-2020(online)].pdf | 2020-10-16 |
| 6 | 202041045169-COMPLETE SPECIFICATION [16-10-2020(online)].pdf | 2020-10-16 |
| 7 | 202041045169-FORM-26 [01-12-2020(online)].pdf | 2020-12-01 |
| 8 | 202041045169-Proof of Right [03-12-2020(online)].pdf | 2020-12-03 |
| 9 | 202041045169-Abstract.jpg | 2021-10-18 |
| 10 | 202041045169-FORM 18 [14-10-2024(online)].pdf | 2024-10-14 |