@@ -187,24 +187,26 @@ static cl_int checkDeviceExtensions(cl_device_id dev,
187
187
return ret_err;
188
188
}
189
189
190
- typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceFunctionPointer_fn)(
191
- cl_device_id device, cl_program program, const char *FuncName ,
192
- cl_ulong *ret_ptr);
190
+ using clGetDeviceFunctionPointer_fn = CL_API_ENTRY
191
+ cl_int (CL_API_CALL *)( cl_device_id device, cl_program program,
192
+ const char *FuncName, cl_ulong *ret_ptr);
193
193
194
- typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteGlobalVariable_fn)(
195
- cl_command_queue, cl_program, const char *, cl_bool, size_t , size_t ,
196
- const void *, cl_uint, const cl_event *, cl_event *);
194
+ using clEnqueueWriteGlobalVariable_fn = CL_API_ENTRY
195
+ cl_int (CL_API_CALL *)(cl_command_queue, cl_program, const char *, cl_bool,
196
+ size_t , size_t , const void *, cl_uint, const cl_event *,
197
+ cl_event *);
197
198
198
- typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadGlobalVariable_fn)(
199
- cl_command_queue, cl_program, const char *, cl_bool, size_t , size_t , void *,
200
- cl_uint, const cl_event *, cl_event *);
199
+ using clEnqueueReadGlobalVariable_fn = CL_API_ENTRY
200
+ cl_int (CL_API_CALL *)(cl_command_queue, cl_program, const char *, cl_bool,
201
+ size_t , size_t , void *, cl_uint, const cl_event *,
202
+ cl_event *);
201
203
202
- typedef CL_API_ENTRY cl_int (CL_API_CALL *clSetProgramSpecializationConstant_fn)(
203
- cl_program program, cl_uint spec_id, size_t spec_size,
204
- const void *spec_value);
204
+ using clSetProgramSpecializationConstant_fn = CL_API_ENTRY
205
+ cl_int (CL_API_CALL *)( cl_program program, cl_uint spec_id, size_t spec_size,
206
+ const void *spec_value);
205
207
206
208
template <typename T> struct FuncPtrCache {
207
- std::map<pi_context , T> Map;
209
+ std::map<cl_context , T> Map;
208
210
std::mutex Mutex;
209
211
};
210
212
@@ -241,14 +243,14 @@ static ExtFuncPtrCacheT *ExtFuncPtrCache = new ExtFuncPtrCacheT();
241
243
242
244
// USM helper function to get an extension function pointer
243
245
template <typename T>
244
- static pi_result getExtFuncFromContext (pi_context context,
246
+ static pi_result getExtFuncFromContext (cl_context context,
245
247
FuncPtrCache<T> &FPtrCache,
246
248
const char *FuncName, T *fptr) {
247
249
// TODO
248
250
// Potentially redo caching as PI interface changes.
249
251
// if cached, return cached FuncPtr
250
252
std::lock_guard<std::mutex> CacheLock{FPtrCache.Mutex };
251
- std::map<pi_context , T> &FPtrMap = FPtrCache.Map ;
253
+ std::map<cl_context , T> &FPtrMap = FPtrCache.Map ;
252
254
auto It = FPtrMap.find (context);
253
255
if (It != FPtrMap.end ()) {
254
256
auto F = It->second ;
@@ -259,16 +261,15 @@ static pi_result getExtFuncFromContext(pi_context context,
259
261
}
260
262
261
263
cl_uint deviceCount;
262
- cl_int ret_err =
263
- clGetContextInfo (cast<cl_context>(context), CL_CONTEXT_NUM_DEVICES,
264
- sizeof (cl_uint), &deviceCount, nullptr );
264
+ cl_int ret_err = clGetContextInfo (context, CL_CONTEXT_NUM_DEVICES,
265
+ sizeof (cl_uint), &deviceCount, nullptr );
265
266
266
267
if (ret_err != CL_SUCCESS || deviceCount < 1 ) {
267
268
return PI_ERROR_INVALID_CONTEXT;
268
269
}
269
270
270
271
std::vector<cl_device_id> devicesInCtx (deviceCount);
271
- ret_err = clGetContextInfo (cast<cl_context>( context) , CL_CONTEXT_DEVICES,
272
+ ret_err = clGetContextInfo (context, CL_CONTEXT_DEVICES,
272
273
deviceCount * sizeof (cl_device_id),
273
274
devicesInCtx.data (), nullptr );
274
275
@@ -318,16 +319,16 @@ static pi_result USMSetIndirectAccess(pi_kernel kernel) {
318
319
}
319
320
320
321
getExtFuncFromContext<clHostMemAllocINTEL_fn>(
321
- cast<pi_context>( CLContext) , ExtFuncPtrCache->clHostMemAllocINTELCache ,
322
- clHostMemAllocName, &HFunc);
322
+ CLContext, ExtFuncPtrCache->clHostMemAllocINTELCache , clHostMemAllocName ,
323
+ &HFunc);
323
324
if (HFunc) {
324
325
clSetKernelExecInfo (cast<cl_kernel>(kernel),
325
326
CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL,
326
327
sizeof (cl_bool), &TrueVal);
327
328
}
328
329
329
330
getExtFuncFromContext<clDeviceMemAllocINTEL_fn>(
330
- cast<pi_context>( CLContext) , ExtFuncPtrCache->clDeviceMemAllocINTELCache ,
331
+ CLContext, ExtFuncPtrCache->clDeviceMemAllocINTELCache ,
331
332
clDeviceMemAllocName, &DFunc);
332
333
if (DFunc) {
333
334
clSetKernelExecInfo (cast<cl_kernel>(kernel),
@@ -336,7 +337,7 @@ static pi_result USMSetIndirectAccess(pi_kernel kernel) {
336
337
}
337
338
338
339
getExtFuncFromContext<clSharedMemAllocINTEL_fn>(
339
- cast<pi_context>( CLContext) , ExtFuncPtrCache->clSharedMemAllocINTELCache ,
340
+ CLContext, ExtFuncPtrCache->clSharedMemAllocINTELCache ,
340
341
clSharedMemAllocName, &SFunc);
341
342
if (SFunc) {
342
343
clSetKernelExecInfo (cast<cl_kernel>(kernel),
@@ -1172,8 +1173,7 @@ pi_result piextGetDeviceFunctionPointer(pi_device device, pi_program program,
1172
1173
1173
1174
clGetDeviceFunctionPointer_fn FuncT = nullptr ;
1174
1175
ret_err = getExtFuncFromContext<clGetDeviceFunctionPointer_fn>(
1175
- cast<pi_context>(CLContext),
1176
- ExtFuncPtrCache->clGetDeviceFunctionPointerCache ,
1176
+ CLContext, ExtFuncPtrCache->clGetDeviceFunctionPointerCache ,
1177
1177
clGetDeviceFunctionPointerName, &FuncT);
1178
1178
1179
1179
pi_result pi_ret_err = PI_SUCCESS;
@@ -1290,14 +1290,15 @@ pi_result piMemBufferCreate(pi_context context, pi_mem_flags flags, size_t size,
1290
1290
// TODO: need to check if all properties are supported by OpenCL RT and
1291
1291
// ignore unsupported
1292
1292
clCreateBufferWithPropertiesINTEL_fn FuncPtr = nullptr ;
1293
+ cl_context CLContext = cast<cl_context>(context);
1293
1294
// First we need to look up the function pointer
1294
1295
ret_err = getExtFuncFromContext<clCreateBufferWithPropertiesINTEL_fn>(
1295
- context , ExtFuncPtrCache->clCreateBufferWithPropertiesINTELCache ,
1296
+ CLContext , ExtFuncPtrCache->clCreateBufferWithPropertiesINTELCache ,
1296
1297
clCreateBufferWithPropertiesName, &FuncPtr);
1297
1298
if (FuncPtr) {
1298
- *ret_mem = cast<pi_mem>( FuncPtr (cast<cl_context>(context), properties,
1299
- cast<cl_mem_flags>(flags), size, host_ptr ,
1300
- cast<cl_int *>(&ret_err)));
1299
+ *ret_mem =
1300
+ cast<pi_mem>( FuncPtr (CLContext, properties, cast<cl_mem_flags>(flags),
1301
+ size, host_ptr, cast<cl_int *>(&ret_err)));
1301
1302
return ret_err;
1302
1303
}
1303
1304
}
@@ -1572,14 +1573,14 @@ pi_result piextUSMHostAlloc(void **result_ptr, pi_context context,
1572
1573
1573
1574
// First we need to look up the function pointer
1574
1575
clHostMemAllocINTEL_fn FuncPtr = nullptr ;
1576
+ cl_context CLContext = cast<cl_context>(context);
1575
1577
RetVal = getExtFuncFromContext<clHostMemAllocINTEL_fn>(
1576
- context , ExtFuncPtrCache->clHostMemAllocINTELCache , clHostMemAllocName,
1578
+ CLContext , ExtFuncPtrCache->clHostMemAllocINTELCache , clHostMemAllocName,
1577
1579
&FuncPtr);
1578
1580
1579
1581
if (FuncPtr) {
1580
- Ptr = FuncPtr (cast<cl_context>(context),
1581
- cast<cl_mem_properties_intel *>(properties), size, alignment,
1582
- cast<cl_int *>(&RetVal));
1582
+ Ptr = FuncPtr (CLContext, cast<cl_mem_properties_intel *>(properties), size,
1583
+ alignment, cast<cl_int *>(&RetVal));
1583
1584
}
1584
1585
1585
1586
*result_ptr = Ptr;
@@ -1610,12 +1611,13 @@ pi_result piextUSMDeviceAlloc(void **result_ptr, pi_context context,
1610
1611
1611
1612
// First we need to look up the function pointer
1612
1613
clDeviceMemAllocINTEL_fn FuncPtr = nullptr ;
1614
+ cl_context CLContext = cast<cl_context>(context);
1613
1615
RetVal = getExtFuncFromContext<clDeviceMemAllocINTEL_fn>(
1614
- context , ExtFuncPtrCache->clDeviceMemAllocINTELCache ,
1616
+ CLContext , ExtFuncPtrCache->clDeviceMemAllocINTELCache ,
1615
1617
clDeviceMemAllocName, &FuncPtr);
1616
1618
1617
1619
if (FuncPtr) {
1618
- Ptr = FuncPtr (cast<cl_context>(context) , cast<cl_device_id>(device),
1620
+ Ptr = FuncPtr (CLContext , cast<cl_device_id>(device),
1619
1621
cast<cl_mem_properties_intel *>(properties), size, alignment,
1620
1622
cast<cl_int *>(&RetVal));
1621
1623
}
@@ -1648,8 +1650,9 @@ pi_result piextUSMSharedAlloc(void **result_ptr, pi_context context,
1648
1650
1649
1651
// First we need to look up the function pointer
1650
1652
clSharedMemAllocINTEL_fn FuncPtr = nullptr ;
1653
+ cl_context CLContext = cast<cl_context>(context);
1651
1654
RetVal = getExtFuncFromContext<clSharedMemAllocINTEL_fn>(
1652
- context , ExtFuncPtrCache->clSharedMemAllocINTELCache ,
1655
+ CLContext , ExtFuncPtrCache->clSharedMemAllocINTELCache ,
1653
1656
clSharedMemAllocName, &FuncPtr);
1654
1657
1655
1658
if (FuncPtr) {
@@ -1675,13 +1678,14 @@ pi_result piextUSMFree(pi_context context, void *ptr) {
1675
1678
// might be still running.
1676
1679
clMemBlockingFreeINTEL_fn FuncPtr = nullptr ;
1677
1680
1681
+ cl_context CLContext = cast<cl_context>(context);
1678
1682
pi_result RetVal = PI_ERROR_INVALID_OPERATION;
1679
1683
RetVal = getExtFuncFromContext<clMemBlockingFreeINTEL_fn>(
1680
- context , ExtFuncPtrCache->clMemBlockingFreeINTELCache ,
1684
+ CLContext , ExtFuncPtrCache->clMemBlockingFreeINTELCache ,
1681
1685
clMemBlockingFreeName, &FuncPtr);
1682
1686
1683
1687
if (FuncPtr) {
1684
- RetVal = cast<pi_result>(FuncPtr (cast<cl_context>(context) , ptr));
1688
+ RetVal = cast<pi_result>(FuncPtr (CLContext , ptr));
1685
1689
}
1686
1690
1687
1691
return RetVal;
@@ -1710,8 +1714,7 @@ pi_result piextKernelSetArgPointer(pi_kernel kernel, pi_uint32 arg_index,
1710
1714
1711
1715
clSetKernelArgMemPointerINTEL_fn FuncPtr = nullptr ;
1712
1716
pi_result RetVal = getExtFuncFromContext<clSetKernelArgMemPointerINTEL_fn>(
1713
- cast<pi_context>(CLContext),
1714
- ExtFuncPtrCache->clSetKernelArgMemPointerINTELCache ,
1717
+ CLContext, ExtFuncPtrCache->clSetKernelArgMemPointerINTELCache ,
1715
1718
clSetKernelArgMemPointerName, &FuncPtr);
1716
1719
1717
1720
if (FuncPtr) {
@@ -1752,7 +1755,7 @@ pi_result piextUSMEnqueueMemset(pi_queue queue, void *ptr, pi_int32 value,
1752
1755
1753
1756
clEnqueueMemsetINTEL_fn FuncPtr = nullptr ;
1754
1757
pi_result RetVal = getExtFuncFromContext<clEnqueueMemsetINTEL_fn>(
1755
- cast<pi_context>( CLContext) , ExtFuncPtrCache->clEnqueueMemsetINTELCache ,
1758
+ CLContext, ExtFuncPtrCache->clEnqueueMemsetINTELCache ,
1756
1759
clEnqueueMemsetName, &FuncPtr);
1757
1760
1758
1761
if (FuncPtr) {
@@ -1792,7 +1795,7 @@ pi_result piextUSMEnqueueMemcpy(pi_queue queue, pi_bool blocking, void *dst_ptr,
1792
1795
1793
1796
clEnqueueMemcpyINTEL_fn FuncPtr = nullptr ;
1794
1797
pi_result RetVal = getExtFuncFromContext<clEnqueueMemcpyINTEL_fn>(
1795
- cast<pi_context>( CLContext) , ExtFuncPtrCache->clEnqueueMemcpyINTELCache ,
1798
+ CLContext, ExtFuncPtrCache->clEnqueueMemcpyINTELCache ,
1796
1799
clEnqueueMemcpyName, &FuncPtr);
1797
1800
1798
1801
if (FuncPtr) {
@@ -2017,8 +2020,9 @@ pi_result piextUSMGetMemAllocInfo(pi_context context, const void *ptr,
2017
2020
size_t *param_value_size_ret) {
2018
2021
2019
2022
clGetMemAllocInfoINTEL_fn FuncPtr = nullptr ;
2023
+ cl_context CLContext = cast<cl_context>(context);
2020
2024
pi_result RetVal = getExtFuncFromContext<clGetMemAllocInfoINTEL_fn>(
2021
- context , ExtFuncPtrCache->clGetMemAllocInfoINTELCache ,
2025
+ CLContext , ExtFuncPtrCache->clGetMemAllocInfoINTELCache ,
2022
2026
clGetMemAllocInfoName, &FuncPtr);
2023
2027
2024
2028
if (FuncPtr) {
@@ -2058,7 +2062,7 @@ pi_result piextEnqueueDeviceGlobalVariableWrite(
2058
2062
2059
2063
clEnqueueWriteGlobalVariable_fn F = nullptr ;
2060
2064
Res = getExtFuncFromContext<decltype (F)>(
2061
- cast<pi_context>( Ctx) , ExtFuncPtrCache->clEnqueueWriteGlobalVariableCache ,
2065
+ Ctx, ExtFuncPtrCache->clEnqueueWriteGlobalVariableCache ,
2062
2066
clEnqueueWriteGlobalVariableName, &F);
2063
2067
2064
2068
if (!F || Res != CL_SUCCESS)
@@ -2096,7 +2100,7 @@ pi_result piextEnqueueDeviceGlobalVariableRead(
2096
2100
2097
2101
clEnqueueReadGlobalVariable_fn F = nullptr ;
2098
2102
Res = getExtFuncFromContext<decltype (F)>(
2099
- cast<pi_context>( Ctx) , ExtFuncPtrCache->clEnqueueReadGlobalVariableCache ,
2103
+ Ctx, ExtFuncPtrCache->clEnqueueReadGlobalVariableCache ,
2100
2104
clEnqueueReadGlobalVariableName, &F);
2101
2105
2102
2106
if (!F || Res != CL_SUCCESS)
@@ -2123,8 +2127,7 @@ pi_result piextEnqueueReadHostPipe(pi_queue queue, pi_program program,
2123
2127
2124
2128
clEnqueueReadHostPipeINTEL_fn FuncPtr = nullptr ;
2125
2129
pi_result RetVal = getExtFuncFromContext<clEnqueueReadHostPipeINTEL_fn>(
2126
- cast<pi_context>(CLContext),
2127
- ExtFuncPtrCache->clEnqueueReadHostPipeINTELCache ,
2130
+ CLContext, ExtFuncPtrCache->clEnqueueReadHostPipeINTELCache ,
2128
2131
clEnqueueReadHostPipeName, &FuncPtr);
2129
2132
2130
2133
if (FuncPtr) {
@@ -2153,8 +2156,7 @@ pi_result piextEnqueueWriteHostPipe(pi_queue queue, pi_program program,
2153
2156
2154
2157
clEnqueueWriteHostPipeINTEL_fn FuncPtr = nullptr ;
2155
2158
pi_result RetVal = getExtFuncFromContext<clEnqueueWriteHostPipeINTEL_fn>(
2156
- cast<pi_context>(CLContext),
2157
- ExtFuncPtrCache->clEnqueueWriteHostPipeINTELCache ,
2159
+ CLContext, ExtFuncPtrCache->clEnqueueWriteHostPipeINTELCache ,
2158
2160
clEnqueueWriteHostPipeName, &FuncPtr);
2159
2161
2160
2162
if (FuncPtr) {
@@ -2205,8 +2207,7 @@ pi_result piextProgramSetSpecializationConstant(pi_program prog,
2205
2207
2206
2208
clSetProgramSpecializationConstant_fn F = nullptr ;
2207
2209
Res = getExtFuncFromContext<decltype (F)>(
2208
- cast<pi_context>(Ctx),
2209
- ExtFuncPtrCache->clSetProgramSpecializationConstantCache ,
2210
+ Ctx, ExtFuncPtrCache->clSetProgramSpecializationConstantCache ,
2210
2211
clSetProgramSpecializationConstantName, &F);
2211
2212
2212
2213
if (!F || Res != CL_SUCCESS)
0 commit comments