OpenVX Custom Node Extension Library#

vx_amd_custom is an OpenVX AMD custom node extension module. This module currently has a single extension node namedcom.amd.custom_extension.custom_layer. This layer takes an input tensor and produces an output tensor using one of the custom functions specified by the user

More details of the usage and implementation of a new custion function can be found in - Creating Custom

Build Instructions#

It is built with MIVisionX package.

Pre-requisites#

  • AMD OpenVX library

  • ROCM installed system with AMD GPU

  • ROCm

Example 1: Using custom extension with example “Copy” function and CPU backend#

To show the usage of custom extension, an example function to “Copy” is implemented in custom_lib module. The follwing is the gdf to test it using runvx utility

import vx_amd_custom

# read and initialize input tensor
data input_1 = tensor:4,{3,1,1,1},FLOAT32,0

# please create a binary file to store 3 float values of input tensor and read the values into the tensor data
read input_1 input_tensor_1.bin

data output = tensor:4,{3,1,1,1},FLOAT32,0

data function = scalar:UINT32,0     # function 0 corresponds to default (Copy)
data backend = scalar:UINT32,0      # (0)CPU (1)GPU backend
node com.amd.custom_extension.custom_layer input_1 function backend NULL output
write output out_tensor_1.bin

  • To run the gdf using runvx use the command “runvx example.gdf”

  • After running the gdf using the runvx utility, you can see the out_tensor_1.bin will have the same data as input tensor

Example 2: Using custom extension with example “Copy” function and GPU backend#

To show the usage of custom extension an example function to “Copy” is implemented in custom_lib module. The follwing is the gdf to test it using runvx utility

import vx_amd_custom

# read and initialize input tensor
data input_1 = tensor:4,{3,1,1,1},FLOAT32,0

# please create a binary file to store 3 float values of input tensor
read input_1 input_tensor_1.bin

data output = tensor:4,{3,1,1,1},FLOAT32,0

data function = scalar:UINT32,0     #function 0 corresponds to default (Copy)
data backend = scalar:UINT32,1      # (0) CPU (1) GPU
node com.amd.custom_extension.custom_layer input_1 function backend NULL output
write output out_tensor_1.bin

  • To run the gdf using runvx use the command “runvx -affinity:GPU example.gdf”

  • After running the gdf using the runvx utility, you can see the out_tensor_1.bin will have the same data as input tensor