Feat: add initial HIP PSF backend
This commit is contained in:
1 parent
e48c490337
commit
7a80086f63
10 files changed
+512
-30
No files matched your search
@@ -7,6 +7,9 @@ SPACETIME ?= minkowski
|
||||
BUILD_TYPE ?= Release
|
||||
ENABLE_HDR ?= 0
|
||||
PSF_EVENT_SINK ?= 1
|
||||
PSF_BACKEND ?= cpu
|
||||
HIPCC ?= hipcc
|
||||
HIP_CXXFLAGS ?= -std=c++17 -O2 -Wall -Wextra -Wpedantic
|
||||
|
||||
ifeq ($(BUILD_TYPE),Release)
|
||||
BUILD_CFLAGS := -O2 -DNDEBUG
|
||||
@@ -37,14 +40,24 @@ FRAME_TEST_TARGET := $(BUILD_DIR)/test_frame
|
||||
SCHWARZSCHILD_TEST_TARGET := $(BUILD_DIR)/test_schwarzschild
|
||||
OBSERVER_TRACK_TEST_TARGET := $(BUILD_DIR)/test_observer_track
|
||||
CATALOG_PREFETCH_TEST_TARGET := $(BUILD_DIR)/test_catalog_prefetch
|
||||
HIP_PSF_TEST_TARGET := $(BUILD_DIR)/test_hip_psf
|
||||
|
||||
.PHONY: all backend clean run test minkowski schwarzschild FORCE
|
||||
.PHONY: all backend clean run test hip-psf-test minkowski schwarzschild FORCE
|
||||
|
||||
ifneq ($(filter 0 1,$(PSF_EVENT_SINK)),$(PSF_EVENT_SINK))
|
||||
$(error Unknown PSF_EVENT_SINK '$(PSF_EVENT_SINK)'; choose 0 or 1)
|
||||
endif
|
||||
BUILD_CPPFLAGS += -DFRAME_PSF_EVENT_SINK=$(PSF_EVENT_SINK)
|
||||
|
||||
ifeq ($(PSF_BACKEND),cpu)
|
||||
RENDER_LINKER := $(CC)
|
||||
else ifeq ($(PSF_BACKEND),hip)
|
||||
RENDER_LINKER := $(HIPCC)
|
||||
BUILD_CPPFLAGS += -DPSF_BACKEND_HIP
|
||||
else
|
||||
$(error Unknown PSF_BACKEND '$(PSF_BACKEND)'; choose cpu or hip)
|
||||
endif
|
||||
|
||||
ifeq ($(SPACETIME),minkowski)
|
||||
BACKEND_CPPFLAGS := -DSPACETIME_MINKOWSKI
|
||||
else ifeq ($(SPACETIME),schwarzschild)
|
||||
@@ -56,16 +69,24 @@ endif
|
||||
ifeq ($(ENABLE_HDR),1)
|
||||
HDR_CPPFLAGS := -DENABLE_HDR_OUTPUT $(shell pkg-config --cflags cfitsio)
|
||||
HDR_LDLIBS := $(shell pkg-config --libs cfitsio)
|
||||
HDR_BUILD_TAG := hdr_sink$(PSF_EVENT_SINK)
|
||||
HDR_BUILD_TAG := hdr_sink$(PSF_EVENT_SINK)_$(PSF_BACKEND)
|
||||
else ifeq ($(ENABLE_HDR),0)
|
||||
HDR_BUILD_TAG := standard_sink$(PSF_EVENT_SINK)
|
||||
HDR_BUILD_TAG := standard_sink$(PSF_EVENT_SINK)_$(PSF_BACKEND)
|
||||
else
|
||||
$(error Unknown ENABLE_HDR '$(ENABLE_HDR)'; choose 0 or 1)
|
||||
endif
|
||||
|
||||
ifeq ($(PSF_BACKEND),hip)
|
||||
TARGET := $(BUILD_DIR)/$(TARGET_BASENAME)_hip
|
||||
else
|
||||
TARGET := $(BUILD_DIR)/$(TARGET_BASENAME)
|
||||
endif
|
||||
RENDER_SOURCES := $(COMMON_SOURCES) $(PROVIDER_SOURCE) src/main.c
|
||||
RENDER_OBJECTS := $(patsubst %.c,$(OBJECT_DIR)/$(HDR_BUILD_TAG)/%.o,$(RENDER_SOURCES))
|
||||
ifeq ($(PSF_BACKEND),hip)
|
||||
HIP_PSF_OBJECT := $(OBJECT_DIR)/$(HDR_BUILD_TAG)/src/hip_psf.o
|
||||
RENDER_OBJECTS += $(HIP_PSF_OBJECT)
|
||||
endif
|
||||
RENDER_DEPS := $(RENDER_OBJECTS:.o=.d)
|
||||
|
||||
# With no explicit backend choice, all means every currently supported
|
||||
@@ -88,7 +109,7 @@ schwarzschild:
|
||||
backend: $(TARGET)
|
||||
|
||||
$(TARGET): $(RENDER_OBJECTS) FORCE | $(BUILD_DIR)
|
||||
$(CC) $(BUILD_CFLAGS) $(OPENMP_FLAGS) $(RENDER_OBJECTS) $(LDLIBS) $(HDR_LDLIBS) -o $@
|
||||
$(RENDER_LINKER) $(BUILD_CFLAGS) $(OPENMP_FLAGS) $(RENDER_OBJECTS) $(LDLIBS) $(HDR_LDLIBS) -o $@
|
||||
|
||||
FORCE:
|
||||
|
||||
@@ -99,6 +120,22 @@ $(OBJECT_DIR)/$(HDR_BUILD_TAG)/%.o: %.c
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $@
|
||||
|
||||
$(OBJECT_DIR)/$(HDR_BUILD_TAG)/src/hip_psf.o: src/hip_psf.hip src/hip_psf.h src/optics.h
|
||||
@mkdir -p $(dir $@)
|
||||
$(HIPCC) $(HIP_CXXFLAGS) $(BUILD_CPPFLAGS) -Isrc -c $< -o $@
|
||||
|
||||
# This is a production-sink regression, not the removed float analytic spike.
|
||||
# It requires PSF_BACKEND=hip and an actual HIP GPU agent at execution time.
|
||||
ifeq ($(PSF_BACKEND),hip)
|
||||
hip-psf-test: $(HIP_PSF_TEST_TARGET)
|
||||
|
||||
$(HIP_PSF_TEST_TARGET): tests/test_hip_psf.hip $(HIP_PSF_OBJECT) $(OBJECT_DIR)/$(HDR_BUILD_TAG)/src/optics.o | $(BUILD_DIR)
|
||||
$(HIPCC) $(HIP_CXXFLAGS) $(OPENMP_FLAGS) -Isrc -x hip $< -x none $(filter-out $<,$^) $(LDLIBS) -o $@
|
||||
else
|
||||
hip-psf-test:
|
||||
$(error hip-psf-test requires PSF_BACKEND=hip)
|
||||
endif
|
||||
|
||||
run: $(TARGET)
|
||||
mkdir -p output/imgs
|
||||
./$(TARGET) --catalog assets/sky_grid_5deg.csv --output output/imgs/$(SPACETIME)_sky.$(IMAGE_EXT)
|
||||
|
||||
Reference in new issue
Block a user