xref: /libCEED/interface/ceed-cuda.c (revision 78a97f55f6a0b493f351ed551b9ecfb9c33a05ae)
1 // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors.
2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3 //
4 // SPDX-License-Identifier: BSD-2-Clause
5 //
6 // This file is part of CEED:  http://github.com/ceed
7 
8 #include <ceed-impl.h>
9 #include <ceed/backend.h>
10 #include <ceed/ceed.h>
11 #include <ceed/cuda.h>
12 
13 /**
14   @brief Set CUDA function pointer to evaluate action at quadrature points
15 
16   @param[in,out] qf CeedQFunction to set device pointer
17   @param[in]     f  Device function pointer to evaluate action at quadrature points
18 
19   @return An error code: 0 - success, otherwise - failure
20 
21   @ref User
22 **/
23 int CeedQFunctionSetCUDAUserFunction(CeedQFunction qf, CUfunction f) {
24   if (!qf->SetCUDAUserFunction) {
25     Ceed ceed;
26     CeedCall(CeedQFunctionGetCeed(qf, &ceed));
27     CeedDebug(ceed, "Backend does not support CUfunction pointers for QFunctions.");
28   } else {
29     CeedCall(qf->SetCUDAUserFunction(qf, f));
30   }
31   return CEED_ERROR_SUCCESS;
32 }
33