@@ -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+ /*
6868for (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