Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
29 changes: 28 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,34 @@ project(
HOMEPAGE_URL "https://halide-lang.org"
)

enable_testing()
##
# Enable testing. When Halide_ENABLE_MEMCHECK is set (see the `valgrind` preset),
# pull in the full CTest module so that `ctest -T memcheck` reruns the whole
# registered test suite under valgrind in the build tree. Otherwise stick to the
# lighter enable_testing(). We don't probe for a valgrind binary ourselves:
# CTest's memcheck driver already locates (or complains about) MEMORYCHECK_COMMAND
# on its own, and configuring still succeeds if it's missing -- `ctest -T memcheck`
# simply fails at test time in that case.
##

option(Halide_ENABLE_MEMCHECK
"Configure the build tree so 'ctest -T memcheck' runs tests under valgrind" OFF
)
if (Halide_ENABLE_MEMCHECK)
Comment thread
alexreinking marked this conversation as resolved.
# Deliberately no --leak-check=full: Halide's JIT triggers one-time LLVM
# ORC allocations that valgrind reports as "possibly lost", which are noise
# rather than Halide bugs. These options catch the errors that matter
# (invalid reads/writes, use of uninitialized values).
set(MEMORYCHECK_COMMAND_OPTIONS "--error-exitcode=1 --track-origins=yes"
CACHE STRING "Options passed to valgrind by 'ctest -T memcheck'"
)
set(MEMORYCHECK_SUPPRESSIONS_FILE "${CMAKE_CURRENT_SOURCE_DIR}/test/valgrind.supp"
CACHE FILEPATH "Valgrind suppressions file for 'ctest -T memcheck'"
)
include(CTest)
else ()
enable_testing()
endif ()

##
# Disable find_package(Halide) inside the build
Expand Down
78 changes: 78 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -268,9 +268,57 @@
"WITH_TEST_FUZZ": "YES",
"BUILD_SHARED_LIBS": "NO"
}
},
{
"name": "valgrind",
"inherits": "debug",
"displayName": "Valgrind (ctest -T memcheck)",
"description": "Debug build wired up so 'ctest -T memcheck' reruns the test suite under valgrind",
"cacheVariables": {
"Halide_ENABLE_MEMCHECK": "ON"
}
},
{
"name": "sde",
"hidden": true,
"inherits": "release",
"description": "Base preset for running the test suite under Intel SDE emulation"
},
{
"name": "avx512-cannonlake",
"inherits": "sde",
"displayName": "AVX-512 (Intel SDE, Cannon Lake)",
"description": "Run every registered test under 'sde -cnl --' to emulate a Cannon Lake AVX-512 CPU",
"cacheVariables": {
"CMAKE_CROSSCOMPILING_EMULATOR": "sde;-cnl;--"
}
},
{
"name": "avx512-knights-landing",
"inherits": "sde",
"displayName": "AVX-512 (Intel SDE, Knights Landing)",
"description": "Run every registered test under 'sde -knl --' to emulate a Knights Landing AVX-512 CPU",
"cacheVariables": {
"CMAKE_CROSSCOMPILING_EMULATOR": "sde;-knl;--"
}
}
],
"buildPresets": [
{
"name": "valgrind",
"configurePreset": "valgrind",
"displayName": "Valgrind (ctest -T memcheck)"
},
{
"name": "avx512-cannonlake",
"configurePreset": "avx512-cannonlake",
"displayName": "AVX-512 (Intel SDE, Cannon Lake)"
},
{
"name": "avx512-knights-landing",
"configurePreset": "avx512-knights-landing",
"displayName": "AVX-512 (Intel SDE, Knights Landing)"
},
{
"name": "macOS-coverage",
"configurePreset": "macOS-coverage",
Expand All @@ -282,6 +330,36 @@
}
],
"testPresets": [
{
"name": "valgrind",
"configurePreset": "valgrind",
"displayName": "Valgrind (ctest -T memcheck)",
"description": "Selects the tests to run under valgrind; CTest presets can't select the '-T memcheck' action on their own, so pass it explicitly: 'ctest --preset valgrind -T memcheck'",
"filter": {
"exclude": {
"label": "no_memcheck"
}
},
"output": {
"outputOnFailure": true
}
},
{
"name": "avx512-cannonlake",
"configurePreset": "avx512-cannonlake",
"displayName": "AVX-512 (Intel SDE, Cannon Lake)",
"output": {
"outputOnFailure": true
}
},
{
"name": "avx512-knights-landing",
"configurePreset": "avx512-knights-landing",
"displayName": "AVX-512 (Intel SDE, Knights Landing)",
"output": {
"outputOnFailure": true
}
},
{
"name": "macOS-coverage",
"configurePreset": "macOS-coverage",
Expand Down
10 changes: 4 additions & 6 deletions apps/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ if (Halide_TARGET MATCHES "wasm")
endif ()

# keep-sorted start case=no ignore_prefixes=#
# add_app(auto_viz) # TODO(#5374): missing CMake build
add_app(auto_viz)
add_app(bgu)
add_app(bilateral_grid)
add_app(blur)
Expand All @@ -59,9 +59,9 @@ add_app(harris)
# add_app(HelloAndroidCamera2) # TODO(#5374): missing CMake build
add_app(HelloBaremetal)
# add_app(HelloiOS) # don't build HelloiOS here because it isn't universal.
# add_app(HelloPyTorch) # TODO(#5374): missing CMake build
add_app(HelloPyTorch)
add_app(hexagon_benchmarks)
# add_app(hexagon_dma) # TODO(#5374): missing CMake build
add_app(hexagon_dma)
add_app(hist)
add_app(iir_blur)
add_app(interpolate)
Expand All @@ -71,11 +71,9 @@ add_app(linear_blur)
add_app(local_laplacian)
add_app(max_filter)
add_app(nl_means)
# add_app(nn_ops) # TODO(#5374): missing CMake build
add_app(onnx)
add_app(resize)
# add_app(resnet_50) # TODO(#5374): missing CMake build
# add_app(simd_op_check) # TODO(#5374): missing CMake build
add_app(resnet_50)
add_app(stencil_chain)
add_app(unsharp)
add_app(wavelet)
Expand Down
Loading
Loading