With Kaveri out, we now have HSA in our hands. Great, but what flags do I need to use for clEnqueueMapBuffer to avoid data-copying? I have my guesses, but I'd like to hear from you.
For the normal map/unmap-procedure I prefer I could keep using the standard "pinned memory", so I don't need to change my existing code and can leave it to the driver to get it there as fast as possible. But when I want to have two threads (one CPU and one GPU) use the same memory, what do I use then?
What I know is written here: OpenCL Basics: Flags for the creating memory objects - Blog - StreamComputing
We do not yet have the programming model for HSA development from AMD nor the drivers or SDK to develop it. My understanding is there will be a new function that acts much like a pointer in C. Unfortunately, it may be as late as June until we see that information.
(AnandTech Portal | AMD Kaveri Review: A8-7600 and A10-7850K Tested) Base HSA stack: Base HSA execution stack supporting HSAIL and HSA runtime for Kaveri is expected to become available in Q2 2014.
Yes. We have a new API (along with the appropriate flags) to enable sharing memory between CPU and GPU without any buffer copies or memory mapping. We will share this information when it becomes publicly available.
Its not clear to me whether you are looking for HSA or OpenCL2.0. If its HSA, then you can get the binaries and doc from HSA Foundation · GitHub and check the samples from there. If you're looking for OpenCL2.0, then you need to wait for sometime as AMD yet to publish its OpenCL2.0 support.
Note: For HSA related queries, there is a separate HSA forum.