minor update
This commit is contained in:
@@ -115,11 +115,6 @@ int main (int argc, char **argv) {
|
||||
|
||||
cl_platform_id platform_id;
|
||||
size_t kernel_size;
|
||||
cl_int binary_status;
|
||||
|
||||
// read kernel binary from file
|
||||
if (0 != read_kernel_file("kernel.pocl", &kernel_bin, &kernel_size))
|
||||
return -1;
|
||||
|
||||
// Getting platform and device information
|
||||
CL_CHECK(clGetPlatformIDs(1, &platform_id, NULL));
|
||||
@@ -134,12 +129,17 @@ int main (int argc, char **argv) {
|
||||
c_memobj = CL_CHECK2(clCreateBuffer(context, CL_MEM_WRITE_ONLY, nbytes, NULL, &_err));
|
||||
|
||||
printf("Create program from kernel source\n");
|
||||
program = CL_CHECK2(clCreateProgramWithBinary(
|
||||
context, 1, &device_id, &kernel_size, (const uint8_t**)&kernel_bin, &binary_status, &_err));
|
||||
if (program == NULL) {
|
||||
cleanup();
|
||||
#ifdef HOSTGPU
|
||||
if (0 != read_kernel_file("kernel.cl", &kernel_bin, &kernel_size))
|
||||
return -1;
|
||||
}
|
||||
program = CL_CHECK2(clCreateProgramWithSource(
|
||||
context, 1, (const char**)&kernel_bin, &kernel_size, &_err));
|
||||
#else
|
||||
if (0 != read_kernel_file("kernel.pocl", &kernel_bin, &kernel_size))
|
||||
return -1;
|
||||
program = CL_CHECK2(clCreateProgramWithBinary(
|
||||
context, 1, &device_id, &kernel_size, (const uint8_t**)&kernel_bin, NULL, &_err));
|
||||
#endif
|
||||
|
||||
// Build program
|
||||
CL_CHECK(clBuildProgram(program, 1, &device_id, NULL, NULL, NULL));
|
||||
@@ -159,12 +159,12 @@ int main (int argc, char **argv) {
|
||||
for (int i = 0; i < size; ++i) {
|
||||
if (float_enable) {
|
||||
float value = sinf(i)*sinf(i);
|
||||
h_a[i] = *(int*)&value;
|
||||
printf("*** [%d]: h_a=%f\n", i, value);
|
||||
((float*)h_a)[i] = value;
|
||||
printf("*** [%d]: %f\n", i, value);
|
||||
} else {
|
||||
int value = size*sinf(i);
|
||||
h_a[i] = value;
|
||||
printf("*** [%d]: h_a=%d\n", i, value);
|
||||
printf("*** [%d]: %d\n", i, value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,38 +188,44 @@ int main (int argc, char **argv) {
|
||||
CL_CHECK(clEnqueueReadBuffer(commandQueue, c_memobj, CL_TRUE, 0, nbytes, h_c, 0, NULL, NULL));
|
||||
|
||||
printf("Verify result\n");
|
||||
for (int i = 0; i < size; ++i) {
|
||||
int value = h_c[i];
|
||||
for (int i = 0; i < size; ++i) {
|
||||
if (float_enable) {
|
||||
printf("*** [%d]: h_a=%f\n", i, *(float*)&value);
|
||||
float value = ((float*)h_c)[i];
|
||||
printf("*** [%d]: %f\n", i, value);
|
||||
} else {
|
||||
printf("*** [%d]: h_a=%d\n", i, value);
|
||||
int value = h_c[i];
|
||||
printf("*** [%d]: %d\n", i, value);
|
||||
}
|
||||
}
|
||||
int errors = 0;
|
||||
for (int i = 0; i < size; ++i) {
|
||||
int ref = h_a[i];
|
||||
float ref_f = *(float*)&ref;
|
||||
for (int i = 0; i < size; ++i) {
|
||||
int pos = 0;
|
||||
for (int j = 0; j < size; ++j) {
|
||||
int cur = h_a[j];
|
||||
if (float_enable) {
|
||||
float cur_f = *(float*)&cur;
|
||||
pos += (cur_f < ref_f) || (cur_f == ref_f && j < i);
|
||||
} else {
|
||||
if (float_enable) {
|
||||
float ref = ((float*)h_a)[i];
|
||||
for (int j = 0; j < size; ++j) {
|
||||
float cur = ((float*)h_a)[j];
|
||||
pos += (cur < ref) || (cur == ref && j < i);
|
||||
}
|
||||
float value = ((float*)h_c)[pos];
|
||||
if (value != ref) {
|
||||
if (errors < 100) {
|
||||
printf("*** error: [%d] expected=%f, actual=%f\n", pos, ref, value);
|
||||
}
|
||||
++errors;
|
||||
}
|
||||
} else {
|
||||
int ref = h_a[i];
|
||||
for (int j = 0; j < size; ++j) {
|
||||
int cur = h_a[j];
|
||||
pos += (cur < ref) || (cur == ref && j < i);
|
||||
}
|
||||
}
|
||||
int value = h_c[pos];
|
||||
if (value != ref) {
|
||||
if (errors < 100) {
|
||||
if (float_enable) {
|
||||
printf("*** error: [%d] expected=%f, actual=%f\n", pos, ref_f, *(float*)&value);
|
||||
} else {
|
||||
int value = h_c[pos];
|
||||
if (value != ref) {
|
||||
if (errors < 100) {
|
||||
printf("*** error: [%d] expected=%d, actual=%d\n", pos, ref, value);
|
||||
}
|
||||
++errors;
|
||||
}
|
||||
++errors;
|
||||
}
|
||||
}
|
||||
if (0 == errors) {
|
||||
|
||||
Reference in New Issue
Block a user