test with omp
authorAnatoly Titov <toluk@omrb.pnpi.spb.ru>
Tue, 15 Jan 2019 10:08:28 +0000 (13:08 +0300)
committerAnatoly Titov <toluk@omrb.pnpi.spb.ru>
Tue, 15 Jan 2019 10:08:28 +0000 (13:08 +0300)
src/spacetimecorr.cpp

index 0c2d8c4be340f12c860f7d06bcb0d2745f6476a9..77f480ce8d255db874ebc1fbdf4fe93080272df9 100644 (file)
@@ -166,57 +166,52 @@ void correlation_evaluation(std::vector< std::vector< RVec > > traj, int b_frame
 
     std::vector< float > d;
     d.resize(traj.front().size(), 0);
-
-    //#pragma omp parallel shared(crl, temp_zero, d)
-    //{
-        //#pragma omp for schedule(dynamic)
-        for (int i = tauS; i <= tauE; i += 1) {
-            std::vector< RVec > medx, medy;
-            RVec temp1, temp2;
-            float tmp;
-            medx.resize(traj.front().size(), temp_zero);
-            medy.resize(traj.front().size(), temp_zero);
-            for (int j = 0; j < traj.size() - i - 1; j++) {
-                for (int f = 0; f < traj.front().size(); f++) {
-                    medx[f] += (traj[b_frame][f] - traj[j][f]);
-                    medy[f] += (traj[b_frame][f] - traj[j + i][f]);
-                }
-            }
-            for (int j = 0; j < traj.front().size(); j++) {
-                tmp = traj.size() - 1;
-                tmp -= i;
-                tmp = 1 / tmp;
-                //tmp = 1 / (traj.size() - 1 - i);
-                medx[j] *= tmp;
-                medy[j] *= tmp;
+    #pragma omp parallel for shared(crl, temp_zero, d) //schedule(dynamic)
+    for (int i = tauS; i <= tauE; i += 1) {
+        std::vector< RVec > medx, medy;
+        RVec temp1, temp2;
+        float tmp;
+        medx.resize(traj.front().size(), temp_zero);
+        medy.resize(traj.front().size(), temp_zero);
+        for (int j = 0; j < traj.size() - i - 1; j++) {
+            for (int f = 0; f < traj.front().size(); f++) {
+                medx[f] += (traj[b_frame][f] - traj[j][f]);
+                medy[f] += (traj[b_frame][f] - traj[j + i][f]);
             }
-            std::vector< std::vector< float > > a, b, c;
-            a.resize(traj.front().size(), d);
-            b.resize(traj.front().size(), d);
-            c.resize(traj.front().size(), d);
-            for (int j = 0; j < traj.size() - i - 1; j++) {
-                for (int f1 = 0; f1 < traj.front().size(); f1++) {
-                    for (int f2 = 0; f2 < traj.front().size(); f2++) {
-                        temp1 = traj[b_frame][f1] - traj[j][f1] - medx[f1];
-                        temp2 = traj[b_frame][f2] - traj[j + i][f2] - medy[f2];
-
-                        a[f1][f2] += (temp1[0] * temp2[0] + temp1[1] * temp2[1] + temp1[2] * temp2[2]);
-                        b[f1][f2] += (temp1[0] * temp1[0] + temp1[1] * temp1[1] + temp1[2] * temp1[2]);
-                        c[f1][f2] += (temp2[0] * temp2[0] + temp2[1] * temp2[1] + temp2[2] * temp2[2]);
-                    }
+        }
+        for (int j = 0; j < traj.front().size(); j++) {
+            tmp = traj.size() - 1;
+            tmp -= i;
+            tmp = 1 / tmp;
+            //tmp = 1 / (traj.size() - 1 - i);
+            medx[j] *= tmp;
+            medy[j] *= tmp;
+        }
+        std::vector< std::vector< float > > a, b, c;
+        a.resize(traj.front().size(), d);
+        b.resize(traj.front().size(), d);
+        c.resize(traj.front().size(), d);
+        for (int j = 0; j < traj.size() - i - 1; j++) {
+            for (int f1 = 0; f1 < traj.front().size(); f1++) {
+                for (int f2 = 0; f2 < traj.front().size(); f2++) {
+                    temp1 = traj[b_frame][f1] - traj[j][f1] - medx[f1];
+                    temp2 = traj[b_frame][f2] - traj[j + i][f2] - medy[f2];
+                    a[f1][f2] += (temp1[0] * temp2[0] + temp1[1] * temp2[1] + temp1[2] * temp2[2]);
+                    b[f1][f2] += (temp1[0] * temp1[0] + temp1[1] * temp1[1] + temp1[2] * temp1[2]);
+                    c[f1][f2] += (temp2[0] * temp2[0] + temp2[1] * temp2[1] + temp2[2] * temp2[2]);
                 }
             }
-            for (int j = 0; j < traj.front().size(); j++) {
-                for (int f = 0; f < traj.front().size(); f++) {
-                    crl[i][j][f] = a[j][f] / (std::sqrt(b[j][f] * c[j][f]));
-                }
+        }
+        for (int j = 0; j < traj.front().size(); j++) {
+            for (int f = 0; f < traj.front().size(); f++) {
+                crl[i][j][f] = a[j][f] / (std::sqrt(b[j][f] * c[j][f]));
             }
-            medx.resize(0);
-            medy.resize(0);
-            std::cout << i << " corr done\n";
         }
-    //}
-    //#pragma omp barrier
+        medx.resize(0);
+        medy.resize(0);
+        std::cout << i << " corr done\n";
+    }
+    #pragma omp barrier
 }
 
 void graph_calculation(std::vector< std::vector< std::pair< float, int > > > &graph, std::vector< std::vector< int > > &s_graph, std::vector< std::vector< std::pair< int, int > > > &s_graph_rbr,