Draft: FiltersInstantiator: Automation of filters instantiations
RATIONALE
In the pasts months we have been able to reduce compilation time using fine grain instatiation TUs of our heavy templatized filters module.
This ad-hoc fixes have been populating the filters module source code in a effective but obscure manner using tools such as pyexpander
. While for some of the developers included myself working with these instantiation is just a trivial and mechanic task, we feared that new developers would be terribly confused about this.
In this MR I attempt to reduce the introduced complexity with these recent instantiation files by adding a instantiation code generator and its corresponding API.
API
class VTKM_FILTER_GRADIENT_EXPORT VTKm_FILTER(Gradient)
: public vtkm::filter::FilterField<Gradient>
{
VTKm_INSTANTIATE_METHOD_DOEXECUTE;
VTKm_INSTANTIATE_TYPES(vtkm::Float32, vtkm::Float64, vtkm::Vec3f_32, vtkm::Vec3f_64);
VTKm_INSTANTIATE_TU_NUM(2);
The introduced code generator will generate its corresponding instantiation files during the configured phase of CMAKE and place those instantiation files under vtkm/filter/instantiations
.
Later on during compilation time those files will be added to the vtkm_filters library source
PROGRESS
-
Create API -
Create Code generator -
Automatized instantiations selection with CMake
Signed-off-by: Vicente Adolfo Bolea Sanchez vicente.bolea@kitware.com