Lines Matching full:-
1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors.
2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
4 // SPDX-License-Identifier: BSD-2-Clause
14 #include "ceed-sycl-ref.hpp"
16 //------------------------------------------------------------------------------
18 //------------------------------------------------------------------------------
28 CeedCheck(impl->h_data, ceed, CEED_ERROR_BACKEND, "No valid host data to sync to device"); in CeedQFunctionContextSyncH2D_Sycl()
32 if (impl->d_data_borrowed) { in CeedQFunctionContextSyncH2D_Sycl()
33 impl->d_data = impl->d_data_borrowed; in CeedQFunctionContextSyncH2D_Sycl()
34 } else if (impl->d_data_owned) { in CeedQFunctionContextSyncH2D_Sycl()
35 impl->d_data = impl->d_data_owned; in CeedQFunctionContextSyncH2D_Sycl()
37 …CeedCallSycl(ceed, impl->d_data_owned = sycl::malloc_device(ctx_size, sycl_data->sycl_device, sycl… in CeedQFunctionContextSyncH2D_Sycl()
38 impl->d_data = impl->d_data_owned; in CeedQFunctionContextSyncH2D_Sycl()
42 if (!sycl_data->sycl_queue.is_in_order()) e = {sycl_data->sycl_queue.ext_oneapi_submit_barrier()}; in CeedQFunctionContextSyncH2D_Sycl()
43 sycl::event copy_event = sycl_data->sycl_queue.memcpy(impl->d_data, impl->h_data, ctx_size, e); in CeedQFunctionContextSyncH2D_Sycl()
49 //------------------------------------------------------------------------------
51 //------------------------------------------------------------------------------
61 CeedCheck(impl->d_data, ceed, CEED_ERROR_BACKEND, "No valid device data to sync to host"); in CeedQFunctionContextSyncD2H_Sycl()
65 if (impl->h_data_borrowed) { in CeedQFunctionContextSyncD2H_Sycl()
66 impl->h_data = impl->h_data_borrowed; in CeedQFunctionContextSyncD2H_Sycl()
67 } else if (impl->h_data_owned) { in CeedQFunctionContextSyncD2H_Sycl()
68 impl->h_data = impl->h_data_owned; in CeedQFunctionContextSyncD2H_Sycl()
70 CeedCallBackend(CeedMallocArray(1, ctx_size, &impl->h_data_owned)); in CeedQFunctionContextSyncD2H_Sycl()
71 impl->h_data = impl->h_data_owned; in CeedQFunctionContextSyncD2H_Sycl()
76 if (!sycl_data->sycl_queue.is_in_order()) e = {sycl_data->sycl_queue.ext_oneapi_submit_barrier()}; in CeedQFunctionContextSyncD2H_Sycl()
77 sycl::event copy_event = sycl_data->sycl_queue.memcpy(impl->h_data, impl->d_data, ctx_size, e); in CeedQFunctionContextSyncD2H_Sycl()
83 //------------------------------------------------------------------------------
85 //------------------------------------------------------------------------------
96 //------------------------------------------------------------------------------
98 //------------------------------------------------------------------------------
103 impl->h_data = NULL; in CeedQFunctionContextSetAllInvalid_Sycl()
104 impl->d_data = NULL; in CeedQFunctionContextSetAllInvalid_Sycl()
108 //------------------------------------------------------------------------------
110 //------------------------------------------------------------------------------
115 *has_valid_data = impl && (impl->h_data || impl->d_data); in CeedQFunctionContextHasValidData_Sycl()
119 //------------------------------------------------------------------------------
121 //------------------------------------------------------------------------------
129 *has_borrowed_data_of_type = impl->h_data_borrowed; in CeedQFunctionContextHasBorrowedDataOfType_Sycl()
132 *has_borrowed_data_of_type = impl->d_data_borrowed; in CeedQFunctionContextHasBorrowedDataOfType_Sycl()
138 //------------------------------------------------------------------------------
140 //------------------------------------------------------------------------------
149 *need_sync = has_valid_data && !impl->h_data; in CeedQFunctionContextNeedSync_Sycl()
152 *need_sync = has_valid_data && !impl->d_data; in CeedQFunctionContextNeedSync_Sycl()
158 //------------------------------------------------------------------------------
160 //------------------------------------------------------------------------------
165 CeedCallBackend(CeedFree(&impl->h_data_owned)); in CeedQFunctionContextSetDataHost_Sycl()
171 CeedCallBackend(CeedMallocArray(1, ctx_size, &impl->h_data_owned)); in CeedQFunctionContextSetDataHost_Sycl()
172 impl->h_data_borrowed = NULL; in CeedQFunctionContextSetDataHost_Sycl()
173 impl->h_data = impl->h_data_owned; in CeedQFunctionContextSetDataHost_Sycl()
174 memcpy(impl->h_data, data, ctx_size); in CeedQFunctionContextSetDataHost_Sycl()
177 impl->h_data_owned = data; in CeedQFunctionContextSetDataHost_Sycl()
178 impl->h_data_borrowed = NULL; in CeedQFunctionContextSetDataHost_Sycl()
179 impl->h_data = data; in CeedQFunctionContextSetDataHost_Sycl()
182 impl->h_data_borrowed = data; in CeedQFunctionContextSetDataHost_Sycl()
183 impl->h_data = data; in CeedQFunctionContextSetDataHost_Sycl()
189 //------------------------------------------------------------------------------
191 //------------------------------------------------------------------------------
203 if (!sycl_data->sycl_queue.is_in_order()) e = {sycl_data->sycl_queue.ext_oneapi_submit_barrier()}; in CeedQFunctionContextSetDataDevice_Sycl()
206 if (impl->d_data_owned) { in CeedQFunctionContextSetDataDevice_Sycl()
207 CeedCallSycl(ceed, sycl_data->sycl_queue.wait_and_throw()); in CeedQFunctionContextSetDataDevice_Sycl()
208 CeedCallSycl(ceed, sycl::free(impl->d_data_owned, sycl_data->sycl_context)); in CeedQFunctionContextSetDataDevice_Sycl()
209 impl->d_data_owned = NULL; in CeedQFunctionContextSetDataDevice_Sycl()
217 …CeedCallSycl(ceed, impl->d_data_owned = sycl::malloc_device(ctx_size, sycl_data->sycl_device, sycl… in CeedQFunctionContextSetDataDevice_Sycl()
218 impl->d_data_borrowed = NULL; in CeedQFunctionContextSetDataDevice_Sycl()
219 impl->d_data = impl->d_data_owned; in CeedQFunctionContextSetDataDevice_Sycl()
220 sycl::event copy_event = sycl_data->sycl_queue.memcpy(impl->d_data, data, ctx_size, e); in CeedQFunctionContextSetDataDevice_Sycl()
224 impl->d_data_owned = data; in CeedQFunctionContextSetDataDevice_Sycl()
225 impl->d_data_borrowed = NULL; in CeedQFunctionContextSetDataDevice_Sycl()
226 impl->d_data = data; in CeedQFunctionContextSetDataDevice_Sycl()
229 impl->d_data_owned = NULL; in CeedQFunctionContextSetDataDevice_Sycl()
230 impl->d_data_borrowed = data; in CeedQFunctionContextSetDataDevice_Sycl()
231 impl->d_data = data; in CeedQFunctionContextSetDataDevice_Sycl()
238 //------------------------------------------------------------------------------
241 //------------------------------------------------------------------------------
253 //------------------------------------------------------------------------------
255 //------------------------------------------------------------------------------
268 if (!ceedSycl->sycl_queue.is_in_order()) ceedSycl->sycl_queue.ext_oneapi_submit_barrier(); in CeedQFunctionContextTakeData_Sycl()
277 *(void **)data = impl->h_data_borrowed; in CeedQFunctionContextTakeData_Sycl()
278 impl->h_data_borrowed = NULL; in CeedQFunctionContextTakeData_Sycl()
279 impl->h_data = NULL; in CeedQFunctionContextTakeData_Sycl()
282 *(void **)data = impl->d_data_borrowed; in CeedQFunctionContextTakeData_Sycl()
283 impl->d_data_borrowed = NULL; in CeedQFunctionContextTakeData_Sycl()
284 impl->d_data = NULL; in CeedQFunctionContextTakeData_Sycl()
290 //------------------------------------------------------------------------------
293 //------------------------------------------------------------------------------
307 *(void **)data = impl->h_data; in CeedQFunctionContextGetDataCore_Sycl()
310 *(void **)data = impl->d_data; in CeedQFunctionContextGetDataCore_Sycl()
316 //------------------------------------------------------------------------------
317 // Get read-only access to the data
318 //------------------------------------------------------------------------------
323 //------------------------------------------------------------------------------
325 //------------------------------------------------------------------------------
336 impl->h_data = *(void **)data; in CeedQFunctionContextGetData_Sycl()
339 impl->d_data = *(void **)data; in CeedQFunctionContextGetData_Sycl()
345 //------------------------------------------------------------------------------
347 //------------------------------------------------------------------------------
358 CeedCallSycl(ceed, sycl_data->sycl_queue.wait_and_throw()); in CeedQFunctionContextDestroy_Sycl()
359 CeedCallSycl(ceed, sycl::free(impl->d_data_owned, sycl_data->sycl_context)); in CeedQFunctionContextDestroy_Sycl()
361 CeedCallBackend(CeedFree(&impl->h_data_owned)); in CeedQFunctionContextDestroy_Sycl()
366 //------------------------------------------------------------------------------
368 //------------------------------------------------------------------------------
387 //------------------------------------------------------------------------------