Skip to content

Commit 53e765c

Browse files
authored
Merge branch 'halide:main' into main
2 parents bccaba6 + b5b859c commit 53e765c

35 files changed

Lines changed: 3536 additions & 250 deletions

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ repos:
5151
rev: v2.4.1
5252
hooks:
5353
- id: codespell
54-
args: [ --ignore-words-list, "CreateOr,implementors,PADD,re-use,re-used,re-using,subtile,subtiles" ]
54+
args: [ --ignore-words-list, "CreateOr,implementors,PADD,re-use,re-used,re-using,subtile,subtiles,tRe" ]
5555
exclude: |
5656
(?x)(
5757
^src/autoschedulers/common/cmdline\.h$

Makefile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -467,14 +467,14 @@ SOURCE_FILES = \
467467
Closure.cpp \
468468
CodeGen_ARM.cpp \
469469
CodeGen_C.cpp \
470+
CodeGen_CPU.cpp \
470471
CodeGen_D3D12Compute_Dev.cpp \
471472
CodeGen_GPU_Dev.cpp \
472473
CodeGen_Hexagon.cpp \
473474
CodeGen_Internal.cpp \
474475
CodeGen_LLVM.cpp \
475476
CodeGen_Metal_Dev.cpp \
476477
CodeGen_OpenCL_Dev.cpp \
477-
CodeGen_Posix.cpp \
478478
CodeGen_PowerPC.cpp \
479479
CodeGen_PTX_Dev.cpp \
480480
CodeGen_PyTorch.cpp \
@@ -667,13 +667,13 @@ HEADER_FILES = \
667667
ClampUnsafeAccesses.h \
668668
Closure.h \
669669
CodeGen_C.h \
670+
CodeGen_CPU.h \
670671
CodeGen_D3D12Compute_Dev.h \
671672
CodeGen_GPU_Dev.h \
672673
CodeGen_Internal.h \
673674
CodeGen_LLVM.h \
674675
CodeGen_Metal_Dev.h \
675676
CodeGen_OpenCL_Dev.h \
676-
CodeGen_Posix.h \
677677
CodeGen_PTX_Dev.h \
678678
CodeGen_PyTorch.h \
679679
CodeGen_Targets.h \
@@ -1286,7 +1286,7 @@ PERFORMANCE_TESTS = $(shell ls $(ROOT_DIR)/test/performance/*.cpp)
12861286
ERROR_TESTS = $(shell ls $(ROOT_DIR)/test/error/*.cpp)
12871287
WARNING_TESTS = $(shell ls $(ROOT_DIR)/test/warning/*.cpp)
12881288
RUNTIME_TESTS = $(shell ls $(ROOT_DIR)/test/runtime/*.cpp)
1289-
FUZZ_TESTS = $(filter-out %halide_fuzz_main.cpp, $(shell ls $(ROOT_DIR)/test/fuzz/*.cpp))
1289+
FUZZ_TESTS = $(filter-out %halide_fuzz_main.cpp %IRGraphCXXPrinter.cpp, $(shell ls $(ROOT_DIR)/test/fuzz/*.cpp))
12901290
GENERATOR_EXTERNAL_TESTS := $(shell ls $(ROOT_DIR)/test/generator/*test.cpp)
12911291
GENERATOR_EXTERNAL_TEST_GENERATOR := $(shell ls $(ROOT_DIR)/test/generator/*_generator.cpp)
12921292
TUTORIALS = $(filter-out %_generate.cpp, $(shell ls $(ROOT_DIR)/tutorial/*.cpp))
@@ -1475,7 +1475,7 @@ $(BIN_DIR)/$(TARGET)/correctness_opencl_runtime: $(ROOT_DIR)/test/correctness/op
14751475
$(BIN_DIR)/performance_%: $(ROOT_DIR)/test/performance/%.cpp $(TEST_DEPS)
14761476
$(CXX) $(TEST_CXX_FLAGS) $(OPTIMIZE) $< -I$(INCLUDE_DIR) -I$(ROOT_DIR)/src/runtime -I$(ROOT_DIR)/test/common $(TEST_LD_FLAGS) -o $@
14771477

1478-
$(BIN_DIR)/fuzz_%: $(ROOT_DIR)/test/fuzz/%.cpp $(ROOT_DIR)/test/fuzz/halide_fuzz_main.cpp $(ROOT_DIR)/test/fuzz/fuzz_helpers.h $(ROOT_DIR)/test/fuzz/halide_fuzz_main.h $(TEST_DEPS)
1478+
$(BIN_DIR)/fuzz_%: $(ROOT_DIR)/test/fuzz/%.cpp $(ROOT_DIR)/test/fuzz/halide_fuzz_main.cpp $(ROOT_DIR)/test/fuzz/fuzz_helpers.h $(ROOT_DIR)/test/fuzz/halide_fuzz_main.h $(ROOT_DIR)/test/fuzz/IRGraphCXXPrinter.cpp $(ROOT_DIR)/test/fuzz/IRGraphCXXPrinter.h $(TEST_DEPS)
14791479
$(CXX) $(TEST_CXX_FLAGS) -I$(ROOT_DIR)/src/runtime -I$(ROOT_DIR)/test/common $(OPTIMIZE_FOR_BUILD_TIME) $(filter %.cpp,$^) -I$(INCLUDE_DIR) $(TEST_LD_FLAGS) -o $@ -DHALIDE_FUZZER_BACKEND=0
14801480

14811481
# Error tests that link against libHalide
@@ -2197,6 +2197,7 @@ TEST_APPS=\
21972197
camera_pipe \
21982198
conv_layer \
21992199
fft \
2200+
gaussian_blur \
22002201
hist \
22012202
interpolate \
22022203
lens_blur \

apps/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ add_app(conv_layer)
4242
add_app(cuda_mat_mul)
4343
add_app(depthwise_separable_conv)
4444
add_app(fft)
45+
add_app(gaussian_blur)
4546
add_app(hannk)
4647
add_app(harris)
4748
# add_app(HelloAndroid) # TODO(#5374): missing CMake build

apps/gaussian_blur/CMakeLists.txt

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
cmake_minimum_required(VERSION 3.28)
2+
project(gaussian_blur)
3+
4+
enable_testing()
5+
6+
# Set up language settings
7+
set(CMAKE_CXX_STANDARD 17)
8+
set(CMAKE_CXX_STANDARD_REQUIRED YES)
9+
set(CMAKE_CXX_EXTENSIONS NO)
10+
11+
# Find Halide
12+
find_package(Halide REQUIRED)
13+
14+
# Generator
15+
add_halide_generator(gaussian_blur.generator SOURCES gaussian_blur_generator.cpp)
16+
17+
# Filters
18+
add_halide_library(gaussian_blur_direct FROM gaussian_blur.generator
19+
GENERATOR gaussian_blur_direct)
20+
21+
set(VARIANTS gaussian_blur_direct)
22+
foreach (U IN ITEMS 2 3 4)
23+
foreach (D IN ITEMS 1 2 3)
24+
foreach (F IN ITEMS 2 4 8 16)
25+
add_halide_library(gaussian_blur_${U}_${D}_${F} FROM gaussian_blur.generator
26+
GENERATOR gaussian_blur
27+
USE_RUNTIME gaussian_blur_direct.runtime
28+
PARAMS upsample_order=${U} downsample_order=${D} factor=${F})
29+
list(APPEND VARIANTS gaussian_blur_${U}_${D}_${F})
30+
endforeach ()
31+
endforeach ()
32+
endforeach ()
33+
34+
# Generate combined header blurs.h that includes all variant headers
35+
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/blurs.h"
36+
CONTENT "$<JOIN:$<LIST:TRANSFORM,${VARIANTS},REPLACE,^(.+)$,#include \"\\1.h\">,\n>")
37+
38+
# Main executable
39+
add_executable(gaussian_blur_filter filter.cpp)
40+
target_link_libraries(gaussian_blur_filter PRIVATE Halide::ImageIO ${VARIANTS})
41+
target_include_directories(gaussian_blur_filter PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
42+
43+
# Test that the app actually works!
44+
set(IMAGE ${CMAKE_CURRENT_LIST_DIR}/../images/gray.png)
45+
if (EXISTS ${IMAGE})
46+
configure_file(${IMAGE} gray.png COPYONLY)
47+
add_test(NAME gaussian_blur_filter COMMAND gaussian_blur_filter gray.png 10)
48+
set_tests_properties(gaussian_blur_filter PROPERTIES
49+
LABELS gaussian_blur
50+
PASS_REGULAR_EXPRESSION "Success!"
51+
SKIP_REGULAR_EXPRESSION "\\[SKIP\\]")
52+
endif ()

apps/gaussian_blur/Makefile

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
include ../support/Makefile.inc
2+
3+
.PHONY: build clean test
4+
.SECONDARY:
5+
6+
build: $(BIN)/$(HL_TARGET)/filter
7+
8+
$(GENERATOR_BIN)/gaussian_blur.generator: gaussian_blur_generator.cpp $(GENERATOR_DEPS)
9+
@mkdir -p $(@D)
10+
$(CXX) $(CXXFLAGS) -g $(filter %.cpp,$^) -o $@ $(LIBHALIDE_LDFLAGS)
11+
12+
LIBS := $(BIN)/%/gaussian_blur_direct.a
13+
HEADERS := gaussian_blur_direct.h
14+
define GAUSSIAN_BLUR
15+
LIBS += $(BIN)/%/gaussian_blur_$(1)_$(2)_$(3).a
16+
HEADERS += gaussian_blur_$(1)_$(2)_$(3).h
17+
$(BIN)/%/gaussian_blur_$(1)_$(2)_$(3).a: $(GENERATOR_BIN)/gaussian_blur.generator
18+
@mkdir -p $$(@D)
19+
$$< -g gaussian_blur -f gaussian_blur_$(1)_$(2)_$(3) -e $(GENERATOR_OUTPUTS),conceptual_stmt_html -o $(BIN)/$$* target=$$*-no_runtime upsample_order=$(1) downsample_order=$(2) factor=$(3)
20+
endef
21+
22+
$(foreach upsample_order,2 3 4, \
23+
$(foreach downsample_order,1 2 3, \
24+
$(foreach factor,2 4 8 16, \
25+
$(eval $(call GAUSSIAN_BLUR,$(upsample_order),$(downsample_order),$(factor))))))
26+
27+
LIBS += $(BIN)/%/runtime.a
28+
29+
# combined header
30+
$(BIN)/%/blurs.h:
31+
rm -f $@
32+
$(foreach h,$(HEADERS),echo '#include "$(h)"' >> $@;)
33+
34+
$(BIN)/%/gaussian_blur_direct.a: $(GENERATOR_BIN)/gaussian_blur.generator
35+
@mkdir -p $(@D)
36+
$< -g gaussian_blur_direct -f gaussian_blur_direct -e $(GENERATOR_OUTPUTS),conceptual_stmt_html -o $(BIN)/$* target=$*-no_runtime
37+
38+
$(BIN)/%/runtime.a: $(GENERATOR_BIN)/gaussian_blur.generator
39+
@mkdir -p $(@D)
40+
$< -r runtime -o $(BIN)/$* target=$*
41+
42+
.PRECIOUS: $(LIBS) $(BIN)/%/blurs.h
43+
44+
$(BIN)/%/filter: filter.cpp $(LIBS) $(BIN)/%/blurs.h
45+
@mkdir -p $(@D)
46+
$(CXX) $(CXXFLAGS) -I$(BIN)/$* -Wall -O3 $(filter-out %.h,$^) -o $@ $(LDFLAGS) $(IMAGE_IO_FLAGS) $(CUDA_LDFLAGS) $(OPENCL_LDFLAGS)
47+
48+
test: $(BIN)/$(HL_TARGET)/filter
49+
$< ../images/gray.png 10
50+
51+
clean:
52+
rm -rf $(BIN)

0 commit comments

Comments
 (0)