Skip to content

Commit a52cd1d

Browse files
committed
backends - use defines over weak
1 parent 7b3ff06 commit a52cd1d

28 files changed

+455
-268
lines changed

Makefile

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -487,9 +487,10 @@ MEMCHK_STATUS = Disabled
487487
MEMCHK := $(shell echo "$(HASH)include <valgrind/memcheck.h>" | $(CC) $(CPPFLAGS) -E - >/dev/null 2>&1 && echo 1)
488488
MEMCHK_BACKENDS = /cpu/self/memcheck/serial /cpu/self/memcheck/blocked
489489
ifeq ($(MEMCHK),1)
490-
MEMCHK_STATUS = Enabled
491-
libceed.c += $(ceedmemcheck.c)
490+
MEMCHK_STATUS = Enabled
491+
libceed.c += $(ceedmemcheck.c)
492492
BACKENDS_MAKE += $(MEMCHK_BACKENDS)
493+
CFLAGS += "-DCEED_USE_MEMCHECK"
493494
endif
494495

495496
# AVX Backeds
@@ -498,9 +499,10 @@ AVX_FLAG := $(if $(filter clang,$(CC_VENDOR)),+avx,-mavx)
498499
AVX := $(filter $(AVX_FLAG),$(shell $(CC) $(CFLAGS:-M%=) -v -E -x c /dev/null 2>&1))
499500
AVX_BACKENDS = /cpu/self/avx/serial /cpu/self/avx/blocked
500501
ifneq ($(AVX),)
501-
AVX_STATUS = Enabled
502-
libceed.c += $(avx.c)
502+
AVX_STATUS = Enabled
503+
libceed.c += $(avx.c)
503504
BACKENDS_MAKE += $(AVX_BACKENDS)
505+
CFLAGS += "-DCEED_USE_AVX"
504506
endif
505507

506508
# Collect list of libraries and paths for use in linking and pkg-config
@@ -523,10 +525,11 @@ ifneq ($(wildcard $(XSMM_DIR)/lib/libxsmm.*),)
523525
endif
524526
BLAS_LIB ?= $(MKL_LINK) -Wl,--push-state,--no-as-needed -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl -Wl,--pop-state
525527
endif
526-
PKG_LIBS += $(BLAS_LIB)
528+
PKG_LIBS += $(BLAS_LIB)
527529
libceed.c += $(xsmm.c)
528530
$(xsmm.c:%.c=$(OBJDIR)/%.o) $(xsmm.c:%=%.tidy) : CPPFLAGS += -I$(XSMM_DIR)/include
529531
BACKENDS_MAKE += $(XSMM_BACKENDS)
532+
CFLAGS += "-DCEED_USE_XSMM"
530533
endif
531534

532535
# CUDA Backends
@@ -538,14 +541,15 @@ CUDA_LIB_DIR_STUBS := $(CUDA_LIB_DIR)/stubs
538541
CUDA_BACKENDS = /gpu/cuda/ref /gpu/cuda/shared /gpu/cuda/gen
539542
ifneq ($(CUDA_LIB_DIR),)
540543
$(libceeds) : CPPFLAGS += -I$(CUDA_DIR)/include
541-
PKG_LIBS += -L$(abspath $(CUDA_LIB_DIR)) -lcudart -lnvrtc -lcuda -lcublas
544+
PKG_LIBS += -L$(abspath $(CUDA_LIB_DIR)) -lcudart -lnvrtc -lcuda -lcublas
542545
PKG_STUBS_LIBS += -L$(CUDA_LIB_DIR_STUBS)
543546
LIBCEED_CONTAINS_CXX = 1
544547
libceed.c += interface/ceed-cuda.c
545548
libceed.c += $(cuda-all.c)
546549
libceed.cpp += $(cuda-all.cpp)
547550
libceed.cu += $(cuda-all.cu)
548551
BACKENDS_MAKE += $(CUDA_BACKENDS)
552+
CFLAGS += "-DCEED_USE_CUDA"
549553
endif
550554

551555
# HIP Backends
@@ -564,6 +568,7 @@ ifneq ($(HIP_LIB_DIR),)
564568
libceed.cpp += $(hip-all.cpp)
565569
libceed.hip += $(hip-all.hip)
566570
BACKENDS_MAKE += $(HIP_BACKENDS)
571+
CFLAGS += "-DCEED_USE_HIP"
567572
endif
568573

569574
# SYCL Backends
@@ -577,6 +582,7 @@ ifneq ($(SYCL_LIB_DIR),)
577582
LIBCEED_CONTAINS_CXX = 1
578583
libceed.sycl += $(sycl-core.cpp) $(sycl-ref.cpp) $(sycl-shared.cpp) $(sycl-gen.cpp)
579584
BACKENDS_MAKE += $(SYCL_BACKENDS)
585+
CFLAGS += "-DCEED_USE_SYCL"
580586
endif
581587

