Thanks! That is very useful. Why is cvColor so slow in the Intel tests? I notice they used a 4000x4000, CV_8UC4 (Uint8, 4 channels) for the GaussianBlur test!
On Monday, December 8, 2014 7:16:42 PM UTC+1, Simon Danisch wrote: > > 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 <sdan...@gmail.com <javascript:>> > : > >> 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....@gmail.com <javascript:>>: >> >>> 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 >>> >>> >> >