 07 Dec, 2016 7 commits


Quentin Khan authored
The multipole and local expansion share the same implementation. Their types only differ by a template tag parameter. Consquently, the `getMultipole`/`getLocal` methods are changed to `get`. The method change is propageted to the files:  FChebKernel,  FChebSymKernel,  FChebTensorialKernel,  FAdaptChebKernel,  FUnifKernel,  FUnifTensorialKernel,  FAdaptUnifKernel,  utestChebyshevDirectPeriodic,  utestInterpolationMultiRhs,

Quentin Khan authored

Quentin Khan authored
 testFmmAdaptiveAgorithm,  testFmmAdaptiveAgorithmAdvanced,  testFmmAdaptiveStats,  testSmallCase

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored
Data cast to char* was not const while the method was marked as const.

Quentin Khan authored

 21 Nov, 2016 1 commit


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.

 17 Nov, 2016 6 commits


Quentin Khan authored
Add a fast metaprogramming implementations of negation, conjuntion and disjunction.

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored
Define a series of templates to easily detect whether template instanciations are well formed or not.

Quentin Khan authored

Quentin Khan authored

 14 Nov, 2016 17 commits


Quentin Khan authored
Change relevant call to getMultipoleData and getLocalExpansionData.

Quentin Khan authored

Quentin Khan authored

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);

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.

Quentin Khan authored

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.

Quentin Khan authored

Quentin Khan authored
 Whitespace cleaning  Divide the FCostCell inner data layout into two subtypes: 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.

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.

Quentin Khan authored
 Divide the FTaylorCell inner data layout into two subtypes: 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);

Quentin Khan authored
 Divide the FRotationCell inner data layout into two subtypes: 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);

Quentin Khan authored
 Divide the FSphericalCell inner data layout into two subtypes: 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);

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);

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);

Quentin Khan authored
 Divide the FChebCell inner data layout into two subtypes: 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);

Quentin Khan authored
 Remove virtual FMM operators overloads from the abstract base class.  Divide the FChebCell inner data layout into two subtypes: 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);

 10 Nov, 2016 3 commits


Quentin Khan authored
Introduces a new data model for the kernel specific data. This aim is to better decouple the symbolic data (node metadata: height, index, etc), multipole and local expansion of a cell. The main algorithms are updated to follow the new structure.

Quentin Khan authored

Quentin Khan authored

 05 Oct, 2016 6 commits


Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored
