Skip to content
Snippets Groups Projects
Commit ae5bbe1f authored by Anna Wellmann's avatar Anna Wellmann
Browse files

Add debug writer for edge nodes receive

parent 63813dc5
No related branches found
No related tags found
1 merge request!104Add Communication Hiding to GPU version
......@@ -392,11 +392,12 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
// writers for version with communication hiding
if(para->getNumprocs() > 1 && para->getUseStreams()){
InterfaceDebugWriter::writeInterfaceFCC_Send(para.get());
InterfaceDebugWriter::writeInterfaceCFC_Recv(para.get());
InterfaceDebugWriter::writeSendNodesStream(para.get());
InterfaceDebugWriter::writeRecvNodesStream(para.get());
// InterfaceDebugWriter::writeInterfaceFCC_Send(para.get());
// InterfaceDebugWriter::writeInterfaceCFC_Recv(para.get());
// InterfaceDebugWriter::writeSendNodesStream(para.get());
// InterfaceDebugWriter::writeRecvNodesStream(para.get());
EdgeNodeDebugWriter::writeEdgeNodesXZ_Send(para);
EdgeNodeDebugWriter::writeEdgeNodesXZ_Recv(para);
}
}
......
......@@ -60,6 +60,42 @@ void writeEdgeNodesXZ_Send(SPtr<Parameter> para)
WbWriterVtkXmlBinary::getInstance()->writeNodesWithNodeData(filenameVec, nodesVec, datanames, nodedata);
}
}
void writeEdgeNodesXZ_Recv(SPtr<Parameter> para)
{
std::vector<UbTupleFloat3> nodesVec;
std::vector<std::string> datanames = { "SparseIndex", "ProcessNeighbor", "IndexInRecvVector", "AfterFtoC" };
std::vector<std::vector<double>> nodedata;
int numberOfNodes = 0;
for (int level = 0; level < para->getMaxLevel(); level++){
numberOfNodes += (int) para->getParH(level)->edgeNodesXtoZ.size();
}
nodesVec.resize(numberOfNodes);
nodedata.resize(datanames.size(), std::vector<double>(numberOfNodes));
int nodeCount = 0;
for (int level = 0; level < para->getMaxLevel(); level++) {
for (int u = 0; u < numberOfNodes; u++) {
int indexOfProcessNeighborRecv = para->getParH(level)->edgeNodesXtoZ[u].indexOfProcessNeighborRecv;
int indexInRecvBuffer = para->getParH(level)->edgeNodesXtoZ[u].indexInRecvBuffer;
int sparseIndex = para->getParH(level)->recvProcessNeighborX[indexOfProcessNeighborRecv].index[indexInRecvBuffer];
nodedata[0][nodeCount] = sparseIndex;
nodedata[1][nodeCount] = indexOfProcessNeighborRecv;
nodedata[2][nodeCount] = indexInRecvBuffer;
nodedata[3][nodeCount] = indexInRecvBuffer < para->getParH(level)->recvProcessNeighborX[indexOfProcessNeighborRecv].numberOfNodes;
addCoordinatesToNodeVector(para->getParH(level), nodesVec, nodeCount, sparseIndex);
nodeCount++;
}
std::string filenameVec = para->getFName() + "_writeEdgeNodesXZ_Recv_PID_" +
std::to_string(vf::gpu::Communicator::getInstanz()->getPID()) + "_" +
StringUtil::toString<int>(level);
WbWriterVtkXmlBinary::getInstance()->writeNodesWithNodeData(filenameVec, nodesVec, datanames, nodedata);
}
}
} // namespace EdgeNodeDebugWriter
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment