Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[vulkan phase2] Vulkan Runtime #6924

Merged
merged 176 commits into from
Apr 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
176 commits
Select commit Hold shift + click to select a range
8ce1001
Import Vulkan runtime changes from personal branch
Aug 3, 2022
7a0cf7c
Fix build to work with latest changes in main
Aug 3, 2022
ae60507
Hookup Vulkan into Target, DeviceInterface and OffloadGPULoops
Aug 3, 2022
745525c
Add Vulkan runtime to Makefile
Aug 5, 2022
57ae62b
Add Vulkan target to Python bindings
Aug 5, 2022
5d3d955
Add runtime linker support to target Vulkan CodeGen
Aug 5, 2022
76f636d
Add Vulkan windows decorator to runtime targets
Aug 5, 2022
522ea43
Wrap debug messages for internal runtime classes with DEBUG_INTERNAL
Aug 5, 2022
acc13ee
Silence clang-tidy warnings for redundant expressions on Vulkan enum …
Aug 5, 2022
afc0bb6
Clang tidy & format pass
Aug 5, 2022
4b3460c
Fix formatting for single line statements
Aug 5, 2022
eb3f9c4
Move Vulkan option to top-level CMakeLists.txt and enable SPIR-V as n…
Aug 5, 2022
ba89202
Fix Vulkan & SPIRV dependencies for makefile
Aug 5, 2022
010d3e8
Add Halide version info to Makefile
Aug 5, 2022
e3d3313
Add HL_VERSION_FLAGS to RUNTIME_CXX_FLAGS
Aug 5, 2022
4ade573
Merge branch 'main' into vulkan-phase2-runtime
Sep 21, 2022
edfd076
Finish refactoring of Vulkan CodeGen to use SpirV-IR.
Sep 26, 2022
9d6112e
Clang tidy/format pass.
Sep 26, 2022
6661c3f
Fix formatting
Sep 26, 2022
58d21ac
Remove leftover ifdef
Sep 26, 2022
80c1ef0
Fix build error for clang OSX for mismatched type comparison
Sep 27, 2022
7ac73cf
Refactor loops and conditionals to use blocks
Sep 27, 2022
81e8839
Clang tidy/format pass
Sep 27, 2022
b150737
Add detailed comments for acquire context parameters
Sep 27, 2022
4816e5a
Add comments describing loader method exports and dynamically resolve…
Sep 27, 2022
e31247c
Change aborts to debug asserts for context parameters.
Sep 27, 2022
66803ca
Cache Vulkan descriptor sets and other shader module objects in compi…
Sep 29, 2022
2578805
Replace platform specific strncpy for grabbing Extension strings with…
Sep 29, 2022
23cc23b
Enable device features for selected device
Sep 29, 2022
6e1e5d9
Fix alignment constraints for to match Vulkan buffer memory requireme…
Sep 30, 2022
ec7fa05
Add Vulkan to list of supported APIs in README.md
Sep 30, 2022
68cccce
Clang tidy/format pass
Sep 30, 2022
5d78353
Fix conform_alignment to handle zero values
Sep 30, 2022
c27bcef
Fix declaration of custom_allocation_callbacks to be static.
Sep 30, 2022
6e5aa63
Merge branch 'main' into vulkan-phase2-runtime
Oct 3, 2022
d2225c8
Whitespace change to trigger build.
Oct 3, 2022
b715597
Handle Vulkan kernels that don't require storage buffers.
Oct 4, 2022
18cc587
Add src/mini_vulkan.h Apache 2.0 license requirements to License file
Oct 6, 2022
7546625
Add descriptor set binding info as pre-amble to SPIR-V code module
Oct 11, 2022
fdd281a
Clang tidy & format pass
Oct 11, 2022
bedf1b3
Update test results for Vulkan docs. Passing: 326 Failing: 39
Oct 11, 2022
095248f
Fix formatting
Oct 11, 2022
732fc87
Remove extraneous parentheses for is_array_type()
Oct 11, 2022
aae0ad9
Add Vulkan library to linkage fo Halide generator helpers
Oct 12, 2022
2a6700f
Add SPIR-V formatted output (for debugging)
Oct 12, 2022
2cc00be
Only declare SIMT intrinics that are actually used.
Oct 12, 2022
541458c
Add Vulkan handler to test targets
Oct 12, 2022
cc569df
Clang format/tidy pass
Oct 12, 2022
f6740c9
Add doc-strings to SPIR-V interface
Oct 13, 2022
c0d94bb
Adjust runtime array to widest vector width based on alignment and de…
Oct 13, 2022
37efad0
Add missing bitwise and logical and methods.
Oct 13, 2022
82b267b
Add comments about necessary packages on Ubuntu v22.04 vs earlier ver…
Oct 13, 2022
a266dc8
Clang tidy & format pass.
Oct 13, 2022
72b6167
Update Vulkan test results. Pass: 329 Fail: 36
Oct 14, 2022
4eb5012
Remove unused Produce/Consume visitor method
Oct 14, 2022
f885a20
Fix Molten VK initialization to work with v1.3+ loader
Oct 20, 2022
fe3e418
Disable dynamic shared memory portion of test for Vulkan (since its n…
Oct 23, 2022
6afaca2
Disable uncached portion of test for Vulkan (since it may OOM)
Oct 23, 2022
0cf364e
Disable float64 support in Type::supports_type() for Vulkan target si…
Oct 23, 2022
3155f2f
Fix Shuffle to handle all known cases
Oct 23, 2022
78f6cb5
Clang tidy & format pass
Oct 23, 2022
74015cf
Update correctness test results. PASS: 338, FAIL: 27
Oct 23, 2022
5be5760
Move counter inside debug #define to fix build
Oct 23, 2022
ea1832a
Relax tolerance for newton's method to match other GPU APIs
Oct 23, 2022
5d77860
Clang format/tidy pass
Oct 23, 2022
d17d3f3
Skip Vulkan for float64 for correctness test round (since f64 is opti…
Oct 28, 2022
a9baf9b
Skip Vulkan for tests that rely upon device crop, and slice.
Oct 28, 2022
99cff52
Only test small vector widths for Vulkan (since widths >=8 are optional)
Oct 28, 2022
15b06f2
Caninicalize gpu vars for Vulkan
Oct 28, 2022
d8619d0
Fix loop initialization, and increments
Oct 28, 2022
fee92c6
Add SpvInstruction::add_operands(), add_immediates() and template based
Oct 28, 2022
12048f3
Clang format & tidy pass
Oct 28, 2022
3f0b715
Fix windows build ... refactor convert_to_bool to use std::vectors
Oct 28, 2022
f308841
Skip asyn_device_copy, device_buffer_copy, device_crop, and device_slice
Nov 1, 2022
3b89297
Don't test large vector widths for Vulkan (since they are optionally
Nov 1, 2022
5b62620
Clear Vulkan buffer allocations prior to use (tbd if this is necessary)
Nov 1, 2022
e8f5355
Skip Vulkan for async copy chain test
Nov 2, 2022
06739d3
Skip Vulkan for interpreter test
Nov 2, 2022
bb7a8bb
Clang tidy/format pass
Nov 2, 2022
f8bd243
Fix formatting
Nov 2, 2022
c8d1c92
Merge branch 'main' into vulkan-phase2-runtime
Nov 2, 2022
4040f2a
Fix build ... use error messages for errors
Nov 2, 2022
5bdb204
Separate shared memory resources by element type for Vulkan.
Nov 8, 2022
67c0881
Add Vulkan to conditional for fusing gpu loops
Nov 8, 2022
517c987
Reorder reset method to match declaration ordering.
Nov 8, 2022
81cefde
Cleanup debug log messages for Vulkan resources
Nov 8, 2022
f42f063
Assert alignment is power of two
Nov 8, 2022
fdcb345
Only split regions that have already been freed.
Nov 8, 2022
bbf8911
Explicitly cleanup Vulkan command buffers as after they are used
Nov 8, 2022
74b9176
Fix Div, Mod, and div_round_to_zero for integer cases
Nov 8, 2022
11050ef
Skip Vulkan for async_copy_chain
Nov 8, 2022
fd155a9
Skip 64-bit values on Vulkan since they are optionally supported
Nov 8, 2022
a5dea74
Skip interleave_rgb for Vulkan (which doesn't support cropping)
Nov 8, 2022
840036b
Skip interpreter for Vulkan (which doesn't support dynamic allocation of
Nov 8, 2022
d486f5a
Clang Tidy/Format pass
Nov 8, 2022
b384b7c
Handle calls to pow with negative values for Vulkan
Nov 9, 2022
dae1383
Only test real numbers for pow with Vulkan
Nov 9, 2022
74d52f9
Clang tidy/format pass
Nov 9, 2022
01b74dc
Fix logic so a region request of an entire block matches if exactly t…
Nov 10, 2022
190dd35
Create a zero size buffer to check for alignment
Nov 10, 2022
64bf559
Add more verbose debug output for malloc
Nov 10, 2022
50dd4c6
Fix UConvert logic to avoid narrowing an integer type less than 8 bits
Nov 10, 2022
0cd89bb
Clang format/tidy pass
Nov 10, 2022
7b8b728
Fix SConvert & UConvert ops
Nov 12, 2022
15e4c7f
Add retain semantics to block allocator interface
Nov 12, 2022
a65712a
Implement device_crop, device_slice and release_crop for Vulkan.
Nov 12, 2022
485ec20
Clang format/tidy pass
Nov 12, 2022
48faeea
Implement device copy for Vulkan.
Nov 15, 2022
17d5476
Clang format/tidy pass
Nov 15, 2022
cea209d
Fix signed mod operator and use euclidean identity (just like glsl)
Nov 15, 2022
666f3d7
Clang format/tidy pass
Nov 15, 2022
029b56b
Fix to handle Mod on vectors (use vector constant for bitwise and)
Nov 16, 2022
2ce84a6
Fix pow operator for Vulkan, and re-enable math test to full range.
Nov 16, 2022
fd1d4d1
Add error checking for return types for conditionals
Nov 16, 2022
ddab953
Handle deallocation for existing regions prior to coalescing.
Nov 17, 2022
a65e04f
Clang tidy/format pass
Nov 17, 2022
c1c83e5
Fix reserved accounting for regions
Nov 18, 2022
46a7dca
Add more details to Windows specific Vulkan build config
Nov 23, 2022
13fc02e
Merge branch 'main' into vulkan-phase2-runtime
Nov 23, 2022
52982ab
Update SPIR-V headers to v1.6
Dec 3, 2022
a6ee0c3
Add support for dynamic shared memory allocations for Vulkan
Dec 3, 2022
f1c004d
Enable Vulkan asyc_device_copy test.
Dec 5, 2022
9805a29
Disable Vulkan performance test for async gpu (for now).
Dec 5, 2022
f0cc13b
Disable Vulkan from python AOT tests and tutorials (since it requires…
Dec 5, 2022
be6b83d
Merge branch 'main' into vulkan-phase2-runtime
Dec 5, 2022
f752734
Update Vulkan readme with latest status. Everything works! More or …
Dec 5, 2022
09908f3
Clang format pass
Dec 5, 2022
446b34f
Cleanup formatting for Halide version info in Makefile
Dec 15, 2022
9a54485
Fix typos and address review comments for Vulkan readme
Dec 15, 2022
3f731c2
Change value casts to match Halide conventions
Dec 15, 2022
93c5df5
Fix typos in comments
Dec 15, 2022
c526891
Add static_assert to rotl to make compilation errors clearer (instead…
Dec 15, 2022
f5d70e8
Fix typos and logic for Vulkan capabilities
Dec 15, 2022
b4c9bea
Remove leftover debug ifdef
Dec 15, 2022
fea02d5
Fix typo in comments
Dec 15, 2022
acd5ea5
Rename copy_upto(...) method to be copy_up_to(...)
Dec 15, 2022
14d3ab7
Handle error case for uninitialized buffer allocation (rather than ab…
Dec 15, 2022
14c4363
Support any arbitary number of devices and queues for context creation
Dec 15, 2022
e08c646
Add get/set alloc_config methods and API hooks for configuring the Vu…
Dec 15, 2022
3ca8870
Remove leftover debug ifdef
Dec 15, 2022
fcf0b50
Hookup API methods for get/set alloc_config when initializing the Vul…
Dec 15, 2022
f191715
Remove empty lines in main
Dec 15, 2022
069b294
Add required capability flags for 8-bit and 16-bit uniform and storag…
Jan 30, 2023
4491f78
Add VkPhysicalDevice8BitStorageFeaturesKHR and related constants
Jan 30, 2023
eb8a0ae
Query for 8-bit and 16-bit uniform and storage access support.
Jan 30, 2023
0be26d7
Use VK_WHOLE_SIZE for setting buffer (to pass validation ... otherwis…
Jan 30, 2023
9ca31fe
Query for device limits to enforce min alignment constraints for stor…
Jan 31, 2023
3bddbfc
Fix shutdown sequence to iterate over descriptor sets
Jan 31, 2023
ad3742e
Clang format & tidy pass
Jan 31, 2023
ec62988
Fix logic for locating entry point shader binding ... assume exact ma…
Feb 3, 2023
d69e36c
Remove accidentally uncommented debug statements
Feb 3, 2023
14ef177
Cleanup debug output for buffer related updates
Feb 3, 2023
a452b9b
Fix split and allocate methods in region allocator to fix issues with…
Feb 9, 2023
f4c4212
Merge branch 'main' into vulkan-phase2-runtime
steven-johnson Feb 13, 2023
f918585
Merge branch 'main' into vulkan-phase2-runtime
steven-johnson Feb 14, 2023
33007c5
Added notes about TARGET_VULKAN=ON being the default now
Feb 14, 2023
a3a8216
Fix markdown formatting
derek-gerstmann Feb 14, 2023
1dac977
Fix error code handling in Vulkan runtime and internal datastructures.
Feb 18, 2023
bf9854e
Fix typo in error message
Feb 18, 2023
f158b96
Fix typo in readme
Feb 18, 2023
c5b7f94
Skip GPU allocation cache test on MacOSX since MoltenVK only supports 30
Feb 18, 2023
e867ff3
Skip widening reduction test on Vulkan for Mac OSX/IOS since MoltenVK
Feb 18, 2023
baa303f
Skip doubles in vector cast test on Vulkan for Mac OSX/IOS since Molten
Feb 18, 2023
b2186e7
Skip gpu_dynamic_shared and gpu_specialize test for Vulkan on Mac
Feb 18, 2023
ee4f5b3
Merge branch 'main' into vulkan-phase2-runtime
Mar 23, 2023
3bc28cf
Clang format / tidy pass
Mar 23, 2023
28bcdc9
Resolve conflicts for mini_webgpu.h ... revert to main
Apr 7, 2023
b25bce5
Use unique intrinsic var names for each kernel
Apr 7, 2023
ff9f2b0
Wrap debug output under ifdef DEBUG_RUNTIME_INTERNAL macro guard
Apr 7, 2023
3e1c157
Add vk_clear_device_buffer utility method
Apr 7, 2023
4fd417f
Add note about nearest_multiple constraint for vulkan memory allocator
Apr 7, 2023
b087283
Hookup gpu_object_lifetime_tracker with Vulkan debug statements
Apr 7, 2023
03a2608
Skip dynamic shared memory portion of test for Vulkan on iOS/OSX.
Apr 7, 2023
4ee2b67
Merge branch 'main' into vulkan-phase2-runtime
Apr 14, 2023
bf21d5f
Fix stale comment for float type support.
Apr 24, 2023
1a53d6b
Merge branch 'main' into vulkan-phase2-runtime
Apr 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@ endif ()

# Enable the SPIR-V target if requested (must declare before processing dependencies)
option(TARGET_SPIRV "Include SPIR-V target" OFF)
option(TARGET_VULKAN "Include Vulkan target" ON)
if (TARGET_VULKAN)
set(TARGET_SPIRV ON) # required
endif()

##
# Import dependencies
Expand Down
17 changes: 17 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,23 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
IN THE MATERIALS.


----

src/mini_vulkan.h is Copyright (c) 2014-2017 The Khronos Group Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

----

apps/linear_algebra/include/cblas.h is licensed under the BLAS license.
Expand Down
50 changes: 49 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
# For correctness and performance tests this include halide build time and run time. For
# the tests in test/generator/ this times only the halide build time.

# Halide project version
HALIDE_VERSION_MAJOR ?= 15
derek-gerstmann marked this conversation as resolved.
Show resolved Hide resolved
HALIDE_VERSION_MINOR ?= 0
HALIDE_VERSION_PATCH ?= 0
HALIDE_VERSION=$(HALIDE_VERSION_MAJOR).$(HALIDE_VERSION_MINOR).$(HALIDE_VERSION_PATCH)

# Disable built-in makefile rules for all apps to avoid pointless file-system
# scanning and general weirdness resulting from implicit rules.
MAKEFLAGS += --no-builtin-rules
Expand Down Expand Up @@ -124,6 +130,8 @@ WITH_OPENCL ?= not-empty
WITH_METAL ?= not-empty
WITH_OPENGLCOMPUTE ?= not-empty
WITH_D3D12 ?= not-empty
WITH_VULKAN ?= not-empty
WITH_SPIRV ?= not-empty
WITH_WEBGPU ?= not-empty
WITH_INTROSPECTION ?= not-empty
WITH_EXCEPTIONS ?=
Expand All @@ -134,6 +142,12 @@ WITH_LLVM_INSIDE_SHARED_LIBHALIDE ?= not-empty
HL_TARGET ?= host
HL_JIT_TARGET ?= host

HL_VERSION_FLAGS = \
-DHALIDE_VERSION="$(HALIDE_VERSION)" \
-DHALIDE_VERSION_MAJOR=$(HALIDE_VERSION_MAJOR) \
-DHALIDE_VERSION_MINOR=$(HALIDE_VERSION_MINOR) \
-DHALIDE_VERSION_PATCH=$(HALIDE_VERSION_PATCH)

X86_CXX_FLAGS=$(if $(WITH_X86), -DWITH_X86, )
X86_LLVM_CONFIG_LIB=$(if $(WITH_X86), x86, )

Expand Down Expand Up @@ -176,6 +190,12 @@ EXCEPTIONS_CXX_FLAGS=$(if $(WITH_EXCEPTIONS), -DHALIDE_WITH_EXCEPTIONS -fexcepti
HEXAGON_CXX_FLAGS=$(if $(WITH_HEXAGON), -DWITH_HEXAGON, )
HEXAGON_LLVM_CONFIG_LIB=$(if $(WITH_HEXAGON), hexagon, )

SPIRV_CXX_FLAGS=$(if $(WITH_SPIRV), -DWITH_SPIRV -isystem $(ROOT_DIR)/dependencies/spirv/include, )
SPIRV_LLVM_CONFIG_LIB=$(if $(WITH_SPIRV), , )

VULKAN_CXX_FLAGS=$(if $(WITH_VULKAN), -DWITH_VULKAN, )
VULKAN_LLVM_CONFIG_LIB=$(if $(WITH_VULKAN), , )

WEBASSEMBLY_CXX_FLAGS=$(if $(WITH_WEBASSEMBLY), -DWITH_WEBASSEMBLY, )
WEBASSEMBLY_LLVM_CONFIG_LIB=$(if $(WITH_WEBASSEMBLY), webassembly, )

Expand All @@ -198,7 +218,7 @@ LLVM_CXX_FLAGS_LIBCPP := $(findstring -stdlib=libc++, $(LLVM_CXX_FLAGS))
endif

CXX_FLAGS = $(CXXFLAGS) $(CXX_WARNING_FLAGS) $(RTTI_CXX_FLAGS) -Woverloaded-virtual $(FPIC) $(OPTIMIZE) -fno-omit-frame-pointer -DCOMPILING_HALIDE

CXX_FLAGS += $(HL_VERSION_FLAGS)
CXX_FLAGS += $(LLVM_CXX_FLAGS)
CXX_FLAGS += $(PTX_CXX_FLAGS)
CXX_FLAGS += $(ARM_CXX_FLAGS)
Expand All @@ -215,6 +235,8 @@ CXX_FLAGS += $(INTROSPECTION_CXX_FLAGS)
CXX_FLAGS += $(EXCEPTIONS_CXX_FLAGS)
CXX_FLAGS += $(AMDGPU_CXX_FLAGS)
CXX_FLAGS += $(RISCV_CXX_FLAGS)
CXX_FLAGS += $(SPIRV_CXX_FLAGS)
CXX_FLAGS += $(VULKAN_CXX_FLAGS)
CXX_FLAGS += $(WEBASSEMBLY_CXX_FLAGS)

# This is required on some hosts like powerpc64le-linux-gnu because we may build
Expand All @@ -241,6 +263,8 @@ LLVM_STATIC_LIBFILES = \
$(POWERPC_LLVM_CONFIG_LIB) \
$(HEXAGON_LLVM_CONFIG_LIB) \
$(AMDGPU_LLVM_CONFIG_LIB) \
$(SPIRV_LLVM_CONFIG_LIB) \
$(VULKAN_LLVM_CONFIG_LIB) \
$(WEBASSEMBLY_LLVM_CONFIG_LIB) \
$(RISCV_LLVM_CONFIG_LIB)

Expand All @@ -265,6 +289,7 @@ TEST_LD_FLAGS = -L$(BIN_DIR) -lHalide $(COMMON_LD_FLAGS)

# In the tests, some of our expectations change depending on the llvm version
TEST_CXX_FLAGS += -DLLVM_VERSION=$(LLVM_VERSION_TIMES_10)
TEST_CXX_FLAGS += $(HL_VERSION_FLAGS)

# In the tests, default to exporting no symbols that aren't explicitly exported
TEST_CXX_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
Expand Down Expand Up @@ -305,13 +330,22 @@ TEST_METAL = 1
endif
endif

ifneq ($(WITH_VULKAN), )
ifneq (,$(findstring vulkan,$(HL_TARGET)))
TEST_VULKAN = 1
endif
endif

ifeq ($(UNAME), Linux)
ifneq ($(TEST_CUDA), )
CUDA_LD_FLAGS ?= -L/usr/lib/nvidia-current -lcuda
endif
ifneq ($(TEST_OPENCL), )
OPENCL_LD_FLAGS ?= -lOpenCL
endif
ifneq ($(TEST_VULKAN), )
VULKAN_LD_FLAGS ?= -lvulkan
endif
OPENGL_LD_FLAGS ?= -lGL
HOST_OS=linux
endif
Expand All @@ -324,6 +358,10 @@ endif
ifneq ($(TEST_OPENCL), )
OPENCL_LD_FLAGS ?= -framework OpenCL
endif
ifneq ($(TEST_VULKAN), )
# The Vulkan loader is distributed as a dylib on OSX (not a framework)
VULKAN_LD_FLAGS ?= -lvulkan
endif
ifneq ($(TEST_METAL), )
METAL_LD_FLAGS ?= -framework Metal -framework Foundation
endif
Expand All @@ -335,6 +373,10 @@ ifneq ($(TEST_OPENCL), )
TEST_CXX_FLAGS += -DTEST_OPENCL
endif

ifneq ($(TEST_VULKAN), )
TEST_CXX_FLAGS += -DTEST_VULKAN
endif

ifneq ($(TEST_METAL), )
# Using Metal APIs requires writing Objective-C++ (or Swift). Add ObjC++
# to allow tests to create and destroy Metal contexts, etc. This requires
Expand Down Expand Up @@ -433,6 +475,7 @@ SOURCE_FILES = \
CodeGen_LLVM.cpp \
CodeGen_Metal_Dev.cpp \
CodeGen_OpenCL_Dev.cpp \
CodeGen_Vulkan_Dev.cpp \
CodeGen_OpenGLCompute_Dev.cpp \
CodeGen_Posix.cpp \
CodeGen_PowerPC.cpp \
Expand Down Expand Up @@ -623,6 +666,7 @@ HEADER_FILES = \
CodeGen_LLVM.h \
CodeGen_Metal_Dev.h \
CodeGen_OpenCL_Dev.h \
CodeGen_Vulkan_Dev.h \
CodeGen_OpenGLCompute_Dev.h \
CodeGen_Posix.h \
CodeGen_PTX_Dev.h \
Expand Down Expand Up @@ -853,8 +897,10 @@ RUNTIME_CPP_COMPONENTS = \
windows_profiler \
windows_threads \
windows_threads_tsan \
windows_vulkan \
windows_yield \
write_debug_image \
vulkan \
x86_cpu_features \

RUNTIME_LL_COMPONENTS = \
Expand Down Expand Up @@ -883,6 +929,7 @@ RUNTIME_EXPORTED_INCLUDES = $(INCLUDE_DIR)/HalideRuntime.h \
$(INCLUDE_DIR)/HalideRuntimeOpenGLCompute.h \
$(INCLUDE_DIR)/HalideRuntimeMetal.h \
$(INCLUDE_DIR)/HalideRuntimeQurt.h \
$(INCLUDE_DIR)/HalideRuntimeVulkan.h \
$(INCLUDE_DIR)/HalideRuntimeWebGPU.h \
$(INCLUDE_DIR)/HalideBuffer.h \
$(INCLUDE_DIR)/HalidePyTorchHelpers.h \
Expand Down Expand Up @@ -1049,6 +1096,7 @@ RUNTIME_CXX_FLAGS = \
-Wno-unused-function \
-Wvla \
-Wsign-compare
RUNTIME_CXX_FLAGS += $(HL_VERSION_FLAGS)

$(BUILD_DIR)/initmod.windows_%_x86_32.ll: $(SRC_DIR)/runtime/windows_%_x86.cpp $(BUILD_DIR)/clang_ok
@mkdir -p $(@D)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ currently targets:
- CPU architectures: X86, ARM, Hexagon, PowerPC, RISC-V
- Operating systems: Linux, Windows, macOS, Android, iOS, Qualcomm QuRT
- GPU Compute APIs: CUDA, OpenCL, OpenGL Compute Shaders, Apple Metal, Microsoft
Direct X 12
Direct X 12, Vulkan

Rather than being a standalone programming language, Halide is embedded in C++.
This means you write C++ code that builds an in-memory representation of a
Expand Down
Loading