From fdbc9e27da8d2c74c69fbce0c178f68d6d12b3b0 Mon Sep 17 00:00:00 2001 From: Philipp Suffa <philipp.suffa@fau.de> Date: Wed, 5 Jul 2023 16:39:36 +0200 Subject: [PATCH] Changed Communicator to cartesian one for emptyChannel[skip ci] --- .../HybridBenchmark/HybridBenchmark.cpp | 29 ++++++++++++------- .../ListLBM/HybridBenchmark/input.py | 28 +++++++++--------- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp b/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp index 89b0062e3..87cced0f4 100644 --- a/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp +++ b/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp @@ -156,7 +156,6 @@ int main(int argc, char **argv) WALBERLA_CUDA_CHECK(cudaPeekAtLastError()) #endif - for (auto cfg = python_coupling::configBegin(argc, argv); cfg != python_coupling::configEnd(); ++cfg) { WALBERLA_MPI_WORLD_BARRIER() @@ -176,7 +175,7 @@ int main(int argc, char **argv) const uint_t timesteps = parameters.getParameter< uint_t >("timesteps", uint_c(10)); Vector3< int > InnerOuterSplit = parameters.getParameter< Vector3< int > >("innerOuterSplit", Vector3< int >(1, 1, 1)); const bool weak_scaling = domainParameters.getParameter< bool >("weakScaling", false); // weak or strong scaling - const Vector3<bool> periodic = domainParameters.getParameter< Vector3<bool> >("periodic", Vector3<bool>(0,0,0)); + const Vector3<bool> periodic = domainParameters.getParameter< Vector3<bool> >("periodic", Vector3<bool>(false,false,false)); const real_t remainingTimeLoggerFrequency = parameters.getParameter< real_t >("remainingTimeLoggerFrequency", 3.0); // in seconds const real_t omega = parameters.getParameter< real_t > ( "omega", real_c( 1.4 ) ); @@ -187,11 +186,7 @@ int main(int argc, char **argv) const bool runHybrid = parameters.getParameter< bool >("runHybrid", false); const bool useCartesian = parameters.getParameter< bool >("useCartesian", false); - if(useCartesian) { - mpi::MPIManager::instance()-> - } - else - mpi::MPIManager::instance()->useWorldComm(); + Vector3< uint_t > cellsPerBlock; @@ -214,6 +209,7 @@ int main(int argc, char **argv) blocksPerDimension = domainParameters.getParameter< Vector3< uint_t > >("blocks"); } + ///////////////////////// /// BOUNDARY HANDLING /// ///////////////////////// @@ -232,11 +228,21 @@ int main(int argc, char **argv) if (geometrySetup == "randomNoslip") { real_t dx = 1; - blocks = walberla::blockforest::createUniformBlockGrid( blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2], + /*blocks = walberla::blockforest::createUniformBlockGrid( blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2], cellsPerBlock[0], cellsPerBlock[1], cellsPerBlock[2], dx, 0, true, false, periodic[0], periodic[1], periodic[2], - false); + false);*/ + + + blocks = walberla::blockforest::createUniformBlockGrid( + blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2], // blocks/processes in x/y/z direction + cellsPerBlock[0], cellsPerBlock[1], cellsPerBlock[2], // cells per block in x/y/z direction + dx, // cell size + true, // one block per process + periodic[0], periodic[1], periodic[2], // periodicity + false // keep global block information + ); flagFieldId = field::addFlagFieldToStorage< FlagField_T >(blocks, "flag field"); const real_t porosity = parameters.getParameter< real_t >("porosity"); @@ -250,6 +256,7 @@ int main(int argc, char **argv) geometry::setNonBoundaryCellsToDomain<FlagField_T>(*blocks, flagFieldId, fluidFlagUID); } else if (geometrySetup == "spheres") { + mpi::MPIManager::instance()->useWorldComm(); real_t dx = 1; blocks = walberla::blockforest::createUniformBlockGrid( blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2], cellsPerBlock[0], cellsPerBlock[1], cellsPerBlock[2], dx); flagFieldId = field::addFlagFieldToStorage< FlagField_T >(blocks, "flag field"); @@ -261,6 +268,7 @@ int main(int argc, char **argv) geometry::setNonBoundaryCellsToDomain<FlagField_T>(*blocks, flagFieldId, fluidFlagUID); } else if (geometrySetup == "artery") { + mpi::MPIManager::instance()->useWorldComm(); std::string meshFile = domainParameters.getParameter< std::string >("meshFile"); WALBERLA_LOG_INFO_ON_ROOT("Using mesh from " << meshFile << ".") @@ -329,6 +337,7 @@ int main(int argc, char **argv) } else if (geometrySetup == "particleBed") { + mpi::MPIManager::instance()->useWorldComm(); const AABB domainAABB = AABB(0.0, 0.0, 0.0, 0.1, 0.1, 0.1); Vector3<real_t> dx(0.001, 0.001, 0.001); Vector3<uint_t> numCells(uint_c(domainAABB.xSize() / dx[0]), uint_c(domainAABB.ySize() / dx[1]), uint_c(domainAABB.zSize() / dx[2])); @@ -346,7 +355,7 @@ int main(int argc, char **argv) WALBERLA_LOG_INFO_ON_ROOT("Number of cells is <" << blocks->getNumberOfXCells() << "," << blocks->getNumberOfYCells() << "," << blocks->getNumberOfZCells() << ">") WALBERLA_LOG_INFO_ON_ROOT("Number of blocks is <" << blocks->getXSize() << "," << blocks->getYSize() << "," << blocks->getZSize() << ">") - WALBERLA_LOG_INFO_ON_ROOT("Is cartesian communicator used: " << mpi::MPIManager::instance()->hasCartesianSetup()) + WALBERLA_LOG_INFO_ON_ROOT("Is cartesian communicator used: " << mpi::MPIManager::instance()->hasCartesianSetup() << " or worldComm " << mpi::MPIManager::instance()->hasWorldCommSetup()) if(timeStepStrategy != "noOverlap") { diff --git a/apps/benchmarks/ListLBM/HybridBenchmark/input.py b/apps/benchmarks/ListLBM/HybridBenchmark/input.py index d54dfcfe0..a735aa247 100644 --- a/apps/benchmarks/ListLBM/HybridBenchmark/input.py +++ b/apps/benchmarks/ListLBM/HybridBenchmark/input.py @@ -5,7 +5,7 @@ import waLBerla as wlb DB_FILE = os.environ.get('DB_FILE', "ListLBMBenchmark.sqlite3") class Scenario: - def __init__(self, cells_per_block=(64, 64, 20), periodic=(0,0,0), + def __init__(self, cells_per_block=(64, 64, 20), periodic=(False,False,False), timesteps=1000, time_step_strategy="noOverlap", omega=0.8, cuda_enabled_mpi=True, inner_outer_split=(1, 1, 1), vtk_write_frequency=0, inflow_velocity=(0.01,0,0), porosity=0.5, porositySwitch=0.8, run_hybrid = True, geometry_setup="randomNoslip", @@ -46,7 +46,7 @@ class Scenario: return { 'DomainSetup': { 'cellsPerBlock': self.cells_per_block, - 'periodic':self.periodic, + 'periodic': self.periodic, 'weakScaling': True, 'geometrySetup': self.geometry_setup, 'meshFile': self.mesh_file @@ -145,26 +145,26 @@ def testGPUComm(): def testCartesianComm(): - cells_per_block=(256, 256, 256) + cells_per_block=(50, 50, 50) scenarios = wlb.ScenarioManager() - scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, - time_step_strategy="noOverlap", inner_outer_split=(0, 0, 0), run_boundaries=True, use_cartesian_communicator=False) - scenarios.add(scenario) - scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, + scenario = Scenario(cells_per_block=cells_per_block, periodic=(False,True,True), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, time_step_strategy="noOverlap", inner_outer_split=(0, 0, 0), run_boundaries=True, use_cartesian_communicator=True) scenarios.add(scenario) - scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, - time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=False) - scenarios.add(scenario) - scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, - time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=True) + scenario = Scenario(cells_per_block=cells_per_block, periodic=(False,True,True), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, + time_step_strategy="noOverlap", inner_outer_split=(0, 0, 0), run_boundaries=True, use_cartesian_communicator=False) scenarios.add(scenario) + #scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, + # time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=False) + #scenarios.add(scenario) + #scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True, + # time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=True) + #scenarios.add(scenario) #randomNoslip() #spheres() -#Artery() +Artery() #particleBed() #emptyChannel() #scalingBenchmark() #testGPUComm() -testCartesianComm() +#testCartesianComm() -- GitLab