Skip to content

Developer Tools: OpenVX

Kiriti Gowda edited this page Oct 11, 2023 · 9 revisions

AMD OpenVX Developer Tools

AMD OpenVX implementation is enabled with useful tools for developers to debug their OpenVX applications. The implementation supports several debug options Turned ON by different ENVIRONMENT VARIABLES. Below is a list of available features.

ENVIRONMENT VARIABLES Supported

  • AGO_DEFAULT_TARGET - set default target to be CPU or GPU AGO_DEFAULT_TARGET=CPU/GPU
  • AGO_DUMP_GPU - dump OpenCL kernel if environment variable AGO_DUMP_GPU is specified with dump file path prefix [output file name will be $(AGO_DUMP_GPU)-<group>.cl]
  • AGO_DUMP_GRAPH - user request for graph dump AGO_DUMP_GRAPH=1
  • AGO_OPENCL_BUILD_OPTIONS - override build options with environment variable [-cl-std=CL1.2 : -cl-std=CL2.0]
  • AGO_OPENCL_DEVICE_INFO - override affinity device info
  • AGO_OPENCL_PLATFORM - opencl platform override variable
  • AGO_OPENCL_VERSION_CHECK - check for OpenCL version, force OpenCL 1.2 if environment variable AGO_OPENCL_VERSION_CHECK=1.2
  • AGO_THREAD_CONFIG - initialize thread config through environmental variable
  • ENABLE_DEBUG_DUMP_CL_BUFFERS - Set variable to 1 to dump OpenCL buffers
  • ENABLE_DEBUG_MESSAGES - 0:disable 1:enable [default:0]
  • ENABLE_LOCAL_DEBUG_MESSAGES - Set variable to 1 to get detailed debug information on OpenCL workflow
  • SHOW_DEBUG_HIERARCHICAL_LEVELS - Debug hierarchical node levels in the openvx graph 0:disable 1:enable [default:0]
  • VX_GRAPH_ATTRIBUTE_AMD_OPTIMIZER_FLAGS - Graph optimizer flags to turn on or off optimizations
    AGO_GRAPH_OPTIMIZER_FLAG_NO_DIVIDE                0x00000001 // don't run drama divide
    AGO_GRAPH_OPTIMIZER_FLAG_NO_REMOVE_COPY_NODES     0x00000002 // don't remove unnecessary copy operations
    AGO_GRAPH_OPTIMIZER_FLAG_NO_REMOVE_UNUSED_OUTPUTS 0x00000004 // don't remove nodes with unused outputs
    AGO_GRAPH_OPTIMIZER_FLAG_NO_NODE_MERGE            0x00000008 // don't perform node merge
    AGO_GRAPH_OPTIMIZER_FLAG_NO_CONVERT_8BIT_TO_1BIT  0x00000010 // don't convert 8-bit images to 1-bit images
    AGO_GRAPH_OPTIMIZER_FLAG_NO_SUPERNODE_MERGE       0x00000020 // don't merge supernodes
    AGO_GRAPH_OPTIMIZER_FLAGS_DEFAULT                 0x00000000 // default options
    
  • AGO_BUFFER_MERGE_FLAGS - list of virtual data (D) that need GPU buffers and mark if CPU access is not needed for virtual buffers

MIOpen Dump CMD

export MIOPEN_ENABLE_LOGGING=1
export MIOPEN_ENABLE_LOGGING_CMD=1
export MIOPEN_LOG_LEVEL=6

Comipler

  • NOTE: Check compiler options - gcc -v --help 2> /dev/null | sed -n '/^ *-std=\([^<][^ ]\+\).*/ {s//\1/p}'

FFMPEG Video Convertor - H264 to H265

ffmpeg -i data/videos/AMD_driving_virtual_20.mp4 -c:v libx265 -vtag hvc1 data/videos/AMD_driving_virtual_20-H265.mp4