From de779b2f6fb47c5c5a9d98f86e641dd75ee30b70 Mon Sep 17 00:00:00 2001 From: rudy Date: Mon, 21 Nov 2022 15:05:26 +0100 Subject: [PATCH] fix: display compilation error in benchmark the checking of llvm expected was not correct --- .../concretelang/Support/V0Parameters.h | 9 +++-- compiler/lib/Support/V0Parameters.cpp | 2 +- .../end_to_end_benchmark.cpp | 39 ++++++++++--------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/compiler/include/concretelang/Support/V0Parameters.h b/compiler/include/concretelang/Support/V0Parameters.h index 3d9776849..de6e3ea6e 100644 --- a/compiler/include/concretelang/Support/V0Parameters.h +++ b/compiler/include/concretelang/Support/V0Parameters.h @@ -16,9 +16,10 @@ namespace mlir { namespace concretelang { namespace optimizer { -constexpr double DEFAULT_P_ERROR = 1.0 / 100000.0; -constexpr double UNSPECIFIED_P_ERROR = NAN; // will use the default p error -constexpr double NO_GLOBAL_P_ERROR = NAN; // will fallback on p error +constexpr double DEFAULT_GLOBAL_P_ERROR = 1.0 / 100000.0; +constexpr double UNSPECIFIED_P_ERROR = NAN; // will use DEFAULT_GLOBAL_P_ERROR +constexpr double UNSPECIFIED_GLOBAL_P_ERROR = + NAN; // will use DEFAULT_GLOBAL_P_ERROR constexpr uint DEFAULT_SECURITY = 128; constexpr uint DEFAULT_FALLBACK_LOG_NORM_WOPPBS = 8; constexpr bool DEFAULT_DISPLAY = false; @@ -42,7 +43,7 @@ struct Config { constexpr Config DEFAULT_CONFIG = { UNSPECIFIED_P_ERROR, - NO_GLOBAL_P_ERROR, + UNSPECIFIED_GLOBAL_P_ERROR, DEFAULT_DISPLAY, DEFAULT_STRATEGY_V0, DEFAULT_SECURITY, diff --git a/compiler/lib/Support/V0Parameters.cpp b/compiler/lib/Support/V0Parameters.cpp index 527f4674a..44452630f 100644 --- a/compiler/lib/Support/V0Parameters.cpp +++ b/compiler/lib/Support/V0Parameters.cpp @@ -176,7 +176,7 @@ llvm::Expected getParameter(optimizer::Description &descr, std::isnan(config.p_error) && std::isnan(config.global_p_error); if (naive_user) { - config.global_p_error = optimizer::DEFAULT_P_ERROR; + config.global_p_error = optimizer::DEFAULT_GLOBAL_P_ERROR; } if (std::isnan(config.p_error)) { // We always need a valid p-error diff --git a/compiler/tests/end_to_end_benchmarks/end_to_end_benchmark.cpp b/compiler/tests/end_to_end_benchmarks/end_to_end_benchmark.cpp index d4f791c48..c6319552a 100644 --- a/compiler/tests/end_to_end_benchmarks/end_to_end_benchmark.cpp +++ b/compiler/tests/end_to_end_benchmarks/end_to_end_benchmark.cpp @@ -8,6 +8,12 @@ #include "tests_tools/StackSize.h" #include "tests_tools/keySetCache.h" +#define check(expr) \ + if (auto E = expr.takeError()) { \ + std::cerr << "Error: " << llvm::toString(std::move(E)) << "\n"; \ + assert(false && "See error above"); \ + } + /// Benchmark time of the compilation template static void BM_Compile(benchmark::State &state, EndToEndDesc description, @@ -25,13 +31,13 @@ static void BM_KeyGen(benchmark::State &state, EndToEndDesc description, LambdaSupport support, mlir::concretelang::CompilationOptions options) { auto compilationResult = support.compile(description.program, options); - assert(compilationResult); + check(compilationResult); auto clientParameters = support.loadClientParameters(**compilationResult); - assert(clientParameters); + check(clientParameters); for (auto _ : state) { - assert(support.keySet(*clientParameters, llvm::None)); + check(support.keySet(*clientParameters, llvm::None)); } } @@ -41,13 +47,13 @@ static void BM_ExportArguments(benchmark::State &state, EndToEndDesc description, LambdaSupport support, mlir::concretelang::CompilationOptions options) { auto compilationResult = support.compile(description.program, options); - assert(compilationResult); + check(compilationResult); auto clientParameters = support.loadClientParameters(**compilationResult); - assert(clientParameters); + check(clientParameters); auto keySet = support.keySet(*clientParameters, getTestKeySetCache()); - assert(keySet); + check(keySet); assert(description.tests.size() > 0); auto test = description.tests[0]; @@ -58,8 +64,7 @@ static void BM_ExportArguments(benchmark::State &state, } for (auto _ : state) { - assert( - support.exportArguments(*clientParameters, **keySet, inputArguments)); + check(support.exportArguments(*clientParameters, **keySet, inputArguments)); } } @@ -68,15 +73,13 @@ template static void BM_Evaluate(benchmark::State &state, EndToEndDesc description, LambdaSupport support, mlir::concretelang::CompilationOptions options) { + options.optimizerConfig.display = true; auto compilationResult = support.compile(description.program, options); - assert(compilationResult); - + check(compilationResult); auto clientParameters = support.loadClientParameters(**compilationResult); - assert(clientParameters); - + check(clientParameters); auto keySet = support.keySet(*clientParameters, getTestKeySetCache()); - assert(keySet); - + check(keySet); assert(description.tests.size() > 0); auto test = description.tests[0]; std::vector inputArguments; @@ -84,21 +87,19 @@ static void BM_Evaluate(benchmark::State &state, EndToEndDesc description, for (auto input : test.inputs) { inputArguments.push_back(&input.getValue()); } - auto publicArguments = support.exportArguments(*clientParameters, **keySet, inputArguments); - assert(publicArguments); + check(publicArguments); auto serverLambda = support.loadServerLambda(**compilationResult); - assert(serverLambda); + check(serverLambda); auto evaluationKeys = (*keySet)->evaluationKeys(); // Warmup assert(support.serverCall(*serverLambda, **publicArguments, evaluationKeys)); for (auto _ : state) { - assert( - support.serverCall(*serverLambda, **publicArguments, evaluationKeys)); + check(support.serverCall(*serverLambda, **publicArguments, evaluationKeys)); } }