Skip to content

Commit bc42d8d

Browse files
authored
Add optimized_portable_kernels test (#11205)
Make sure we test the optimized versions of portable kernels even if they are shadowed by optimized implementations. Intended to support #9432.
1 parent 1720f2f commit bc42d8d

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

kernels/portable/CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,15 @@ if(EXECUTORCH_BUILD_PTHREADPOOL AND EXECUTORCH_BUILD_KERNELS_OPTIMIZED)
6969
target_compile_options(optimized_portable_kernels PUBLIC ${_common_compile_options})
7070
target_include_directories(optimized_portable_kernels PRIVATE ${TORCH_INCLUDE_DIRS})
7171
target_compile_definitions(optimized_portable_kernels PRIVATE ET_USE_PYTORCH_HEADERS)
72+
gen_selected_ops(LIB_NAME "optimized_portable_ops_lib" OPS_SCHEMA_YAML "${_yaml}")
73+
generate_bindings_for_kernels(
74+
LIB_NAME "optimized_portable_ops_lib" FUNCTIONS_YAML "${_yaml}"
75+
)
76+
gen_operators_lib(
77+
LIB_NAME "optimized_portable_ops_lib" KERNEL_LIBS optimized_portable_kernels DEPS executorch_core
78+
)
7279
install(
73-
TARGETS optimized_portable_kernels
80+
TARGETS optimized_portable_kernels optimized_portable_ops_lib
7481
DESTINATION lib
7582
)
7683
endif()

kernels/test/CMakeLists.txt

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ set(EXECUTORCH_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../..)
1717

1818
include(${EXECUTORCH_ROOT}/tools/cmake/Test.cmake)
1919

20-
set(_kernels portable optimized quantized)
20+
set(_kernels portable optimized_portable optimized quantized)
2121
foreach(kernel ${_kernels})
2222
set(_wrapper_dir
2323
"${CMAKE_CURRENT_BINARY_DIR}/include/${kernel}/executorch/kernels/test"
@@ -37,13 +37,17 @@ foreach(kernel ${_kernels})
3737
VERBATIM
3838
)
3939

40+
set(_supported_features_kernel ${kernel})
41+
if(${kernel} STREQUAL "optimized_portable")
42+
set(_supported_features_kernel "portable")
43+
endif()
4044
add_custom_command(
4145
OUTPUT "${_wrapper_dir}/supported_features.cpp"
4246
"${_wrapper_dir}/supported_features.h"
4347
COMMAND mkdir -p ${_wrapper_dir}
4448
COMMAND
4549
${PYTHON_EXECUTABLE} kernels/test/gen_supported_features.py
46-
kernels/${kernel}/test/supported_features_def.yaml >
50+
kernels/${_supported_features_kernel}/test/supported_features_def.yaml >
4751
${_wrapper_dir}/supported_features.cpp
4852
COMMAND
4953
${PYTHON_EXECUTABLE} kernels/test/gen_supported_features.py
@@ -57,6 +61,11 @@ foreach(kernel ${_kernels})
5761
set(_kernel_ops_lib "optimized_native_cpu_ops_lib")
5862
set(_kernel_ops_lib_path
5963
"${CMAKE_CURRENT_BINARY_DIR}/../../configurations/optimized_native_cpu_ops_lib"
64+
)
65+
elseif(${kernel} STREQUAL "optimized_portable")
66+
set(_kernel_ops_lib "${kernel}_ops_lib")
67+
set(_kernel_ops_lib_path
68+
"${CMAKE_CURRENT_BINARY_DIR}/../../kernels/portable/${kernel}_ops_lib"
6069
)
6170
else()
6271
set(_kernel_ops_lib "${kernel}_ops_lib")
@@ -88,6 +97,9 @@ add_custom_target(
8897
"${CMAKE_CURRENT_BINARY_DIR}/include/optimized/executorch/kernels/test/FunctionHeaderWrapper.h"
8998
"${CMAKE_CURRENT_BINARY_DIR}/include/optimized/executorch/kernels/test/supported_features.h"
9099
"${CMAKE_CURRENT_BINARY_DIR}/include/optimized/executorch/kernels/test/supported_features.cpp"
100+
"${CMAKE_CURRENT_BINARY_DIR}/include/optimized_portable/executorch/kernels/test/FunctionHeaderWrapper.h"
101+
"${CMAKE_CURRENT_BINARY_DIR}/include/optimized_portable/executorch/kernels/test/supported_features.h"
102+
"${CMAKE_CURRENT_BINARY_DIR}/include/optimized_portable/executorch/kernels/test/supported_features.cpp"
91103
"${CMAKE_CURRENT_BINARY_DIR}/include/quantized/executorch/kernels/test/FunctionHeaderWrapper.h"
92104
"${CMAKE_CURRENT_BINARY_DIR}/include/quantized/executorch/kernels/test/supported_features.h"
93105
"${CMAKE_CURRENT_BINARY_DIR}/include/quantized/executorch/kernels/test/supported_features.cpp"
@@ -299,6 +311,22 @@ set(_optimized_kernels_test_sources
299311
if(TARGET optimized_portable_kernels)
300312
list(APPEND _optimized_kernels_test_sources ${all_test_sources})
301313
list(REMOVE_DUPLICATES _optimized_kernels_test_sources)
314+
315+
# Make sure that we still test optimized versions of portable
316+
# kernels even if they would currently be shadowed by specific
317+
# optimized implementations.
318+
et_cxx_test(
319+
optimized_portable_kernels_test
320+
SOURCES
321+
${all_test_sources}
322+
${CMAKE_CURRENT_BINARY_DIR}/include/optimized_portable/executorch/kernels/test/supported_features.cpp
323+
EXTRA_LIBS
324+
optimized_portable_kernels
325+
)
326+
add_dependencies(optimized_portable_kernels_test generate_wrapper)
327+
target_include_directories(
328+
optimized_portable_kernels_test PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include/optimized_portable"
329+
)
302330
endif()
303331

304332
et_cxx_test(

0 commit comments

Comments
 (0)