N9VV webpages are an expression of my personal enthusiasm and excitement about the Apache Labs projects. I am editing the pages every day to make them attractive and accurate so that you will consider Apache Labs products when you purchase Ham Radio equipment. These pages are not sponsored by OpenHPSDR or Apache Labs. Copyright N9VV© 2012.




Hermann DL3HVH
advanced cuSDR
using OpenCL for Hermes

http://labs.qt.nokia.com/2010/04/07/using-opencl-with-qt/

What is OpenCL anyway?

For those new to it, OpenCL is an open, royalty-free standard for parallel programming in a heterogeneous computing environment. The most common use you’ve probably heard of is to run arbitrary C code on your system’s GPU. These days GPU’s are more powerful than CPU’s, having been designed to pump out hundreds of thousands of textured triangles per second in your favorite shoot-em-up video game.  To do this, the GPU has access to parallel vector processing that far exceeds the capability of x86/SSE or ARM/NEON instructions on your average CPU.

For years, shader languages like GLSL have made the vector capabilities of the GPU available for arbitrary shader effects in OpenGL, but you are basically limited to whatever parameters a “draw triangle” call takes. It’s also quite typical for OpenGL implementations to cut corners by using fixed-point and lower precisions.  The shader source code may say “float”, but it could be as little as 8 bits of actual precision.  While great for pumping out triangles where you won’t notice an “off-by-0.001? error, this isn’t very useful for supercomputing, common mathematical algorithms, and super-precise pixel blending.

Enter OpenCL.  It defines a new C-style language that is more precise as to mathematical precision, and which allows arbitrary arguments to be provided to an OpenCL function – known as a kernel – to do almost anything that C can do. Special vector types like “float4? are provided as well as an extensive mathematical library.  But its most impressive feature is work sizes – it is very easy to split your task up into small chunks that the GPU can scatter across all of its compute units (compute units include whatever CPUs and GPUs OpenCL can find, OpenCL uses everything available).  Unlike regular C where you can spend a lot of time writing outer loops and launching worker threads for subparts of your problem, OpenCL does it for you. We’ll see how that works shortly.
----------------------------------------------------


Beautiful Graphics in pdf format to explain basic OpenCL


gatech.edu explanation of OpenCL in pdf format




** IMAGES AND LINKS SHOWN HERE ARE SHARED WITH YOU
FOR ENTERTAINMENT PURPOSES ONLY **