582588
# MAGMA Backends
@@ -613,6 +619,7 @@ ifneq ($(wildcard $(MAGMA_DIR)/lib/libmagma.*),)
613619
endif
614620
LIBCEED_CONTAINS_CXX = 1
615621
BACKENDS_MAKE += $(MAGMA_BACKENDS)
622+
CFLAGS += "-DCEED_USE_MAGMA"
616623
endif
617624

618625
# OCCA Backends
@@ -627,8 +634,9 @@ ifneq ($(wildcard $(OCCA_DIR)/lib/libocca.*),)
627634
$(libceeds) : CPPFLAGS += -I$(OCCA_DIR)/include
628635
PKG_LIBS += -L$(abspath $(OCCA_DIR))/lib -locca
629636
LIBCEED_CONTAINS_CXX = 1
630-
libceed.cpp += $(occa.cpp)
637+
libceed.cpp += $(occa.cpp)
631638
BACKENDS_MAKE += $(OCCA_BACKENDS)
639+
CFLAGS += "-DCEED_USE_OCCA"
632640
endif
633641

634642
BACKENDS ?= $(BACKENDS_MAKE)

backends/avx/ceed-avx-blocked.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
#include <stdbool.h>
1111
#include <string.h>
1212

13+
#include "../ceed-backend-init.h"
1314
#include "ceed-avx.h"
1415

