MultiTypeSymEntry¶
Usage
use MultiTypeSymEntry;
or
import MultiTypeSymEntry;
- const genLogger = new Logger(logLevel, logChannel)¶
- enum SymbolEntryType { AbstractSymEntry, TypedArraySymEntry, PrimitiveTypedArraySymEntry, ComplexTypedArraySymEntry, GenSymEntry, SegStringSymEntry, CompositeSymEntry, GenSparseSymEntry, SparseSymEntry, GeneratorSymEntry, AnythingSymEntry, UnknownSymEntry, None }¶
Internal Types we can use to build our Symbol type hierarchy.
We are making the types a little more concrete than using Strings
- enum constant AbstractSymEntry¶
- enum constant TypedArraySymEntry¶
- enum constant PrimitiveTypedArraySymEntry¶
- enum constant ComplexTypedArraySymEntry¶
- enum constant GenSymEntry¶
- enum constant SegStringSymEntry¶
- enum constant CompositeSymEntry¶
- enum constant GenSparseSymEntry¶
- enum constant SparseSymEntry¶
- enum constant GeneratorSymEntry¶
- enum constant AnythingSymEntry¶
- enum constant UnknownSymEntry¶
- enum constant None¶
- class AbstractSymEntry¶
This is the root of our SymbolTable Entry / Typing system.
All other SymEntry classes should inherit from this class
or one of its ancestors and ultimately everything should
be assignable/coercible to this class.
All subclasses should set & add their type to the assignableTypes
set so we can maintain & determine the type hierarchy.
- var entryType : SymbolEntryType¶
- var assignableTypes : set(SymbolEntryType)¶
- var name = ""¶
- proc init()¶
- proc init(input)
- proc setName(name: string)¶
Sets the name of the entry when it is added to the Symbol Table
- proc isAssignableTo(entryType: SymbolEntryType) : bool¶
This can be used to help determine if a class can be
assigned / coerced / cast to another one in its hierarchy.
- proc getSizeEstimate() : int¶
This is a hook for the ServerConfig.overMemLimit procedure
All concrete classes should override this method
- proc entry__str__(thresh: int = 1, prefix: string = "", suffix: string = "", baseFormat: string = "") : string throws¶
Formats and returns data in this entry up to the specified threshold.
Arrays of size less than threshold will be printed in their entirety.
Arrays of size greater than or equal to threshold will print the first 3 and last 3 elements
- arg thresh:
threshold for data to return
- type thresh:
int
- arg prefix:
String to prepend to the front of the data string
- type prefix:
string
- arg suffix:
String to append to the tail of the data string
- type suffix:
string
- arg baseFormat:
String which represents the base format string for the data type
- type baseFormat:
string
- returns:
s (string) containing the array data
- proc toSymEntry(gse: borrowed GenSymEntry, type etype, param dimensions = 1)¶
Casts a GenSymEntry to the specified type and returns it.
- Arguments:
gse – generic sym entry
- class GenSymEntry : AbstractSymEntry¶
This is a dummy class to avoid having to talk about specific instantiations of SymEntry. GenSymEntries can contain multiple SymEntries, but they represent a singular object. For example, SegArray contains the offsets and values array, but only the values are considered data.
- var dtype : DType¶
- var itemsize : int¶
- var size : int = 0¶
- var ndim : int = 1¶
- var shape : string = "[0]"¶
- proc init(type etype, len: int = 0, ndim: int = 1)¶
Create a 1D GenSymEntry from an array element type and length
- override proc getSizeEstimate() : int¶
- proc toSymEntry(type etype, param dimensions = 1)¶
Cast this GenSymEntry to borrowed SymEntry(etype)
This function will halt if the cast fails.
- Arguments:
etype :
type
– SymEntry type parameter
- override proc entry__str__(thresh: int = 1, prefix: string = "", suffix: string = "", baseFormat: string = "") : string throws¶
Formats and returns data in this entry up to the specified threshold. Arrays of size less than threshold will be printed in their entirety. Arrays of size greater than or equal to threshold will print the first 3 and last 3 elements
- arg thresh:
threshold for data to return
- type thresh:
int
- arg prefix:
String to prepend to the front of the data string
- type prefix:
string
- arg suffix:
String to append to the tail of the data string
- type suffix:
string
- arg baseFormat:
String which represents the base format string for the data type
- type baseFormat:
string
- returns:
s (string) containing the array data
- proc attrib() : string throws¶
- class SymEntry : GenSymEntry¶
Symbol table entry
- type etype¶
generic element type array etype is different from dtype (chapel vs numpy)
- param dimensions : int¶
number of dimensions, to be passed back to the GenSymEntry so that we are able to make it visible to the Python client
- var tupShape : dimensions*int¶
the actual shape of the array, this has to live here, since GenSymEntry has to stay generic
- var a = makeDistArray(...tupShape, etype)¶
‘a’ is the distributed array whose value and type are defined by makeDist{Dom,Array}() to support varying distributions
- proc aD¶
Removed domain accessor, use a.domain instead
- var max_bits : int = -1¶
only used with bigint pdarrays
- proc init(a: [?D] ?etype, max_bits = -1) where MyDmap != Dmap.defaultRectangular && a.isDefaultRectangular()¶
Create a SymEntry from a defaultRectangular array (when the server is configured to create distributed arrays)
- Arguments:
a :
[] ?etype
– array
- proc init(in a: [?D] ?etype, max_bits = -1)
Create a SymEntry from an array
- proc init(args: int ...?N, type etype)
Create a SymEntry from a shape and element type
- Args len:
size of each dimension
- Arguments:
etype :
type
– type to be instantiated
- proc deinit()¶
Verbose flag utility method
- override proc entry__str__(thresh: int = 6, prefix: string = "[", suffix: string = "]", baseFormat: string = "%\?") : string throws¶
Formats and returns data in this entry up to the specified threshold. Arrays of size less than threshold will be printed in their entirety. Arrays of size greater than or equal to threshold will print the first 3 and last 3 elements
- arg thresh:
threshold for data to return
- type thresh:
int
- arg prefix:
String to pre-pend to the front of the data string
- type prefix:
string
- arg suffix:
String to append to the tail of the data string
- type suffix:
string
- arg baseFormat:
String which represents the base format string for the data type
- type baseFormat:
string
- returns:
s (string) containing the array data
- proc createSymEntry(shape: int ..., type etype) throws¶
- proc createSymEntry(in a: [?D] ?etype, max_bits = -1) throws
- class CompositeSymEntry : AbstractSymEntry¶
Base class for any entry that consists of multiple SymEntries that have varying types. These entries are related, but do not represent a single object. For Example, group by contains multiple SymEntries that are all considered part of the dataset.
- var ndim : int = 1¶
- var size : int = 0¶
- proc init(len: int = 0)¶
- proc attrib() : string throws¶
- proc createTypedSymEntry(len: int, type t) throws¶
Factory method for creating a typed SymEntry and checking mem limits
- arg len:
the number of elements to allocate
- type len:
int
- arg t:
the element type
- type t:
type
- class SegStringSymEntry : GenSymEntry¶
- type etype = string¶
- var offsetsEntry : shared SymEntry(int, 1)¶
- var bytesEntry : shared SymEntry(uint(8), 1)¶
- proc init(offsetsSymEntry: shared SymEntry(int), bytesSymEntry: shared SymEntry(uint(8)), type etype)¶
- override proc getSizeEstimate() : int¶
- override proc entry__str__(thresh: int = 1, prefix: string = "", suffix: string = "", baseFormat: string = "") : string throws¶
Formats and returns data in this entry up to the specified threshold.
Arrays of size less than threshold will be printed in their entirety.
Arrays of size greater than or equal to threshold will print the first 3 and last 3 elements
- arg thresh:
threshold for data to return
- type thresh:
int
- arg prefix:
String to prepend to the front of the data string
- type prefix:
string
- arg suffix:
String to append to the tail of the data string
- type suffix:
string
- arg baseFormat:
String which represents the base format string for the data type
- type baseFormat:
string
- returns:
s (string) containing the array data
- class GenSparseSymEntry : AbstractSymEntry¶
- var dtype : DType¶
- var itemsize : int¶
- var size : int = 0¶
- var nnz : int = 0¶
- var ndim : int = 2¶
- var shape : string = "[0,0]"¶
- var layoutStr : string = "UNKNOWN"¶
- proc init(type etype, size: int = 0, nnz: int, ndim: int = 2, layoutStr: string)¶
Create a 1D GenSymEntry from an array element type and length
- proc toSparseSymEntry(type etype, param dimensions = 2, param layout)¶
Cast this SparseGenSymEntry to borrowed SparseSymEntry(etype)
This function will halt if the cast fails.
- Arguments:
etype :
type
– SparseSymEntry type parameter
- override proc entry__str__(thresh: int = 1, prefix: string = "", suffix: string = "", baseFormat: string = "") : string throws¶
Formats and returns data in this entry up to the specified threshold. Arrays of size less than threshold will be printed in their entirety. Arrays of size greater than or equal to threshold will print the first 3 and last 3 elements
- arg thresh:
threshold for data to return
- type thresh:
int
- arg prefix:
String to prepend to the front of the data string
- type prefix:
string
- arg suffix:
String to append to the tail of the data string
- type suffix:
string
- arg baseFormat:
String which represents the base format string for the data type
- type baseFormat:
string
- returns:
s (string) containing the array data
- proc attrib() : string throws¶
- proc layoutToStr(param l) param¶
- class SparseSymEntry : GenSparseSymEntry¶
Symbol table entry
- type etype¶
generic element type array etype is different from dtype (chapel vs numpy)
- param dimensions : int¶
number of dimensions, to be passed back to the GenSparseSymEntry so that we are able to make it visible to the Python client
- var tupShape : dimensions*int¶
the actual shape of the array, this has to live here, since GenSparseSymEntry has to stay generic For now, each dimension is assumed to be equal.
- param matLayout : layout¶
layout of the sparse array: CSC or CSR
- var a = makeSparseArray(tupShape[0], etype, matLayout)¶
‘a’ is the distributed sparse array
- proc init(a, size, param matLayout, type eltType)¶
Create a SparseSymEntry from a shape and element type, etc.
- Args len:
size of each dimension
- Arguments:
etype :
type
– type to be instantiated
- override proc entry__str__(thresh: int = 6, prefix: string = "noprefix", suffix: string = "nosuffix", baseFormat: string = "%\?") : string throws¶
Formats and returns data in this entry up to the specified threshold. Matrices with nnz less than threshold will be printed in their entirety. Matrices with nnz greater than or equal to threshold will print the first 3 and last 3 elements
- arg thresh:
threshold for data to return
- type thresh:
int
- arg prefix:
String to pre-pend to the front of the data string
- type prefix:
string
- arg suffix:
String to append to the tail of the data string
- type suffix:
string
- arg baseFormat:
String which represents the base format string for the data type
- type baseFormat:
string
- returns:
s (string) containing the array data
- proc deinit()¶
Verbose flag utility method
- proc createSparseSymEntry(a, size, param matLayout, type eltType) throws¶
- proc makeSparseArray(size, type eltType, param matLayout)¶
- class GeneratorSymEntry : AbstractSymEntry¶
- type etype¶
- var generator : randomStream(etype)¶
- var state : int¶
- proc init(generator: randomStream(?etype), state: int = 1)¶
- proc toGenSymEntry(entry: borrowed AbstractSymEntry) throws¶
Helper proc to cast AbstrcatSymEntry to GenSymEntry
- proc toCompositeSymEntry(entry: borrowed AbstractSymEntry) throws¶
Helper proc to cast AbstractSymEntry to CompositeSymEntry
- proc toSegStringSymEntry(entry: borrowed AbstractSymEntry) throws¶
Helper proc to cast AbstractSymEntry to SegStringSymEntry
- proc toGenSparseSymEntry(entry: borrowed AbstractSymEntry) throws¶
Helper proc to cast AbstractSymEntry to GenSparseSymEntry
- proc toGeneratorSymEntry(entry: borrowed AbstractSymEntry, type t) throws¶
Helper proc to cast AbstractSymEntry to GeneratorSymEntry
- proc getArraySpecFromEntry(entry: borrowed AbstractSymEntry) throws¶
Temporary shim to ease transition to Typed Symbol Table Entries.
This attempts to retrieve the Dtype, size/array-length, and itemsize from a SymbolTable
entry if the entry type supports it. Returns default tuple of valuse otherwise.
- arg entry:
AbstractSymEntry or descendant
- type entry:
borrowed AbstractSymEntry
- retruns:
tuple of (dtype, entry.size, entry.itemsize)
Note: entry.size is generally the number of elements in the array
and is more synonymous with length
- proc tupShapeString(shape) : string¶
Create a string to represent a JSON tuple of an array’s shape
- proc tupShapeString(val: int, ndim: int) : string