diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 62d0a4d..3294207 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,5 @@ stages: + - prepare - build - test @@ -15,20 +16,16 @@ workflow: .load-modules: before_script: - - ml vis/Graphviz/2.50.0-GCCcore-11.2.0 - - ml fpga - - ml xilinx/xrt/2.14 - - ml devel/Doxygen/1.9.5-GCCcore-12.2.0 - - ml compiler/GCC/12.2.0 - - ml devel/CMake/3.24.3-GCCcore-12.2.0 + - ml vis/Graphviz/8.1.0-GCCcore-12.3.0 fpga xilinx/xrt/2.16 devel/Doxygen/1.9.7-GCCcore-12.3.0 compiler/GCC/12.3.0 devel/CMake/3.26.3-GCCcore-12.3.0 build-dependencies: id_tokens: CI_JOB_JWT: aud: https://git.uni-paderborn.de - stage: build + stage: prepare variables: - SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 1:00:00 -N 1 -n 1 --cpus-per-task=128" + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 2:00:00 -N 1 -n 1 --cpus-per-task=128" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 2:00:00" extends: .load-modules script: - ./buildDependencies.sh @@ -45,12 +42,13 @@ build-unittests: needs: - build-dependencies variables: - SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 1:00:00 -N 1 -n 1 --cpus-per-task=128" + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 2:00:00 -N 1 -n 1 --cpus-per-task=128" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 2:00:00" extends: .load-modules script: - mkdir build && cd build - - cmake -DCMAKE_BUILD_TYPE=Release .. - - make -j $procs + - cmake -DCMAKE_BUILD_TYPE=Release -DFINN_BUILD_DOC=OFF -DFINN_ENABLE_SANITIZERS=ON .. + - make -j $(nproc) artifacts: paths: - "build/" @@ -64,12 +62,38 @@ build-integrationtests: needs: - build-dependencies variables: - SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 1:00:00 -N 1 -n 1 --cpus-per-task=128" + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 2:00:00 -N 1 -n 1 --cpus-per-task=128" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 2:00:00" + extends: .load-modules + script: + - mkdir build-host-mem && cd build-host-mem + - cmake -DCMAKE_BUILD_TYPE=Release -DFINN_BUILD_DOC=OFF -DFINN_ENABLE_SANITIZERS=ON .. + - make Integrationtests -j $(nproc) + - cd .. + - mkdir build-no-host-mem && cd build-no-host-mem + - cmake -DCMAKE_BUILD_TYPE=Release -DFINN_USE_HOST_MEM=OFF -DFINN_BUILD_DOC=OFF -DFINN_ENABLE_SANITIZERS=ON .. + - make Integrationtests -j $(nproc) + artifacts: + paths: + - "build-host-mem/" + - "build-no-host-mem/" + expire_in: 1 week + +build-regressiontests: + id_tokens: + CI_JOB_JWT: + aud: https://git.uni-paderborn.de + stage: build + needs: + - build-dependencies + variables: + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 2:00:00 -N 1 -n 1 --cpus-per-task=128" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 2:00:00" extends: .load-modules script: - mkdir build && cd build - - cmake -DCMAKE_BUILD_TYPE=Release .. - - make Integrationtests -j $procs + - cmake -DCMAKE_BUILD_TYPE=Release -DFINN_BUILD_DOC=OFF -DFINN_ENABLE_SANITIZERS=OFF .. + - make -j $(nproc) artifacts: paths: - "build/" @@ -79,9 +103,10 @@ lint: id_tokens: CI_JOB_JWT: aud: https://git.uni-paderborn.de - stage: test + stage: prepare variables: - SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 0:30:00 -N 1 -n 1 --cpus-per-task=2 --mem-per-cpu=2G" + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 0:30:00 -N 1 -n 1 --cpus-per-task=2 --mem-per-cpu=2G" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 2:00:00" script: - ml lang - ml Python/3.10.4-GCCcore-11.3.0 @@ -95,13 +120,15 @@ run-unittests: CI_JOB_JWT: aud: https://git.uni-paderborn.de stage: test - dependencies: + needs: - build-unittests - build-dependencies variables: - SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 0:30:00 -N 1 -n 1 --cpus-per-task=2 --mem-per-cpu=2G" + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 0:30:00 -N 1 -n 1 --cpus-per-task=2 --mem-per-cpu=2G" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 2:00:00" extends: .load-modules script: + - export LD_LIBRARY_PATH="$(pwd)/deps/finn_boost/stage/lib/boost/:$LD_LIBRARY_PATH" - cd build - ctest --output-on-failure --output-junit ctest-results.xml artifacts: @@ -117,21 +144,69 @@ run-integrationtests: CI_JOB_JWT: aud: https://git.uni-paderborn.de stage: test - dependencies: + needs: - build-integrationtests - build-dependencies variables: - SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p fpga -t 0:30:00 --constraint=xilinx_u280_xrt2.14" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 0:30:00" extends: .load-modules script: - - cp example_networks/identity_net/* build/integrationtest - - cd build/integrationtest - - xbutil reset -d 0000:a1:00.1 + - export LD_LIBRARY_PATH="$(pwd)/deps/finn_boost/stage/lib/boost/:$LD_LIBRARY_PATH" + # Reset FPGAs and setup Host Memory Access + - ml xilinx/u55c/u55c_gen3x16_xdma_3_202210_1 + - xbutil reset -d 0000:c1:00.1 - xbutil reset -d 0000:81:00.1 - - xbutil reset -d 0000:01:00.1 + - sudo /opt/software/FPGA/scripts/u280/host_memory/enable_hostmem_single_fpga.sh 0000:c1:00.1 + - /opt/software/FPGA/scripts/u280/host_memory/verify_single_fpga.sh 0000:c1:00.1 + - sudo /opt/software/FPGA/scripts/u280/host_memory/enable_hostmem_single_fpga.sh 0000:81:00.1 + - /opt/software/FPGA/scripts/u280/host_memory/verify_single_fpga.sh 0000:81:00.1 + + - cd build-host-mem/integrationtest + # Test Synchronous Inference with Host memory + - cp ../../example_networks/jet-structure-classification-with-host-mem/* . + - ./SyncInference + + # Reset FPGAs again + - xbutil reset -d 0000:c1:00.1 + - xbutil reset -d 0000:81:00.1 + + # Test Synchronous Inference without Host memory + - cd ../../build-no-host-mem/integrationtest + - cp ../../example_networks/jet-structure-classification-without-host-mem/* . - ./SyncInference - # - xbutil reset -d 0000:a1:00.1 - # - xbutil reset -d 0000:81:00.1 - # - xbutil reset -d 0000:01:00.1 - # - ./AsyncInference + # TODO: Run regression tests + asynchronous inference + +run-regressiontests: + id_tokens: + CI_JOB_JWT: + aud: https://git.uni-paderborn.de + stage: test + needs: + - build-regressiontests + - build-dependencies + variables: + #SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p normal -t 0:30:00 -N 1 -n 1 --cpus-per-task=2 --mem-per-cpu=2G" + SCHEDULER_PARAMETERS: "-A hpc-prf-ekiapp -p hacc -t 0:30:00" + extends: .load-modules + script: + - export LD_LIBRARY_PATH="$(pwd)/deps/finn_boost/stage/lib/boost/:$LD_LIBRARY_PATH" + # Reset FPGAs and setup Host Memory Access + - ml xilinx/u55c/u55c_gen3x16_xdma_3_202210_1 + - xbutil reset -d 0000:c1:00.1 + - xbutil reset -d 0000:81:00.1 + - sudo /opt/software/FPGA/scripts/u280/host_memory/enable_hostmem_single_fpga.sh 0000:c1:00.1 + - /opt/software/FPGA/scripts/u280/host_memory/verify_single_fpga.sh 0000:c1:00.1 + - sudo /opt/software/FPGA/scripts/u280/host_memory/enable_hostmem_single_fpga.sh 0000:81:00.1 + - /opt/software/FPGA/scripts/u280/host_memory/verify_single_fpga.sh 0000:81:00.1 + + - cd build/benchmarks + - cp ../../example_networks/jet-structure-classification-with-host-mem/* . + - ../_deps/googlebenchmark-src/tools/compare.py -a -d results.json benchmarks ../../benchmarks/expectedPerformance.json ./SynchronousInferenceBenchmark | tee benchmark_output.txt + # Extract the OVERALL_GEOMEAN p-value and check if it exceeds the threshold + - THRESHOLD=0.05 + - GEOMEAN=$(grep "OVERALL_GEOMEAN" benchmark_output.txt) + - if [[ -z "$GEOMEAN" ]]; then exit 1;fi + - VALUE=$(echo "$GEOMEAN" | awk '{print $3}' | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g') + - if (( $(echo "$VALUE > $THRESHOLD" | bc -l) )); then exit 1;fi + diff --git a/CMakeLists.txt b/CMakeLists.txt index d7a6fc3..d316327 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -224,23 +224,20 @@ macro(check_include) endif() endmacro() -#Enable all checks in debug mode -#message(STATUS "Build mode ${CMAKE_BUILD_TYPE}") -if (CMAKE_BUILD_TYPE STREQUAL "Release") - #message(WARNING "Analysers are off for Release build!") - set(FINN_CLANG_FORMAT OFF) - set(FINN_CLANG_TIDY OFF) - set(FINN_CPP_CHECK OFF) - set(FINN_IWYU OFF) -endif () - #Sanitizers & Checks include(cmake/Sanitizers.cmake) -OPTION(FINN_ENABLE_SANITIZERS "Enable default analyzers" ON) -OPTION(FINN_ENABLE_THREAD_SANITIZERS "Enable thread analyzer" OFF) -OPTION(FINN_ENABLE_MEMORY_SANITIZERS "Enable memory analyzer" OFF) +#Disable sanitizers by default in release mode +if (CMAKE_BUILD_TYPE STREQUAL "Release") + OPTION(FINN_ENABLE_SANITIZERS "Enable default analyzers" OFF) + OPTION(FINN_ENABLE_THREAD_SANITIZERS "Enable thread analyzer" OFF) + OPTION(FINN_ENABLE_MEMORY_SANITIZERS "Enable memory analyzer" OFF) +else() + OPTION(FINN_ENABLE_SANITIZERS "Enable default analyzers" ON) + OPTION(FINN_ENABLE_THREAD_SANITIZERS "Enable thread analyzer" OFF) + OPTION(FINN_ENABLE_MEMORY_SANITIZERS "Enable memory analyzer" OFF) +endif() if (FINN_ENABLE_SANITIZERS) finncpp_enable_sanitizers(finnc_options @@ -253,6 +250,16 @@ else() message(STATUS "All Sanitizers disabled.") endif() +#Enable all checks in debug mode +#message(STATUS "Build mode ${CMAKE_BUILD_TYPE}") +if (CMAKE_BUILD_TYPE STREQUAL "Release") + #message(WARNING "Analysers are off for Release build!") + set(FINN_CLANG_FORMAT OFF) + set(FINN_CLANG_TIDY OFF) + set(FINN_CPP_CHECK OFF) + set(FINN_IWYU OFF) +endif () + # Disable Clang Tidy because of bug with constexpr ifs and constexpr constructors set(FINN_CLANG_TIDY OFF) diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index f2d5352..2a7ef2e 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -4,5 +4,5 @@ set_target_properties(Benchmarks PROPERTIES FOLDER "benchmarks") set(FINN_BENCHMARK_DIR ${CMAKE_CURRENT_BINARY_DIR}) add_benchmark(DataPackingBenchmark.cpp) -add_benchmark(CustomDynamicBitsetBenchmark.cpp) -add_benchmark(DynamicMdSpanBenchmark.cpp) \ No newline at end of file +add_benchmark(DynamicMdSpanBenchmark.cpp) +add_benchmark(SynchronousInferenceBenchmark.cpp) \ No newline at end of file diff --git a/benchmarks/CustomDynamicBitsetBenchmark.cpp b/benchmarks/CustomDynamicBitsetBenchmark.cpp deleted file mode 100644 index 6034896..0000000 --- a/benchmarks/CustomDynamicBitsetBenchmark.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @file CustomDynamicBitsetBenchmark.cpp - * @author Linus Jungemann (linus.jungemann@uni-paderborn.de) and others - * @brief Benchmark for the Custom Dynamic Bitset - * @version 0.1 - * @date 2023-10-31 - * - * @copyright Copyright (c) 2023 - * @license All rights reserved. This program and the accompanying materials are made available under the terms of the MIT license. - * - */ - -#include -#include - -#include -#include -#include -#include - -static void BM_Boost_DynBitset(benchmark::State& state) { - finnBoost::dynamic_bitset set(1000000); - for (auto _ : state) -#pragma omp for schedule(guided) - for (std::size_t i = 0; i < set.size(); ++i) { - set.set(i); - } -} -// Register the function as a benchmark -BENCHMARK(BM_Boost_DynBitset)->Iterations(1000); - -static void BM_Finn_DynBitset(benchmark::State& state) { - DynamicBitset set(1000000); - for (auto _ : state) -#pragma omp for schedule(guided) - for (std::size_t i = 0; i < set.size(); ++i) { - set.setSingleBit(i); - } -} -// Register the function as a benchmark -BENCHMARK(BM_Finn_DynBitset)->Iterations(1000); - -static void BM_Finn_DynBitset2(benchmark::State& state) { - std::bitset<32> bit(2147483649); - DynamicBitset set(1000000); - for (auto _ : state) - for (std::size_t i = 0; i <= 10000; ++i) { - set.setByte(bit.to_ulong(), 0); - } -} -// Register the function as a benchmark -BENCHMARK(BM_Finn_DynBitset2)->Iterations(1000); - -static void BM_Boost_DynBitset2(benchmark::State& state) { - std::bitset<32> bit(2147483649); - finnBoost::dynamic_bitset set(1000000); - for (auto _ : state) - for (std::size_t i = 0; i <= 10000; ++i) { - for (std::size_t j = 0; j < 32; ++j) { - set[j] = bit[j]; - } - } -} -// Register the function as a benchmark -BENCHMARK(BM_Boost_DynBitset2)->Iterations(1000); - - -BENCHMARK_MAIN(); diff --git a/benchmarks/SynchronousInferenceBenchmark.cpp b/benchmarks/SynchronousInferenceBenchmark.cpp new file mode 100644 index 0000000..b6cc107 --- /dev/null +++ b/benchmarks/SynchronousInferenceBenchmark.cpp @@ -0,0 +1,70 @@ +/** + * @file SynchronousInferenceBenchmark.cpp + * @author Linus Jungemann (linus.jungemann@uni-paderborn.de) + * @brief Benchmarks the SynchronousInference Performance of the Driver + * @version 0.1 + * @date 2025-03-21 + * + * @copyright Copyright (c) 2025 + * @license All rights reserved. This program and the accompanying materials are made available under the terms of the MIT license. + * + */ + +#include + +#include +#include +#include +#include +#include +#include + +template +using destribution_t = typename std::conditional_t, std::uniform_real_distribution, std::uniform_int_distribution>; + +using InputFinnType = Finn::DatatypeInt<8>; +using OutputFinnType = Finn::DatatypeInt<16>; + +namespace Finn { + template + using Driver = Finn::BaseDriver; +} // namespace Finn + +template +Finn::Driver createDriverFromConfig(const std::filesystem::path& configFilePath, unsigned int batchSize) { + Finn::Driver driver(configFilePath, batchSize); + driver.setForceAchieval(true); + return driver; +} + +static void BM_SynchronousInference(benchmark::State& state) { + const std::string exampleNetworkConfig = "jetConfig.json"; + const uint batchSize = static_cast(state.range(0)); + auto driver = createDriverFromConfig(exampleNetworkConfig, batchSize); + using dtype = int8_t; + Finn::vector testInputs(24 * batchSize); + + std::random_device rndDevice; + std::mt19937 mersenneEngine{rndDevice()}; // Generates random integers + + destribution_t dist{static_cast(InputFinnType().min()), static_cast(InputFinnType().max())}; + + auto gen = [&dist, &mersenneEngine]() { return dist(mersenneEngine); }; + + // Warmup + std::fill(testInputs.begin(), testInputs.end(), 1); + auto warmup = driver.inferSynchronous(testInputs.begin(), testInputs.end()); + benchmark::DoNotOptimize(warmup); + + std::generate(testInputs.begin(), testInputs.end(), gen); + for (auto _ : state) { + auto ret = driver.inferSynchronous(testInputs.begin(), testInputs.end()); + benchmark::DoNotOptimize(ret); + benchmark::ClobberMemory(); + } +} +// Register the function as a benchmark +BENCHMARK(BM_SynchronousInference)->Iterations(1000000)->RangeMultiplier(2)->Range(1, 4 << 10)->Repetitions(10); + + +BENCHMARK_MAIN(); diff --git a/benchmarks/expectedPerformance.json b/benchmarks/expectedPerformance.json new file mode 100644 index 0000000..0ff326f --- /dev/null +++ b/benchmarks/expectedPerformance.json @@ -0,0 +1,2642 @@ +{ + "context": { + "date": "2025-03-21T17:42:42+01:00", + "host_name": "n2hacc01", + "executable": "./SynchronousInferenceBenchmark", + "num_cpus": 128, + "mhz_per_cpu": 1794, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 32768, + "num_sharing": 1 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 1 + }, + { + "type": "Unified", + "level": 2, + "size": 524288, + "num_sharing": 1 + }, + { + "type": "Unified", + "level": 3, + "size": 33554432, + "num_sharing": 8 + } + ], + "load_avg": [4.49,4.48,4.3], + "library_version": "v1.9.1", + "library_build_type": "release", + "json_schema_version": 1 + }, + "benchmarks": [ + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2592993048019707e+03, + "cpu_time": 1.2568505740000001e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2494983840733767e+03, + "cpu_time": 1.2468693860000003e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2627124711871147e+03, + "cpu_time": 1.2598875820000003e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2686677598394454e+03, + "cpu_time": 1.2662156290000005e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2489859168417752e+03, + "cpu_time": 1.2467928940000004e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2526020319201052e+03, + "cpu_time": 1.2498937730000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2537667741999030e+03, + "cpu_time": 1.2513187700000003e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2640952109359205e+03, + "cpu_time": 1.2617832910000004e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2630355488508940e+03, + "cpu_time": 1.2608222950000004e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2496424727141857e+03, + "cpu_time": 1.2474490600000011e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.2572305875364691e+03, + "cpu_time": 1.2547883254000003e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.2565330395009371e+03, + "cpu_time": 1.2540846720000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 7.1858097957822178e+00, + "cpu_time": 7.1699425581386134e+00, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "BM_SynchronousInference/1/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 5.7155861995552785e-03, + "cpu_time": 5.7140654029060921e-03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2635026061907411e+03, + "cpu_time": 1.2612060980000008e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2613202300854027e+03, + "cpu_time": 1.2588068870000004e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2645558780059218e+03, + "cpu_time": 1.2621187509999991e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2554654520936310e+03, + "cpu_time": 1.2532195990000012e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2538904831744730e+03, + "cpu_time": 1.2516961439999966e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2577587356790900e+03, + "cpu_time": 1.2553265160000003e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2584778298623860e+03, + "cpu_time": 1.2561446580000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2679268540814519e+03, + "cpu_time": 1.2657344859999996e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2596292728558183e+03, + "cpu_time": 1.2571513100000011e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.2576641472987831e+03, + "cpu_time": 1.2551100509999990e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.2600191489327701e+03, + "cpu_time": 1.2576514500000001e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.2590535513591024e+03, + "cpu_time": 1.2566479840000006e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 4.3259021604796386e+00, + "cpu_time": 4.3301830630398648e+00, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 1, + "run_name": "BM_SynchronousInference/2/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 3.4332035065845284e-03, + "cpu_time": 3.4430708627894197e-03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3256066800095141e+03, + "cpu_time": 1.3229765190000010e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3653930993750691e+03, + "cpu_time": 1.3629411490000009e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3534164838492870e+03, + "cpu_time": 1.3505992010000014e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3579365620389581e+03, + "cpu_time": 1.3552648739999995e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3489734451286495e+03, + "cpu_time": 1.3463604479999985e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3703673928976059e+03, + "cpu_time": 1.3677105730000001e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3727610278874636e+03, + "cpu_time": 1.3699650339999962e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3350731427781284e+03, + "cpu_time": 1.3325836389999993e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3633770123124123e+03, + "cpu_time": 1.3605031250000009e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3340677698142827e+03, + "cpu_time": 1.3316664289999951e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3526972616091373e+03, + "cpu_time": 1.3500570990999995e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3556765229441228e+03, + "cpu_time": 1.3529320375000007e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.6409452316694022e+01, + "cpu_time": 1.6333556488368981e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 2, + "run_name": "BM_SynchronousInference/4/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 1.2130912645726600e-02, + "cpu_time": 1.2098419021875122e-02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3911273749545217e+03, + "cpu_time": 1.3885150010000018e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3828786802478135e+03, + "cpu_time": 1.3803063760000000e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3770405547693372e+03, + "cpu_time": 1.3746108369999988e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3908391473814845e+03, + "cpu_time": 1.3882941979999969e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3870263481512666e+03, + "cpu_time": 1.3843130889999954e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3848626939579844e+03, + "cpu_time": 1.3823915110000016e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3721804739907384e+03, + "cpu_time": 1.3695970759999982e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3849379639141262e+03, + "cpu_time": 1.3823709750000007e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3615406868048012e+03, + "cpu_time": 1.3588611939999994e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3629849147982895e+03, + "cpu_time": 1.3604306940000015e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3795418838970365e+03, + "cpu_time": 1.3769690950999998e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3838706871028992e+03, + "cpu_time": 1.3813386755000006e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.0775771203645551e+01, + "cpu_time": 1.0783440646905618e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/8/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 3, + "run_name": "BM_SynchronousInference/8/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 7.8111229020501492e-03, + "cpu_time": 7.8312873435423709e-03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4083842798136175e+03, + "cpu_time": 1.4056972019999987e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4062423477880657e+03, + "cpu_time": 1.4037953519999960e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3787046228535473e+03, + "cpu_time": 1.3762206879999965e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3730697268620133e+03, + "cpu_time": 1.3705387440000009e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3787325900048018e+03, + "cpu_time": 1.3760331450000010e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3774092528037727e+03, + "cpu_time": 1.3750129420000051e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3882062239572406e+03, + "cpu_time": 1.3856461800000020e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3933555711992085e+03, + "cpu_time": 1.3906059250000026e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3742775828577578e+03, + "cpu_time": 1.3717618359999974e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3805689420551062e+03, + "cpu_time": 1.3780165310000000e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3858951140195134e+03, + "cpu_time": 1.3833328545000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3796507660299540e+03, + "cpu_time": 1.3771186094999985e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.2839230673082554e+01, + "cpu_time": 1.2806497984704848e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/16/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 4, + "run_name": "BM_SynchronousInference/16/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 9.2642152665109809e-03, + "cpu_time": 9.2577125910406430e-03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3869792507030070e+03, + "cpu_time": 1.3842781519999930e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3882321328856051e+03, + "cpu_time": 1.3856253389999863e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4009581021964550e+03, + "cpu_time": 1.3983778320000083e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3873691298067570e+03, + "cpu_time": 1.3849138589999939e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3966542491689324e+03, + "cpu_time": 1.3939869700000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3980675903148949e+03, + "cpu_time": 1.3956222409999980e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3945284229703248e+03, + "cpu_time": 1.3917977950000022e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3913901331834495e+03, + "cpu_time": 1.3887729389999920e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3914177021943033e+03, + "cpu_time": 1.3887903350000101e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3972819652408361e+03, + "cpu_time": 1.3946995969999989e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3932878678664567e+03, + "cpu_time": 1.3906865058999986e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3929730625823140e+03, + "cpu_time": 1.3902940650000062e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 4.9215178184482999e+00, + "cpu_time": 4.9330401912904769e+00, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/32/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 5, + "run_name": "BM_SynchronousInference/32/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 3.5323050835034011e-03, + "cpu_time": 3.5471978554203376e-03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.5216282452456653e+03, + "cpu_time": 1.5190842709999970e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4642116450704634e+03, + "cpu_time": 1.4616273579999870e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.6136717731133103e+03, + "cpu_time": 1.6107518919999961e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.5008954093791544e+03, + "cpu_time": 1.4980211710000049e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.6272000558674335e+03, + "cpu_time": 1.6242182170000065e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4524452607147396e+03, + "cpu_time": 1.4497833530000007e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.6152407741174102e+03, + "cpu_time": 1.6124379160000046e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.6441985671408474e+03, + "cpu_time": 1.6411992180000111e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.6312369462102652e+03, + "cpu_time": 1.6279094020000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.6177552789449692e+03, + "cpu_time": 1.6143399599999952e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.5688483955804261e+03, + "cpu_time": 1.5659372758000006e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.6144562736153605e+03, + "cpu_time": 1.6115949040000007e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 7.5184260585049898e+01, + "cpu_time": 7.4977882488262779e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/64/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 6, + "run_name": "BM_SynchronousInference/64/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 4.7923216033397553e-02, + "cpu_time": 4.7880514530799667e-02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8950237701646984e+03, + "cpu_time": 1.8910626299999933e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.9124031569808722e+03, + "cpu_time": 1.9087945020000063e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8490930898115039e+03, + "cpu_time": 1.8456419660000024e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8615664150565863e+03, + "cpu_time": 1.8581152400000035e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8273754068650305e+03, + "cpu_time": 1.8241619359999959e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8304735128767788e+03, + "cpu_time": 1.8271647790000002e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8316810941323638e+03, + "cpu_time": 1.8283318299999962e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8314263559877872e+03, + "cpu_time": 1.8277271470000046e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8313067257404327e+03, + "cpu_time": 1.8279573009999979e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.8510063560679555e+03, + "cpu_time": 1.8472696179999987e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.8521355883684009e+03, + "cpu_time": 1.8486226948999999e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.8403870919719343e+03, + "cpu_time": 1.8369868979999997e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 2.9691863233787160e+01, + "cpu_time": 2.9546180316253377e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/128/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 7, + "run_name": "BM_SynchronousInference/128/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 1.6031149890026988e-02, + "cpu_time": 1.5982807307172900e-02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.9991487441584468e+03, + "cpu_time": 1.9951468560000053e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1643458423204715e+03, + "cpu_time": 2.1606530199999979e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1180127761326730e+03, + "cpu_time": 2.1138439669999939e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1235567131079733e+03, + "cpu_time": 2.1195001269999948e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1808842378668492e+03, + "cpu_time": 2.1764376980000011e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1263361340388656e+03, + "cpu_time": 2.1220916799999968e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1086346758529544e+03, + "cpu_time": 2.1047030330000071e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1675610817037527e+03, + "cpu_time": 2.1634529480000137e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1112979957833886e+03, + "cpu_time": 2.1073544699999898e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 2.1200886787846684e+03, + "cpu_time": 2.1160191010000062e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 2.1219866879750043e+03, + "cpu_time": 2.1179202900000009e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 2.1218226959463213e+03, + "cpu_time": 2.1177596140000010e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 5.0291049112619596e+01, + "cpu_time": 5.0247578201626894e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/256/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 8, + "run_name": "BM_SynchronousInference/256/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 2.3699983321107426e-02, + "cpu_time": 2.3724961906676324e-02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 2.6425560172647238e+03, + "cpu_time": 2.6378203489999805e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 2.8206196152605112e+03, + "cpu_time": 2.8153187179999863e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 2.7553739082068205e+03, + "cpu_time": 2.7501531629999931e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 2.7452779719606042e+03, + "cpu_time": 2.7402340839999797e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 2.8015977432951331e+03, + "cpu_time": 2.7962014980000163e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 2.7446021670475602e+03, + "cpu_time": 2.7397468910000102e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 2.8328860769979660e+03, + "cpu_time": 2.8273004039999992e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 2.7527759880758817e+03, + "cpu_time": 2.7470664619999925e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 2.8121651061810549e+03, + "cpu_time": 2.8070529500000134e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 2.7116585159674287e+03, + "cpu_time": 2.7063745320000126e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 2.7619513110257685e+03, + "cpu_time": 2.7567269050999989e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 2.7540749481413518e+03, + "cpu_time": 2.7486098124999930e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 5.7790828741254089e+01, + "cpu_time": 5.7615175854704475e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/512/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 9, + "run_name": "BM_SynchronousInference/512/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 2.0923912927266988e-02, + "cpu_time": 2.0899848928856636e-02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 4.1735793091356754e+03, + "cpu_time": 4.1660114180000110e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 4.2564999568276107e+03, + "cpu_time": 4.2486062349999829e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 4.1758573218248785e+03, + "cpu_time": 4.1679987679999895e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 4.1780133671127260e+03, + "cpu_time": 4.1701293129999895e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 4.2524245167151093e+03, + "cpu_time": 4.2440646809999980e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 4.1886307997629046e+03, + "cpu_time": 4.1805406869999897e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 4.2293640892021358e+03, + "cpu_time": 4.2213979919999929e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 4.1871545701287687e+03, + "cpu_time": 4.1793972520000007e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 4.2300624838098884e+03, + "cpu_time": 4.2223482730000233e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 4.1815399420447648e+03, + "cpu_time": 4.1733072410000032e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 4.2053126356564471e+03, + "cpu_time": 4.1973801859999994e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 4.1878926849458367e+03, + "cpu_time": 4.1799689694999961e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 3.3038207055341140e+01, + "cpu_time": 3.2964879079581785e+01, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 10, + "run_name": "BM_SynchronousInference/1024/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 7.8563022342770222e-03, + "cpu_time": 7.8536795855503657e-03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 7.0505508673377335e+03, + "cpu_time": 7.0368265779999883e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 7.3291535829193890e+03, + "cpu_time": 7.3137971679999791e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 7.2917649899609387e+03, + "cpu_time": 7.2773460150000064e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 6.9441688959486783e+03, + "cpu_time": 6.9309227830000000e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 7.2907245759852231e+03, + "cpu_time": 7.2763778089999960e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 7.3830574089661231e+03, + "cpu_time": 7.3677033870000059e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 7.3292978531681001e+03, + "cpu_time": 7.3135948240000062e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 7.2993997219018638e+03, + "cpu_time": 7.2841316239999969e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 7.3063984280452141e+03, + "cpu_time": 7.2903735390000293e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 7.2674081991426647e+03, + "cpu_time": 7.2513248490000133e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 7.2491924523375947e+03, + "cpu_time": 7.2342398576000023e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 7.2955823559314013e+03, + "cpu_time": 7.2807388195000021e+03, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3860045645361396e+02, + "cpu_time": 1.3783168638428742e+02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 11, + "run_name": "BM_SynchronousInference/2048/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 1.9119433973493215e-02, + "cpu_time": 1.9052684054909650e-02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 0, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3807357653975487e+04, + "cpu_time": 1.3778267855000026e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 1, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3941919032949954e+04, + "cpu_time": 1.3910315665999973e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 2, + "threads": 1, + "iterations": 1000000, + "real_time": 1.5242277245968580e+04, + "cpu_time": 1.5207822459999988e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 3, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3673970500938594e+04, + "cpu_time": 1.3644081003999987e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 4, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3754585718736054e+04, + "cpu_time": 1.3725071130999992e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 5, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4128780801780522e+04, + "cpu_time": 1.4098884520000014e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 6, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3643485398031771e+04, + "cpu_time": 1.3613744759999976e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 7, + "threads": 1, + "iterations": 1000000, + "real_time": 1.4176190064288676e+04, + "cpu_time": 1.4144544865000000e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 8, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3815508611034602e+04, + "cpu_time": 1.3785109879999993e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "iteration", + "repetitions": 10, + "repetition_index": 9, + "threads": 1, + "iterations": 1000000, + "real_time": 1.3933946240227669e+04, + "cpu_time": 1.3904895892000013e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10_mean", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "mean", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.4011802126793194e+04, + "cpu_time": 1.3981273803299997e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10_median", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "median", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 1.3874727425631136e+04, + "cpu_time": 1.3845002886000002e+04, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10_stddev", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "stddev", + "aggregate_unit": "time", + "iterations": 10, + "real_time": 4.6690446282636560e+02, + "cpu_time": 4.6546130771518563e+02, + "time_unit": "ns" + }, + { + "name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10_cv", + "family_index": 0, + "per_family_instance_index": 12, + "run_name": "BM_SynchronousInference/4096/iterations:1000000/repeats:10", + "run_type": "aggregate", + "repetitions": 10, + "threads": 1, + "aggregate_name": "cv", + "aggregate_unit": "percentage", + "iterations": 10, + "real_time": 3.3322227833460241e-02, + "cpu_time": 3.3291766849263965e-02, + "time_unit": "ns" + } + ] +} diff --git a/example_networks/jet-structure-classification-with-host-mem/FinnDatatypesJet.h b/example_networks/jet-structure-classification-with-host-mem/FinnDatatypesJet.h new file mode 100644 index 0000000..bdff338 --- /dev/null +++ b/example_networks/jet-structure-classification-with-host-mem/FinnDatatypesJet.h @@ -0,0 +1,17 @@ +// THIS FILE IS AUTOGENERATED BY THE FINN COMPILER + +#ifndef FINNDRIVERUSEDDATATYPES +#define FINNDRIVERUSEDDATATYPES +#include "../core/BaseDriver.hpp" +#include "../utils/FinnDatatypes.hpp" + +using InputFinnType = Finn::DatatypeInt<8>; +using OutputFinnType = Finn::DatatypeInt<16>; + +namespace Finn { + template + using Driver = Finn::BaseDriver; +} // namespace Finn + + +#endif // FINNDRIVERUSEDDATATYPES diff --git a/example_networks/jet-structure-classification-with-host-mem/finn-accel.xclbin b/example_networks/jet-structure-classification-with-host-mem/finn-accel.xclbin new file mode 100644 index 0000000..cde8923 Binary files /dev/null and b/example_networks/jet-structure-classification-with-host-mem/finn-accel.xclbin differ diff --git a/example_networks/jet-structure-classification-with-host-mem/jetConfig.json b/example_networks/jet-structure-classification-with-host-mem/jetConfig.json new file mode 100644 index 0000000..6e51792 --- /dev/null +++ b/example_networks/jet-structure-classification-with-host-mem/jetConfig.json @@ -0,0 +1,45 @@ +[ + { + "xrtDeviceIndex": 0, + "xclbinPath": "finn-accel.xclbin", + "name": "MainDevice", + "idmas": [ + { + "kernelName": "StreamingDataflowPartition_0:{idma0}", + "normalShape": [ + 1, + 24 + ], + "foldedShape": [ + 1, + 1, + 24 + ], + "packedShape": [ + 1, + 1, + 24 + ] + } + ], + "odmas": [ + { + "kernelName": "StreamingDataflowPartition_2:{odma0}", + "normalShape": [ + 1, + 5 + ], + "foldedShape": [ + 1, + 1, + 5 + ], + "packedShape": [ + 1, + 1, + 10 + ] + } + ] + } +] \ No newline at end of file diff --git a/example_networks/jet-structure-classification-without-host-mem/FinnDatatypesJet.h b/example_networks/jet-structure-classification-without-host-mem/FinnDatatypesJet.h new file mode 100644 index 0000000..bdff338 --- /dev/null +++ b/example_networks/jet-structure-classification-without-host-mem/FinnDatatypesJet.h @@ -0,0 +1,17 @@ +// THIS FILE IS AUTOGENERATED BY THE FINN COMPILER + +#ifndef FINNDRIVERUSEDDATATYPES +#define FINNDRIVERUSEDDATATYPES +#include "../core/BaseDriver.hpp" +#include "../utils/FinnDatatypes.hpp" + +using InputFinnType = Finn::DatatypeInt<8>; +using OutputFinnType = Finn::DatatypeInt<16>; + +namespace Finn { + template + using Driver = Finn::BaseDriver; +} // namespace Finn + + +#endif // FINNDRIVERUSEDDATATYPES diff --git a/example_networks/jet-structure-classification-without-host-mem/finn-accel.xclbin b/example_networks/jet-structure-classification-without-host-mem/finn-accel.xclbin new file mode 100644 index 0000000..9e104aa Binary files /dev/null and b/example_networks/jet-structure-classification-without-host-mem/finn-accel.xclbin differ diff --git a/example_networks/jet-structure-classification-without-host-mem/jetConfig.json b/example_networks/jet-structure-classification-without-host-mem/jetConfig.json new file mode 100644 index 0000000..6e51792 --- /dev/null +++ b/example_networks/jet-structure-classification-without-host-mem/jetConfig.json @@ -0,0 +1,45 @@ +[ + { + "xrtDeviceIndex": 0, + "xclbinPath": "finn-accel.xclbin", + "name": "MainDevice", + "idmas": [ + { + "kernelName": "StreamingDataflowPartition_0:{idma0}", + "normalShape": [ + 1, + 24 + ], + "foldedShape": [ + 1, + 1, + 24 + ], + "packedShape": [ + 1, + 1, + 24 + ] + } + ], + "odmas": [ + { + "kernelName": "StreamingDataflowPartition_2:{odma0}", + "normalShape": [ + 1, + 5 + ], + "foldedShape": [ + 1, + 1, + 5 + ], + "packedShape": [ + 1, + 1, + 10 + ] + } + ] + } +] \ No newline at end of file diff --git a/integrationtest/SyncInference.cpp b/integrationtest/SyncInference.cpp index a5f59db..17353b6 100644 --- a/integrationtest/SyncInference.cpp +++ b/integrationtest/SyncInference.cpp @@ -10,7 +10,6 @@ * */ - #include #include #include @@ -24,7 +23,7 @@ namespace Finn { } TEST(SyncInference, syncInferenceTest) { - std::string exampleNetworkConfig = "config.json"; + std::string exampleNetworkConfig = "jetConfig.json"; Finn::Config conf = Finn::createConfigFromPath(exampleNetworkConfig); auto driver = Finn::Driver(conf, 0, conf.deviceWrappers[0].idmas[0]->kernelName, 0, conf.deviceWrappers[0].odmas[0]->kernelName, 1, true); @@ -36,13 +35,13 @@ TEST(SyncInference, syncInferenceTest) { // Run inference auto results = driver.inferSynchronous(data.begin(), data.end()); - Finn::vector expectedResults = {254, 510, 253, 509, 252}; + Finn::vector expectedResults = {98, 50, 65476, 65493, 27}; EXPECT_EQ(results, expectedResults); } TEST(SyncInference, syncBatchInferenceTest) { - std::string exampleNetworkConfig = "config.json"; + std::string exampleNetworkConfig = "jetConfig.json"; Finn::Config conf = Finn::createConfigFromPath(exampleNetworkConfig); std::size_t batchLength = 10; @@ -61,7 +60,7 @@ TEST(SyncInference, syncBatchInferenceTest) { Finn::vector expectedResults; for (std::size_t i = 0; i < batchLength; ++i) { - expectedResults.insert(expectedResults.end(), {254, 510, 253, 509, 252}); + expectedResults.insert(expectedResults.end(), {98, 50, 65476, 65493, 27}); } EXPECT_EQ(results, expectedResults); @@ -69,5 +68,6 @@ TEST(SyncInference, syncBatchInferenceTest) { int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); } \ No newline at end of file diff --git a/src/FINNCppDriver/utils/Logger.cpp b/src/FINNCppDriver/utils/Logger.cpp index 930f5b5..a4ec584 100644 --- a/src/FINNCppDriver/utils/Logger.cpp +++ b/src/FINNCppDriver/utils/Logger.cpp @@ -65,29 +65,30 @@ namespace Details { } // namespace Details // cppcheck-suppress unusedFunction -logger_type& Logger::getLogger() { - static Logger log; +logger_type& Logger::getLogger(bool console) { + static Logger log(console); return Details::boostLogger; } -Logger::Logger() { +Logger::Logger(bool console) { auto backend = finnBoost::make_shared(kw::file_name = "finnLog_%N.log", kw::rotation_size = 10 * 1024 * 1024, kw::time_based_rotation = bl::sinks::file::rotation_at_time_point(0, 0, 0), kw::auto_flush = true); auto sink = finnBoost::make_shared(backend); sink->set_formatter(bl::parse_formatter(logFormat)); bl::core::get()->add_sink(sink); - initLogging(); + initLogging(console); } -void Logger::initLogging() { +void Logger::initLogging(bool console) { static bool init = false; if (!init) { init = !init; bl::register_simple_formatter_factory("Severity"); finnBoost::log::add_common_attributes(); - bl::add_console_log(std::clog, bl::keywords::format = logFormat); + if (console) + bl::add_console_log(std::clog, bl::keywords::format = logFormat); return; } BOOST_LOG_SEV(Details::boostLogger, bl::trivial::warning) << "Do not init the logger more than once!"; diff --git a/src/FINNCppDriver/utils/Logger.h b/src/FINNCppDriver/utils/Logger.h index a5da07b..386e845 100644 --- a/src/FINNCppDriver/utils/Logger.h +++ b/src/FINNCppDriver/utils/Logger.h @@ -77,7 +77,7 @@ class Logger { * * @return logger_type& */ - static logger_type& getLogger(); + static logger_type& getLogger(bool console = false); /** * @brief Construct a new Logger object (Deleted) @@ -108,8 +108,8 @@ class Logger { Logger(Logger&&) = default; private: - void initLogging(); - Logger(); + void initLogging(bool console = false); + Logger(bool console = false); const std::string logFormat = "[%TimeStamp%] (%LineID%) [%Severity%]: %Message%"; };