I try to copy host data to shared virtual memory buffer using clEnqueueSVMMemcpy (and the other way), but
it does not work. It does not copy the data. Example in the attached file (ofc OpenCL 2.0 is required).
Everything is fine if I use map/unmap operations instead of clEnqueueSVMMemcpy to copy data between host
array and svm buffer.
Device: AMD Radeon R9 380
OS: Linux Mint 17.2 (3.16) x64
Platform Version: OpenCL 2.0 AMD-APP (1800.11)
Device OpenCL C version: OpenCL C 2.0
AMD GPU Drivers: 15.9 (15.201.1151)
I check and when I assign an event to clEnqueueSVMMemcpy() operation and want to get CL_PROFILING_COMMAND_START and CL_PROFILING_COMMAND_END using clGetEventProfilingInfo() I get error
CL_PROFILING_INFO_NOT_AVAILABLE (with CL_QUEUE_PROFILING_ENABLE set ofc). I can't even wait for that event, because I get CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST.
If I measure execution time with std::chrono it's always 0 ms, no matter how big copied data is.
Actually I checked with the latest Crimson 16.5.3 (Desktop ) on Windows. Unfortunately current Linux driver 15.12 doesn't have the fix as it got released before that. So, I guess, you've to wait for the corresponding Linux version (can't say about the timeline though). Sorry for the inconvenience.