 14 Nov, 2016 15 commits


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 19 commits


Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored

Quentin Khan authored
PerfTest compiles all FLL implementations configurations and then allows to choosej one at runtime. The lookup phase was split between algorithm and kernel. Both lookups code, which was almost identical, has been factorized. It is also easier to add a new lookup phase by creating a parameter matcher.

Quentin Khan authored

Quentin Khan authored
The methods made a copy of the functor when called. This prevented retrieving the functor's internal state after the call. A uniform reference is now used to get a reference when possible and an rvalue reference otherwise.

Quentin Khan authored

Quentin Khan authored

 03 Oct, 2016 1 commit


Quentin Khan authored

 23 Sep, 2016 2 commits


Quentin Khan authored

Quentin Khan authored
