1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#include "utest_helper.hpp"
#include<string>
#include<sstream>
#include<iostream>
using namespace std;
void compiler_reqd_sub_group_size(void)
{
if (!cl_check_reqd_subgroup())
return;
size_t param_value_size;
OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_SUB_GROUP_SIZES_INTEL,
0, NULL, ¶m_value_size);
size_t* param_value = new size_t[param_value_size];
OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_SUB_GROUP_SIZES_INTEL,
param_value_size, param_value, NULL);
const char* opt = "-D SIMD_SIZE=";
for( uint32_t i = 0; i < param_value_size / sizeof(size_t) ; ++i)
{
ostringstream ss;
uint32_t simd_size = param_value[i];
ss << opt << simd_size;
//cout << "options: " << ss.str() << endl;
OCL_CALL(cl_kernel_init, "compiler_reqd_sub_group_size.cl", "compiler_reqd_sub_group_size",
SOURCE, ss.str().c_str());
size_t SIMD_SIZE = 0;
OCL_CALL(utestclGetKernelSubGroupInfoKHR,kernel,device, CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL,0, NULL,sizeof(size_t),&SIMD_SIZE,NULL);
//cout << SIMD_SIZE << " with " << simd_size << endl;
OCL_ASSERT(SIMD_SIZE == simd_size);
cl_ulong SPILL_SIZE = 0xFFFFFFFF;
OCL_CALL(clGetKernelWorkGroupInfo, kernel, device, CL_KERNEL_SPILL_MEM_SIZE_INTEL, sizeof(cl_ulong), &SPILL_SIZE, NULL);
//cout << "spill size: " << SPILL_SIZE << endl;
OCL_ASSERT(SPILL_SIZE == 0);
clReleaseProgram(program);
program = NULL;
}
delete[] param_value;
}
MAKE_UTEST_FROM_FUNCTION(compiler_reqd_sub_group_size);
|