aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorknarf <knarf@b2a53a04-0f4f-0410-87ed-f9f25ced00cf>2009-10-20 18:47:35 +0000
committerknarf <knarf@b2a53a04-0f4f-0410-87ed-f9f25ced00cf>2009-10-20 18:47:35 +0000
commitb58a109b87d1133c85d3bd097cd08bcf082c7140 (patch)
treea6f0d5d165de150c46979feefa7c3967801a8c5c
parentabba0c1bc7e5350da8ba54f8ff4d4c3a66ed39da (diff)
partial openMP support, one loop remains serialized, because it would have to be rewritten to make use of openMP
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/TwoPunctures/trunk@97 b2a53a04-0f4f-0410-87ed-f9f25ced00cf
-rw-r--r--src/FuncAndJacobian.c16
-rw-r--r--src/Newton.c8
2 files changed, 16 insertions, 8 deletions
diff --git a/src/FuncAndJacobian.c b/src/FuncAndJacobian.c
index 3dd4a87..004e784 100644
--- a/src/FuncAndJacobian.c
+++ b/src/FuncAndJacobian.c
@@ -378,15 +378,14 @@ J_times_dv (int nvar, int n1, int n2, int n3, derivs dv,
CCTK_REAL al, be, A, B, X, R, x, r, phi, y, z, Am1, *values;
derivs dU, U;
-
- values = dvector (0, nvar - 1);
- allocate_derivs (&dU, nvar);
- allocate_derivs (&U, nvar);
-
Derivatives_AB3 (nvar, n1, n2, n3, dv);
+#pragma omp parallel for private (values,dU,U,j,k,al,A,be,B,phi,X,R,x,r,y,z,Am1,ivar,indx) schedule(dynamic)
for (i = 0; i < n1; i++)
{
+ values = dvector (0, nvar - 1);
+ allocate_derivs (&dU, nvar);
+ allocate_derivs (&U, nvar);
for (j = 0; j < n2; j++)
{
for (k = 0; k < n3; k++)
@@ -440,10 +439,10 @@ J_times_dv (int nvar, int n1, int n2, int n3, derivs dv,
}
}
}
+ free_dvector (values, 0, nvar - 1);
+ free_derivs (&dU, nvar);
+ free_derivs (&U, nvar);
}
- free_dvector (values, 0, nvar - 1);
- free_derivs (&dU, nvar);
- free_derivs (&U, nvar);
}
/* --------------------------------------------------------------------------*/
@@ -607,6 +606,7 @@ SetMatrix_JFD (int nvar, int n1, int n2, int n3, derivs u,
N2 = n2 - 1;
N3 = n3 - 1;
+#pragma omp parallel for private (j,k,ivar,row) schedule(dynamic)
for (i = 0; i < n1; i++)
{
for (j = 0; j < n2; j++)
diff --git a/src/Newton.c b/src/Newton.c
index 77be43f..9140c08 100644
--- a/src/Newton.c
+++ b/src/Newton.c
@@ -221,12 +221,16 @@ relax (CCTK_REAL * restrict const dv,
{
for (n = 0; n < N_PlaneRelax; n++)
{
+#pragma omp parallel for schedule(dynamic)
for (i = 2; i < n1; i = i + 2)
LineRelax_be (dv, i, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
+#pragma omp parallel for schedule(dynamic)
for (i = 1; i < n1; i = i + 2)
LineRelax_be (dv, i, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
+#pragma omp parallel for schedule(dynamic)
for (j = 1; j < n2; j = j + 2)
LineRelax_al (dv, j, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
+#pragma omp parallel for schedule(dynamic)
for (j = 0; j < n2; j = j + 2)
LineRelax_al (dv, j, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
}
@@ -235,12 +239,16 @@ relax (CCTK_REAL * restrict const dv,
{
for (n = 0; n < N_PlaneRelax; n++)
{
+#pragma omp parallel for schedule(dynamic)
for (i = 0; i < n1; i = i + 2)
LineRelax_be (dv, i, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
+#pragma omp parallel for schedule(dynamic)
for (i = 1; i < n1; i = i + 2)
LineRelax_be (dv, i, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
+#pragma omp parallel for schedule(dynamic)
for (j = 1; j < n2; j = j + 2)
LineRelax_al (dv, j, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
+#pragma omp parallel for schedule(dynamic)
for (j = 0; j < n2; j = j + 2)
LineRelax_al (dv, j, k, nvar, n1, n2, n3, rhs, ncols, cols, JFD);
}