GithubHelp home page GithubHelp logo

gpuopen-professionalcompute-libraries / amdovx-core Goto Github PK

View Code? Open in Web Editor NEW
149.0 41.0 53.0 1.18 MB

AMD OpenVX Core -- a sub-module of amdovx-modules:

Home Page: https://github.com/GPUOpen-ProfessionalCompute-Libraries/amdovx-modules

License: MIT License

CMake 0.31% C++ 92.72% C 6.53% Objective-C 0.44%
openvx radeon-instinct-mi-series radeon-vega-series rocm radeon-open-compute amd-openvx opencl khronos-openvx amdgpu cpu

amdovx-core's Introduction

AMD OpenVX is now delivered in the MIVisionX. This content is archived for historical reference.

For the latest information on AMD OpenVX, go to https://gpuopen-professionalcompute-libraries.github.io/MIVisionX/

MIT licensed Build Status

AMD OpenVX (AMDOVX)

AMD OpenVX (beta) is a highly optimized open source implementation of the Khronos OpenVX computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded x86 CPUs and large workstation discrete GPUs.

IMPORTANT: amdovx-core is a part of https://github.com/GPUOpen-ProfessionalCompute-Libraries/amdovx-modules project that contain additional OpenVX modules, such as, neural network inference, 360 degree video stitching, etc.

The amdovx-core project consists of two components:

  • OpenVX: AMD OpenVX library
  • RunVX: command-line utility to execute OpenVX graph described in GDF text file
  • RunCL: command-line utility to build, execute, and debug OpenCL programs

The OpenVX framework provides a mechanism to add new vision functions to OpenVX by 3rd party vendors. Look into github amdovx-modules project for additional OpenVX modules and utilities.

  • vx_nn: OpenVX neural network module that was built on top of MIOpen
  • vx_loomsl: Radeon LOOM stitching library for live 360 degree video applications
  • loom_shell: an interpreter to prototype 360 degree video stitching applications using a script
  • vx_opencv: OpenVX module that implemented a mechanism to access OpenCV functionality as OpenVX kernels

This software is provided under a MIT-style license, see the file COPYRIGHT.txt for details.

Features

  • The code is highly optimized for both x86 CPU and OpenCL for GPU
  • Supported hardware spans the range from low power embedded APUs (like the new G series) to laptop, desktop and workstation graphics
  • Supports Windows, Linux, and OS X
  • Includes a “graph optimizer” that looks at the entire processing pipeline and removes/replaces/merges functions to improve performance and minimize bandwidth at runtime
  • Scripting support allows for rapid prototyping, without re-compiling at production performance levels

Pre-requisites

  • CPU: SSE4.1 or above CPU, 64-bit.
  • GPU: Radeon Professional Graphics Cards or Vega Family of Products (16GB required for vx_loomsl and vx_nn libraries)
    • Windows: install the latest drivers and OpenCL SDK download
    • Linux: install ROCm
  • OpenCV 3 (optional) download for RunVX
    • Set OpenCV_DIR environment variable to OpenCV/build folder

Build Instructions

Build this project to generate AMD OpenVX library and RunVX executable.

Build using Visual Studio Professional 2013 on 64-bit Windows 10/8.1/7

  • Install OpenCV 3 with contrib download for RunVX tool to support camera capture and image display (optional)
  • OpenCV_DIR environment variable should point to OpenCV/build folder
  • Use amdovx-core/amdovx.sln to build for x64 platform
  • If AMD GPU (or OpenCL) is not available, set build flag ENABLE_OPENCL=0 in openvx/openvx.vcxproj and runvx/runvx.vcxproj.

Build using CMake

  • Install CMake 2.8 or newer download.
  • Install OpenCV 3 with contrib download for RunVX tool to support camera capture and image display (optional)
  • OpenCV_DIR environment variable should point to OpenCV/build folder
  • Install libssl-dev on linux (optional)
  • Use CMake to configure and generate Makefile
  • If AMD GPU (or OpenCL) is not available, use build flag -DCMAKE_DISABLE_FIND_PACKAGE_OpenCL=TRUE.

amdovx-core's People

Contributors

kananlanginhooper avatar kiritigowda avatar lcskrishna avatar rgiduthuri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amdovx-core's Issues

Compilation errors in runvx/vxArray.cpp

