Skip to content

Commit 71415c5

Browse files
committed
build - register exact names of backends in CeedRegister_Weak for better error messages
1 parent 92ee7d1 commit 71415c5

3 files changed

Lines changed: 43 additions & 27 deletions

File tree

backends/ceed-backend-list.h

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,24 @@
55
// listed, and also to define weak symbol aliases for backends that are not
66
// configured.
77

8-
MACRO(CeedRegister_Avx_Blocked)
9-
MACRO(CeedRegister_Avx_Serial)
10-
MACRO(CeedRegister_Cuda)
11-
MACRO(CeedRegister_Cuda_Gen)
12-
MACRO(CeedRegister_Cuda_Shared)
13-
MACRO(CeedRegister_Hip)
14-
MACRO(CeedRegister_Hip_Gen)
15-
MACRO(CeedRegister_Hip_Shared)
16-
MACRO(CeedRegister_Magma)
17-
MACRO(CeedRegister_Magma_Det)
18-
MACRO(CeedRegister_Memcheck_Blocked)
19-
MACRO(CeedRegister_Memcheck_Serial)
20-
MACRO(CeedRegister_Occa)
21-
MACRO(CeedRegister_Opt_Blocked)
22-
MACRO(CeedRegister_Opt_Serial)
23-
MACRO(CeedRegister_Ref)
24-
MACRO(CeedRegister_Ref_Blocked)
25-
MACRO(CeedRegister_Tmpl)
26-
MACRO(CeedRegister_Tmpl_Sub)
27-
MACRO(CeedRegister_Xsmm_Blocked)
28-
MACRO(CeedRegister_Xsmm_Serial)
8+
MACRO(CeedRegister_Avx_Blocked, 1, "/cpu/self/avx/blocked")
9+
MACRO(CeedRegister_Avx_Serial, 1, "/cpu/self/avx/serial")
10+
MACRO(CeedRegister_Cuda, 1, "/gpu/cuda/ref")
11+
MACRO(CeedRegister_Cuda_Gen, 1, "/gpu/cuda/gen")
12+
MACRO(CeedRegister_Cuda_Shared, 1, "/gpu/cuda/shared")
13+
MACRO(CeedRegister_Hip, 1, "/gpu/hip/ref")
14+
MACRO(CeedRegister_Hip_Gen, 1, "/gpu/hip/gen")
15+
MACRO(CeedRegister_Hip_Shared, 1, "/gpu/hip/shared")
16+
MACRO(CeedRegister_Magma, 2, "/gpu/cuda/magma", "/gpu/hip/magma")
17+
MACRO(CeedRegister_Magma_Det, 2, "/gpu/cuda/magma/det", "/gpu/hip/magma/det")
18+
MACRO(CeedRegister_Memcheck_Blocked, 1, "/cpu/self/memcheck/blocked")
19+
MACRO(CeedRegister_Memcheck_Serial, 1, "/cpu/self/memcheck/serial")
20+
MACRO(CeedRegister_Occa, 4, "/cpu/self/occa", "/cpu/openmp/occa", "/gpu/hip/occa", "/gpu/cuda/occa")
21+
MACRO(CeedRegister_Opt_Blocked, 1, "/cpu/self/opt/blocked")
22+
MACRO(CeedRegister_Opt_Serial, 1, "/cpu/self/opt/serial")
23+
MACRO(CeedRegister_Ref, 1, "/cpu/self/ref/serial")
24+
MACRO(CeedRegister_Ref_Blocked, 1, "/cpu/self/ref/blocked")
25+
MACRO(CeedRegister_Tmpl, 1, "/cpu/self/tmpl")
26+
MACRO(CeedRegister_Tmpl_Sub, 1, "/cpu/self/tmpl/sub")
27+
MACRO(CeedRegister_Xsmm_Blocked, 1, "/cpu/self/xsmm/blocked")
28+
MACRO(CeedRegister_Xsmm_Serial, 1, "/cpu/self/xsmm/serial")

backends/ceed-backend-weak.c

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
#include <ceed/backend.h>
2+
#include <limits.h>
23
#include <stdlib.h>
34
#include <stdio.h>
45

5-
// This function provides a debug target for weak symbols
66
// LCOV_EXCL_START
7-
static int CeedRegister_Weak(const char *name) {
7+
// This function provides improved error messages for uncompiled backends
8+
static int CeedInit_Weak(const char *resource, Ceed ceed) {
9+
return CeedError(ceed, CEED_ERROR_UNSUPPORTED,
10+
"Backend not currently compiled: %s", resource);
11+
}
12+
13+
// This function provides a debug target for weak symbols
14+
static int CeedRegister_Weak(const char *name, int num_prefixes, ...) {
815
if (getenv("CEED_DEBUG")) fprintf(stderr, "Weak %s\n", name);
16+
17+
va_list prefixes;
18+
va_start(prefixes, num_prefixes);
19+
int ierr;
20+
for (int i=0; i<num_prefixes; i++) {
21+
ierr = CeedRegister(va_arg(prefixes, const char*), CeedInit_Weak, UINT_MAX);
22+
CeedChk(ierr);
23+
}
24+
va_end(prefixes);
925
return CEED_ERROR_SUCCESS;
1026
}
1127
// LCOV_EXCL_STOP
1228

13-
#define MACRO(name) \
29+
#define MACRO(name,num_prefixes, ...) \
1430
CEED_INTERN int name(void) __attribute__((weak)); \
15-
int name(void) { return CeedRegister_Weak(__func__); }
31+
int name(void) { return CeedRegister_Weak(__func__,num_prefixes, ## __VA_ARGS__); }
1632
#include "ceed-backend-list.h"
1733
#undef MACRO

interface/ceed-register.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
static bool register_all_called;
88

9-
#define MACRO(name) CEED_INTERN int name(void);
9+
#define MACRO(name,...) CEED_INTERN int name(void);
1010
#include "../backends/ceed-backend-list.h"
1111
#undef MACRO
1212

@@ -26,7 +26,7 @@ int CeedRegisterAll() {
2626
if (register_all_called) return 0;
2727
register_all_called = true;
2828

29-
#define MACRO(name) CeedChk(name());
29+
#define MACRO(name,...) CeedChk(name());
3030
#include "../backends/ceed-backend-list.h"
3131
#undef MACRO
3232
return CEED_ERROR_SUCCESS;

0 commit comments

Comments
 (0)