Skip to content

Commit a8dae06

Browse files
committed
Improved timers
1 parent fef6858 commit a8dae06

1 file changed

Lines changed: 25 additions & 17 deletions

File tree

src/pmpo_MPMesh.hpp

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,19 @@ class MPMesh{
5252
Kokkos::Timer timer;
5353
auto reconVals_host = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), meshField);
5454
Kokkos::fence();
55-
pumipic::RecordTime("Communication-GPU to CPU-E-" + std::to_string(numEntries) + "-" + std::to_string(self), timer.seconds());
55+
pumipic::RecordTime("SD: GPU-CPU copy-" + std::to_string(self), timer.seconds());
5656

5757
timer.reset();
5858
std::vector<double> fieldData1(nEntities*numEntries);
59+
pumipic::RecordTime("SD: STL alloc" + std::to_string(self), timer.seconds());
60+
timer.reset();
5961
for (int i=0;i<nEntities;i++)
6062
for (int j=0;j<numEntries;j++)
6163
fieldData1[i*numEntries+j]=reconVals_host(i,j);
6264
//std::memcpy(fieldData1.data(), reconVals_host.data(), nEntities*numEntries*sizeof(double));
63-
pumipic::RecordTime("New allocation + copy" + std::to_string(numEntries) + "-" + std::to_string(self), timer.seconds());
64-
65-
66-
65+
pumipic::RecordTime("SD: STL alloc_copy-" + std::to_string(self), timer.seconds());
6766

67+
/*
6868
for (int i=0; i<nEntities; i++) {
6969
for (int j=0; j<numEntries; j++) {
7070
if (fieldData1[i*numEntries+j] != reconVals_host(i,j)) {
@@ -80,57 +80,65 @@ for (int i=0; i<nEntities; i++) {
8080
}
8181
}
8282
}
83-
84-
85-
83+
*/
8684
timer.reset();
8785
std::vector<std::vector<int>> recvIDVec;
8886
std::vector<std::vector<double>> recvDataVec;
87+
pumipic::RecordTime("SD: Recv Vec Allocation-" + std::to_string(self), timer.seconds());
88+
89+
timer.reset();
8990
communicateFields1(fieldData1, nEntities, numEntries, mode, recvIDVec, recvDataVec);
90-
pumipic::RecordTime("Communication-InterProcess-E-" + std::to_string(numEntries) + "-" + std::to_string(self), timer.seconds());
91+
pumipic::RecordTime("SD: IP Comm-" + std::to_string(self), timer.seconds());
9192

9293
timer.reset();
93-
int numProcsTot = recvIDVec.size();
94-
//Flatten IDs
94+
int numProcsTot = recvIDVec.size();
95+
//Flatten IDs
9596
int totalSize = 0;
9697
std::vector<int> offsets(numProcsTot, 0);
9798
for(int i=0; i<numProcsTot; i++) {
9899
offsets[i] = totalSize;
99100
totalSize += recvIDVec[i].size();
100101
}
101102
std::vector<int> flatIDVec(totalSize, 0);
102-
for(int i=0; i<numProcsTot; i++) {
103+
for(int i=0; i<numProcsTot; i++){
103104
std::copy(recvIDVec[i].begin(), recvIDVec[i].end(), flatIDVec.begin() + offsets[i]);
104105
}
106+
pumipic::RecordTime("SD: Flatten IDs-" + std::to_string(self), timer.seconds());
105107

108+
timer.reset();
106109
Kokkos::View<int*> recvIDGPU("recvIDGPU", totalSize);
107110
auto hostView = Kokkos::View<int*, Kokkos::HostSpace>("recvIDCPU", totalSize);
108111
std::copy(flatIDVec.begin(), flatIDVec.end(), hostView.data());
109112
Kokkos::deep_copy(recvIDGPU, hostView);
113+
Kokkos::fence();
114+
pumipic::RecordTime("SD: Copy CPU-GPU-" + std::to_string(self), timer.seconds());
110115

111116
//Flatten Data
117+
timer.reset();
112118
int totalSize_data=0;
113119
std::vector<int> offsets_data(numProcsTot, 0);
114-
for(int i=0; i<numProcsTot; i++) {
120+
for(int i=0; i<numProcsTot; i++){
115121
offsets_data[i] = totalSize_data;
116122
totalSize_data += recvDataVec[i].size();
117123
}
118124
std::vector<double> flatDataVec(totalSize_data, 0);
119125
for(int i=0; i<numProcsTot; i++) {
120126
std::copy(recvDataVec[i].begin(), recvDataVec[i].end(), flatDataVec.begin() + offsets_data[i]);
121127
}
128+
pumipic::RecordTime("SD: Flatten Data-" + std::to_string(self), timer.seconds());
129+
130+
timer.reset();
122131
Kokkos::View<double*> recvDataGPU("recvDataGPU", totalSize_data);
123132
auto hostView_data= Kokkos::View<double*, Kokkos::HostSpace>("recvDataCPU", totalSize_data);
124133
std::copy(flatDataVec.begin(), flatDataVec.end(), hostView_data.data());
125134
Kokkos::deep_copy(recvDataGPU, hostView_data);
126135
Kokkos::fence();
127-
//Assertions
128136
assert(totalSize_data == totalSize*numEntries);
129137
for (int i=0; i<numProcsTot; i++){
130138
assert(recvDataVec[i].size() == recvIDVec[i].size() * numEntries);
131139
}
132-
pumipic::RecordTime("Communication-CPU to GPU-E-" + std::to_string(numEntries) + "-" + std::to_string(self), timer.seconds());
133-
140+
pumipic::RecordTime("SD: Copy CPU-GPU2-" + std::to_string(self), timer.seconds());
141+
134142
//Take contributions from other procs
135143
timer.reset();
136144
Kokkos::parallel_for("halo contribution", recvIDGPU.size(), KOKKOS_LAMBDA(const int i){
@@ -141,7 +149,7 @@ for (int i=0; i<nEntities; i++) {
141149
}
142150
});
143151
Kokkos::fence();
144-
pumipic::RecordTime("Communication-GPU reduction-E-" + std::to_string(numEntries) + "-" + std::to_string(self), timer.seconds());
152+
pumipic::RecordTime("SD: Contribution" + std::to_string(self), timer.seconds());
145153
}
146154

147155

0 commit comments

Comments
 (0)