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 "../hip/ceed-hip-common.h"
15 #include "ceed-hip-ref.h"
17 //------------------------------------------------------------------------------
19 //------------------------------------------------------------------------------
28 CeedCheck(impl->h_data, ceed, CEED_ERROR_BACKEND, "No valid host data to sync to device"); in CeedQFunctionContextSyncH2D_Hip()
31 if (impl->d_data_borrowed) { in CeedQFunctionContextSyncH2D_Hip()
32 impl->d_data = impl->d_data_borrowed; in CeedQFunctionContextSyncH2D_Hip()
33 } else if (impl->d_data_owned) { in CeedQFunctionContextSyncH2D_Hip()
34 impl->d_data = impl->d_data_owned; in CeedQFunctionContextSyncH2D_Hip()
36 CeedCallHip(ceed, hipMalloc((void **)&impl->d_data_owned, ctx_size)); in CeedQFunctionContextSyncH2D_Hip()
37 impl->d_data = impl->d_data_owned; in CeedQFunctionContextSyncH2D_Hip()
39 CeedCallHip(ceed, hipMemcpy(impl->d_data, impl->h_data, ctx_size, hipMemcpyHostToDevice)); in CeedQFunctionContextSyncH2D_Hip()
44 //------------------------------------------------------------------------------
46 //------------------------------------------------------------------------------
55 CeedCheck(impl->d_data, ceed, CEED_ERROR_BACKEND, "No valid device data to sync to host"); in CeedQFunctionContextSyncD2H_Hip()
58 if (impl->h_data_borrowed) { in CeedQFunctionContextSyncD2H_Hip()
59 impl->h_data = impl->h_data_borrowed; in CeedQFunctionContextSyncD2H_Hip()
60 } else if (impl->h_data_owned) { in CeedQFunctionContextSyncD2H_Hip()
61 impl->h_data = impl->h_data_owned; in CeedQFunctionContextSyncD2H_Hip()
63 CeedCallBackend(CeedMallocArray(1, ctx_size, &impl->h_data_owned)); in CeedQFunctionContextSyncD2H_Hip()
64 impl->h_data = impl->h_data_owned; in CeedQFunctionContextSyncD2H_Hip()
66 CeedCallHip(ceed, hipMemcpy(impl->h_data, impl->d_data, ctx_size, hipMemcpyDeviceToHost)); in CeedQFunctionContextSyncD2H_Hip()
71 //------------------------------------------------------------------------------
73 //------------------------------------------------------------------------------
84 //------------------------------------------------------------------------------
86 //------------------------------------------------------------------------------
91 impl->h_data = NULL; in CeedQFunctionContextSetAllInvalid_Hip()
92 impl->d_data = NULL; in CeedQFunctionContextSetAllInvalid_Hip()
96 //------------------------------------------------------------------------------
98 //------------------------------------------------------------------------------
103 *has_valid_data = impl && (impl->h_data || impl->d_data); in CeedQFunctionContextHasValidData_Hip()
107 //------------------------------------------------------------------------------
109 //------------------------------------------------------------------------------
117 *has_borrowed_data_of_type = impl->h_data_borrowed; in CeedQFunctionContextHasBorrowedDataOfType_Hip()
120 *has_borrowed_data_of_type = impl->d_data_borrowed; in CeedQFunctionContextHasBorrowedDataOfType_Hip()
126 //------------------------------------------------------------------------------
128 //------------------------------------------------------------------------------
137 *need_sync = has_valid_data && !impl->h_data; in CeedQFunctionContextNeedSync_Hip()
140 *need_sync = has_valid_data && !impl->d_data; in CeedQFunctionContextNeedSync_Hip()
146 //------------------------------------------------------------------------------
148 //------------------------------------------------------------------------------
153 CeedCallBackend(CeedFree(&impl->h_data_owned)); in CeedQFunctionContextSetDataHost_Hip()
159 CeedCallBackend(CeedMallocArray(1, ctx_size, &impl->h_data_owned)); in CeedQFunctionContextSetDataHost_Hip()
160 impl->h_data_borrowed = NULL; in CeedQFunctionContextSetDataHost_Hip()
161 impl->h_data = impl->h_data_owned; in CeedQFunctionContextSetDataHost_Hip()
162 memcpy(impl->h_data, data, ctx_size); in CeedQFunctionContextSetDataHost_Hip()
165 impl->h_data_owned = data; in CeedQFunctionContextSetDataHost_Hip()
166 impl->h_data_borrowed = NULL; in CeedQFunctionContextSetDataHost_Hip()
167 impl->h_data = data; in CeedQFunctionContextSetDataHost_Hip()
170 impl->h_data_borrowed = data; in CeedQFunctionContextSetDataHost_Hip()
171 impl->h_data = data; in CeedQFunctionContextSetDataHost_Hip()
177 //------------------------------------------------------------------------------
179 //------------------------------------------------------------------------------
187 CeedCallHip(ceed, hipFree(impl->d_data_owned)); in CeedQFunctionContextSetDataDevice_Hip()
188 impl->d_data_owned = NULL; in CeedQFunctionContextSetDataDevice_Hip()
193 CeedCallHip(ceed, hipMalloc((void **)&impl->d_data_owned, ctx_size)); in CeedQFunctionContextSetDataDevice_Hip()
194 impl->d_data_borrowed = NULL; in CeedQFunctionContextSetDataDevice_Hip()
195 impl->d_data = impl->d_data_owned; in CeedQFunctionContextSetDataDevice_Hip()
196 CeedCallHip(ceed, hipMemcpy(impl->d_data, data, ctx_size, hipMemcpyDeviceToDevice)); in CeedQFunctionContextSetDataDevice_Hip()
199 impl->d_data_owned = data; in CeedQFunctionContextSetDataDevice_Hip()
200 impl->d_data_borrowed = NULL; in CeedQFunctionContextSetDataDevice_Hip()
201 impl->d_data = data; in CeedQFunctionContextSetDataDevice_Hip()
204 impl->d_data_owned = NULL; in CeedQFunctionContextSetDataDevice_Hip()
205 impl->d_data_borrowed = data; in CeedQFunctionContextSetDataDevice_Hip()
206 impl->d_data = data; in CeedQFunctionContextSetDataDevice_Hip()
213 //------------------------------------------------------------------------------
216 //------------------------------------------------------------------------------
228 //------------------------------------------------------------------------------
230 //------------------------------------------------------------------------------
244 *(void **)data = impl->h_data_borrowed; in CeedQFunctionContextTakeData_Hip()
245 impl->h_data_borrowed = NULL; in CeedQFunctionContextTakeData_Hip()
246 impl->h_data = NULL; in CeedQFunctionContextTakeData_Hip()
249 *(void **)data = impl->d_data_borrowed; in CeedQFunctionContextTakeData_Hip()
250 impl->d_data_borrowed = NULL; in CeedQFunctionContextTakeData_Hip()
251 impl->d_data = NULL; in CeedQFunctionContextTakeData_Hip()
257 //------------------------------------------------------------------------------
260 //------------------------------------------------------------------------------
274 *(void **)data = impl->h_data; in CeedQFunctionContextGetDataCore_Hip()
277 *(void **)data = impl->d_data; in CeedQFunctionContextGetDataCore_Hip()
283 //------------------------------------------------------------------------------
284 // Get read-only access to the data
285 //------------------------------------------------------------------------------
290 //------------------------------------------------------------------------------
292 //------------------------------------------------------------------------------
303 impl->h_data = *(void **)data; in CeedQFunctionContextGetData_Hip()
306 impl->d_data = *(void **)data; in CeedQFunctionContextGetData_Hip()
312 //------------------------------------------------------------------------------
314 //------------------------------------------------------------------------------
319 CeedCallHip(CeedQFunctionContextReturnCeed(ctx), hipFree(impl->d_data_owned)); in CeedQFunctionContextDestroy_Hip()
320 CeedCallBackend(CeedFree(&impl->h_data_owned)); in CeedQFunctionContextDestroy_Hip()
325 //------------------------------------------------------------------------------
327 //------------------------------------------------------------------------------
346 //------------------------------------------------------------------------------