Closed rhaas80 closed 8 years ago
The tests pass. This changes only apply to the non-vectorized code (which is not tested) which was broken when the fnrhs was introduced. Basically the _NV version would no longer compile.
What the change does is add arguments "dir1, dir2, dir3" to the fnrhs function calls.
diff --git a/ML_ADMQuantities/src/Differencing.h b/ML_ADMQuantities/src/Differencing.h
index d36a164..8d5afe0 100644
--- a/ML_ADMQuantities/src/Differencing.h
+++ b/ML_ADMQuantities/src/Differencing.h
@@ -174,7 +174,7 @@ static CCTK_REAL PDupwindNth3_impl(const CCTK_REAL* restrict const u, const CCTK
static CCTK_REAL PDupwindNth3_impl(const CCTK_REAL* restrict const u, const CCTK_REAL p1o12dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDupwindNth2_impl(u, p1o12dz, cdk, cdj);
+ return PDupwindNth2_impl(u, p1o12dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -210,7 +210,7 @@ static CCTK_REAL PDonesided3_impl(const CCTK_REAL* restrict const u, const CCTK_
static CCTK_REAL PDonesided3_impl(const CCTK_REAL* restrict const u, const CCTK_REAL p1odz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDonesided2_impl(u, p1odz, cdk, cdj);
+ return PDonesided2_impl(u, p1odz, cdk, cdj, dir1, dir2, dir3);
}
#endif
diff --git a/ML_BSSN_NV/src/Differencing.h b/ML_BSSN_NV/src/Differencing.h
index 3fe2066..c8b364b 100644
--- a/ML_BSSN_NV/src/Differencing.h
+++ b/ML_BSSN_NV/src/Differencing.h
@@ -606,7 +606,7 @@ static CCTK_REAL PDupwindNthfdOrder23_impl(const CCTK_REAL* restrict const u, co
static CCTK_REAL PDupwindNthfdOrder23_impl(const CCTK_REAL* restrict const u, const CCTK_REAL pm1o2dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDupwindNthfdOrder22_impl(u, pm1o2dz, cdk, cdj);
+ return PDupwindNthfdOrder22_impl(u, pm1o2dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -642,7 +642,7 @@ static CCTK_REAL PDupwindNthfdOrder43_impl(const CCTK_REAL* restrict const u, co
static CCTK_REAL PDupwindNthfdOrder43_impl(const CCTK_REAL* restrict const u, const CCTK_REAL p1o12dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDupwindNthfdOrder42_impl(u, p1o12dz, cdk, cdj);
+ return PDupwindNthfdOrder42_impl(u, p1o12dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -678,7 +678,7 @@ static CCTK_REAL PDupwindNthfdOrder63_impl(const CCTK_REAL* restrict const u, co
static CCTK_REAL PDupwindNthfdOrder63_impl(const CCTK_REAL* restrict const u, const CCTK_REAL pm1o60dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDupwindNthfdOrder62_impl(u, pm1o60dz, cdk, cdj);
+ return PDupwindNthfdOrder62_impl(u, pm1o60dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -714,7 +714,7 @@ static CCTK_REAL PDupwindNthfdOrder83_impl(const CCTK_REAL* restrict const u, co
static CCTK_REAL PDupwindNthfdOrder83_impl(const CCTK_REAL* restrict const u, const CCTK_REAL pm1o840dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDupwindNthfdOrder82_impl(u, pm1o840dz, cdk, cdj);
+ return PDupwindNthfdOrder82_impl(u, pm1o840dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -1038,7 +1038,7 @@ static CCTK_REAL PDonesidedfdOrder23_impl(const CCTK_REAL* restrict const u, con
static CCTK_REAL PDonesidedfdOrder23_impl(const CCTK_REAL* restrict const u, const CCTK_REAL pm1o2dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDonesidedfdOrder22_impl(u, pm1o2dz, cdk, cdj);
+ return PDonesidedfdOrder22_impl(u, pm1o2dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -1074,7 +1074,7 @@ static CCTK_REAL PDonesidedfdOrder43_impl(const CCTK_REAL* restrict const u, con
static CCTK_REAL PDonesidedfdOrder43_impl(const CCTK_REAL* restrict const u, const CCTK_REAL pm1o6dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDonesidedfdOrder42_impl(u, pm1o6dz, cdk, cdj);
+ return PDonesidedfdOrder42_impl(u, pm1o6dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -1110,7 +1110,7 @@ static CCTK_REAL PDonesidedfdOrder63_impl(const CCTK_REAL* restrict const u, con
static CCTK_REAL PDonesidedfdOrder63_impl(const CCTK_REAL* restrict const u, const CCTK_REAL pm1o12dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDonesidedfdOrder62_impl(u, pm1o12dz, cdk, cdj);
+ return PDonesidedfdOrder62_impl(u, pm1o12dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
@@ -1146,7 +1146,7 @@ static CCTK_REAL PDonesidedfdOrder83_impl(const CCTK_REAL* restrict const u, con
static CCTK_REAL PDonesidedfdOrder83_impl(const CCTK_REAL* restrict const u, const CCTK_REAL p1o60dz, const ptrdiff_t cdj, const ptrdiff_t cdk, const ptrdiff_t dir1, const ptrdiff_t dir2, const ptrdiff_t dir3)
{
const ptrdiff_t cdi CCTK_ATTRIBUTE_UNUSED = sizeof(CCTK_REAL);
- return PDonesidedfdOrder82_impl(u, p1o60dz, cdk, cdj);
+ return PDonesidedfdOrder82_impl(u, p1o60dz, cdk, cdj, dir1, dir2, dir3);
}
#endif
I stumbled across this when implementing the symmetric-operators version of McLachlan.
Thanks. I will accept the pull request. I assume McLachlan doesn't need to be regenerated, since it doesn't generate the nonvectorised version by default anyway?
Hello Ian,
Thanks. I will accept the pull request. I assume McLachlan doesn't need to be regenerated, since it doesn't generate the nonvectorised version by default anyway? I think it does. The Makefile has:
all: McLachlan_ADM.out McLachlan_BSSN.out McLachlan_BSSN_bench.out McLachlan_BSSN_bench8.out McLachlan_BSSN_CL.out McLachlan_BSSN_ND.out McLachlan_BSSN_NV.out McLachlan_CCZ4.out McLachlan_ADMConstraints.out McLachlan_ADMQuantities.out WaveToy.out WaveToyFO.out hydro.out
as its first target and the _NV.out ones trigger non-vectorized code. That thorn however is not in the ET thornlist. So ML needs to regenerate, but the ET won't notice.
Yours, Roland
My email is as private as my paper mail. I therefore support encrypting and signing email messages. Get my PGP key from http://keys.gnupg.net.
OK. Please can you do the regeneration? It would probably be wise to first regenerate without the change, commit that, and then regenerate with the change, to make sure that the changes are what are expected from this. It's possible that the first part will be a no-op.
Thanks! Could you explain the change and why it was needed? I assume the tests pass?