Hi,
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.
Environment:
Device: AMD Radeon R9 380OS: 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.
Thanks for reporting the issue.
Yes, it seems that clEnqueueSVMMemcpy API is not working as expected. I'll check it further and do the needful.
Regards,
Update:
I've filed a bug report against it and dev. team is working on it. As I get any update, I'll share with you. Thanks for your patience.
Regards,
Is there any progress? Does it work in the latest drivers?
The issue has been fixed. As I checked the above code with the latest driver, it worked fine.
Regards,
Which driver did you use? I have 15.12-15.302-151217a-297685e and it still does not work. Did you test it on Linux?
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.
Regards,
OK, that's what I've thought, thanks!