| Commit message (Collapse) | Author | Age |
| |
|
|
|
| |
Both vectorised and unvectorised versions now pass the ML_BSSN_Test testsuites
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
conversions and thus generates faster code.
Correct code generation for static functions that evaluate the derivative operators.
|
|
|
|
| |
Add extern "C" to scheduled functions.
|
|
|
|
|
|
|
|
| |
Use "k" prefix more consistently in arithmetic macros.
Improve vector code generation patterns.
Move all vectorisation run-time out of Kranc and into a new thorn LSUThorns/Vectors, so that non-Kranc thorns can also use it.
|
|
|
|
| |
This is Erik's vectorisation working tree from 13-Oct-2010
|
|
|
|
| |
Vectorisation needs to be explicitly enabled by setting -DKRANC_VECTORS at build time.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Merge was correct after all.
This reverts commit 04dfdcd32eec91978ba050a472aae2a6e7091c05.
Conflicts:
Tools/CodeGen/CalculationFunction.m
Tools/CodeGen/Thorn.m
|
|
|
|
| |
This reverts commit 8e006230f24be02831d390eaad9b90b7a7c77d2c.
|
|
|
|
|
| |
This reverts commit 815307e624fdb8c0ee2eefc644c9bbd8244ad7f2, reversing
changes made to 8e006230f24be02831d390eaad9b90b7a7c77d2c.
|
|\
| |
| |
| |
| |
| | |
Conflicts:
Tools/CodeGen/CalculationFunction.m
Tools/CodeGen/Thorn.m
|
| |
| |
| |
| | |
functions into Interface.m.
|
|/
|
|
| |
Vectorisation needs to be explicitly enabled by setting -DKRANC_VECTORS at build time.
|
| |
|
|
|
|
|
|
|
|
| |
The idea of sub-block grid functions was to allow a calculation to
operate differently on different sub-blocks of the domain. This was
never used, and is now achieved by calling the calculation with
arguments which specify the region of the domain to loop over. Hence,
the old sub-block code is being removed.
|
|
|
|
|
|
|
| |
This allows simultaneous declaration and assignment as per Erik's
previous commit, which seems to give a noticeable performance
increase, at least with the PGI compiler on Kraken, and also allows
multiple assignments to the same variable in a single calculation.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Introduce new Kranc functions DeclareAssignVariable, DeclareAssignVariableInLoop, MaybeAssignVariableInLoop, DeclareMaybeAssignVariableInLoop.
Comment out all code that only declares variables.
Change all assignments to declare variables as well.
Declare all variables as constant.
Access TmunuBase grid functions only if they have storage; otherwise, assume that they are zero.
|
|
|
|
|
|
| |
effect as Interior, but does not synchronise the variables. This can be used e.g. to calculate the RHS terms.
Introduce a way to access grid function that may or may not have storage. If a local variable name matches the pattern "eT*L", then it is read from the corresponding grid function only if the parameter useMatter is true; otherwise it is set to zero. This is obviously intended for the TmunuBase variables. This is implemented via a new Kranc function maybeAssignVariableInLoop.
|
|
|
|
|
|
|
|
| |
Use cctk_lssh instead of cctk_lsh to loop over grid functions
Rename schedule item "apply boundary conditions" to "select boundary conditions"
Introduce parameter for number of timelevels for RHS grid functions
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will allow future optimisations with cache-aligned memory allocations.
Correct an error in declaring local variables for partial derivatives.
Don't register constrained variables, which is in general not necessary
but which can use much memory.
Register symmetries in the schedule group SymmetryRegister instad of at
basegrid.
|
|
|
|
|
|
|
|
|
|
|
| |
Generate code with 80 characters per line.
Introduce new function AssignVariableInLoop, which differs from
AssignVariable in that it is meant to handle grid point values, and
never integers.
Introduce new function TestForNaN, which explicitly tests grid point
values for nan.
|
|
|
|
| |
points, and without synchronising afterwards.
|
|
|
|
| |
If you want to use it, pass UseLoopControl -> True to CreateKrancThorn.
|
| |
|
|
|
|
| |
A subsequent patch will make this optional.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and divisions of grid spacing. CreateDifferencingHeader returns a
list of 'pre-definitions' which are then computed outside the equation
loop by CalculationFunction. AKA "why can't my compiler do such a
simple optimization?"
Partial derivatives are now assumed to commute, so occurrences of
PD[f,2,1] are replaced in the equations by PD[f,1,2]. The unused ones
are automatically not computed, as before. I wish that this had made a
noticeable speed improvement (would have been big), but the compiler
must have been intelligent enough to see these.
Added khalf, kthird, ktwothird, kfourthird, keightthird computed
outside the loop. What compiler on earth would not see these
optimizations??
Factor out common expressions i.e. xx_ y_ + xx_ z_ -> xx(y+z). Intel,
I have lost all respect for you.
Remove RegularExpression from schedule matching, as it is not
supported in Mathematica 4. Replaced with a simple StringMatchQ.
|
| |
|
|
|
|
| |
Support for new calculation convention
|
|
|
|
|
|
|
|
| |
Fixed bug whereby physical boundary conditions could be called in
symmetry zones, and in some cases this could lead to accessing
unallocated memory and segfaults. This would never have generated
incorrect output, as these points would be overwritten by the symmetry
thorn anyway.
|
|
|
|
|
| |
loop over the physical boundaries. Use InfoMessage to output text to
allow user to control verbosity.
|
| |
|
|
|
|
|
| |
necessary, and apparently confuse some preprocessors under certain
circumstances.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Added error checking to SpaceSeparated
Fixed CommaInitSeparated as it was buggy; it didn't initialise the last
variable!
|
| |
|
|
|
|
|
| |
explicit initialisation of variables in Fortran to avoid implicit assignment
of SAVE attribute.
|
| |
|