For example, Epiphany doesn't have OpenCL Local Memory, Constant Memory, Caches, or multiple Compute Units. Instead there is a single Compute Unit built from many Processing Elements which each have a very large amount of Private Memory compared to GPUs. OpenCL also lacks a mechanism for moving data between Processing Elements' Private Memory. The term "Private Memory" is obviously a bit of a misnomer here when it is being shared between Processing Elements. See the overly simplified, cheesy diagram attachment below.
The Epiphany architecture has this Private Memory sharing capability in hardware and is used to extend the OpenCL specification with the memaddr/memcopy/memsync/memsend/memrecv routines found in . Data moved between neighboring Processing Elements in the 2D grid or off-chip to the shared host memory (OpenCL Global Memory).
So the OpenCL model is used where it applies to using Epiphany as a coprocessor/accelerator. And OpenCL is extended where it is lacking obvious capabilities.
See the that uses Private Memory sharing routines.Statistics: Posted by jar — Tue Dec 18, 2012 2:20 am
]]>