Intel's OpenCL also supports later CPU features even AVX.
Also it seems that application should detect CPU & video harware to
choose either CPU acceletartion (Intel HDA VGA or Core* CPU, AMD
multicore) or GPU acceleration (AMD or NVdia GPU provided by drivers)
will be used so that to use proper OpenCL DLL but it definetely worths
of efforts because of huge pefromance improvement.
Thought OpenCL use a bit different workflow:
--------------------------------
This library deals with image processing. To use the library it is
necessary to understand these concepts :
1. Images and Buffers - OpenCL can represent images in device memory
in two ways : As a Image or as a Buffer
Some operations are faster when using an Image (like filters and
morphology) while some are faster when using buffers (like arithmetic
and reductions).
The choice of Image or Buffer will depend on the program used.
An Image or a Buffer must be created using a SImage structure to
inform the library about the size and type of the image.
When creating an Image or a Buffer, the memory space is allocated
on the device
That memory space will not be initialized.
Use ocipSend* and ocipRead* to transfer data to and from the device.
2. Programs
Before processing can be done, OpenCL needs to have a Program and
needs to have that program built for the type of image used.
Programs are in .cl files in a folder distributed with this library
ocipSetCLFilesPath() needs to be called to tell the library where
those files are
ocipPrepare*() needs to be called to create the desired program and build it
3. Synchronous and asynchronous
OpenCL works with an operation queue
When an operation is issued, it is added to the queue
All previous operations are guaranteed to be done before starting
the next item in the queue.
These operations can be memory transfers and processing functions
Asynchronous functions :
ocipSendImage
ocipSendImageBuffer
Most processing functions
These functions will return almost immediately.
The image transfer or image processing will happens asyncrhonously.
Read functions :
ocipReadImage
ocipReadImageBuffer
The read functions will issue a reading operation and then wait for
all operations to complete.
So after a read function returns, it is guaranteed to contain the
resulting data of the previously issued operations.
4. Processing functions
The processing functions are grouped by program
To use a processing function, a handle to the corresponding program
must be used.
Each of these functions does the following :
If the program was not built for the image type used, the program is built
If the source images/buffers have not been sent to device
memory, a Send operation is added to the queue for each source.
The processing operation is added to the queue.
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
mseide-msegui-talk mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk