From 3c93a086f6c4969c2871c353790353d581c6d28b Mon Sep 17 00:00:00 2001 From: Anatoly Titov Date: Tue, 15 Jan 2019 13:47:18 +0300 Subject: [PATCH] different omp enabling --- src/spacetimecorr.cpp | 83 +++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/src/spacetimecorr.cpp b/src/spacetimecorr.cpp index 06078e5..99fd3f7 100644 --- a/src/spacetimecorr.cpp +++ b/src/spacetimecorr.cpp @@ -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; -- 2.22.0