Hello, everyone,

I have a problem when using CL_MEM_USE_HOST_PTR.


1. I want to use CL_MEM_USE_HOST_PTR to create a buffer of self-defined 
structure. After operated by GPU, I will reuse the memory in host.
The main method I use is:
... ...
clCreateBuffer(..., (void*)p, ...);
... ...
clSetKernelArg();
clEnqueueNDRangeKernel();
clFinish();
MyFunction(...,p, ...); //reuse the memory derectly pointed by p
...
clReleaseContext(context); // Failed to release test userptr object! (9) i915 
kernel driver may not be sane!


...


Problem: clReleaseContext() return CL_SUCCESS, but hints "Failed to release 
test userptr object! (9) i915 kernel driver may not be sane!", and then, 
continue to run.


2. "./utest_run runtime_use_host_ptr_buffer" is OK, and I have read sample code 
runtime_use_host_ptr_buffer.cpp, main difference is:
mycode:|sample of beignet:
|pp = clEnqueueMapBuffer()
clFinish();|MyFunction(..., pp, ...);
MyFunction(..., p, ...);|clEnqueueUnmapMemObject(..., pp, ...);


Question: 
Does this shared buffer must be used in host program just by pp, returned by 
map function, but not p?  
Does this mean that, if I put the memory to GPU, I cannot control this memory 
again, but just via map function?
Does have some other methods, that I can get the right to control this memory 
in host again?


Hope for helps! Thank you very much!! :-) 





_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to