I&#x27;m looking at building a GPGPU program.<p>When I look at CUDA code, it seems to be a big loop targeting the GPU memory with standard c code, allocating memory with standard functions and specifying where code lives with simple defines.<p>When I look at OpenCL, it is... I don&#x27;t know what it is. I haven&#x27;t figure it out after considerable scanning. And that has cemented my decision to avoid it because I don&#x27;t have infinite time to scan obscurity.<p>For example, here is a standard &quot;first OpenCL program&quot; - ~200 lines of boiler plate <i>and</i> no simple example of our many cores working together to do something brutally simple and useful like add two vectors. Just &quot;hello world&quot; from GPU.<p>As far as I can tell, as a production of a multitude of vendors all of which have different stuff, OpenCl is a monstrosity where you have a wide of variety of functionalities supported but none of those functionalities is guaranteed to be present - hence 200 lines of boiler plate. Kind of like the umpteen Unix flavors and such back in the day, &quot;Open standards&quot; that are bridges between only semi-compatible hardware have generally been doomed abortions discarded in favor of a single best approach that all vendors are forced to adopt.<p>So it seems like the best thing is jettisoning the monstrosity and cloning CUDA for other hardware.<p><a href="https:&#x2F;&#x2F;www.fixstars.com&#x2F;en&#x2F;opencl&#x2F;book&#x2F;OpenCLProgrammingBook&#x2F;first-opencl-program&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.fixstars.com&#x2F;en&#x2F;opencl&#x2F;book&#x2F;OpenCLProgrammingBoo...</a>