Apparatuses, Methods And Systems For Vector Operations And Storage In Matrix Models
First Claim
1. A processor-implemented method to access data, comprising:
- a) generating a first set of data in a first region, if no first set of data exists;
b) obtaining dimensions of the first region;
c) obtaining an expression to perform a computation on a set of data related to the first set of data, wherein the expression refers to a portion of the first set of data, wherein the expression abides by an application programming interface;
d) identifying a region to be used by the related set of data from the obtained expression'"'"'s reference to the portion of the first data set;
e) obtaining an identifier for the first region;
f) obtaining dimensions of related region;
g) determining if the related region fits within the first region, wherein a fit occurs if the related region'"'"'s highest dimension size is less in size than the first region'"'"'s corresponding dimension size, wherein the determination includes;
i) comparing dimensions of the related region to the first region, wherein the comparison is if a highest non-unit sized dimension of the related region is less than a size of corresponding dimensions of the first region;
h) generating at least one identifier that references the related region, if the related region fits within the first region, wherein a single identifier referencing the related region is generated if the first region is one of a slice and full vector;
wherein the generation of at least one identifier includes;
i) assigning the identifier of the related region by setting it to the first region'"'"'s identifier plus an offset, wherein the assignment'"'"'s offset takes the form of;
d−
>
raw=d−
>
parent−
>
raw+(xoffs+d−
>
parent−
>
xres*(yoffs+d−
>
parent−
>
yres*zoffs))*size;
ii) determining if a first dimension of the assigned identifier is of unit size;
iii) assigning a first dimension identifier for the related region to a value in a corresponding second dimension of the related region, if the first dimension of the assigned identifier is determined to be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to the value in a Y dimension of the related region;
iv) assigning a first dimension identifier for the related region to a corresponding first dimension of the first region plus an offset, if the first dimension of the assigned identifier is determined to not be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to the first region identifier of a Z dimension, wherein the assignment'"'"'s offset takes the form of;
d−
>
zdata=d−
>
parent−
>
zdata+zoffs;
v) determining if a second dimension of the assigned identifier is of unit size;
vi) assigning a second dimension identifier for the related region to a the identifier for the related region, if the second dimension of the assigned identifier is determined to be of unit size, wherein the second dimension of the identifier for the related region is a Y dimension;
vii) assigning a second dimension identifier for the related region to a corresponding first dimension of the first region plus an offset, if the second dimension of the assigned identifier is determined to not be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to related region identifier of a Z dimension, wherein the assignment'"'"'s offset takes the form of;
d−
>
ydata=d−
>
parent−
>
zdata[zoffs]+yoffs;
j) generating a plurality of identifiers, if the related region is arbitrary;
wherein the generation of a plurality of identifiers includes;
i) determining if a size of a first dimension of the related region is greater than unit size;
ii) assigning a first dimension identifier for the related region to the first dimension of the first region plus an offset, if the first dimension of the assigned identifier is determined to be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to related region identifier of a Z dimension, wherein the assignment'"'"'s offset takes the form of;
d−
>
zdata[z][y]=d−
>
parent−
>
zdata[z+zoffs][y+yoffs]+xoffs*size;
iii) assigning a first dimension identifier for the related region to an address in a corresponding second dimension of the related region, if the first dimension of the assigned identifier is determined to not be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to the address in a Y dimension of the related region;
iv) allocating identifiers for a second dimension for a current dimension slice, wherein allocation of identifiers is made for each unit in the current dimension, wherein the current dimension of the slice is a Z dimension and the allocation is made to a Y dimension;
k) returning any generated identifiers, wherein the returned identifiers are returned to the referring expression, wherein the identifiers seemingly have characteristics of being an independent set of data, wherein changes to the related set of data through the identifier affect the first set of data, and wherein changes to the first set of data affect the related set of data.
0 Assignments
0 Petitions
Accused Products
Abstract
The disclosure details the implementation of apparatuses, methods, and systems for a vector operator. In one embodiment, a virtual data object is established by a user requesting that operations are performed on a subset of an existing and/or specified parent data object. In one embodiment, the vector operator automatically makes optimizations when it notices that the requested subset of a larger parent data object falls within the bounds of the parent data object. The vector operator may employ slice and arbitrary subvector optimizations. These optimizations work transparently for users that employ the vector operator'"'"'s user interface. As such, the vector operator avoids creating a new data object of the appropriate size, and avoids copying data from the old matrix into the new one. As such, the vector operator'"'"'s integrated programming interface makes it easier to generate operations (e.g., write algorithms) affecting slices or submatrices. A user does not need to bother writing code to do the necessary bookkeeping of tracking where a slice belongs within a larger dataset nor does the user need to know the underlying data representation to preserve maximum performance; the vector operator handles this automatically. In addition, a distributed vector operator allows data sets to be broken into specified pieces and/or regions, to be transferred across a network, to be operated upon in a distributed manner by other computers, and finally returned to the originating computers. In so doing, the vector operator analyzes data ranges of requests it receives from other computers, and sends out requested data. However, only as little of the requested data as is necessary is ever transferred, while the remainder of the parent data object'"'"'s data is not transferred.
-
Citations
47 Claims
-
1. A processor-implemented method to access data, comprising:
-
a) generating a first set of data in a first region, if no first set of data exists;
b) obtaining dimensions of the first region;
c) obtaining an expression to perform a computation on a set of data related to the first set of data, wherein the expression refers to a portion of the first set of data, wherein the expression abides by an application programming interface;
d) identifying a region to be used by the related set of data from the obtained expression'"'"'s reference to the portion of the first data set;
e) obtaining an identifier for the first region;
f) obtaining dimensions of related region;
g) determining if the related region fits within the first region, wherein a fit occurs if the related region'"'"'s highest dimension size is less in size than the first region'"'"'s corresponding dimension size, wherein the determination includes;
i) comparing dimensions of the related region to the first region, wherein the comparison is if a highest non-unit sized dimension of the related region is less than a size of corresponding dimensions of the first region;
h) generating at least one identifier that references the related region, if the related region fits within the first region, wherein a single identifier referencing the related region is generated if the first region is one of a slice and full vector;
wherein the generation of at least one identifier includes;
i) assigning the identifier of the related region by setting it to the first region'"'"'s identifier plus an offset, wherein the assignment'"'"'s offset takes the form of;
d−
>
raw=d−
>
parent−
>
raw+(xoffs+d−
>
parent−
>
xres*(yoffs+d−
>
parent−
>
yres*zoffs))*size;
ii) determining if a first dimension of the assigned identifier is of unit size;
iii) assigning a first dimension identifier for the related region to a value in a corresponding second dimension of the related region, if the first dimension of the assigned identifier is determined to be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to the value in a Y dimension of the related region;
iv) assigning a first dimension identifier for the related region to a corresponding first dimension of the first region plus an offset, if the first dimension of the assigned identifier is determined to not be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to the first region identifier of a Z dimension, wherein the assignment'"'"'s offset takes the form of;
d−
>
zdata=d−
>
parent−
>
zdata+zoffs;
v) determining if a second dimension of the assigned identifier is of unit size;
vi) assigning a second dimension identifier for the related region to a the identifier for the related region, if the second dimension of the assigned identifier is determined to be of unit size, wherein the second dimension of the identifier for the related region is a Y dimension;
vii) assigning a second dimension identifier for the related region to a corresponding first dimension of the first region plus an offset, if the second dimension of the assigned identifier is determined to not be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to related region identifier of a Z dimension, wherein the assignment'"'"'s offset takes the form of;
d−
>
ydata=d−
>
parent−
>
zdata[zoffs]+yoffs;
j) generating a plurality of identifiers, if the related region is arbitrary;
wherein the generation of a plurality of identifiers includes;
i) determining if a size of a first dimension of the related region is greater than unit size;
ii) assigning a first dimension identifier for the related region to the first dimension of the first region plus an offset, if the first dimension of the assigned identifier is determined to be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to related region identifier of a Z dimension, wherein the assignment'"'"'s offset takes the form of;
d−
>
zdata[z][y]=d−
>
parent−
>
zdata[z+zoffs][y+yoffs]+xoffs*size;
iii) assigning a first dimension identifier for the related region to an address in a corresponding second dimension of the related region, if the first dimension of the assigned identifier is determined to not be of unit size, wherein the first dimension of the identifier for the related region is a Z dimension and the assignment is made to the address in a Y dimension of the related region;
iv) allocating identifiers for a second dimension for a current dimension slice, wherein allocation of identifiers is made for each unit in the current dimension, wherein the current dimension of the slice is a Z dimension and the allocation is made to a Y dimension;
k) returning any generated identifiers, wherein the returned identifiers are returned to the referring expression, wherein the identifiers seemingly have characteristics of being an independent set of data, wherein changes to the related set of data through the identifier affect the first set of data, and wherein changes to the first set of data affect the related set of data.
-
-
2. A processor-implemented method to access data, comprising:
-
a) generating a first set of data in a first region, if no first set of data exists;
b) obtaining dimensions of the first region;
c) obtaining an expression to perform a computation on a set of data related to the first set of data, wherein the expression refers to a portion of the first set of data, wherein the expression abides by an application programming interface;
d) identifying a region to be used by the related set of data from the obtained expression'"'"'s reference to the portion of the first data set;
e) obtaining an identifier for the first region;
f) obtaining dimensions of related region;
g) determining if the related region fits within the first region, wherein a fit occurs if the related region'"'"'s highest dimension size is less in size than the first region'"'"'s corresponding dimension size, wherein the determination includes;
i) comparing dimensions of the related region to the first region, wherein the comparison is if a highest non-unit sized dimension of the related region is less than a size of corresponding dimensions of the first region;
h) generating at least one identifier that references the related region, if the related region fits within the first region, wherein a single identifier referencing the related region is generated if the first region is one of a slice and full vector, wherein the generation of at least one identifier includes;
i) assigning the identifier of the related region by setting it to the first region'"'"'s identifier plus an offset;
ii) determining if a first dimension of the assigned identifier is of unit size;
iii) assigning a first dimension identifier for the related region to a value in a corresponding second dimension of the related region, if the first dimension of the assigned identifier is determined to be of unit size;
iv) assigning a first dimension identifier for the related region to a corresponding first dimension of the first region plus an offset, if the first dimension of the assigned identifier is determined to not be of unit size;
v) determining if a second dimension of the assigned identifier is of unit size;
vi) assigning a second dimension identifier for the related region to a the identifier for the related region, if the second dimension of the assigned identifier is determined to be of unit size;
vii) assigning a second dimension identifier for the related region to a corresponding first dimension of the first region plus an offset, if the second dimension of the assigned identifier is determined to not be of unit size;
j) generating a plurality of identifiers, if the related region is arbitrary;
wherein the generation of a plurality of identifiers includes;
i) determining if a size of a first dimension of the related region is greater than unit size;
ii) assigning a first dimension identifier for the related region to the first dimension of the first region plus an offset, if the first dimension of the assigned identifier is determined to be of unit size;
iii) assigning a first dimension identifier for the related region to an address in a corresponding second dimension of the related region, if the first dimension of the assigned identifier is determined to not be of unit size;
iv) allocating identifiers for a second dimension for a current dimension slice, wherein allocation of identifiers is made for each unit in the current dimension;
k) returning any generated identifiers, wherein the returned identifiers are returned to the referring expression, wherein the identifiers seemingly have characteristics of being an independent set of data, wherein changes to the related set of data through the identifier affect the first set of data, and wherein changes to the first set of data affect the related set of data.
-
-
3. A processor-implemented method to access data, comprising:
-
obtaining dimensions of a first region;
obtaining an expression to perform a computation on a set of data related to a first set of data in the first region;
identifying a region to be used by the related set of data from the obtained expression;
determining if the related region fits within the first region;
generating at least one identifier that references the related region, if the related region fits within the first region;
generating a plurality of identifiers, if the related region is arbitrary. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41)
-
-
42. A processor-implemented method to generate a data structure in memory, comprising:
-
generating instruction signals, wherein the signal states embody a data structure having interrelated data types for;
a pointer to a data set;
a field to identify a size of each dimension for the data set;
a pointer to a parent vector, whereby the parent pointer is a self-pointer when there is no reference subvector;
a pointer to a structure of row pointers;
a first-dimension pointer and a second-dimension pointer if the second-dimension of the data set is unit size;
a field for numeric data points. - View Dependent Claims (43, 44)
-
-
45. A processor-implemented method to generate an interaction interface in memory, comprising:
-
generating instruction signals, wherein the interaction interface is responsive to user and system event signals and wherein the instruction signals are issueable by a processor for invoking;
a widget to accept a pointer to a data set;
a widget to accept a field to identify a size of each dimension for the data set;
a widget to accept a pointer to a parent vector, whereby the parent pointer is a self-pointer when there is no reference subvector;
a widget to accept a pointer to a structure of row pointers. a widget to accept a first-dimension pointer and a second-dimension pointer if the second-dimension of the data set is unit size. a widget to accept a field for numeric data points. - View Dependent Claims (46, 47)
-
Specification