Add ctests for the tensorflow/e2e directory. * Doesn't add sub-directory tests yet. Focused on just getting some coverage. * ctest --output-on-failure -R tensorflow -j 128 --label-exclude '^driver=vulkan$' (my vm does not have vulkan installed)
diff --git a/CMakeLists.txt b/CMakeLists.txt index df30d08..9add1e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -43,7 +43,6 @@ option(IREE_BUILD_DOCS "Builds IREE docs." OFF) option(IREE_BUILD_SAMPLES "Builds IREE sample projects." ON) option(IREE_BUILD_DEBUGGER "Builds the IREE debugger app." OFF) -option(IREE_BUILD_PYTHON_BINDINGS "Builds the IREE python bindings" OFF) option(IREE_BUILD_JAVA_BINDINGS "Builds the IREE java bindings." OFF) option(IREE_BUILD_EXPERIMENTAL "Builds experimental projects." OFF) option(IREE_BUILD_TENSORFLOW_COMPILER "Builds TensorFlow compiler." OFF) @@ -52,6 +51,14 @@ CACHE STRING "Semicolon-separated list of HAL drivers to build, or \"all\".") set(IREE_TARGET_BACKENDS_TO_BUILD "all" CACHE STRING "Semicolon-separated list of target backends to build, or \"all\".") + +# Default python bindings to enabled for some features. +if(${IREE_BUILD_TENSORFLOW_COMPILER}) + option(IREE_BUILD_PYTHON_BINDINGS "Builds the IREE python bindings" ON) +else() + option(IREE_BUILD_PYTHON_BINDINGS "Builds the IREE python bindings" OFF) +endif() + # LINT.ThenChange( # https://github.com/google/iree/tree/main/build_tools/cmake/iree_cross_compile.cmake:iree_cross_compile_options, # https://github.com/google/iree/tree/main/build_tools/cmake/iree_cross_compile.cmake:iree_cross_compile_invoke
diff --git a/integrations/tensorflow/CMakeLists.txt b/integrations/tensorflow/CMakeLists.txt index 6194ee3..ba528f1 100644 --- a/integrations/tensorflow/CMakeLists.txt +++ b/integrations/tensorflow/CMakeLists.txt
@@ -34,3 +34,7 @@ if(${IREE_BUILD_PYTHON_BINDINGS}) add_subdirectory(bindings/python) endif() + +if(${IREE_BUILD_TESTS} AND ${IREE_BUILD_PYTHON_BINDINGS}) + add_subdirectory(e2e) +endif()
diff --git a/integrations/tensorflow/e2e/CMakeLists.txt b/integrations/tensorflow/e2e/CMakeLists.txt new file mode 100644 index 0000000..a2b83eb --- /dev/null +++ b/integrations/tensorflow/e2e/CMakeLists.txt
@@ -0,0 +1,145 @@ +# Copyright 2020 Google LLC +# +# 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 +# +# https://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. + +# Special cases to exclude from automatically expanding targets for all +# backends. +set(SPECIAL_CASES + "mobile_bert_squad_test.py" +) + +set(TFLITE_FAILING + "broadcasting_test.py" + "concat_test.py" + "dynamic_mlp_relu_test.py" + "dynamic_mlp_test.py" + "einsum_dynamic_test.py" + "einsum_static_test.py" + "einsum_vector_test.py" + "fft_test.py" + "gather_test.py" + "image_resize_test.py" + "mandelbrot_test.py" + "matrix_ops_dynamic_test.py" + "quantization_dyn_test.py" + "resource_ops_test.py" + "ring_buffer_test.py" + "scatter_update_test.py" + "simple_stateful_test.py" + "sliding_window_test.py" + "strings_test.py" +) + +set(VMLA_FAILING + "einsum_dynamic_test.py" + "einsum_static_test.py" + "einsum_vector_test.py" + "mandelbrot_test.py" # TODO(silvasean): Get this working on IREE. + "ring_buffer_test.py" # TODO(b/148747011) + "strings_test.py" + "tensorlist_test.py" # TODO(suderman): Re-enable once dependencies resolved +) + +set(LLVM_FAILING + "broadcast_to_test.py" + "broadcasting_test.py" + "conv_transpose_test.py" + "dynamic_mlp_relu_test.py" + "dynamic_mlp_test.py" + "einsum_dynamic_test.py" + "einsum_static_test.py" + "einsum_vector_test.py" + "fft_test.py" # TODO(natashaknk): Get this working after kernel is in. + "fill_test.py" # TODO(jennik): Get this test working on IREE. + "linspace_test.py" # TODO(https://github.com/google/iree/issues/1521) + "mandelbrot_test.py" # TODO(silvasean): Get this working on IREE. + "matrix_ops_dynamic_test.py" + "quantization_dyn_test.py" + "range_test.py" + "ring_buffer_test.py" # TODO(b/148747011) + "scatter_update_test.py" + "strings_test.py" + "tensorlist_test.py" # TODO(suderman): Re-enable once dependencies resolved +) + +set(VULKAN_FAILING + "broadcast_to_test.py" + "broadcasting_test.py" + "conv_transpose_test.py" + "dynamic_mlp_relu_test.py" + "dynamic_mlp_test.py" + "einsum_dynamic_test.py" + "einsum_static_test.py" + "einsum_vector_test.py" + "fft_test.py" # TODO(natashaknk): Get this working after kernel is in. + "fill_test.py" # TODO(jennik): Get this test working on IREE. + "linspace_test.py" # TODO(https://github.com/google/iree/issues/1521) + "mandelbrot_test.py" # TODO(silvasean): Get this working on IREE. + "matrix_ops_dynamic_test.py" + "quantization_dyn_test.py" + "range_test.py" + "ring_buffer_test.py" # TODO(b/148747011) + "scatter_update_test.py" + "strings_test.py" + "tensorlist_test.py" # TODO(suderman): Re-enable once dependencies resolved +) + +set(REFERENCE_BACKEND tf) + +function(add_e2e_test_backend filename target_backend labels) + set(_name "tensorflow_e2e__${filename}__${target_backend}") + add_test( + NAME + ${_name} + WORKING_DIRECTORY + "${CMAKE_CURRENT_BINARY_DIR}" + COMMAND + "${Python3_EXECUTABLE}" -B + "${CMAKE_CURRENT_SOURCE_DIR}/${filename}" + "--reference_backend=${REFERENCE_BACKEND}" + "--target_backends=${target_backend}" + ) + set_property(TEST ${_name} PROPERTY LABELS "${labels}") + set_property(TEST ${_name} PROPERTY ENVIRONMENT + "PYTHONPATH=${CMAKE_BINARY_DIR}/bindings/python") +endfunction() + +function(add_e2e_test filename) + # Exclude special files. + if("${filename}" IN_LIST SPECIAL_CASES) + return() + endif() + + # Build target_backends + if(NOT "${filename}" IN_LIST VMLA_FAILING) + add_e2e_test_backend("${filename}" iree_vmla "") + endif() + if(NOT "${filename}" IN_LIST LLVM_FAILING) + add_e2e_test_backend("${filename}" iree_llvmaot "driver=dylib") + endif() + if(NOT "${filename}" IN_LIST VULKAN_FAILING) + add_e2e_test_backend("${filename}" iree_vulkan "driver=vulkan") + endif() + if(NOT "${filename}" IN_LIST TFLITE_FAILING) + add_e2e_test_backend("${filename}" tflite "") + endif() +endfunction() + +function(add_all_e2e_tests pattern) + file(GLOB _all_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${pattern}") + foreach(_filename ${_all_files}) + add_e2e_test("${_filename}") + endforeach() +endfunction() + +add_all_e2e_tests("*_test.py")