P4 to Git Change 1192674 by jatang@jatang-opencl-hsa-stg1 on 2015/09/21 15:20:26

SWDEV-423121 - Support CL_THREAD_TRACE_BUFFERS_SIZE correctly.

	The current implementation hardcoded valueSize to size of 4 unsigned integers. We need to support both 2 SEs (Bonarie) and 4 SEs (Tonga/Fiji).

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_thread_trace_amd.cpp#7 edit


[ROCm/clr commit: 847f589e48]
This commit is contained in:
foreman
2015-09-21 15:35:28 -04:00
parent b779429084
commit 3997f5b8c8
@@ -8,6 +8,7 @@
#include "platform/threadtrace.hpp"
#include <cstring>
#include <vector>
#include <memory>
/*! \addtogroup API
* @{
@@ -215,7 +216,6 @@ RUNTIME_ENTRY(cl_int, clGetThreadTraceInfoAMD, (
{
return amd::clGetInfo(seNum,
param_value_size, param_value, param_value_size_ret);
break;
}
case CL_THREAD_TRACE_BUFFERS_SIZE:
{
@@ -223,14 +223,34 @@ RUNTIME_ENTRY(cl_int, clGetThreadTraceInfoAMD, (
if (devThreadTrace == NULL) {
return CL_INVALID_OPERATION;
}
unsigned int bufSize2Se[4] = {0};
if (!devThreadTrace->info(thread_trace_info_param, bufSize2Se, seNum)) {
std::unique_ptr<uint> bufSize2Se(new uint[seNum]);
if (bufSize2Se.get() == NULL) {
return CL_OUT_OF_HOST_MEMORY;
}
if (!devThreadTrace->info(thread_trace_info_param, bufSize2Se.get(), seNum)) {
return CL_INVALID_VALUE;
}
return amd::clGetInfo(bufSize2Se,
param_value_size, param_value, param_value_size_ret);
break;
const size_t valueSize = seNum * sizeof(unsigned int);
if (param_value != NULL && param_value_size < valueSize) {
return CL_INVALID_VALUE;
}
*not_null(param_value_size_ret) = valueSize;
if (param_value != NULL) {
::memcpy(param_value, bufSize2Se.get(), valueSize);
if (param_value_size > valueSize) {
::memset(static_cast<address>(param_value) + valueSize,
'\0', param_value_size - valueSize);
}
}
return CL_SUCCESS;
}
}