Skip to content
This repository was archived by the owner on Feb 16, 2019. It is now read-only.

Commit c81a919

Browse files
author
rgiduthuri
committed
added env AGO_OPENCL_PLATFORM to override platform selection; fixed few warnings and some clean-up
1 parent 131add0 commit c81a919

File tree

4 files changed

+28
-20
lines changed

4 files changed

+28
-20
lines changed

openvx/ago/ago_util.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1502,7 +1502,7 @@ int agoGetDataFromDescription(AgoContext * acontext, AgoGraph * agraph, AgoData
15021502
}
15031503
else if (data->u.scalar.type == VX_TYPE_FLOAT16) {
15041504
data->u.scalar.itemsize = sizeof(vx_uint16);
1505-
if (sscanf(s, "%g", &data->u.scalar.u.u) == 1)
1505+
if (sscanf(s, "%d", &data->u.scalar.u.u) == 1)
15061506
data->isInitialized = vx_true_e;
15071507
}
15081508
else if (data->u.scalar.type == VX_TYPE_BOOL) {

openvx/ago/ago_util_opencl.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ int agoGpuOclCreateContext(AgoContext * context, cl_context opencl_context)
136136
// use the given OpenCL context
137137
context->opencl_context_imported = true;
138138
context->opencl_context = opencl_context;
139-
// TBD: need to check devices in the context and set context->isVendorAmd accordingly
140139
}
141140
else {
142141
// get AMD platform (if available)
@@ -151,17 +150,26 @@ int agoGpuOclCreateContext(AgoContext * context, cl_context opencl_context)
151150
agoAddLogEntry(NULL, VX_FAILURE, "ERROR: clGetPlatformIDs(%d,*,0) => %d (failed)\n", num_platforms, status);
152151
return -1;
153152
}
154-
cl_platform_id platform_id = platform_list[0];
155-
for (int i = 0; i < (int)num_platforms; i++) {
156-
char vendor[128] = { 0 };
157-
if ((status = clGetPlatformInfo(platform_list[i], CL_PLATFORM_VENDOR, sizeof(vendor), vendor, NULL)) != CL_SUCCESS) {
158-
agoAddLogEntry(NULL, VX_FAILURE, "ERROR: clGetPlatformInfo([%d],...) => %d (failed)\n", i, status);
159-
return -1;
153+
cl_platform_id platform_id = nullptr;
154+
char opencl_platform_override[64] = "";
155+
if(agoGetEnvironmentVariable("AGO_OPENCL_PLATFORM", opencl_platform_override, sizeof(opencl_platform_override))) {
156+
cl_uint index = (cl_uint)atoi(opencl_platform_override);
157+
if(index < num_platforms) {
158+
platform_id = platform_list[index];
160159
}
161-
if (!strcmp(vendor, "Advanced Micro Devices, Inc.")) {
162-
platform_id = platform_list[i];
163-
context->isVendorAmd = true;
164-
break;
160+
}
161+
if(!platform_id) {
162+
platform_id = platform_list[0];
163+
for (int i = 0; i < (int)num_platforms; i++) {
164+
char vendor[128] = { 0 };
165+
if ((status = clGetPlatformInfo(platform_list[i], CL_PLATFORM_VENDOR, sizeof(vendor), vendor, NULL)) != CL_SUCCESS) {
166+
agoAddLogEntry(NULL, VX_FAILURE, "ERROR: clGetPlatformInfo([%d],...) => %d (failed)\n", i, status);
167+
return -1;
168+
}
169+
if (!strcmp(vendor, "Advanced Micro Devices, Inc.")) {
170+
platform_id = platform_list[i];
171+
break;
172+
}
165173
}
166174
}
167175
delete [] platform_list;

openvx/include/vx_ext_amd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ THE SOFTWARE.
5858
enum ago_type_public_e {
5959
/*! \brief AMD data types
6060
*/
61-
VX_TYPE_FLOAT16 = 0x00F, // 16-bit float data type
61+
VX_TYPE_FLOAT16 = 0x00F, // 16-bit float data type
6262
VX_TYPE_STRING_AMD = VX_TYPE_SCALAR_MAX, // scalar data type for string
6363

6464
/*! \brief AMD data structs

runvx/vxTensor.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ int CVxParamTensor::InitializeIO(vx_context context, vx_graph graph, vx_referenc
128128
m_size *= m_dims[i];
129129
}
130130
m_data = new vx_uint8[m_size];
131-
if (!m_data) ReportError("ERROR: memory allocation failed for tensor: %u\n", m_size);
131+
if (!m_data) ReportError("ERROR: memory allocation failed for tensor: %u\n", (vx_uint32)m_size);
132132

133133
// process I/O parameters
134134
if (*io_params == ':') io_params++;
@@ -227,7 +227,7 @@ int CVxParamTensor::ReadFrame(int frameNumber)
227227
}
228228
}
229229
if (fread(m_data, 1, m_size, fp) != m_size)
230-
ReportError("ERROR: not enough data (%d bytes) in %s\n", m_size, fileName);
230+
ReportError("ERROR: not enough data (%d bytes) in %s\n", (vx_uint32)m_size, fileName);
231231
vx_status status = vxCopyTensorPatch(m_tensor, m_num_of_dims, nullptr, nullptr, m_stride, m_data, VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST);
232232
fclose(fp);
233233
if (status != VX_SUCCESS)
@@ -271,7 +271,7 @@ int CVxParamTensor::CompareFrame(int frameNumber)
271271
ReportError("ERROR: Unable to open: %s\n", fileName);
272272
}
273273
if (fread(m_data, 1, m_size, fp) != m_size)
274-
ReportError("ERROR: not enough data (%d bytes) in %s\n", m_size, fileName);
274+
ReportError("ERROR: not enough data (%d bytes) in %s\n", (vx_uint32)m_size, fileName);
275275
fclose(fp);
276276

277277
// compare
@@ -339,9 +339,9 @@ int CVxParamTensor::CompareFrame(int frameNumber)
339339
mismatchDetected = (maxError > m_maxErrorLimit) ? true : false;
340340
mismatchDetected = (avgError > m_avgErrorLimit) ? true : mismatchDetected;
341341
if (mismatchDetected)
342-
printf("ERROR: tensor COMPARE MISMATCHED [max-err: %d] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
342+
printf("ERROR: tensor COMPARE MISMATCHED [max-err: %.6f] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
343343
else if (m_verbose)
344-
printf("OK: tensor COMPARE MATCHED [max-err: %d] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
344+
printf("OK: tensor COMPARE MATCHED [max-err: %.6f] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
345345
}
346346
else if (m_data_type == VX_TYPE_FLOAT16) {
347347
vx_float32 maxError = 0;
@@ -373,9 +373,9 @@ int CVxParamTensor::CompareFrame(int frameNumber)
373373
mismatchDetected = (maxError > m_maxErrorLimit) ? true : false;
374374
mismatchDetected = (avgError > m_avgErrorLimit) ? true : mismatchDetected;
375375
if (mismatchDetected)
376-
printf("ERROR: tensor COMPARE MISMATCHED [max-err: %d] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
376+
printf("ERROR: tensor COMPARE MISMATCHED [max-err: %.6f] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
377377
else if (m_verbose)
378-
printf("OK: tensor COMPARE MATCHED [max-err: %d] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
378+
printf("OK: tensor COMPARE MATCHED [max-err: %.6f] [avg-err: %.6f] for %s with frame#%d of %s\n", maxError, avgError, GetVxObjectName(), frameNumber, fileName);
379379
}
380380
else {
381381
for (vx_size d3 = 0; d3 < m_dims[3]; d3++) {

0 commit comments

Comments
 (0)