To give it some more underpinning, I searched for a benchmark.
I only found one for cuda so far from 2012: http://www.timzaman.com/?p=2256
Results in a table:
https://docs.google.com/spreadsheet/pub?key=0AkfBSyx6TpqMdDFnclY5UjlyNmVsSnhGV0hscnJQcVE&output=html
Resulting graph:


I think the scale is speedup from using the gpu, so the cpu is always one.

2014-12-08 19:07 GMT+01:00 Simon Danisch <sdani...@gmail.com>:

> Strictly faster is probably a little bit exaggerated
> <http://www.dict.cc/englisch-deutsch/exaggerated.html>, but simple image
> manipulations fit the GPU very well. This should be valid for all
> algorithms which can be massively parallelized
> <http://www.dict.cc/englisch-deutsch/parallelized.html>  and don't use
> scatter writes or reads.
> So if you have decent video card, the cpu should have a hard time to match
> the performance.
> I'm not sure about the transfers, as OpenCV might actually do transfers
> even in the UMat case... It's not that obvious how they manage their memory.
>
> 2014-12-08 18:58 GMT+01:00 Tim Holy <tim.h...@gmail.com>:
>
>> Now that you posted the code (along with timing markers), it's much
>> clearer.
>> Your timings are just for the computation, and don't include transfer
>> time.
>>
>> My "misleading" statement was not intended as an accusation :-), merely
>> trying
>> to help explain the gaussian blur result: if you included transfer time
>> in one
>> but not the other, that might explain it. But from your posted code, it's
>> clear that wasn't the problem.
>>
>> --Tim
>>
>> On Monday, December 08, 2014 09:54:03 AM Max Suster wrote:
>> > Its an exact comparison side-by-side of the same code, and actually
>> already
>> > tested by others in the OpenCV forum.
>> > The Mat/UMat image is available for display with imshow -- the step
>> "imshow(
>> > "edges", gray);" in both cases -- which is how the test was set up. The
>> > main point is the time it takes to complete the entire process and the
>> fact
>> > that cvtColor with OpenCL can generate an image for viewing much more
>> > quickly.
>> >
>> > I never intended to be misleading, and I am sorry that you interpret it
>> > this way.
>> >
>> > Max
>> >
>> > On Monday, December 8, 2014 6:22:39 PM UTC+1, Tim Holy wrote:
>> > > I wonder if the bigger problem might be that your numbers for the
>> > > grayscale
>> > > conversion (which were very promising) might be misleading. Are you
>> sure
>> > > the
>> > > calculation is "done" (and the results are available to the CPU) by
>> the
>> > > time
>> > > it finishes? If we assume a best-case scenario of 6GB/s of data
>> transfer
>> > > to the
>> > > GPU, then transferring 3MB to the GPU and 1MB back takes about 0.7ms.
>> > > That's
>> > > many times longer than what you reported for that calculation. Or did
>> you
>> > > not
>> > > include transfer time in your results?
>> > >
>> > > --Tim
>> > >
>> > > On Monday, December 08, 2014 05:50:32 PM Simon Danisch wrote:
>> > > > That's interesting, gaussian blur should definitely be faster on the
>> > >
>> > > gpu!
>> > >
>> > > > Maybe this thread helps?
>> > > > http://answers.opencv.org/question/34127/opencl-in-opencv-300/
>> > > > It seems like things are a little complicated, as it isn't really
>> clear
>> > >
>> > > if
>> > >
>> > > > the data is currently in VRAM or RAM...
>> > > >
>> > > > 2014-12-08 17:39 GMT+01:00 Max Suster <mxss...@gmail.com
>> <javascript:>>:
>> > > > > Thanks for the feedback.  I realize that the copying needs to be
>> > >
>> > > skipped
>> > >
>> > > > > if possible . . .
>> > > > > I have been playing a bit with the OpenCL UMat and it will need
>> indeed
>> > > > > some tweeking because UMat is not always advantageous.
>> > > > > While there 10x gain with cvtColor and other functions such as
>> > > > > GasussianBlur are actually a little slower.
>> > > > >
>> > > > > I will have closer look at this tonight.
>> > > > >
>> > > > > Max
>> > > > >
>> > > > > On Monday, December 8, 2014 4:15:28 PM UTC+1, Simon Danisch wrote:
>> > > > >> If you're interested here are some more links:
>> > > > >> https://software.intel.com/en-us/articles/opencl-and-opengl-> >>
>> > >
>> > > interoperability-tutorial
>> > >
>> > > > >> Valentine's and mine prototype for OpenGL OpenCL
>> interoperability in
>> > > > >> Julia:
>> > > > >> https://github.com/vchuravy/qjulia_gpu
>> > > > >>
>> > > > >> Am Samstag, 6. Dezember 2014 11:44:45 UTC+1 schrieb Max Suster:
>> > > > >>> Hi all,
>> > > > >>>
>> > > > >>> A few months ago I set out to learn Julia in an attempt to find
>> an
>> > > > >>> alternative to MATLAB for developing computer vision
>> applications.
>> > > > >>> Given the interest (1
>> > > > >>> <
>> > >
>> > >
>> https://groups.google.com/forum/#!searchin/julia-users/OpenCV/julia-use
>> > >
>> > > > >>> rs/PjyfzxPt8Gk/SuwKtjTd9j4J> ,2
>> > > > >>> <
>> > >
>> > >
>> https://groups.google.com/forum/#!searchin/julia-users/OpenCV/julia-use
>> > >
>> > > > >>> rs/81V5zSNJY3Q/DRUT0dR2qhQJ> ,3
>> > > > >>> <
>> > >
>> > >
>> https://groups.google.com/forum/%23!searchin/julia-users/OpenCV/julia-u
>> > >
>> > > > >>> sers/iUPqo8drYek/pUeHECk91AQJ> ,4
>> > > > >>> <
>> > >
>> > >
>> https://groups.google.com/forum/%23!searchin/julia-users/OpenCV/julia-u
>> > >
>> > > > >>> sers/6QunG66MfNs/C63pDfI-EMAJ> ) and wide application of OpenCV
>> for
>> > >
>> > > fast
>> > >
>> > > > >>> real-time computer vision applications, I set myself to put
>> together
>> > >
>> > > a
>> > >
>> > > > >>> simple interface for OpenCV in Julia.  Coding in Julia and
>> > >
>> > > developing
>> > >
>> > > > >>> the interface between C++ and Julia has been a lot of fun!
>> > > > >>>
>> > > > >>> OpenCV.jl aims to provide an interface for OpenCV <
>> > >
>> > > http://opencv.org/>
>> > >
>> > > > >>> computer vision applications (C++) directly in Julia
>> > > > >>> <http://julia.readthedocs.org/en/latest/manual/>. It relies
>> > >
>> > > primarily
>> > >
>> > > > >>> on Keno´s amazing Cxx.jl <https://github.com/Keno/Cxx.jl>, the
>> > >
>> > > Julia
>> > >
>> > > > >>> C++ foreign function interface (FFI).  You can find all the
>> > >
>> > > information
>> > >
>> > > > >>> on
>> > > > >>> my package at https://github.com/maxruby/OpenCV.jl.
>> > > > >>>
>> > > > >>> You can download and run the package as follows:
>> > > > >>>
>> > > > >>> Pkg.clone("git://github.com/maxruby/OpenCV.jl.git")using OpenCV
>> > > > >>>
>> > > > >>>
>> > > > >>> For MacOSX, OpenCV.jl comes with pre-compiled shared libraries,
>> so
>> > >
>> > > it is
>> > >
>> > > > >>> extremely easy to run.  For Windows and Linux, you will need to
>> > >
>> > > first
>> > >
>> > > > >>> compile the OpenCV libraries, but this is well documented and
>> links
>> > >
>> > > to
>> > >
>> > > > >>> the
>> > > > >>> instructions for doing so are included in the README.md file.
>> > > > >>>
>> > > > >>> The package currently supports most of OpenCV´s C++ API;
>> however, at
>> > > > >>> this point I have created custom wrappings for core, imgproc,
>> > >
>> > > videoio
>> > >
>> > > > >>> and highgui modules so that these are easy to use for anyone.
>> > > > >>>
>> > > > >>> The package also demonstrates/contains
>> > > > >>>
>> > > > >>>    - preliminary interface with the Qt GUI framework (see
>> imread()
>> > >
>> > > and
>> > >
>> > > > >>>    imwrite() functions)
>> > > > >>>    - thin-wrappers for C++ objects such as std::vectors,
>> > >
>> > > std::strings
>> > >
>> > > > >>>    - conversion from Julia arrays to C++ std::vector
>> > > > >>>    - conversion of Julia images (Images.jl) to Mat (OpenCV) -
>> though
>> > > > >>>    this has much room for improvement (i.e., color handling)
>> > > > >>>
>> > > > >>> Please let me know if there are any features you would like to
>> see
>> > >
>> > > added
>> > >
>> > > > >>> and I will try my best to integrate them. In the meantime, I
>> will
>> > > > >>> continue
>> > > > >>> to integrate more advanced algorithms for computer vision and
>> > >
>> > > eventually
>> > >
>> > > > >>> extend the documentation as needed.
>> > > > >>>
>> > > > >>> Cheers,
>> > > > >>> Max
>>
>>
>

Reply via email to