| Commit message (Collapse) | Author | Age |
| |
|
| |
|
|
|
|
|
|
|
| |
- CodeGenC.m still contains Fortran variants. These might be moved into CodeGenFortran.m.
- Several other modules essentially need to pull in all three packages due to newly broken abstraction barriers. This can be fixed incrementally.
- Indent and format all three files consistently
|
| |
|
| |
|
| |
|
|
|
|
| |
The expression it was returning was not a valid CodeGen block
|
| |
|
| |
|
|
|
|
| |
body functions
|
| |
|
|
|
|
| |
Also add some optimisations
|
|
|
|
| |
This takes a list of code statements and returns a C string containing this code. This is used to capture the generated C code and pass it to the OpenCL run time.
|
|
|
|
| |
This is used to encapsulate upwind finite differencing operations in McLachlan to simplify substitutions. Similar to a parenthesis, this function does nothing.
|
| |
|
| |
|
|
|
|
| |
Support multi-argument Max and Min calls in Kranc.
|
|
|
|
| |
in conditionals. Also add a couple more simplification rules for the vectorisation.
|
| |
|
|
|
|
|
|
| |
This can help to fit the code in the instruction cache and improve
performance. Enable this at compile time by defining the preprocessor
macro KRANC_DIFF_FUNCTIONS.
|
|
|
|
|
|
|
|
|
|
|
|
| |
(1) vec_load cannot be used on constants, it can only be used to
access array elements. Replacing UseVectors by False is just a band
aid. vec_load was attached to a routine defining and setting a
variable; really, it should be attached to a routine accessing array
elements, but Kranc doesn't use such an abstraction yet.(2) ToReal is
introduced, but must be removed again for integer expressions such as
the conditions controlling if statements. I added band-aid code to
Conditional[] to remove it. The vectorization routines already handle
IfThen, Pow etc., but Conditional isn't visible to them.
|
| |
|
|
|
|
|
| |
Correct the vectorisation code for vector sizes >2 when the array size
is smaller than the vector size
|
|
|
|
|
|
|
| |
Clean up the code that uses lssh. Note: Although most people don't
know about lssh, it's defined by the flesh, and e.g. all standard
Cactus boundary conditions use it. However, Carpet currently always
sets lssh to lsh, so the difference is "hidden".
|
|
|
|
| |
This adds to the dx, dy, dz that are already available.
|
|
|
|
|
|
|
|
|
| |
Create two versions of the derivative operators, once as macro, and
once as no-inline function. When a function is used, then the grid
spacing 1/dx must be passed in explicitly. This was done differently
before and is now slightly faster and shorter. The no-inline function
reduces code size, and should probably also be available for the
non-vectorised code, but this is not implemented.
|
| |
|
| |
|
| |
|
|
|
| |
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.
|