Updates the code generation of calls to EF_1D_ctor. Both the input and output bounds of the explicit function are required now. Also, the call must specify whether or not the EF is a permutation. Previously the boolean permutation argument was optional. This caused issues with the compiler choosing the incorrect version of EF_1D_ctor.
Adds a new output type, operation, that will print each operation that occurs. This is useful for producing test cases based on the operations that are performed. The output is valid C++ code that can be incorporated directly into the C++ implementation.
Updates the code generation of access relations to support multi-dimensional output access relations. This code assumes access to an array using a C-style square bracket access.
The akx computation now uses a two dimensional data array (x) to store the result of each iteration of the kernel rather than just storing the last and final result.
Enables a transformation or other code to explicitly define the type of an Explicit Relation. This is needed in the spmv CPACK transformation case as ERG_cpack requires an ER_U1D as input but the spmv computation has only a single conjunction that needs to be passed in to ERG_cpack. DataPermuteTrans now explicitly defines that the input ER has type 'er_u1d'.
Fixes a bug in DataPermuteTrans where all access relations were being updated rather than only the access relations that were accessing the data arrays that are being reordered.
EF_2D_ctor now takes both an RectUnionDomain for defining the input bounds of the EF_2D AND the upper and lower bounds of the 1D output.
Updates the gen_all_moldyn.sh and gen_all_spmv.sh scripts to stop generating code if one of the versions fails.
Updates the code generation routines to specify size information to the constructors of EF_1D and ER_1DCOO/ExplicitDependence. This is an optimization that avoids unnecessary overhead. Also switches the max/min usage in calc_size_string so it is calculating the 'inner' constraints rather than the 'outer' constraint. References #368
The set defining the bounds for the tile loop created in SparseTileTrans was specified incorrectly. Rather than tile<nt it was tile<=nt. This was causing the generated tile loop bounds to be off by one and thus causing problems at runtime.
Ren# On branch master
Updates EF_2D_get codegen to not use the Tuple2D interface any longer as we have stopped using Tuple2Ds with EF_2D.
Adds the gen_all.sh script to generate all relevant versiosn of the moldyn_full benchmark.
Adds code generation for sparse loops in the executor. Closes #313,#310
Updates code in various places to generate working sparse loop optimization code for the inspector. Adds a Constant class to represent a constant value that is passed to the sparseLoop routine. Adds is_gen_output() methods to determine when to generate assignment statements for certain output call arguments. Adds support for ER_1D ER types. Adds implementation of methods in SparseLoopTrans. References #310 Closes #322
1) Changes a comment when generating an ER/EF 2) Fixes a bug in ExplicitDependence codegen related to statement ordering 3) Fixes a bug with RU2D codegen related to ordering of bounds array terms