Class BaseNDManager
- java.lang.Object
-
- ai.djl.ndarray.BaseNDManager
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
BaseNDManager.TempResource
-
Nested classes/interfaces inherited from interface ai.djl.ndarray.NDManager
NDManager.SystemNDManager
-
-
Field Summary
Fields Modifier and Type Field Description protected NDManager
alternativeManager
protected java.util.concurrent.atomic.AtomicBoolean
capped
protected java.util.concurrent.atomic.AtomicBoolean
closed
protected Device
device
protected java.lang.String
name
protected NDManager
parent
protected java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.AutoCloseable>
resources
protected java.util.concurrent.ConcurrentHashMap<java.lang.String,BaseNDManager.TempResource>
tempResources
protected java.lang.String
uid
-
Constructor Summary
Constructors Modifier Constructor Description protected
BaseNDManager(NDManager parent, Device device)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description NDArray
arange(float start, float stop, float step, DataType dataType)
Returns evenly spaced values within a given interval.void
attachInternal(java.lang.String resourceId, java.lang.AutoCloseable... resources)
Attaches a resource to thisNDManager
.void
attachUncappedInternal(java.lang.String resourceId, java.lang.AutoCloseable resource)
Attaches a resource to thisNDManager
circumventing any cap protection.void
cap()
Caps this manager to prevent unintentional attachment of resources.void
close()
static void
copyBuffer(java.nio.Buffer src, java.nio.ByteBuffer target)
Copies data from the sourceBuffer
to the targetByteBuffer
.NDArray
create(Shape shape, DataType dataType)
NDArray
create(java.lang.String[] data, java.nio.charset.Charset charset, Shape shape)
Creates a StringNDArray
based on the provided shape.NDArray
createCoo(java.nio.Buffer data, long[][] indices, Shape shape)
Creates a Coordinate Format (COO) Matrix.NDArray
createCSR(java.nio.Buffer data, long[] indptr, long[] indices, Shape shape)
Creates a Compressed Sparse Row Storage (CSR) Format Matrix.NDArray
createRowSparse(java.nio.Buffer data, Shape dataShape, long[] indices, Shape shape)
Stores the matrix in row sparse format.void
debugDump(int level)
Prints information about thisNDManager
and all sub-managers to the console.Device
defaultDevice()
Returns the default context used in Engine.void
detachInternal(java.lang.String resourceId)
Detaches aNDArray
from thisNDManager
's lifecycle.NDArray
eye(int rows, int cols, int k, DataType dataType)
Returns a 2-D array with ones on the diagonal and zeros elsewhere.NDArray
full(Shape shape, float value, DataType dataType)
Return a newNDArray
of given shape, filled with value.Device
getDevice()
Returns the defaultDevice
of thisNDManager
.java.util.List<NDArray>
getManagedArrays()
Returns allNDArray
s managed by this manager (including recursively).java.lang.String
getName()
Gets the name of the NDManager.NDManager
getParentManager()
Returns the parentNDManager
.void
invoke(java.lang.String operation, NDArray[] src, NDArray[] dest, ai.djl.util.PairList<java.lang.String,?> params)
An engine specific generic invocation to native operation.NDList
invoke(java.lang.String operation, NDList src, ai.djl.util.PairList<java.lang.String,?> params)
An engine specific generic invocation to native operation.boolean
isOpen()
Check if the manager is still valid.NDArray
linspace(float start, float stop, int num, boolean endpoint)
Returns evenly spaced numbers over a specified interval.NDList
load(java.nio.file.Path path)
Loads the NDArrays saved to a file.NDManager
newSubManager()
Creates a childNDManager
.NDArray
randomInteger(long low, long high, Shape shape, DataType dataType)
Returns random integer values from low (inclusive) to high (exclusive).NDArray
randomMultinomial(int n, NDArray pValues)
Draw samples from a multinomial distribution.NDArray
randomMultinomial(int n, NDArray pValues, Shape shape)
Draw samples from a multinomial distribution.NDArray
randomNormal(float loc, float scale, Shape shape, DataType dataType)
Draws random samples from a normal (Gaussian) distribution.NDArray
randomPermutation(long n)
Returns a random permutation of integers from 0 to n - 1.NDArray
randomUniform(float low, float high, Shape shape, DataType dataType)
Draws samples from a uniform distribution.NDArray
sampleGamma(NDArray alpha, NDArray beta)
Draw random samples from a gamma distribution.NDArray
sampleGamma(NDArray alpha, NDArray beta, Shape shape)
Draw random samples from a gamma distribution.NDArray
sampleNormal(NDArray mu, NDArray sigma)
Concurrent sampling from multiple normal distributions with parameters *mu* (mean) and *sigma* (standard deviation).NDArray
sampleNormal(NDArray mu, NDArray sigma, Shape shape)
Concurrent sampling from multiple normal distributions with parameters *mu* (mean) and *sigma* (standard deviation).NDArray
samplePoisson(NDArray lam)
Draw random samples from a Poisson distribution.NDArray
samplePoisson(NDArray lam, Shape shape)
Draw random samples from a Poisson distribution.void
setName(java.lang.String name)
Sets the name for the NDManager.void
tempAttachInternal(NDManager originalManager, java.lang.String resourceId, NDResource resource)
Temporarily attaches a resource to thisNDManager
to be returned when this is closed.java.lang.String
toString()
NDArray
truncatedNormal(float loc, float scale, Shape shape, DataType dataType)
Draws random samples from a normal (Gaussian) distribution, discarding and re-drawing any samples that are more than two standard deviations from the mean.static void
validateBuffer(java.nio.Buffer buffer, DataType dataType, int expected)
Checks if the input buffer size is match expected data type.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ai.djl.ndarray.NDManager
allocateDirect, arange, arange, arange, arange, arange, arange, arange, arange, attachAll, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, create, createCSR, createCSR, createRowSparse, decode, decode, eye, eye, eye, eye, from, full, full, full, getEngine, hanningWindow, linspace, linspace, linspace, linspace, load, newSubManager, ones, ones, ones, randomNormal, randomNormal, randomNormal, randomUniform, randomUniform, ret, tempAttachAll, truncatedNormal, truncatedNormal, truncatedNormal, zeros, zeros, zeros
-
-
-
-
Field Detail
-
parent
protected NDManager parent
-
alternativeManager
protected NDManager alternativeManager
-
uid
protected java.lang.String uid
-
name
protected java.lang.String name
-
device
protected Device device
-
resources
protected java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.AutoCloseable> resources
-
tempResources
protected java.util.concurrent.ConcurrentHashMap<java.lang.String,BaseNDManager.TempResource> tempResources
-
closed
protected java.util.concurrent.atomic.AtomicBoolean closed
-
capped
protected java.util.concurrent.atomic.AtomicBoolean capped
-
-
Method Detail
-
defaultDevice
public final Device defaultDevice()
Returns the default context used in Engine.The default type is defined by whether the deep learning engine is recognizing GPUs available on your machine. If there is no GPU available, CPU will be used.
- Specified by:
defaultDevice
in interfaceNDManager
- Returns:
- a
Device
-
create
public NDArray create(java.lang.String[] data, java.nio.charset.Charset charset, Shape shape)
Creates a StringNDArray
based on the provided shape.
-
createCSR
public NDArray createCSR(java.nio.Buffer data, long[] indptr, long[] indices, Shape shape)
Creates a Compressed Sparse Row Storage (CSR) Format Matrix.- Specified by:
createCSR
in interfaceNDManager
- Parameters:
data
- the data to set for the CSR Matrixindptr
- the indptr array is what will help identify the rows where the data appearsindices
- the indices array stores the column index for each non-zero element in datashape
- theShape
of theNDArray
- Returns:
- a new instance of
NDArray
-
createRowSparse
public NDArray createRowSparse(java.nio.Buffer data, Shape dataShape, long[] indices, Shape shape)
Stores the matrix in row sparse format.
-
createCoo
public NDArray createCoo(java.nio.Buffer data, long[][] indices, Shape shape)
Creates a Coordinate Format (COO) Matrix.
-
load
public NDList load(java.nio.file.Path path)
Loads the NDArrays saved to a file.
-
setName
public void setName(java.lang.String name)
Sets the name for the NDManager.
-
getName
public java.lang.String getName()
Gets the name of the NDManager.
-
full
public NDArray full(Shape shape, float value, DataType dataType)
Return a newNDArray
of given shape, filled with value.
-
arange
public NDArray arange(float start, float stop, float step, DataType dataType)
Returns evenly spaced values within a given interval.Values are generated within the half-open interval [start, stop) (in other words, the interval including start but excluding stop). For integer arguments, the function is equivalent to the Python built-in range function, but returns an instance of
NDArray
rather than a list.
-
eye
public NDArray eye(int rows, int cols, int k, DataType dataType)
Returns a 2-D array with ones on the diagonal and zeros elsewhere.- Specified by:
eye
in interfaceNDManager
- Parameters:
rows
- the number of rows int the outputcols
- the number of columns in the outputk
- the index of the diagonal: a positive value refers to an upper diagonal, and a negative value to a lower diagonaldataType
- theDataType
of theNDArray
- Returns:
- a
NDArray
where all elements are equal to zero, except for the k-th diagonal, whose values are equal to one
-
linspace
public NDArray linspace(float start, float stop, int num, boolean endpoint)
Returns evenly spaced numbers over a specified interval.Returns num evenly spaced samples, calculated over the interval [start, stop].The endpoint of the interval can optionally be excluded.
-
randomInteger
public NDArray randomInteger(long low, long high, Shape shape, DataType dataType)
Returns random integer values from low (inclusive) to high (exclusive).- Specified by:
randomInteger
in interfaceNDManager
- Parameters:
low
- Lowest (signed) longs to be drawn from the distributionhigh
- one above the largest (signed) long to be drawn from the distributionshape
- theShape
of theNDArray
dataType
- theDataType
of theNDArray
- Returns:
- the drawn samples
NDArray
-
randomPermutation
public NDArray randomPermutation(long n)
Returns a random permutation of integers from 0 to n - 1.- Specified by:
randomPermutation
in interfaceNDManager
- Parameters:
n
- (int) – the upper bound (exclusive)- Returns:
- a random permutation of integers from 0 to n - 1.
-
randomUniform
public NDArray randomUniform(float low, float high, Shape shape, DataType dataType)
Draws samples from a uniform distribution.Samples are uniformly distributed over the half-open interval [low, high) (includes low, but excludes high). In other words, any value within the given interval is equally likely to be drawn by uniform.
- Specified by:
randomUniform
in interfaceNDManager
- Parameters:
low
- the lower boundary of the output interval. All values generated will be greater than or equal to low.high
- the upper boundary of the output interval. All values generated will be less than high.shape
- theShape
of theNDArray
dataType
- theDataType
of theNDArray
- Returns:
- the drawn samples
NDArray
-
randomNormal
public NDArray randomNormal(float loc, float scale, Shape shape, DataType dataType)
Draws random samples from a normal (Gaussian) distribution.
-
truncatedNormal
public NDArray truncatedNormal(float loc, float scale, Shape shape, DataType dataType)
Draws random samples from a normal (Gaussian) distribution, discarding and re-drawing any samples that are more than two standard deviations from the mean.
-
randomMultinomial
public NDArray randomMultinomial(int n, NDArray pValues)
Draw samples from a multinomial distribution.The multinomial distribution is a multivariate generalization of the binomial distribution. Take an experiment with one of p possible outcomes. An example of such an experiment is throwing a dice, where the outcome can be 1 through 6. Each sample drawn from the distribution represents n such experiments. Its values, X_i = [X_0, X_1, ..., X_p], represent the number of times the outcome was i.
- Specified by:
randomMultinomial
in interfaceNDManager
- Parameters:
n
- the number of experimentspValues
- the probabilities of each of the p different outcomes. These should sum to 1 The last element is always assumed to account for the remaining probability, as long as pValues.sum().getFloat() <= 1)- Returns:
- the drawn samples
NDArray
-
randomMultinomial
public NDArray randomMultinomial(int n, NDArray pValues, Shape shape)
Draw samples from a multinomial distribution.The multinomial distribution is a multivariate generalization of the binomial distribution. Take an experiment with one of p possible outcomes. An example of such an experiment is throwing a dice, where the outcome can be 1 through 6. Each sample drawn from the distribution represents n such experiments. Its values, X_i = [X_0, X_1, ..., X_p], represent the number of times the outcome was i.
- Specified by:
randomMultinomial
in interfaceNDManager
- Parameters:
n
- the number of experimentspValues
- the probabilities of each of the p different outcomes. These should sum to 1 The last element is always assumed to account for the remaining probability, as long as pValues.sum().getFloat() <= 1)shape
- the outputShape
- Returns:
- the drawn samples
NDArray
-
sampleNormal
public NDArray sampleNormal(NDArray mu, NDArray sigma)
Concurrent sampling from multiple normal distributions with parameters *mu* (mean) and *sigma* (standard deviation).- Specified by:
sampleNormal
in interfaceNDManager
- Parameters:
mu
- Means of the distributionssigma
- Standard deviations of the distributions- Returns:
- the drawn samples
NDArray
-
sampleNormal
public NDArray sampleNormal(NDArray mu, NDArray sigma, Shape shape)
Concurrent sampling from multiple normal distributions with parameters *mu* (mean) and *sigma* (standard deviation).- Specified by:
sampleNormal
in interfaceNDManager
- Parameters:
mu
- Means of the distributionssigma
- Standard deviations of the distributionsshape
- Shape to be sampled from each random distribution- Returns:
- the drawn samples
NDArray
-
samplePoisson
public NDArray samplePoisson(NDArray lam)
Draw random samples from a Poisson distribution.Samples are distributed according to a Poisson distribution parametrized by *lambda* (rate). Samples will always be returned as a floating point data type.
- Specified by:
samplePoisson
in interfaceNDManager
- Parameters:
lam
- Lambda (rate) parameters of the distributions- Returns:
- the drawn samples
NDArray
-
samplePoisson
public NDArray samplePoisson(NDArray lam, Shape shape)
Draw random samples from a Poisson distribution.Samples are distributed according to a Poisson distribution parametrized by *lambda* (rate). Samples will always be returned as a floating point data type.
- Specified by:
samplePoisson
in interfaceNDManager
- Parameters:
lam
- Lambda (rate) parameters of the distributionsshape
- Shape to be sampled from each random distribution- Returns:
- the drawn samples
NDArray
-
sampleGamma
public NDArray sampleGamma(NDArray alpha, NDArray beta)
Draw random samples from a gamma distribution.Samples are distributed according to a gamma distribution parametrized by *alpha* (shape) and *beta* (scale).
- Specified by:
sampleGamma
in interfaceNDManager
- Parameters:
alpha
- The shape of the gamma distributionbeta
- The scale of the gamma distribution- Returns:
- the drawn samples
NDArray
-
sampleGamma
public NDArray sampleGamma(NDArray alpha, NDArray beta, Shape shape)
Draw random samples from a gamma distribution.Samples are distributed according to a gamma distribution parametrized by *alpha* (shape) and *beta* (scale).
- Specified by:
sampleGamma
in interfaceNDManager
- Parameters:
alpha
- The shape of the gamma distributionbeta
- The scale of the gamma distributionshape
- Shape to be sampled from each random distribution- Returns:
- the drawn samples
NDArray
-
isOpen
public boolean isOpen()
Check if the manager is still valid.
-
cap
public void cap()
Caps this manager to prevent unintentional attachment of resources. This is useful to detect memory leaks at an early point in time. The attachment of sub managers is still allowed after this method has been called.
-
getParentManager
public NDManager getParentManager()
Returns the parentNDManager
.- Specified by:
getParentManager
in interfaceNDManager
- Returns:
- the parent
NDManager
-
newSubManager
public NDManager newSubManager()
Creates a childNDManager
.Child
NDManager
will inherit defaultDevice
from thisNDManager
.- Specified by:
newSubManager
in interfaceNDManager
- Returns:
- a child
NDManager
-
getManagedArrays
public java.util.List<NDArray> getManagedArrays()
Returns allNDArray
s managed by this manager (including recursively).- Specified by:
getManagedArrays
in interfaceNDManager
- Returns:
- all
NDArray
s managed by this manager (including recursively)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
attachInternal
public void attachInternal(java.lang.String resourceId, java.lang.AutoCloseable... resources)
Attaches a resource to thisNDManager
.The attached resource will be closed when this
NDManager
is closed.This attachment is internal. Many resources will internally track which manager they are attached to. In that case, you should call
NDResource.attach(NDManager)
instead and that should then call attachInternal.- Specified by:
attachInternal
in interfaceNDManager
- Parameters:
resourceId
- the unique resourceIdresources
- theAutoCloseable
resource to be attached
-
attachUncappedInternal
public void attachUncappedInternal(java.lang.String resourceId, java.lang.AutoCloseable resource)
Attaches a resource to thisNDManager
circumventing any cap protection.The attached resource will be closed when this
NDManager
is closed.This attachment is internal. Many resources will internally track which manager they are attached to. In that case, you should call
NDResource.attach(NDManager)
instead and that should then call attachInternal.- Specified by:
attachUncappedInternal
in interfaceNDManager
- Parameters:
resourceId
- the unique resourceIdresource
- theAutoCloseable
resource to be attached
-
tempAttachInternal
public void tempAttachInternal(NDManager originalManager, java.lang.String resourceId, NDResource resource)
Temporarily attaches a resource to thisNDManager
to be returned when this is closed.The attached resource will be returned to it's original manager when this
NDManager
is closed.This attachment is internal. Many resources will internally track which manager they are attached to. In that case, you should call
NDResource.attach(NDManager)
instead and that should then call tempAttachInternal.- Specified by:
tempAttachInternal
in interfaceNDManager
- Parameters:
originalManager
- the original manager to return the resource toresourceId
- the unique resourceIdresource
- theAutoCloseable
resource to be attached
-
detachInternal
public void detachInternal(java.lang.String resourceId)
Detaches aNDArray
from thisNDManager
's lifecycle.The detached
NDArray
become un-managed, it's user's responsibility to close the resource. Failed to close the resource has to wait on GC to be freed, and might cause out of native memory.This detach is internal. Many resources will internally track which manager they are attached to. In that case, you should call
NDResource.detach()
instead and that should then call detachInternal.- Specified by:
detachInternal
in interfaceNDManager
- Parameters:
resourceId
- the resourceId to be removed from thisNDManager
's lifecycle
-
invoke
public void invoke(java.lang.String operation, NDArray[] src, NDArray[] dest, ai.djl.util.PairList<java.lang.String,?> params)
An engine specific generic invocation to native operation.You should avoid using this function if possible. Since this function is engine specific, using this API may cause a portability issue. Native operation may not be compatible between each version.
-
invoke
public NDList invoke(java.lang.String operation, NDList src, ai.djl.util.PairList<java.lang.String,?> params)
An engine specific generic invocation to native operation.You should avoid using this function if possible. Since this function is engine specific, using this API may cause a portability issue. Native operation may not compatible between each version.
-
close
public void close()
-
debugDump
public void debugDump(int level)
Prints information about thisNDManager
and all sub-managers to the console.- Parameters:
level
- the level of thisNDManager
in the hierarchy
-
validateBuffer
public static void validateBuffer(java.nio.Buffer buffer, DataType dataType, int expected)
Checks if the input buffer size is match expected data type.- Parameters:
buffer
- the input bufferdataType
- the desiredDataType
expected
- the expected size- Throws:
java.lang.IllegalArgumentException
- if buffer size is invalid
-
copyBuffer
public static void copyBuffer(java.nio.Buffer src, java.nio.ByteBuffer target)
Copies data from the sourceBuffer
to the targetByteBuffer
.- Parameters:
src
- the sourceBuffer
target
- the targetByteBuffer
-
-