19 #define __PHYSICS_COMMON_H__ 1
55 if(num_platforms != NULL)
66 size_t param_value_size,
70 char* pId = (
char*)platform;
84 if(param_value_size_ret != NULL)
97 if(param_value_size_ret != NULL)
114 size_t param_value_size ,
123 char deviceName[] =
"MiniCL CPU";
124 unsigned int nameLen = (
unsigned int)strlen(deviceName)+1;
125 btAssert(param_value_size>strlen(deviceName));
126 if (nameLen < param_value_size)
128 const char* cpuName =
"MiniCL CPU";
129 sprintf((
char*)param_value,
"%s",cpuName);
132 printf(
"error: param_value_size should be at least %d, but it is %zu\n",nameLen,param_value_size);
145 printf(
"error: param_value_size should be at least %zu\n",
sizeof(
cl_device_type));
152 if (param_value_size>=
sizeof(
cl_uint))
158 printf(
"error: param_value_size should be at least %zu\n",
sizeof(
cl_uint));
166 size_t workitem_size[3];
168 if (param_value_size>=
sizeof(workitem_size))
170 size_t* workItemSize = (
size_t*)param_value;
171 workItemSize[0] = 64;
172 workItemSize[1] = 24;
173 workItemSize[2] = 16;
176 printf(
"error: param_value_size should be at least %zu\n",
sizeof(
cl_uint));
184 *clock_frequency = 3*1024;
195 if(param_value_size_ret != NULL)
208 if(param_value_size_ret != NULL)
224 *maxWorkGroupSize = 128;
236 *maxMemAlloc= 512*1024*1024;
242 *maxMemAlloc= 1024*1024*1024;
249 *error_correction_support =
CL_FALSE;
275 memset(queueProp,0,param_value_size);
299 size_t* maxSize = (
size_t*) param_value;
306 char* extensions = (
char*) param_value;
325 printf(
"error: unsupported param_name:%d\n",param_name);
372 memcpy(ptr,(
char*)buffer + offset,cb);
416 memcpy((
char*)buffer + offset, ptr,cb);
433 const size_t * global_work_size ,
442 for (
unsigned int ii=0;ii<work_dim;ii++)
445 int numWorkItems = global_work_size[ii];
449 int numWorkItemsPerTask = numWorkItems / maxTask;
450 if (!numWorkItemsPerTask) numWorkItemsPerTask = 1;
452 for (
int t=0;t<numWorkItems;)
455 int endIndex = (t+numWorkItemsPerTask) < numWorkItems ? t+numWorkItemsPerTask : numWorkItems;
472 #define LOCAL_BUF_SIZE 32768
478 int size16 = (size + 15) >> 4;
502 printf(
"error: clSetKernelArg arg_index (%u) exceeds %u\n",arg_index,
MINI_CL_MAX_ARG);
508 printf(
"error: clSetKernelArg argdata too large: %zu (maximum is %zu)\n",arg_size,
MINICL_MAX_ARGLENGTH);
512 if(arg_value == NULL)
519 memcpy(&(kernel->
m_argData[arg_index]), arg_value, arg_size);
534 const char * kernel_name ,
538 int nameLen = strlen(kernel_name);
547 strcpy(kernel->
m_name, kernel_name);
589 const unsigned char ** ,
607 memcpy(buf,host_ptr,
size);
625 size_t param_value_size ,
634 if (!param_value_size)
636 *param_value_size_ret = 13;
639 const char* testName =
"MiniCL_Test.";
640 sprintf((
char*)param_value,
"%s",testName);
646 printf(
"unsupported\n");
657 void (*pfn_notify)(
const char *,
const void *,
size_t,
void *) ,
661 int maxNumOutstandingTasks = 4;
665 const int maxNumOfThreadSupports = 8;
666 static int sUniqueThreadSupportIndex = 0;
667 static const char* sUniqueThreadSupportName[maxNumOfThreadSupports] =
669 "MiniCL_0",
"MiniCL_1",
"MiniCL_2",
"MiniCL_3",
"MiniCL_4",
"MiniCL_5",
"MiniCL_6",
"MiniCL_7"
682 btAssert(sUniqueThreadSupportIndex < maxNumOfThreadSupports);
683 const char* bla =
"MiniCL";
686 sUniqueThreadSupportName[sUniqueThreadSupportIndex++],
689 maxNumOutstandingTasks));
696 maxNumOutstandingTasks);
703 #endif //USE_PTHREADS
729 void (*pfn_notify)(
const char *,
const void *,
size_t,
void *),
744 delete threadSupport;
776 &&(sz ==
sizeof(
size_t))