@@ -2395,6 +2395,8 @@ static void GetUrArgsBasedOnType(
23952395 }
23962396}
23972397
2398+ thread_local std::vector<ur_exp_kernel_arg_properties_t > UrArgs;
2399+
23982400static ur_result_t SetKernelParamsAndLaunch (
23992401 queue_impl &Queue, std::vector<ArgDesc> &Args,
24002402 device_image_impl *DeviceImageImpl, ur_kernel_handle_t Kernel,
@@ -2416,12 +2418,11 @@ static ur_result_t SetKernelParamsAndLaunch(
24162418 DeviceImageImpl ? DeviceImageImpl->get_spec_const_blob_ref () : Empty);
24172419 }
24182420
2419- std::vector<ur_exp_kernel_arg_properties_t > UrArgs;
24202421 UrArgs.reserve (Args.size ());
2422+ UrArgs.clear ();
24212423
24222424 if (KernelFuncPtr && !KernelHasSpecialCaptures) {
2423- auto setFunc = [&UrArgs,
2424- KernelFuncPtr](const detail::kernel_param_desc_t &ParamDesc,
2425+ auto setFunc = [KernelFuncPtr](const detail::kernel_param_desc_t &ParamDesc,
24252426 size_t NextTrueIndex) {
24262427 const void *ArgPtr = (const char *)KernelFuncPtr + ParamDesc.offset ;
24272428 switch (ParamDesc.kind ) {
@@ -2451,8 +2452,8 @@ static ur_result_t SetKernelParamsAndLaunch(
24512452 applyFuncOnFilteredArgs (EliminatedArgMask, KernelNumArgs,
24522453 KernelParamDescGetter, setFunc);
24532454 } else {
2454- auto setFunc = [&DeviceImageImpl, &getMemAllocationFunc, &Queue,
2455- &UrArgs ](detail::ArgDesc &Arg, size_t NextTrueIndex) {
2455+ auto setFunc = [&DeviceImageImpl, &getMemAllocationFunc,
2456+ &Queue ](detail::ArgDesc &Arg, size_t NextTrueIndex) {
24562457 GetUrArgsBasedOnType (DeviceImageImpl, getMemAllocationFunc,
24572458 Queue.getContextImpl (), Arg, NextTrueIndex, UrArgs);
24582459 };
0 commit comments