From 107fef09fca370bc89e43f8b4bcc8033d81675a3 Mon Sep 17 00:00:00 2001 From: parker Date: Fri, 11 Jul 2025 13:09:17 +0100 Subject: [PATCH] test: update threading benchmark --- CMakeLists.txt | 2 +- src/Engine/Operator/GeometryOpDef.cpp | 17 ++++++++++-- src/Engine/Operator/GeometryOperator.cpp | 1 - tests/Benchmarks.cpp | 34 +++++++++++++++++------- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e889cb..b1bc4da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,7 +97,7 @@ add_executable(${BenchExec} src/Engine/Operator/GeometryConnection.cpp src/Engine/Operator/GeometryOpDef.cpp ) -target_link_libraries(${BenchExec} PRIVATE Catch2::Catch2WithMain Eigen3::Eigen Qt6::Core ) +target_link_libraries(${BenchExec} PRIVATE Catch2::Catch2WithMain Eigen3::Eigen Qt6::Core TBB::tbb) target_compile_definitions(${BenchExec} PRIVATE UNIT_TEST) target_include_directories(${BenchExec} PUBLIC src) diff --git a/src/Engine/Operator/GeometryOpDef.cpp b/src/Engine/Operator/GeometryOpDef.cpp index 47583e4..f95d622 100644 --- a/src/Engine/Operator/GeometryOpDef.cpp +++ b/src/Engine/Operator/GeometryOpDef.cpp @@ -1,10 +1,11 @@ +#include #include "Engine/Operator/GeometryOpDef.h" #include #include -#include "Engine/Network/NetworkManager.h" #include "Engine/Operator/GeometryOperator.h" #include "Engine/Types.h" #include "Engine/Operator/AttributeHandle.h" +#include "Engine/Network/NetworkManager.h" bool enzo::nt::GeometryOpDef::outputRequested(unsigned int outputIndex) { @@ -64,7 +65,7 @@ enzo::geo::Geometry& enzo::nt::GeometryOpDef::getOutputGeo(unsigned outputIndex) void enzo::nt::GeometryOpDef::cookOp() { using namespace enzo; - std::cout << "COOKING\n"; + // std::cout << "COOKING\n"; if(outputRequested(0)) { @@ -104,6 +105,18 @@ void enzo::nt::GeometryOpDef::cookOp() vector.x()+=2.5; PAttrHandle.setValue(i, vector); } + // ---- + + constexpr int N = 10000; + std::vector results(N); + + oneapi::tbb::parallel_for(0, N, [&](int i) { + double val = 0; + for (int j = 0; j < 100; ++j) { + val += std::sin(i + j); + } + results[i] = val; + }); // set output geometry diff --git a/src/Engine/Operator/GeometryOperator.cpp b/src/Engine/Operator/GeometryOperator.cpp index 799036a..fad9e8c 100644 --- a/src/Engine/Operator/GeometryOperator.cpp +++ b/src/Engine/Operator/GeometryOperator.cpp @@ -58,7 +58,6 @@ void nt::GeometryOperator::addOutputConnection(std::shared_ptr> nt::GeometryOperator::getInputConnections() const { std::vector> inputConnections; - std::cout << "input connections size: " << inputConnections_.size() <<"\n"; for(std::shared_ptr connection : inputConnections_) { inputConnections.push_back(connection); diff --git a/tests/Benchmarks.cpp b/tests/Benchmarks.cpp index 4e01578..1af3eca 100644 --- a/tests/Benchmarks.cpp +++ b/tests/Benchmarks.cpp @@ -22,21 +22,37 @@ struct NMReset TEST_CASE_METHOD(NMReset, "Network Manager") { using namespace enzo; - nt::OpId prevOp = 0; - for(int i=0; i<100; ++i){ - nt::OpId newOp = nt::NetworkManager::addOperator(); - if(prevOp!=0) - { - nt::connectOperators(newOp, 0, prevOp, 0); - } + nt::OpId startOp = nt::NetworkManager::addOperator(); + nt::OpId prevOp = startOp; + std::vector prevOps; - prevOp = newOp; + for(int k=0; k<10; k++) + { + for(int i=0; i<4; ++i) + { + nt::OpId newOp = nt::NetworkManager::addOperator(); + prevOps.push_back(newOp); + nt::connectOperators(newOp, i, prevOp, 0); + } + for(int j=0; j<10; j++) + { + std::vector prevOpsBuffer = prevOps; + for(int i=0; isetDisplayOp(prevOp); + nm->setDisplayOp(startOp); };