1. 07 Dec, 2016 7 commits
  2. 21 Nov, 2016 1 commit
    • Quentin Khan's avatar
      Add separate symbolic data structure for the tree. · 4b84d1ed
      Quentin Khan authored
      Following the recent changes, kernel data has been split into multipole
      and local development data. A kernel also needs some symbolic data about
      the tree node it is working on. This data is very generic and should
      therefore not be reimplemented each time.
      
      As of this commit, the adaptive tree passes FSymbolicData objects
      (introduced by this commit) to kernels; the uniform tree passes the
      kernel cell which inherits from FBasicParticle.
      
      The two trees should use the same structure in the future.
      4b84d1ed
  3. 17 Nov, 2016 6 commits
  4. 14 Nov, 2016 17 commits
    • Quentin Khan's avatar
      Modify (u)tests to retrieve correctly kernel data · de4d2b1d
      Quentin Khan authored
      Change relevant call to getMultipoleData and getLocalExpansionData.
      de4d2b1d
    • Quentin Khan's avatar
    • Quentin Khan's avatar
      Remove old adaptive FMM test files · 2f17ed05
      Quentin Khan authored
      2f17ed05
    • Quentin Khan's avatar
      Update the basic test kernel to used the new kernel data layout · 1045d47a
      Quentin Khan authored
       - Reuse the FGenericData class to implement the FTestCell.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      1045d47a
    • Quentin Khan's avatar
      Mirror the {coordinates, Morton index} changes in a FBasicCell · 130602ac
      Quentin Khan authored
      The Morton index and the coordinates represent the same information in two
      different format. Both are kept to avoid computing one or the other
      repeatedly. When one is changed, the modification must be propagated to the
      other.
      130602ac
    • Quentin Khan's avatar
    • Quentin Khan's avatar
      Comment out FAbstractKernels virtuam methods · 1dc27b23
      Quentin Khan authored
      This is necessary at least as a temporary measure to use template methods in
      kernels that don't specify explicitly a symbolic_data_t type.
      1dc27b23
    • Quentin Khan's avatar
    • Quentin Khan's avatar
      Update the balanced tree to use the new kernel data layout · ed7b9153
      Quentin Khan authored
       - Whitespace cleaning
      
       - Divide the FCostCell inner data layout into two sub-types:
         multipole_t and local_expansion_t. Two class attribute are accessible
         through the `getMultipoledata` and `getLocalExpansionData` methods.
         Define the optional symbolic_data_t type to store the cost of each
         operator.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      
       - Update the balanced algorithm to use the new interface.
      ed7b9153
    • Quentin Khan's avatar
      Update the adaptive FMM to the new kernel data layout · 39d34cc8
      Quentin Khan authored
       - Use the multipole_t, local_expansion_t and symbolic_data_t type
         definitions from the kernel data.
      
       - Adapt the FMM operators calls to use the new interface.
      
       - In many places, new lists have to be created from the original cell
         list to get the specific parts of the data we need. The impact on
         performance has yet to be studied.
      
       - Simplify/shorten code using the above type definitions. Especially
         for the StarPU implementation.
      
       - A default symbolic_data_t type is provided by the FNode class when
         the kernel data does not provide it (which it only should for passing
         custom symbolic data).
      
       - Update the UnifFlopsKernel to use the new layout.
      39d34cc8
    • Quentin Khan's avatar
      Update Taylor Kernel interface to use the new data organisation · aafafbd1
      Quentin Khan authored
       - Divide the FTaylorCell inner data layout into two sub-types:
         multipole_t and local_expansion_t. Two class attribute are accessible
         through the `getMultipoledata` and `getLocalExpansionData` methods.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      aafafbd1
    • Quentin Khan's avatar
      Update Rotation Kernel interface to use the new data organisation · 4b333838
      Quentin Khan authored
       - Divide the FRotationCell inner data layout into two sub-types:
         multipole_t and local_expansion_t. Two class attribute are accessible
         through the `getMultipoledata` and `getLocalExpansionData` methods.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      4b333838
    • Quentin Khan's avatar
      Update Spherical kernel interface to use the new data organisation · 4af27174
      Quentin Khan authored
       - Divide the FSphericalCell inner data layout into two sub-types:
         multipole_t and local_expansion_t. As the multipole and the local
         expansion layout is the same, they share a common implementation.
         Two class attribute are accessible through the `getMultipoledata` and
         `getLocalExpansionData` methods.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      4af27174
    • Quentin Khan's avatar
      Update the adaptive Lagrange kernel to use the new data organisation · 1db32b75
      Quentin Khan authored
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      1db32b75
    • Quentin Khan's avatar
      Update the adaptive Chebyshev kernel to use the new data organisation · 32972f69
      Quentin Khan authored
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      32972f69
    • Quentin Khan's avatar
      Update Lagrange Kernel interface to use the new data organisation · 9eec32f8
      Quentin Khan authored
       - Divide the FChebCell inner data layout into two sub-types:
         multipole_t and local_expansion_t. Two class attribute are accessible
         through the `getMultipoledata` and `getLocalExpansionData` methods.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      9eec32f8
    • Quentin Khan's avatar
      Update Chebyshev kernel interface to use the new data organisation · b26fd3c1
      Quentin Khan authored
       - Remove virtual FMM operators overloads from the abstract base class.
      
       - Divide the FChebCell inner data layout into two sub-types:
         multipole_t and local_expansion_t. Two class attribute are accessible
         through the `getMultipoledata` and `getLocalExpansionData` methods.
      
       - Even out files indentation.
      
       - Change FMM operators signature to take advantage of the new
         layout. The operators only take as parameters the data they may need
         instead of the whole cell. For instance (simplified):
      
         void M2M(CellClass* parent, CellClass** children);
      
         becomes
      
         void M2M(multipole_t*  parent_m,    symbolic_data_t* parent_s,
                  multipole_t** children_ms, symbolic_data_t* children_ss);
      b26fd3c1
  5. 10 Nov, 2016 3 commits
  6. 05 Oct, 2016 6 commits