As part of the stack unification some of the application using
opencl seem to depend on libopencl.so provided from thirdparty
providers. For libopencl.so from thirdparty provider to find
libamdocl.so ldconfig path to {opencl install path}/lib is required
Change-Id: I8e12e463209a44177ee433644c75ef0781f1da2f
ATI_OS_WIN -> _WIN32
ATI_OS_LINUX -> __linux__
We should not rely on non-standard macros for platform detections.
Change-Id: If1d06e2e1187268df62a59609ea5496ab7eb709d
The OCL_ICD_FILENAMES env var contains a list of OpenCL platforms that
the ICD should prepend to the list of reported platforms. Since the
built amdocl library will show up as the first platform, we can tell
ocltst to always run with platform 0. This way we guarantee that the
correct binary is being loaded.
Using this env var also makes programming LD_LIBRARY_PATH redundant
for Linux.
Change-Id: I8c1729e8b4dd1cd2df1a3da08c7b7addebd08b4f
optind's starting value is 1 and it needs to be reset to 1 after each
getopt() invocation. Resetting it to 0 will cause getopt() to
reinitialize its internal state. This is only needed for some corner
cases. In our current usage, we should be resetting it to 1.
Change-Id: I68da7e41ee8b83b275e2a7bd660c13af569769f1
The queue can be destroyed at the time the app will request
the event status. Hence just get the active state from the device.
Change-Id: I887ecb0cfe414c2119247228b0d1255b8308da1e
When unsetting runtime should use HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE
for the agent and not HSA_AMD_SVM_ATTRIB_AGENT_ACCESSIBLE_IN_PLACE
Change-Id: I3814802d1fb3b72c54e7566defafafed6b0d5cee
The original logic left only one slot for HW processing in the queue.
For some reason there is a race condition on CPU overwrite of the slot
before the current active. The workaround is to avoid the previous to
the current active slot for possible unfinished HW processing.
Change-Id: I565495a8feeaedffc9fc8a505edbee5ff5816975
hipGetLastError/hipPeekAtLastError should really return the last error
produced by any of the runtime calls that did not successfuly complete,
not just the error code of the last runtime call.
For example, in this snippet of code:
1: hipLaunchKernelGGL(MyKernel, dim3(2), dim3(128), 0, 0, 10000,x);
2: hipDeviceSynchronize();
3: hipError_t error = hipGetLastError();
If the call to hipLaunchKernelGGL fails, hipDeviceSynchronize (which
succeeds) should not reset the last error to hipSuccess. hipGetLastError
should still return the non-success error code returned by
hipLaunchKernelGGL.
The last error is reset to hipSuccess after calling hipGetLastError.
Change-Id: Ib7c039067c53c94c99c8ecd83f54212bcef06f81
HIP_RETURN(x) is not a value, it is a statement ending with a return,
this commit replaces all instances of "return HIP_RETURN(x)" with simply
"HIP_RETURN(x)"
Change-Id: I03293b2684a65367ff55e02b3a71ea49ec7a517a
std::mem_fun() and std::bind2nd() are removed in c++17. Switch to
simpler logic that does not require those functions.
Change-Id: I19a31f076e1813e367615bd377b424046ce144c7
For the fillBuffer shader, if there are two 32bit writes to a MMIO
register, it can get dropped. It has to be a single 64bit write.
Add optimization to fillBuffer to write 64bit and 16bit writes.
Change-Id: I3aa78e027898f8ae01e9c8f09004615673720c2b