Error:
amdovx-core/runvx/vxArray.cpp: In member function ‘virtual int CVxParamArray::Initialize(vx_context, vx_graph, const char*)’:
/home/sheldon/repositories/sheldonrobinson/amdovx-core/runvx/vxArray.cpp:67:42: error: ‘strcmp’ was not declared in this scope
if (strcmp(itemType, it->first.c_str()) == 0){

I believe "#include " should be "#include " in runvx/vxUtils.h
--- a/runvx/vxUtils.h
+++ b/runvx/vxUtils.h
@@ -42,7 +42,7 @@ THE SOFTWARE.
#include <inttypes.h>

#include
-#include
+#include
#include
#include
#include

build on arm64 target

Is it possible to get it comipled amdovx-core and amdove-modules for arm64 (aarch64) architecture?

Dilation node on GDF file

Im trying to write a dilation node using the opencv extended nodes lib.
For that I need to specify a kernel matrix.

#compute dilation
data kernelMatrix = matrix:UINT8,3,3:INIT,0;1;0;1;1;1;0;1;0
data anchorX = scalar:INT32,1
data anchorY = scalar:INT32,1
data iter = scalar:INT32,3
data border = scalar:INT32,4
node org.opencv.dilate not dilation kernelMatrix anchorX anchorY iter border

Gives me the error:
E:\Projects\SignsFramework\x64\Release>runvx.exe vx_ext_cv.gdf
runvx.exe 0.9.2
OK: using AMD OpenVX 0.9.2
OK: loaded 55 kernels from vx_ext_cv.dll
init done
opengl support available
ERROR: matrix creation failed => -12 (VX_ERROR_INVALID_REFERENCE)

Probably a syntax error: but how can it be fixed?
Cheers,
Bruno

Channel_combine in gdf

Hi,

I am trying a channel_combine with the following:

data out = image:1920,1080,RGB2
node org.khronos.openvx.channel_combine out_r out_g out_b out

or

data out = image:1920,1080,RGBX
node org.khronos.openvx.channel_combine out_r out_g out_b out_a out

Both produce errors. 1st one complains about missing 4th argument and the second about not being able to create RGBX. Is that normal?

Thanks

ERROR: clEnqueueNDRangeKernel(supernode,1,*,{1167360,0,0},...) failed(-54) for com.amd.loomsl.half_scale_gaussian

recreated from amdovx-modules

the problem looks like the local_work_size is not set for clEnqueueNDRangeKernel
and the kernel request the size
the docs says
The work-group size to be used for kernel can also be specified in the program source using the attribute((reqd_work_group_size(X, Y, Z)))qualifier. In this case the size of work group specified by local_work_size must match the value specified by the reqd_work_group_size attribute qualifier.

https://www.khronos.org/registry/OpenCL/sdk/1.0/docs/man/xhtml/clEnqueueNDRangeKernel.html

@rgiduthuri so the local_work_size should be the same as the reqd_work_group_size from the kernel right?

Inconsistent orders of params array?

Hi,

It seems that all VX functions defined in vx_nodes.cpp have the params array ordered as [input1,input2, ... inputK, output]. For example, vxAbsDiffNode() has its params[] being [in1, in2, out]. However, in ago_kernel_api.cpp, functions such as agoKernel_AbsDiff_U8_U8U8() actually assume a reverted order, for instance [oImg, iImg0, iImg1], which seems incorrect to me. Please let me know whether I missed something or there is an issue with this logic.

Thank you.

Best,
Thanh

Merging of nodes

I'm going through the Graph Manager code. As far as my understanding, merging of functions are not yet supported. Am I right?
If so, are you planning to release any updated version?

vxThresholdNode stride of Output image

Hi - When I use the vxThresholdNode the stride doesn't seem to be set for the output image. I am unable to use this output image as input to another node because of this. The input image to vxThresholdNode is of VX_DF_IMAGE_U8 type. Should I be doing something else to ensure that I get an output image with the stride set correctly?

Thanks!
Mayura

Camera setup on GDF file

How can I setup a GDF file to work with the camera as an input?
Anyone has a good idea?
Cheers

Error when building with OpenCL enabled

Hi - I am trying to build with OpenCL and am getting the following errors:
amdovx-core-master/openvx/ago/ago_util_opencl.cpp: In function ‘int agoGpuOclSetKernelArgs(cl_kernel, vx_uint32&, AgoData*, bool, vx_uint32, vx_uint32)’:
amdovx-core-master/openvx/ago/ago_util_opencl.cpp:697:9: error: ‘union cl_uint2’ has no member named ‘s0’
value.s0 = data->u.thr.threshold_lower;
^
amdovx-core-master/openvx/ago/ago_util_opencl.cpp:700:10: error: ‘union cl_uint2’ has no member named ‘s1’
value.s1 = data->u.thr.threshold_upper;
^
amdovx-core-master/openvx/ago/ago_util_opencl.cpp: In function ‘int agoGpuOclDataInputSync(_vx_graph*, cl_kernel, vx_uint32&, AgoData*, vx_uint32, vx_uint32, bool, bool, bool)’:
amdovx-core-master/openvx/ago/ago_util_opencl.cpp:931:9: error: ‘union cl_uint2’ has no member named ‘s0’
value.s0 = data->u.thr.threshold_lower;
^
amdovx-core-master/openvx/ago/ago_util_opencl.cpp:934:10: error: ‘union cl_uint2’ has no member named ‘s1’
value.s1 = data->u.thr.threshold_upper;
^

What am I doing wrong?
Thanks!

No break in vxQueryImage

No break in openvx\api\vx_api.cpp line 674-675 (function vxQueryImage, switch, VX_IMAGE_ATTRIBUTE_FORMAT), thus VX_IMAGE_ATTRIBUTE_PLANES always works instead.

        case VX_IMAGE_ATTRIBUTE_FORMAT:
            if (size == sizeof(vx_uint32)) {
                *(vx_df_image *)ptr = image->u.img.format;
                status = VX_SUCCESS;
            }
        case VX_IMAGE_ATTRIBUTE_PLANES:

should be

        case VX_IMAGE_ATTRIBUTE_FORMAT:
            if (size == sizeof(vx_uint32)) {
                *(vx_df_image *)ptr = image->u.img.format;
                status = VX_SUCCESS;
            }
            break;  // ***
        case VX_IMAGE_ATTRIBUTE_PLANES:

ERROR This build doesn't support CAMERA option

when i run runvx.exe in command line, such as : runvx.exe file canny.gdf

results is
OK: suing AMD OpenVX 0.9.1
OK enable graph scheduling in separate threads
ERROR: This build does't support CAMERA option

can you share where to modify source file or setting to solve this issue?

thanks.

GNU 6.3.1 SSE4.1 not found build error linux gcc 6.3.1

-- The C compiler identification is GNU 6.3.1
-- The CXX compiler identification is GNU 6.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/arpu/Work/githubsources/amdovx-core/build
arpu@localhost  ~/Work/githubsources/amdovx-core/build   master ?  export LC_ALL=C  ✓  6930  17:24:07
arpu@localhost  ~/Work/githubsources/amdovx-core/build   master ?  make  ✓  6931  17:24:09
Scanning dependencies of target openvx
[ 1%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_drama.cpp.o
[ 3%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_drama_alloc.cpp.o
[ 5%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_drama_analyze.cpp.o
[ 7%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_drama_divide.cpp.o
[ 9%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_drama_merge.cpp.o
[ 11%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_drama_remove.cpp.o
[ 13%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_haf_cpu.cpp.o
[ 15%] Building CXX object openvx/CMakeFiles/openvx.dir/ago/ago_haf_cpu_arithmetic.cpp.o
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Add_S16_U8U8(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32, vx_uint8*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:797:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:834:43: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Sub_S16_U8U8(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32, vx_uint8*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:986:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1022:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Add_S16_S16U8_Wrap(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1172:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1207:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Add_S16_S16U8_Sat(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1356:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1392:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Sub_S16_S16U8_Wrap(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1542:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1578:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Sub_S16_S16U8_Sat(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1728:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1764:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels2L = _mm_cvtepu8_epi16(pixels2L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Sub_S16_U8S16_Wrap(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32, vx_int16*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1910:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:1945:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp: In function 'int HafCpu_Sub_S16_U8S16_Sat(vx_uint32, vx_uint32, vx_int16*, vx_uint32, vx_uint8*, vx_uint32, vx_int16*, vx_uint32)':
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:2094:42: error: '_mm_cvtepu8_epi16' was not declared in this scope
pixels1L = _mm_cvtepu8_epi16(pixels1L);
^
/home/arpu/Work/githubsources/amdovx-core/openvx/ago/ago_haf_cpu_arithmetic.cpp:2130:42: error: '_mm_cvtepu8_epi16' was not declared in this scope

gdf Examples - display images is not supporting

I wanna run canny.gdf example and executing runvx.exe file canny.gdf I got:

c:\amdovx-core\build\runvx\Debug>runvx.exe -v file canny.gdf

***** VIDEOINPUT LIBRARY - 0.1995 - TFW07 *****

OK: using AMD OpenVX 0.9.1
OK: enabled graph scheduling in separate threads

include canny.gdf
data input = image:640,480,RGB2
data output = image:640,480,U008
read input raja-koduri-640x480.jpg
view input inputWindow
ERROR: display of image type ( ☺) is not support. Exiting.

How to resolve it?
Thank you.

Memory leak at harris corners graph optimization

I have a severe memory leak at openvx tutorial exercise1 (and solution1 too).
https://github.com/rgiduthuri/openvx_tutorial

linked with OpenVX.dll from this repo (no opencl)

Visual Studio 2013 community. x64. both debug and release.

Call stack of allocation

OpenVX.dll!agoOptimizeDramaAlloc(_vx_graph * agraph) Line 554 C++
OpenVX.dll!agoOptimizeDrama(_vx_graph * agraph) Line 565 C++
OpenVX.dll!agoOptimizeGraph(_vx_graph * agraph) Line 208 C++
OpenVX.dll!vxVerifyGraph(_vx_graph * graph) Line 1657 C++
OpenVX.dll!vxuHarrisCorners(_vx_context * context, _vx_image * input, _vx_scalar * strength_thresh, _vx_scalar * min_distance, _vx_scalar * sensitivity, int gradient_size, int block_size, _vx_array * corners, _vx_scalar * num_corners) Line 873 C++
exercise1.exe!main(int argc, char * * argv) Line 286 C++

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.