Skip to content

Commit e85e3fb

Browse files
committed
Add chipStar (SPIR-V) HIP backend support
- Detect chipStar via hipconfig and set HIP_LIB_NAME=CHIP - Filter clang-only flags from HIPCONFIG_CPPFLAGS for gcc-compiled sources - Support separate HIPBLAS_DIR for chipStar (hipblas is a separate install) - Use SYCLCXX as linker when SYCL backends are enabled - Skip AMD-specific HIPRTC flags on chipStar; pass only -DCEED_RUNNING_JIT_PASS=1 - Add explicit #include <cstring> in hip-gen for chipStar header compat
1 parent 882b235 commit e85e3fb

2 files changed

Lines changed: 24 additions & 5 deletions

File tree

Makefile

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ endif
7777
ifeq (,$(filter-out undefined default,$(origin ARFLAGS)))
7878
ARFLAGS = $(if $(DARWIN),cr,crD)
7979
endif
80+
# chipStar sets HIP_DIR instead of ROCM_DIR
81+
ROCM_DIR ?= ${HIP_DIR}
8082
NVCC ?= $(CUDA_DIR)/bin/nvcc
8183
NVCC_CXX ?= $(CXX)
8284
HIPCC ?= $(ROCM_DIR)/bin/hipcc
@@ -88,6 +90,15 @@ ifneq ($(EMSCRIPTEN),)
8890
EM_LDFLAGS = -s TOTAL_MEMORY=256MB
8991
endif
9092

93+
# Detect chipStar (SPIR-V HIP) vs AMD ROCm
94+
HIP_LIB_NAME = amdhip64
95+
ifneq ($(ROCM_DIR),)
96+
ifneq ($(wildcard $(ROCM_DIR)/bin/hipconfig),)
97+
ifneq (,$(findstring __HIP_PLATFORM_SPIRV__,$(shell $(ROCM_DIR)/bin/hipconfig 2>/dev/null)))
98+
HIP_LIB_NAME = CHIP
99+
endif
100+
endif
101+
endif
91102
# ASAN must be left empty if you don't want to use it
92103
ASAN ?=
93104

@@ -555,16 +566,23 @@ ifneq ($(CUDA_LIB_DIR),)
555566
endif
556567

557568
# HIP Backends
558-
HIP_LIB_DIR := $(wildcard $(foreach d,lib lib64,$(ROCM_DIR)/$d/libamdhip64.${SO_EXT}))
569+
HIP_LIB_DIR := $(wildcard $(foreach d,lib lib64,$(ROCM_DIR)/$d/lib${HIP_LIB_NAME}.${SO_EXT}))
559570
HIP_LIB_DIR := $(patsubst %/,%,$(dir $(firstword $(HIP_LIB_DIR))))
560571
HIP_BACKENDS = /gpu/hip/ref /gpu/hip/shared /gpu/hip/gen
561572
ifneq ($(HIP_LIB_DIR),)
562-
HIPCONFIG_CPPFLAGS := $(subst =,,$(shell $(ROCM_DIR)/bin/hipconfig -C))
563-
$(hip-all.c:%.c=$(OBJDIR)/%.o) $(hip-all.c:%=%.tidy): CPPFLAGS += $(HIPCONFIG_CPPFLAGS)
573+
ifeq ($(HIP_LIB_NAME),CHIP)
574+
# chipStar hipconfig -C emits clang-only flags; keep only -D/-I/-include for gcc
575+
HIPCONFIG_CPPFLAGS := $(shell $(ROCM_DIR)/bin/hipconfig -C)
576+
HIPCONFIG_CPPFLAGS_C := $(filter-out --offload% -nohipwrapperinc --hip-path% --target%,$(HIPCONFIG_CPPFLAGS)) -I$(ROCM_DIR)/include
577+
else
578+
HIPCONFIG_CPPFLAGS := $(subst =,,$(shell $(ROCM_DIR)/bin/hipconfig -C))
579+
HIPCONFIG_CPPFLAGS_C := $(HIPCONFIG_CPPFLAGS)
580+
endif
581+
$(hip-all.c:%.c=$(OBJDIR)/%.o) $(hip-all.c:%=%.tidy): CPPFLAGS += $(HIPCONFIG_CPPFLAGS_C)
564582
ifneq ($(CXX), $(HIPCC))
565-
$(hip-all.cpp:%.cpp=$(OBJDIR)/%.o) $(hip-all.cpp:%=%.tidy): CPPFLAGS += $(HIPCONFIG_CPPFLAGS)
583+
$(hip-all.cpp:%.cpp=$(OBJDIR)/%.o) $(hip-all.cpp:%=%.tidy): CPPFLAGS += $(HIPCONFIG_CPPFLAGS_C)
566584
endif
567-
PKG_LIBS += -L$(abspath $(HIP_LIB_DIR)) -lamdhip64 -lhipblas
585+
PKG_LIBS += -L$(abspath $(HIP_LIB_DIR)) -l${HIP_LIB_NAME} -lhipblas
568586
LIBCEED_CONTAINS_CXX = 1
569587
libceed.c += $(hip-all.c)
570588
libceed.cpp += $(hip-all.cpp)

backends/hip-gen/ceed-hip-gen-operator-build.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <ceed/gen-tools.h>
1313
#include <ceed/jit-tools.h>
1414

15+
#include <cstring>
1516
#include <iostream>
1617
#include <sstream>
1718
#include <string>

0 commit comments

Comments
 (0)