All-
Here is the outline of my opencv proposal, along with a bit of rationale.
Please let me know when there are questions. Thanks.
-Jeff
1) For proof of concept / demo purposes, identify a compute intensive (i.e. slow) image processing chain / sequence of
operations frequently required by GeoServer users. So far, Jody, Andrea, and Jukka have mentioned crop, affine, warp,
transform (pls clarify -- coordinates? or transform like FFT or DCT?), resize (resample), rendering maps from vector
data...
2) The demo should be something that:
-everyone knows what to expect; i.e. not
difficult to tell it has been done right
-any speed improvement would have a major
impact on GeoServer users, especially
those with limited server resources
or those using cloud servers
-if the operation(s) requires video encode
or decode (e.g. H.264 or H.265), for
example due to cloud based operation,
that's fine (our accelerated version
of OpenCV handles that)
-if the operation(s) requires network I/O,
that's also fine (for same reason)
3) I assume that given the above input, my team can identify which JAI APIs are used. We would then implement an
interface layer between GeoServer and JAI that translates those APIs into equivalent or combination of OpenCV APIs.
For debug, results comparison, and benchmarking, it would be possible to control operation of each API.
In this step we may need community help in being sure we've got correct JAI APIs and correct usage. Obviously we
don't need any help on the OpenCV side.
4) This is a Signalogic effort, in close cooperation with Texas Instruments. We would be giving the interface layer
source code and any modified GeoServer source code back to the GeoServer community. If it works and gains approval, I
would expect it to become part of the GeoServer main branch.
5) The result would run with (i) x86 OpenCV alone (i.e. OpenCV open source, unmodified), and (ii) c66x OpenCV, which
means the OpenCV we have ported to Signalogic TI c66x CPU accelerator cards.
6a) I have no idea whether x86-only OpenCV will be faster than JAI or not.
6b) To be clear, Signalogic's major interest is in huge speed improvements (20 to 50 times) using the aforementioned
accelerator cards. This is typically called "hardware acceleration". However, this is *not* the GPU, FPGA, or ASIC
type of acceleration that might come to mind. The TI CPUs on the card have similar fundamental architecture as Intel
CPUs, can run any C, C++, and OpenMP code, are connected to their own NICs, have 2 GB of DDR3 memory each, etc. One
card has 64 cores; assuming a simple 1-to-1 core comparison with x86, the performance advantage can be quite
significant for a server with several cards.