Tidy up BuildKernelInfo (#1461)

Remove the `offset` field from both structures, because it was always
set to the global `gMinVectorSizeIndex`.

Improve documentation and rename some variables:
 - `i` becomes `vectorSize`;
 - `kernel_count` becomes `threadCount`.

Original patch by Marco Antognini.

Signed-off-by: Marco Antognini <marco.antognini@arm.com>
Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
This commit is contained in:
Sven van Haastregt
2022-08-04 15:03:52 +01:00
committed by GitHub
parent c44b5b6ae3
commit c12bff46c6
27 changed files with 164 additions and 183 deletions

View File

@@ -115,10 +115,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -741,10 +741,9 @@ int TestFunc_Double_Double_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -113,10 +113,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -898,10 +898,9 @@ int TestFunc_Float_Float_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -114,10 +114,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -663,10 +663,9 @@ int TestFunc_Double_Double_Int(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -112,10 +112,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -656,10 +656,9 @@ int TestFunc_Float_Float_Int(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -114,10 +114,10 @@ int BuildKernel(const char *operator_symbol, int vectorSize,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -708,10 +708,9 @@ int TestFunc_Double_Double_Double_Operator(const Func *f, MTdata d,
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -112,10 +112,10 @@ int BuildKernel(const char *operator_symbol, int vectorSize,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -835,10 +835,9 @@ int TestFunc_Float_Float_Float_Operator(const Func *f, MTdata d,
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -120,7 +120,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -130,9 +129,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
struct ComputeReferenceInfoD struct ComputeReferenceInfoD
@@ -192,8 +191,8 @@ int TestFunc_DoubleI_Double_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -118,7 +118,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -128,9 +127,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
struct ComputeReferenceInfoF struct ComputeReferenceInfoF
@@ -193,8 +192,8 @@ int TestFunc_FloatI_Float_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -28,14 +28,21 @@ using KernelMatrix = std::array<std::vector<cl_kernel>, VECTOR_SIZE_COUNT>;
// Array of programs for each vector size. // Array of programs for each vector size.
using Programs = std::array<clProgramWrapper, VECTOR_SIZE_COUNT>; using Programs = std::array<clProgramWrapper, VECTOR_SIZE_COUNT>;
// Information to generate OpenCL kernels.
struct BuildKernelInfo struct BuildKernelInfo
{ {
cl_uint offset; // the first vector size to build // Number of kernels to build, one for each thread to avoid data races.
cl_uint kernel_count; cl_uint threadCount;
KernelMatrix &kernels; KernelMatrix &kernels;
Programs &programs; Programs &programs;
// Function, macro or symbol tested by the kernel.
const char *nameInCode; const char *nameInCode;
bool relaxedMode; // Whether to build with -cl-fast-relaxed-math.
// Whether to build with -cl-fast-relaxed-math.
bool relaxedMode;
}; };
#endif /* COMMON_H */ #endif /* COMMON_H */

View File

@@ -105,7 +105,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -115,9 +114,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -143,8 +142,8 @@ int TestFunc_Int_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -103,7 +103,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -113,9 +112,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -140,8 +139,8 @@ int TestFunc_Int_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -113,10 +113,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -666,10 +666,9 @@ int TestMacro_Int_Double_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -111,10 +111,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -655,10 +655,9 @@ int TestMacro_Int_Float_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -107,10 +107,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -439,10 +439,9 @@ int TestMacro_Int_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -106,10 +106,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -453,10 +453,9 @@ int TestMacro_Int_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -118,7 +118,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -128,9 +127,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -150,8 +149,8 @@ int TestFunc_mad_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -116,7 +116,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -126,9 +125,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -149,8 +148,8 @@ int TestFunc_mad_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -121,7 +121,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -131,9 +130,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// A table of more difficult cases to get right // A table of more difficult cases to get right
@@ -229,8 +228,8 @@ int TestFunc_Double_Double_Double_Double(const Func *f, MTdata d,
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -119,7 +119,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -129,9 +128,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// A table of more difficult cases to get right // A table of more difficult cases to get right
@@ -245,8 +244,8 @@ int TestFunc_Float_Float_Float_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -107,10 +107,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -465,10 +465,9 @@ int TestFunc_Double_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -105,10 +105,10 @@ int BuildKernel(const char *name, int vectorSize, cl_uint kernel_count,
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo *info = (BuildKernelInfo *)p; BuildKernelInfo *info = (BuildKernelInfo *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernel_count, return BuildKernel(info->nameInCode, vectorSize, info->threadCount,
info->kernels[i].data(), &(info->programs[i]), info->kernels[vectorSize].data(),
info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
// Thread specific data for a worker thread // Thread specific data for a worker thread
@@ -636,10 +636,9 @@ int TestFunc_Float_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo build_info = { BuildKernelInfo build_info{ test_info.threadCount, test_info.k,
gMinVectorSizeIndex, test_info.threadCount, test_info.k, test_info.programs, f->nameInCode,
test_info.programs, f->nameInCode, relaxedMode relaxedMode };
};
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -112,7 +112,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -122,9 +121,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -149,8 +148,8 @@ int TestFunc_Double2_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -110,7 +110,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -120,9 +119,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -148,8 +147,8 @@ int TestFunc_Float2_Float(const Func *f, MTdata d, bool relaxedMode)
float float_ulps = getAllowedUlpError(f, relaxedMode); float float_ulps = getAllowedUlpError(f, relaxedMode);
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -113,7 +113,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -123,9 +122,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
cl_ulong abs_cl_long(cl_long i) cl_ulong abs_cl_long(cl_long i)
@@ -157,8 +156,8 @@ int TestFunc_DoubleI_Double(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -111,7 +111,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -121,9 +120,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
cl_ulong abs_cl_long(cl_long i) cl_ulong abs_cl_long(cl_long i)
@@ -160,8 +159,8 @@ int TestFunc_FloatI_Float(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -107,7 +107,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -117,9 +116,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
cl_ulong random64(MTdata d) cl_ulong random64(MTdata d)
@@ -145,8 +144,8 @@ int TestFunc_Double_ULong(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))

View File

@@ -104,7 +104,6 @@ int BuildKernel(const char *name, int vectorSize, cl_kernel *k, cl_program *p,
struct BuildKernelInfo2 struct BuildKernelInfo2
{ {
cl_uint offset; // the first vector size to build
cl_kernel *kernels; cl_kernel *kernels;
Programs &programs; Programs &programs;
const char *nameInCode; const char *nameInCode;
@@ -114,9 +113,9 @@ struct BuildKernelInfo2
cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p) cl_int BuildKernelFn(cl_uint job_id, cl_uint thread_id UNUSED, void *p)
{ {
BuildKernelInfo2 *info = (BuildKernelInfo2 *)p; BuildKernelInfo2 *info = (BuildKernelInfo2 *)p;
cl_uint i = info->offset + job_id; cl_uint vectorSize = gMinVectorSizeIndex + job_id;
return BuildKernel(info->nameInCode, i, info->kernels + i, return BuildKernel(info->nameInCode, vectorSize, info->kernels + vectorSize,
&(info->programs[i]), info->relaxedMode); &(info->programs[vectorSize]), info->relaxedMode);
} }
} // anonymous namespace } // anonymous namespace
@@ -142,8 +141,8 @@ int TestFunc_Float_UInt(const Func *f, MTdata d, bool relaxedMode)
// Init the kernels // Init the kernels
{ {
BuildKernelInfo2 build_info = { gMinVectorSizeIndex, kernels, programs, BuildKernelInfo2 build_info{ kernels, programs, f->nameInCode,
f->nameInCode, relaxedMode }; relaxedMode };
if ((error = ThreadPool_Do(BuildKernelFn, if ((error = ThreadPool_Do(BuildKernelFn,
gMaxVectorSizeIndex - gMinVectorSizeIndex, gMaxVectorSizeIndex - gMinVectorSizeIndex,
&build_info))) &build_info)))