15aed82e4SJeremy L Thompson // Copyright (c) 2017-2024, Lawrence Livermore National Security, LLC and other CEED contributors. 23d8e8822SJeremy L Thompson // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 37d8d0e25Snbeams // 43d8e8822SJeremy L Thompson // SPDX-License-Identifier: BSD-2-Clause 57d8d0e25Snbeams // 63d8e8822SJeremy L Thompson // This file is part of CEED: http://github.com/ceed 77d8d0e25Snbeams 849aac155SJeremy L Thompson #include <ceed.h> 9ec3da8bcSJed Brown #include <ceed/backend.h> 103d576824SJeremy L Thompson #include <hip/hip_runtime.h> 112b730f8bSJeremy L Thompson 1249aac155SJeremy L Thompson #include "../hip/ceed-hip-common.h" 137d8d0e25Snbeams #include "ceed-hip-gen.h" 147d8d0e25Snbeams 157d8d0e25Snbeams //------------------------------------------------------------------------------ 167d8d0e25Snbeams // Apply QFunction 177d8d0e25Snbeams //------------------------------------------------------------------------------ 182b730f8bSJeremy L Thompson static int CeedQFunctionApply_Hip_gen(CeedQFunction qf, CeedInt Q, CeedVector *U, CeedVector *V) { 196e536b99SJeremy L Thompson return CeedError(CeedQFunctionReturnCeed(qf), CEED_ERROR_BACKEND, "Backend does not implement QFunctionApply"); 207d8d0e25Snbeams } 217d8d0e25Snbeams 227d8d0e25Snbeams //------------------------------------------------------------------------------ 237d8d0e25Snbeams // Destroy QFunction 247d8d0e25Snbeams //------------------------------------------------------------------------------ 257d8d0e25Snbeams static int CeedQFunctionDestroy_Hip_gen(CeedQFunction qf) { 26b7453713SJeremy L Thompson CeedQFunction_Hip_gen *data; 27b7453713SJeremy L Thompson 28b7453713SJeremy L Thompson CeedCallBackend(CeedQFunctionGetData(qf, &data)); 296e536b99SJeremy L Thompson CeedCallHip(CeedQFunctionReturnCeed(qf), hipFree(data->d_c)); 302b730f8bSJeremy L Thompson CeedCallBackend(CeedFree(&data)); 31e15f9bd0SJeremy L Thompson return CEED_ERROR_SUCCESS; 327d8d0e25Snbeams } 337d8d0e25Snbeams 347d8d0e25Snbeams //------------------------------------------------------------------------------ 357d8d0e25Snbeams // Create QFunction 367d8d0e25Snbeams //------------------------------------------------------------------------------ 377d8d0e25Snbeams int CeedQFunctionCreate_Hip_gen(CeedQFunction qf) { 387d8d0e25Snbeams Ceed ceed; 397d8d0e25Snbeams CeedQFunction_Hip_gen *data; 40b7453713SJeremy L Thompson 416e536b99SJeremy L Thompson CeedCallBackend(CeedQFunctionGetCeed(qf, &ceed)); 422b730f8bSJeremy L Thompson CeedCallBackend(CeedCalloc(1, &data)); 432b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionSetData(qf, data)); 447d8d0e25Snbeams 4509095acaSJeremy L Thompson CeedCallBackend(CeedQFunctionGetKernelName(qf, &data->qfunction_name)); 467d8d0e25Snbeams 472b730f8bSJeremy L Thompson CeedCallBackend(CeedSetBackendFunction(ceed, "QFunction", qf, "Apply", CeedQFunctionApply_Hip_gen)); 482b730f8bSJeremy L Thompson CeedCallBackend(CeedSetBackendFunction(ceed, "QFunction", qf, "Destroy", CeedQFunctionDestroy_Hip_gen)); 49*9bc66399SJeremy L Thompson CeedCallBackend(CeedDestroy(&ceed)); 50e15f9bd0SJeremy L Thompson return CEED_ERROR_SUCCESS; 517d8d0e25Snbeams } 522a86cc9dSSebastian Grimberg 537d8d0e25Snbeams //------------------------------------------------------------------------------ 54