1516
//------------------------------------------------------------------------------
1617
// Backend Init
1718
//------------------------------------------------------------------------------
18-
static int CeedInit_Avx(const char *resource, Ceed ceed) {
19+
CEED_INTERN int CeedInit_Avx_Blocked(const char *resource, Ceed ceed) {
1920
Ceed ceed_ref;
2021

2122
CeedCheck(!strcmp(resource, "/cpu/self") || !strcmp(resource, "/cpu/self/avx") || !strcmp(resource, "/cpu/self/avx/blocked"), ceed,
@@ -32,8 +33,3 @@ static int CeedInit_Avx(const char *resource, Ceed ceed) {
3233
}
3334

3435
//------------------------------------------------------------------------------
35-
// Backend Register
36-
//------------------------------------------------------------------------------
37-
CEED_INTERN int CeedRegister_Avx_Blocked(void) { return CeedRegister("/cpu/self/avx/blocked", CeedInit_Avx, 30); }
38-
39-
//------------------------------------------------------------------------------

backends/avx/ceed-avx-serial.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
#include <stdbool.h>
1111
#include <string.h>
1212

13+
#include "../ceed-backend-init.h"
1314
#include "ceed-avx.h"
1415

1516
//------------------------------------------------------------------------------
1617
// Backend Init
1718
//------------------------------------------------------------------------------
18-
static int CeedInit_Avx(const char *resource, Ceed ceed) {
19+
CEED_INTERN int CeedInit_Avx_Serial(const char *resource, Ceed ceed) {
1920
Ceed ceed_ref;
2021

2122
CeedCheck(!strcmp(resource, "/cpu/self") || !strcmp(resource, "/cpu/self/avx/serial"), ceed, CEED_ERROR_BACKEND,
@@ -32,8 +33,3 @@ static int CeedInit_Avx(const char *resource, Ceed ceed) {
3233
}
3334

3435
//------------------------------------------------------------------------------
35-
// Backend Register
36-
//------------------------------------------------------------------------------
37-
CEED_INTERN int CeedRegister_Avx_Serial(void) { return CeedRegister("/cpu/self/avx/serial", CeedInit_Avx, 35); }
38-
39-
//------------------------------------------------------------------------------

backends/blocked/ceed-blocked.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55
//
66
// This file is part of CEED: http://github.com/ceed
77

8-
#include "ceed-blocked.h"
9-
108
#include <ceed.h>
119
#include <ceed/backend.h>
1210
#include <stdbool.h>
1311
#include <string.h>
1412

13+
#include "../ceed-backend-init.h"
14+
#include "ceed-blocked.h"
15+
1516
//------------------------------------------------------------------------------
1617
// Backend Init
1718
//------------------------------------------------------------------------------
18-
static int CeedInit_Blocked(const char *resource, Ceed ceed) {
19+
CEED_INTERN int CeedInit_Ref_Blocked(const char *resource, Ceed ceed) {
1920
Ceed ceed_ref;
2021

2122
CeedCheck(!strcmp(resource, "/cpu/self") || !strcmp(resource, "/cpu/self/ref/blocked"), ceed, CEED_ERROR_BACKEND,
@@ -32,8 +33,3 @@ static int CeedInit_Blocked(const char *resource, Ceed ceed) {
3233
}
3334

3435
//------------------------------------------------------------------------------
35-
// Backend Register
36-
//------------------------------------------------------------------------------
37-
CEED_INTERN int CeedRegister_Ref_Blocked(void) { return CeedRegister("/cpu/self/ref/blocked", CeedInit_Blocked, 55); }
38-
39-
//------------------------------------------------------------------------------

backends/ceed-backend-init.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright (c) 2017-2025, 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+
#pragma once
8+
9+
#include <ceed/backend.h>
10+
11+
#undef CEED_BACKEND
12+
#define CEED_BACKEND(name) CEED_INTERN int CeedInit_##name(const char *resource, Ceed ceed);
13+
#include "../backends/ceed-backend-list.h"
14+
#undef CEED_BACKEND

backends/ceed-backend-list.h

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,33 @@
1111
// This will be expanded inside CeedRegisterAll() to call each registration function in the order listed, and also to define weak symbol aliases for
1212
// backends that are not configured.
1313

14-
CEED_BACKEND(CeedRegister_Avx_Blocked, 1, "/cpu/self/avx/blocked")
15-
CEED_BACKEND(CeedRegister_Avx_Serial, 1, "/cpu/self/avx/serial")
16-
CEED_BACKEND(CeedRegister_Cuda, 1, "/gpu/cuda/ref")
17-
CEED_BACKEND(CeedRegister_Cuda_Gen, 1, "/gpu/cuda/gen")
18-
CEED_BACKEND(CeedRegister_Cuda_Shared, 1, "/gpu/cuda/shared")
19-
CEED_BACKEND(CeedRegister_Hip, 1, "/gpu/hip/ref")
20-
CEED_BACKEND(CeedRegister_Hip_Gen, 1, "/gpu/hip/gen")
21-
CEED_BACKEND(CeedRegister_Hip_Shared, 1, "/gpu/hip/shared")
22-
CEED_BACKEND(CeedRegister_Sycl, 1, "/gpu/sycl/ref")
23-
CEED_BACKEND(CeedRegister_Sycl_Shared, 1, "/gpu/sycl/shared")
24-
CEED_BACKEND(CeedRegister_Sycl_Gen, 1, "/gpu/sycl/gen")
25-
CEED_BACKEND(CeedRegister_Magma, 2, "/gpu/cuda/magma", "/gpu/hip/magma")
26-
CEED_BACKEND(CeedRegister_Magma_Det, 2, "/gpu/cuda/magma/det", "/gpu/hip/magma/det")
27-
CEED_BACKEND(CeedRegister_Memcheck_Blocked, 1, "/cpu/self/memcheck/blocked")
28-
CEED_BACKEND(CeedRegister_Memcheck_Serial, 1, "/cpu/self/memcheck/serial")
29-
CEED_BACKEND(CeedRegister_Occa, 6, "/cpu/self/occa", "/cpu/openmp/occa", "/gpu/dpcpp/occa", "/gpu/opencl/occa", "/gpu/hip/occa", "/gpu/cuda/occa")
30-
CEED_BACKEND(CeedRegister_Opt_Blocked, 1, "/cpu/self/opt/blocked")
31-
CEED_BACKEND(CeedRegister_Opt_Serial, 1, "/cpu/self/opt/serial")
32-
CEED_BACKEND(CeedRegister_Ref, 1, "/cpu/self/ref/serial")
33-
CEED_BACKEND(CeedRegister_Ref_Blocked, 1, "/cpu/self/ref/blocked")
34-
CEED_BACKEND(CeedRegister_Xsmm_Blocked, 1, "/cpu/self/xsmm/blocked")
35-
CEED_BACKEND(CeedRegister_Xsmm_Serial, 1, "/cpu/self/xsmm/serial")
14+
CEED_BACKEND(Ref_Serial)
15+
CEED_BACKEND(Ref_Blocked)
16+
CEED_BACKEND(Opt_Serial)
17+
CEED_BACKEND(Opt_Blocked)
18+
19+
CEED_BACKEND(Memcheck_Serial)
20+
CEED_BACKEND(Memcheck_Blocked)
21+
22+
CEED_BACKEND(Avx_Serial)
23+
CEED_BACKEND(Avx_Blocked)
24+
25+
CEED_BACKEND(Xsmm_Serial)
26+
CEED_BACKEND(Xsmm_Blocked)
27+
28+
CEED_BACKEND(Cuda_Ref)
29+
CEED_BACKEND(Cuda_Shared)
30+
CEED_BACKEND(Cuda_Gen)
31+
32+
CEED_BACKEND(Hip_Ref)
33+
CEED_BACKEND(Hip_Shared)
34+
CEED_BACKEND(Hip_Gen)
35+
36+
CEED_BACKEND(Sycl_Ref)
37+
CEED_BACKEND(Sycl_Shared)
38+
CEED_BACKEND(Sycl_Gen)
39+
40+
CEED_BACKEND(Magma)
41+
CEED_BACKEND(Magma_Det)
42+
43+
CEED_BACKEND(Occa)

backends/ceed-backend-weak.c

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)