Class BaseNDManager
- java.lang.Object
-
- ai.djl.ndarray.BaseNDManager
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classBaseNDManager.TempResource-
Nested classes/interfaces inherited from interface ai.djl.ndarray.NDManager
NDManager.SystemNDManager
-
-
Field Summary
Fields Modifier and Type Field Description protected NDManageralternativeManagerprotected java.util.concurrent.atomic.AtomicBooleancappedprotected java.util.concurrent.atomic.AtomicBooleanclosedprotected Devicedeviceprotected java.lang.Stringnameprotected NDManagerparentprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.AutoCloseable>resourcesprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,BaseNDManager.TempResource>tempResourcesprotected java.lang.Stringuid
-
Constructor Summary
Constructors Modifier Constructor Description protectedBaseNDManager(NDManager parent, Device device)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description NDArrayarange(float start, float stop, float step, DataType dataType)Returns evenly spaced values within a given interval.voidattachInternal(java.lang.String resourceId, java.lang.AutoCloseable... resources)Attaches a resource to thisNDManager.voidattachUncappedInternal(java.lang.String resourceId, java.lang.AutoCloseable resource)Attaches a resource to thisNDManagercircumventing any cap protection.voidcap()Caps this manager to prevent unintentional attachment of resources.voidclose()static voidcopyBuffer(java.nio.Buffer src, java.nio.ByteBuffer target)Copies data from the sourceBufferto the targetByteBuffer.NDArraycreate(Shape shape, DataType dataType)NDArraycreate(java.lang.String[] data, java.nio.charset.Charset charset, Shape shape)Creates a StringNDArraybased on the provided shape.NDArraycreateCoo(java.nio.Buffer data, long[][] indices, Shape shape)Creates a Coordinate Format (COO) Matrix.NDArraycreateCSR(java.nio.Buffer data, long[] indptr, long[] indices, Shape shape)Creates a Compressed Sparse Row Storage (CSR) Format Matrix.NDArraycreateRowSparse(java.nio.Buffer data, Shape dataShape, long[] indices, Shape shape)Stores the matrix in row sparse format.voiddebugDump(int level)Prints information about thisNDManagerand all sub-managers to the console.DevicedefaultDevice()Returns the default context used in Engine.voiddetachInternal(java.lang.String resourceId)Detaches aNDArrayfrom thisNDManager's lifecycle.NDArrayeye(int rows, int cols, int k, DataType dataType)Returns a 2-D array with ones on the diagonal and zeros elsewhere.NDArrayfull(Shape shape, float value, DataType dataType)Return a newNDArrayof given shape, filled with value.DevicegetDevice()Returns the defaultDeviceof thisNDManager.java.util.List<NDArray>getManagedArrays()Returns allNDArrays managed by this manager (including recursively).java.lang.StringgetName()Gets the name of the NDManager.NDManagergetParentManager()Returns the parentNDManager.voidinvoke(java.lang.String operation, NDArray[] src, NDArray[] dest, ai.djl.util.PairList<java.lang.String,?> params)An engine specific generic invocation to native operation.NDListinvoke(java.lang.String operation, NDList src, ai.djl.util.PairList<java.lang.String,?> params)An engine specific generic invocation to native operation.booleanisOpen()Check if the manager is still valid.NDArraylinspace(float start, float stop, int num, boolean endpoint)Returns evenly spaced numbers over a specified interval.NDListload(java.nio.file.Path path)Loads the NDArrays saved to a file.NDManagernewSubManager()Creates a childNDManager.NDArrayrandomInteger(long low, long high, Shape shape, DataType dataType)Returns random integer values from low (inclusive) to high (exclusive).NDArrayrandomMultinomial(int n, NDArray pValues)Draw samples from a multinomial distribution.NDArrayrandomMultinomial(int n, NDArray pValues, Shape shape)Draw samples from a multinomial distribution.NDArrayrandomNormal(float loc, float scale, Shape shape, DataType dataType)Draws random samples from a normal (Gaussian) distribution.NDArrayrandomPermutation(long n)Returns a random permutation of integers from 0 to n - 1.NDArrayrandomUniform(float low, float high, Shape shape, DataType dataType)Draws samples from a uniform distribution.NDArraysampleGamma(NDArray alpha, NDArray beta)Draw random samples from a gamma distribution.NDArraysampleGamma(NDArray alpha, NDArray beta, Shape shape)Draw random samples from a gamma distribution.NDArraysampleNormal(NDArray mu, NDArray sigma)Concurrent sampling from multiple normal distributions with parameters *mu* (mean) and *sigma* (standard deviation).NDArraysampleNormal(NDArray mu, NDArray sigma, Shape shape)Concurrent sampling from multiple normal distributions with parameters *mu* (mean) and *sigma* (standard deviation).NDArraysamplePoisson(NDArray lam)Draw random samples from a Poisson distribution.NDArraysamplePoisson(NDArray lam, Shape shape)Draw random samples from a Poisson distribution.voidsetName(java.lang.String name)Sets the name for the NDManager.voidtempAttachInternal(NDManager originalManager, java.lang.String resourceId, NDResource resource)Temporarily attaches a resource to thisNDManagerto be returned when this is closed.java.lang.StringtoString()NDArraytruncatedNormal(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 voidvalidateBuffer(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:
defaultDevicein interfaceNDManager- Returns:
- a
Device
-
create
public NDArray create(java.lang.String[] data, java.nio.charset.Charset charset, Shape shape)
Creates a StringNDArraybased 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:
createCSRin 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- theShapeof 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 newNDArrayof 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
NDArrayrather 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:
eyein 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- theDataTypeof theNDArray- Returns:
- a
NDArraywhere 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:
randomIntegerin interfaceNDManager- Parameters:
low- Lowest (signed) longs to be drawn from the distributionhigh- one above the largest (signed) long to be drawn from the distributionshape- theShapeof theNDArraydataType- theDataTypeof 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:
randomPermutationin 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:
randomUniformin 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- theShapeof theNDArraydataType- theDataTypeof 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:
randomMultinomialin 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:
randomMultinomialin 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:
sampleNormalin 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:
sampleNormalin 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:
samplePoissonin 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:
samplePoissonin 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:
sampleGammain 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:
sampleGammain 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:
getParentManagerin interfaceNDManager- Returns:
- the parent
NDManager
-
newSubManager
public NDManager newSubManager()
Creates a childNDManager.Child
NDManagerwill inherit defaultDevicefrom thisNDManager.- Specified by:
newSubManagerin interfaceNDManager- Returns:
- a child
NDManager
-
getManagedArrays
public java.util.List<NDArray> getManagedArrays()
Returns allNDArrays managed by this manager (including recursively).- Specified by:
getManagedArraysin interfaceNDManager- Returns:
- all
NDArrays managed by this manager (including recursively)
-
toString
public java.lang.String toString()
- Overrides:
toStringin 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
NDManageris 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:
attachInternalin interfaceNDManager- Parameters:
resourceId- the unique resourceIdresources- theAutoCloseableresource to be attached
-
attachUncappedInternal
public void attachUncappedInternal(java.lang.String resourceId, java.lang.AutoCloseable resource)Attaches a resource to thisNDManagercircumventing any cap protection.The attached resource will be closed when this
NDManageris 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:
attachUncappedInternalin interfaceNDManager- Parameters:
resourceId- the unique resourceIdresource- theAutoCloseableresource to be attached
-
tempAttachInternal
public void tempAttachInternal(NDManager originalManager, java.lang.String resourceId, NDResource resource)
Temporarily attaches a resource to thisNDManagerto be returned when this is closed.The attached resource will be returned to it's original manager when this
NDManageris 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:
tempAttachInternalin interfaceNDManager- Parameters:
originalManager- the original manager to return the resource toresourceId- the unique resourceIdresource- theAutoCloseableresource to be attached
-
detachInternal
public void detachInternal(java.lang.String resourceId)
Detaches aNDArrayfrom thisNDManager's lifecycle.The detached
NDArraybecome 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:
detachInternalin 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 thisNDManagerand all sub-managers to the console.- Parameters:
level- the level of thisNDManagerin 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 desiredDataTypeexpected- 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 sourceBufferto the targetByteBuffer.- Parameters:
src- the sourceBuffertarget- the targetByteBuffer
-
-