Python API¶
Pipeline¶
-
class
nvidia.dali.pipeline.Pipeline(batch_size=-1, num_threads=-1, device_id=-1, seed=-1, exec_pipelined=True, exec_async=True, bytes_per_sample=0, set_affinity=False, max_streams=-1)¶ Pipeline class encapsulates all data required to define and run DALI input pipeline.
Parameters: - batch_size (int, optional, default = -1) – Batch size of the pipeline. Negative values for this parameter are invalid - the default value may only be used with serialized pipeline (the value stored in serialized pipeline is used instead).
- num_threads (int, optional, default = -1) – Number of CPU threads used by the pipeline. Negative values for this parameter are invalid - the default value may only be used with serialized pipeline (the value stored in serialized pipeline is used instead).
- device_id (int, optional, default = -1) – Id of GPU used by the pipeline. Negative values for this parameter are invalid - the default value may only be used with serialized pipeline (the value stored in serialized pipeline is used instead).
- seed (int, optional, default = -1) – Seed used for random number generation. Leaving the default value for this parameter results in random seed.
- exec_pipelined (bool, optional, default = True) – Whether to execute the pipeline in a way that enables overlapping CPU and GPU computation, typically resulting in faster execution speed, but larger memory consumption.
- exec_async (bool, optional, default = True) – Whether to execute the pipeline asynchronously.
This makes
nvidia.dali.pipeline.Pipeline.run()method run asynchronously with respect to the calling Python thread. In order to synchronize with the pipeline one needs to callnvidia.dali.pipeline.Pipeline.outputs()method. - bytes_per_sample (int, optional, default = 0) – A hint for DALI for how much memory to use for its tensors.
- set_affinity (bool, optional, default = False) – Whether to set CPU core affinity to the one closest to the GPU being used.
- max_streams (int, optional, default = -1) – Limit the number of CUDA streams used by the executor. Value of -1 does not impose a limit. This parameter is currently unused (and behavior of unrestricted number of streams is assumed).
-
batch_size¶ Batch size.
-
build()¶ Build the pipeline.
Pipeline needs to be built in order to run it standalone. Framework-specific plugins handle this step automatically.
-
define_graph()¶ This function is defined by the user to construct the graph of operations for their pipeline.
It returns a list of output TensorReference.
-
deserialize_and_build(serialized_pipeline)¶ Deserialize and build the pipeline given in serialized form.
Parameters: serialized_pipeline (str) – Serialized pipeline.
-
device_id¶ Id of the GPU used by the pipeline.
-
epoch_size(name=None)¶ Epoch size of a pipeline.
If the name parameter is None, returns a dictionary of pairs (reader name, epoch size for that reader). If the name parameter is not None, returns epoch size for that reader.
Parameters: name (str, optional, default = None) – The reader which should be used to obtain epoch size.
-
feed_input(ref, data)¶ Bind the NumPy array to a tensor produced by ExternalSource operator.
-
iter_setup()¶ This function can be overriden by user-defined pipeline to perform any needed setup for each iteration. For example, one can use this function to feed the input data from NumPy arrays.
-
num_threads¶ Number of CPU threads used by the pipeline.
-
outputs()¶ Returns the outputs of the pipeline.
If the pipeline is executed asynchronously, this function blocks until the results become available.
-
run()¶ Run the pipeline and return the result.
If the pipeline was created with exec_async option set to True, this function will also start prefetching the next iteration for faster execution.
-
save_graph_to_dot_file(filename)¶ Saves the pipeline graph to a file.
Parameters: filename (str) – Name of the file to which the graph is written.
-
serialize()¶ Serialize the pipeline to a Protobuf string.
Tensor¶
-
class
nvidia.dali.backend.TensorCPU¶ -
copy_to_external(self: nvidia.dali.backend_impl.TensorCPU, ptr: object) → None¶ Copy to external pointer in the CPU memory.
Parameters: ptr (ctypes.c_void_p) – Destination of the copy.
-
dtype(self: nvidia.dali.backend_impl.TensorCPU) → str¶ String representing NumPy type of the Tensor.
-
shape(self: nvidia.dali.backend_impl.TensorCPU) → List[int]¶ Shape of the tensor.
-
squeeze(self: nvidia.dali.backend_impl.TensorCPU) → None¶ Remove single-dimensional entries from the shape of the Tensor.
-
-
class
nvidia.dali.backend.TensorGPU¶ -
copy_to_external(self: nvidia.dali.backend_impl.TensorGPU, ptr: object) → None¶ Copy to external pointer in the GPU memory.
Parameters: ptr (ctypes.c_void_p) – Destination of the copy.
-
dtype(self: nvidia.dali.backend_impl.TensorGPU) → str¶ String representing NumPy type of the Tensor.
-
shape(self: nvidia.dali.backend_impl.TensorGPU) → List[int]¶ Shape of the tensor.
-
squeeze(self: nvidia.dali.backend_impl.TensorGPU) → None¶ Remove single-dimensional entries from the shape of the Tensor.
-
TensorList¶
-
class
nvidia.dali.backend.TensorListCPU¶ -
as_tensor(self: nvidia.dali.backend_impl.TensorListCPU) → nvidia.dali.backend_impl.TensorCPU¶ Returns a tensor that is a view of this TensorList.
This function can only be called if is_dense_tensor returns True.
-
at(self: nvidia.dali.backend_impl.TensorListCPU, arg0: int) → array¶ Returns tensor at given position in the list.
-
copy_to_external(self: nvidia.dali.backend_impl.TensorListCPU, arg0: object) → None¶ Copy the contents of this TensorList to an external pointer (of type ctypes.c_void_p) residing in CPU memory.
This function is used internally by plugins to interface with tensors from supported Deep Learning frameworks.
-
is_dense_tensor(self: nvidia.dali.backend_impl.TensorListCPU) → bool¶ Checks whether all tensors in this TensorList have the same shape (and so the list itself can be viewed as a tensor).
For example, if TensorList contains N tensors, each with shape (H,W,C) (with the same values of H, W and C), then the list may be viewed as a tensor of shape (N, H, W, C).
-
-
class
nvidia.dali.backend.TensorListGPU¶ -
asCPU(self: nvidia.dali.backend_impl.TensorListGPU) → nvidia.dali.backend_impl.TensorListCPU¶ Returns a TensorListCPU object being a copy of this TensorListGPU.
-
as_tensor(self: nvidia.dali.backend_impl.TensorListGPU) → nvidia.dali.backend_impl.TensorGPU¶ Returns a tensor that is a view of this TensorList.
This function can only be called if is_dense_tensor returns True.
-
copy_to_external(self: nvidia.dali.backend_impl.TensorListGPU, arg0: object) → None¶ Copy the contents of this TensorList to an external pointer (of type ctypes.c_void_p) residing in CPU memory.
This function is used internally by plugins to interface with tensors from supported Deep Learning frameworks.
-
is_dense_tensor(self: nvidia.dali.backend_impl.TensorListGPU) → bool¶ Checks whether all tensors in this TensorList have the same shape (and so the list itself can be viewed as a tensor).
For example, if TensorList contains N tensors, each with shape (H,W,C) (with the same values of H, W and C), then the list may be viewed as a tensor of shape (N, H, W, C).
-
Enums¶
-
class
nvidia.dali.types.DALIDataType¶ Data type of image
-
BOOL= DALIDataType.BOOL¶
-
DATA_TYPE= DALIDataType.DATA_TYPE¶
-
FEATURE= DALIDataType.FEATURE¶
-
FLOAT= DALIDataType.FLOAT¶
-
FLOAT16= DALIDataType.FLOAT16¶
-
IMAGE_TYPE= DALIDataType.IMAGE_TYPE¶
-
INT32= DALIDataType.INT32¶
-
INT64= DALIDataType.INT64¶
-
INTERP_TYPE= DALIDataType.INTERP_TYPE¶
-
NO_TYPE= DALIDataType.NO_TYPE¶
-
STRING= DALIDataType.STRING¶
-
TENSOR_LAYOUT= DALIDataType.TENSOR_LAYOUT¶
-
UINT8= DALIDataType.UINT8¶
-
-
class
nvidia.dali.types.DALIInterpType¶ Interpolation mode
-
INTERP_CUBIC= DALIInterpType.INTERP_CUBIC¶
-
INTERP_LINEAR= DALIInterpType.INTERP_LINEAR¶
-
INTERP_NN= DALIInterpType.INTERP_NN¶
-