Skip to content
Snippets Groups Projects

[GPU] use shared Communicator and remove MPI dependency from VirtualFluids_GPU. Renamed mpi module to parallel

Merged Sören Peters requested to merge soe.peters/VirtualFluids:feature/parallel into develop
All threads resolved!
1 file
+ 16
18
Compare changes
  • Side-by-side
  • Inline
@@ -43,11 +43,10 @@
//////////////////////////////////////////////////////////////////////////
#include "DataTypes.h"
#include "PointerDefinitions.h"
#include "config/ConfigurationFile.h"
#include <logger/Logger.h>
#include <basics/DataTypes.h>
#include <basics/PointerDefinitions.h>
#include <basics/StringUtilities/StringUtil.h>
#include <basics/config/ConfigurationFile.h>
//////////////////////////////////////////////////////////////////////////
@@ -95,7 +94,8 @@ int main(int argc, char *argv[])
vf::parallel::Communicator &communicator = *vf::parallel::MPICommunicator::getInstance();
const int numberOfProcesses = communicator.getNumberOfProcesses();
SPtr<Parameter> para = std::make_shared<Parameter>(numberOfProcesses, communicator.getProcessID());
const auto processId = communicator.getProcessID();
SPtr<Parameter> para = std::make_shared<Parameter>(numberOfProcesses, processId);
std::vector<uint> devices(10);
std::iota(devices.begin(), devices.end(), 0);
para->setDevices(devices);
@@ -105,9 +105,8 @@ int main(int argc, char *argv[])
//////////////////////////////////////////////////////////////////////////
// setup logger
//////////////////////////////////////////////////////////////////////////
const auto pid = communicator.getProcessID();
vf::logging::Logger::changeLogPath("output/vflog_process" +
std::to_string(pid) + ".txt");
std::to_string(processId) + ".txt");
vf::logging::Logger::initializeLogger();
//////////////////////////////////////////////////////////////////////////
@@ -149,7 +148,6 @@ int main(int argc, char *argv[])
para->setOutputPrefix("ChannelFlow");
para->setMainKernel(vf::CollisionKernel::Compressible::CumulantK17);
const uint generatePart = pid;
real overlap = (real)8.0 * dx;
if (numberOfProcesses > 1) {
@@ -158,15 +156,15 @@ int main(int argc, char *argv[])
// add coarse grids
//////////////////////////////////////////////////////////////////////////
real subdomainMinX = channelWidth * generatePart;
real subdomainMinX = channelWidth * processId;
real subdomainMinXoverlap = subdomainMinX;
real subdomainMaxX = subdomainMinX + channelWidth;
real subdomainMaxXoverlap = subdomainMaxX;
if (generatePart != 0)
if (processId != 0)
subdomainMinXoverlap -= overlap;
if (generatePart != numberOfProcesses - 1)
if (processId != numberOfProcesses - 1)
subdomainMaxXoverlap += overlap;
auto gridBuilder = std::make_shared<MultipleGridBuilder>();
@@ -191,14 +189,14 @@ int main(int argc, char *argv[])
// configure communication neighbors
//////////////////////////////////////////////////////////////////////////
if (generatePart != 0) {
if (processId != 0) {
gridBuilder->findCommunicationIndices(CommunicationDirections::MX, LBM);
gridBuilder->setCommunicationProcess(CommunicationDirections::MX, generatePart - 1);
gridBuilder->setCommunicationProcess(CommunicationDirections::MX, processId - 1);
}
if (generatePart != numberOfProcesses - 1) {
if (processId != numberOfProcesses - 1) {
gridBuilder->findCommunicationIndices(CommunicationDirections::PX, LBM);
gridBuilder->setCommunicationProcess(CommunicationDirections::PX, generatePart + 1);
gridBuilder->setCommunicationProcess(CommunicationDirections::PX, processId + 1);
}
//////////////////////////////////////////////////////////////////////////
@@ -207,10 +205,10 @@ int main(int argc, char *argv[])
gridBuilder->setPeriodicBoundaryCondition(false, false, false);
if (generatePart == 0) {
if (processId == 0) {
gridBuilder->setVelocityBoundaryCondition(SideType::MX, velocityLB, 0.0, 0.0);
}
if (generatePart == numberOfProcesses - 1) {
if (processId == numberOfProcesses - 1) {
gridBuilder->setPressureBoundaryCondition(SideType::PX,
0.0); // set pressure boundary condition last
bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective);
Loading