This is a major update of CuLab which bring lots of new functionalities and improvements.
New Features
Added “Computer Vision” palette with the following new functions: Images are represented as T2D tensors. Grayscale images are represented with help of U8, I8, U16, I16, SGL datatypes, while color images (e.g. ARGB) are represented using U32 datatype. Some functions also support batch mode of operation in which case the batch of images are provided as T3D tensors.
CU_CV_GrayMorpholgy.vi - Performs grayscale morphological transformations.
Supported operations: Erode, Dilate
Supported input types: U8, U16, SGL.
Batch mode supported: False.
CU_CV_Resample.vi - Performs resampling operation.
Supported input types: All CV types.
Batch mode supported: True.
CU_CV_Extract.vi - Extracts a portion of the input image.
Supported input types: All CV types.
Batch mode supported: True.
Added new function in “Signal Operation” subpalette:
CU_Digital_Down_Conversion.vi - Performs digital down conversion.
Supported input types: SGL, DBL, CSG, CDB.
Batch mode supported: True.
CU_Convolution_Batch.vi – Performs batch convolution operation.
Supports 1D MCH-MCH, MCH-1CH modes.
Batched instances in CU_Convolution polymorphic vi have been removed.
Added support for 2D convolution to CU_Convolution.vi.
Supported input types: SGL, DBL.
Changed the “FFT” subpalette name to “Transforms” and added the following functions:
CU_Hilbert_Transform.vi - Computes the fast Hilbert transform of the input Tensor.
Accepted input Tensor types: SGL, DBL
Supported dimensionalities: T1D.
CU_Analytic_Signal.vi - Computes the complex Analytic Signal of the real-valued input Tensor.
Accepted input Tensor types: SGL, DBL
Return Tensor types: CSG, CDB
Supported dimensionalities: T1D.
Added “Boolean Operation” palette with the following functions.
CU_Boolean_2in.vi – compound function for different binary(two-input) logical operations:
AND
OR
XOR
NAND
NOR
XNOR
Select X
Select Y
CU_Boolean_Not.vi
CU_And_Array_Elements.vi
CU_Or_Array_Elements.vi
Added “Comparison Operation” palette with the following functions.
CU_Compare_1_Input.vi – compound function for different unary (single-input) comparison operations:
Equal To 0?
Not Equal To 0?
Greater Than 0?
Greater Or Equal To 0?
Less than 0?
Less Or Equal To 0?
CU_Compare_2_Inputs.vi – compound function for different binary (two-input) comparison operations.
Equal?
Not Equal?
Greater?
Greater Or Equal?
Less?
Less Or Equal?
Supports all Tensor types. Accepts Comparison with a Constant.
CU_In_Range_and_Coerce.vi
Supports all Tensor types, except complex types.
Supports all tensor dimensionalities except T0D.
CU_Max_Min.vi
Supports all Tensor types, except complex types.
Supports tensor dimensionalities: T1D, T2D.
Added “Lookup” subpalette in “Array” palette with the following functions.
CU_Array_Lookup_by_Index.vi - Returns a Tensor containing elements of the input Tensor specified by Index Tensor.
Supports all tensor dimensionalities except T0D.
Supports all Tensor types.
CU_Array_Lookup_by_Bool.vi - Returns a Tensor containing elements of the input Tensor, that have a value 1 (TRUE) in Boolean input Tensor.
Supports all tensor dimensionalities except T0D.
Supports all Tensor types, except complex types.
Added new function in “Array” palette.
CU_Replace_Array_Elemenets_by_Index_Batch.vi - replaces elements in input Tensor with elements from Sub-Tensor at indices specified in Index-Tensor
Supports tensor dimensionalities: T1D, T2D.
Accepts all input Tensor types.
Added new functions in “Numeric” palette.
CU_Add_Broadcast.vi - Performs broadcast addition of T2D with T1D
Supported input types: SGL, DBL, CSG, CDB.
CU_Multiply_Broadcast.vi - Performs broadcast multiplication of T2D with T1D
Supported input types: SGL, DBL, CSG, CDB.
Added option for swapping inputs in tensor-constant operations for CU_Subtract.vi and CU_Divide.vi
Added the following function in “Conversion” subpalette.
CU_To_U64.vi
Added “Utilities” palette with the following function:
Get_Exec_Time.vi – returns the execution time.
Added the following function in “Device Management” subpalette.
CU_Get_CUDA_Version.vi – returns CUDA version.
CU_Reset_GPU.vi - Destroy all allocations and reset all states.
Added GPU info tool in help menu (Help>Ngene>CuLab>GPU Info...).
Optimizations
Significantly optimized the efficiency of data movement between CPU and GPU which leads to significant (30-40% for common benchmarks) improvement of toolkit overall performance.
Optimized the execution of numeric conversion functions.
Optimized the execution of CU_Array_Subset.vi
Significantly improved the performance of CU_Tensor_Create_Push.vi and CU_Tensor_Push.vi.
Optimized the memory, context, and other resource management functionalities.
Other optimizations.
Bug Fixes
Fixed input tensor types for T1D:DBL instance of CU_Inverse_Tangent_2_input.vi.
The functionality of T4D instances of CU_Array_Subset.vi have been corrected.
Fixed array max dimension (65535) issue in CU_Power_Spectrum.vi.
CU_Decimate_Single_Shot.vi connector pane changed to match with LabVIEW Decimate Single Shot vi.
Renamed the following functions to conform with the common naming conventions.
From “CU_Square Root.vi” to “CU_Square_Root.vi”
From “CU_Add Array Elements.vi” to “CU_Add_Array_Elements.vi”
Fixed the bug of incorrect results in CU_Square.vi for complex inputs.
Fixed the CPU memory leakage bug in CU_Tensor_Destroy.vi.
Other minor fixes.
Comments