[mlgo][aot] requrie the model is autogenerated for test determinism
The tests that exercise the 'release' mode, where the model is AOT-ed, check the output has certain properties, to validate that, indeed, a different policy from the default one was exercised. For determinism, we can't reliably check that output for an arbitrary learned policy, since it could be that policy happens to mimic the default one in that particular case. This patch adds a requirement that those tests run only when the model is autogenerated (e.g. on build bots). Differential Revision: https://reviews.llvm.org/D111747
This commit is contained in:
@@ -850,6 +850,13 @@ if (NOT TENSORFLOW_AOT_PATH STREQUAL "")
|
||||
install(TARGETS tf_xla_runtime EXPORT LLVMExports
|
||||
ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} COMPONENT tf_xla_runtime)
|
||||
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS tf_xla_runtime)
|
||||
# Once we add more modules, we should handle this more automatically.
|
||||
if (NOT DEFINED LLVM_INLINER_MODEL_PATH
|
||||
OR "${LLVM_INLINER_MODEL_PATH}" STREQUAL ""
|
||||
OR "${LLVM_INLINER_MODEL_PATH}" STREQUAL "autogenerate")
|
||||
set(LLVM_INLINER_MODEL_PATH "autogenerate")
|
||||
set(LLVM_INLINER_MODEL_AUTOGENERATED 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Configure the three LLVM configuration header files.
|
||||
|
||||
@@ -8,12 +8,6 @@ if (DEFINED LLVM_HAVE_TF_AOT OR DEFINED LLVM_HAVE_TF_API)
|
||||
set(LLVM_INLINER_MODEL_CURRENT_URL "https://github.com/google/ml-compiler-opt/releases/download/inlining-Oz-v1.1/inlining-Oz-99f0063-v1.1.tar.gz")
|
||||
|
||||
if (DEFINED LLVM_HAVE_TF_AOT)
|
||||
# If the path is empty, autogenerate the model
|
||||
if (NOT DEFINED LLVM_INLINER_MODEL_PATH OR "${LLVM_INLINER_MODEL_PATH}" STREQUAL "")
|
||||
set(LLVM_INLINER_MODEL_PATH "autogenerate")
|
||||
message(WARNING "LLVM_INLINER_MODEL_PATH was not set: autogenerating a model to finish the build.")
|
||||
endif()
|
||||
|
||||
tf_find_and_compile(
|
||||
${LLVM_INLINER_MODEL_PATH}
|
||||
${LLVM_INLINER_MODEL_CURRENT_URL}
|
||||
|
||||
@@ -17,6 +17,7 @@ llvm_canonicalize_cmake_booleans(
|
||||
LLVM_BYE_LINK_INTO_TOOLS
|
||||
LLVM_HAVE_TF_AOT
|
||||
LLVM_HAVE_TF_API
|
||||
LLVM_INLINER_MODEL_AUTOGENERATED
|
||||
LLVM_ENABLE_EXPENSIVE_CHECKS
|
||||
)
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
; Test behavior when inlining policy grows size out of control.
|
||||
; In all cases, the end result is the same: mandatory inlinings must happen.
|
||||
; However, when we discover we 'trip' over the artificially-low size increase
|
||||
; However, when we discover we 'trip' over the artificially-low size increase
|
||||
; factor, we don't inline anymore.
|
||||
; REQUIRES: have_tf_aot
|
||||
; REQUIRES: llvm_inliner_model_autogenerated
|
||||
; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=release -ml-advisor-size-increase-threshold=10.0 -S < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=NOBOUNDS
|
||||
; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=release -ml-advisor-size-increase-threshold=1.0 -S < %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=BOUNDS
|
||||
|
||||
@@ -38,4 +39,4 @@ attributes #0 = { alwaysinline }
|
||||
; @some-function isn't mandatory, and when we set the increase threshold too low,
|
||||
; it won't be inlined.
|
||||
; NOBOUNDS-NOT: @some_function
|
||||
; BOUNDS: call i64 @some_function
|
||||
; BOUNDS: call i64 @some_function
|
||||
|
||||
@@ -6,5 +6,6 @@
|
||||
; for the 'development' mode.
|
||||
;
|
||||
; REQUIRES: have_tf_aot
|
||||
; REQUIRES: llvm_inliner_model_autogenerated
|
||||
; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=release -S < %S/Inputs/test-module.ll 2>&1 | FileCheck %S/Inputs/test-module.ll --check-prefix=CHECK
|
||||
; RUN: opt -passes=scc-oz-module-inliner -enable-ml-inliner=default -S < %S/Inputs/test-module.ll 2>&1 | FileCheck %S/Inputs/test-module.ll --check-prefix=DEFAULT
|
||||
|
||||
@@ -254,6 +254,9 @@ if config.have_tf_aot:
|
||||
if config.have_tf_api:
|
||||
config.available_features.add("have_tf_api")
|
||||
|
||||
if config.llvm_inliner_model_autogenerated:
|
||||
config.available_features.add("llvm_inliner_model_autogenerated")
|
||||
|
||||
def have_cxx_shared_library():
|
||||
readobj_exe = lit.util.which('llvm-readobj', config.llvm_tools_dir)
|
||||
if not readobj_exe:
|
||||
|
||||
@@ -54,6 +54,7 @@ config.has_plugins = @LLVM_ENABLE_PLUGINS@
|
||||
config.linked_bye_extension = @LLVM_BYE_LINK_INTO_TOOLS@
|
||||
config.have_tf_aot = @LLVM_HAVE_TF_AOT@
|
||||
config.have_tf_api = @LLVM_HAVE_TF_API@
|
||||
config.llvm_inliner_model_autogenerated = @LLVM_INLINER_MODEL_AUTOGENERATED@
|
||||
config.expensive_checks = @LLVM_ENABLE_EXPENSIVE_CHECKS@
|
||||
|
||||
# Support substitution of the tools_dir with user parameters. This is
|
||||
|
||||
Reference in New Issue
Block a user