different omp enabling
authorAnatoly Titov <toluk@omrb.pnpi.spb.ru>
Tue, 15 Jan 2019 10:47:18 +0000 (13:47 +0300)
committerAnatoly Titov <toluk@omrb.pnpi.spb.ru>
Tue, 15 Jan 2019 10:47:18 +0000 (13:47 +0300)
src/spacetimecorr.cpp

index 06078e5110d89d32ff4fdd0bf91d725579485be9..99fd3f7abae84e1ab2ea846a24c64083d7fc2c00 100644 (file)
@@ -167,50 +167,54 @@ 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 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]);
+
+    #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;
-        }
-        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";
         }
-        medx.resize(0);
-        medy.resize(0);
-        std::cout << i << " corr done\n";
     }
     #pragma omp barrier
 }
@@ -482,6 +486,7 @@ SpaceTimeCorr::analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
 void
 SpaceTimeCorr::finishAnalysis(int nframes)
 {
+    std::cout << "ola001";
     std::vector< std::vector< std::vector< float > > > crltns;
     std::vector< std::vector< std::pair< float, int > > > graph;
     std::vector< std::vector< int > > sub_graph;