13d8e8822SJeremy L Thompson // Copyright (c) 2017-2022, 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 8ec3da8bcSJed Brown #include <ceed/backend.h> 9*2b730f8bSJeremy L Thompson #include <ceed/ceed.h> 103d576824SJeremy L Thompson #include <hip/hip_runtime.h> 117d8d0e25Snbeams #include <stdio.h> 123d576824SJeremy L Thompson #include <string.h> 13*2b730f8bSJeremy L Thompson 147d8d0e25Snbeams #include "ceed-hip-gen.h" 157d8d0e25Snbeams 167d8d0e25Snbeams //------------------------------------------------------------------------------ 177d8d0e25Snbeams // Apply QFunction 187d8d0e25Snbeams //------------------------------------------------------------------------------ 19*2b730f8bSJeremy L Thompson static int CeedQFunctionApply_Hip_gen(CeedQFunction qf, CeedInt Q, CeedVector *U, CeedVector *V) { 207d8d0e25Snbeams Ceed ceed; 21*2b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionGetCeed(qf, &ceed)); 22*2b730f8bSJeremy L Thompson return CeedError(ceed, CEED_ERROR_BACKEND, "Backend does not implement QFunctionApply"); 237d8d0e25Snbeams } 247d8d0e25Snbeams 257d8d0e25Snbeams //------------------------------------------------------------------------------ 267d8d0e25Snbeams // Destroy QFunction 277d8d0e25Snbeams //------------------------------------------------------------------------------ 287d8d0e25Snbeams static int CeedQFunctionDestroy_Hip_gen(CeedQFunction qf) { 297d8d0e25Snbeams CeedQFunction_Hip_gen *data; 30*2b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionGetData(qf, &data)); 317d8d0e25Snbeams Ceed ceed; 32*2b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionGetCeed(qf, &ceed)); 33*2b730f8bSJeremy L Thompson CeedCallHip(ceed, hipFree(data->d_c)); 34*2b730f8bSJeremy L Thompson CeedCallBackend(CeedFree(&data->q_function_source)); 35*2b730f8bSJeremy L Thompson CeedCallBackend(CeedFree(&data)); 36e15f9bd0SJeremy L Thompson return CEED_ERROR_SUCCESS; 377d8d0e25Snbeams } 387d8d0e25Snbeams 397d8d0e25Snbeams //------------------------------------------------------------------------------ 407d8d0e25Snbeams // Create QFunction 417d8d0e25Snbeams //------------------------------------------------------------------------------ 427d8d0e25Snbeams int CeedQFunctionCreate_Hip_gen(CeedQFunction qf) { 437d8d0e25Snbeams Ceed ceed; 447d8d0e25Snbeams CeedQFunctionGetCeed(qf, &ceed); 457d8d0e25Snbeams CeedQFunction_Hip_gen *data; 46*2b730f8bSJeremy L Thompson CeedCallBackend(CeedCalloc(1, &data)); 47*2b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionSetData(qf, data)); 487d8d0e25Snbeams 493d3250a0SJeremy L Thompson // Read QFunction source 50*2b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionGetKernelName(qf, &data->q_function_name)); 5146dc0734SJeremy L Thompson CeedDebug256(ceed, 2, "----- Loading QFunction User Source -----\n"); 52*2b730f8bSJeremy L Thompson CeedCallBackend(CeedQFunctionLoadSourceToBuffer(qf, &data->q_function_source)); 5346dc0734SJeremy L Thompson CeedDebug256(ceed, 2, "----- Loading QFunction User Source Complete! -----\n"); 54*2b730f8bSJeremy L Thompson if (!data->q_function_source) { 553d3250a0SJeremy L Thompson // LCOV_EXCL_START 56*2b730f8bSJeremy L Thompson return CeedError(ceed, CEED_ERROR_UNSUPPORTED, "/gpu/hip/gen backend requires QFunction source code file"); 573d3250a0SJeremy L Thompson // LCOV_EXCL_STOP 58*2b730f8bSJeremy L Thompson } 597d8d0e25Snbeams 60*2b730f8bSJeremy L Thompson CeedCallBackend(CeedSetBackendFunction(ceed, "QFunction", qf, "Apply", CeedQFunctionApply_Hip_gen)); 61*2b730f8bSJeremy L Thompson CeedCallBackend(CeedSetBackendFunction(ceed, "QFunction", qf, "Destroy", CeedQFunctionDestroy_Hip_gen)); 62e15f9bd0SJeremy L Thompson return CEED_ERROR_SUCCESS; 637d8d0e25Snbeams } 647d8d0e25Snbeams //------------------------------------------------------------------------------ 65