The distributed remapper Remapper remaps one Field at the time. This allows us to keep the Remapper and the target Fields separate. However, this comes at the cost: if we are remapping multiple Fields at the same time, the Remapper launch one GPU kernel and MPI reduction per Field. We can be more efficient than that: we could combine the kernels and MPI calls.
The Remapper could be extended to allow multiple Fields that are defined on the same space to be remapped at the same time. This can be accomplished by increasing the rank of the storage areas used by the Remapper (_local_interpolated_values, field_values, and _interpolated_values).
I think it is possible to stil keep the Remapper independent of the target Fields, but I have to think how to accomplish this.
The distributed remapper
Remapper
remaps oneField
at the time. This allows us to keep the Remapper and the target Fields separate. However, this comes at the cost: if we are remapping multiple Fields at the same time, the Remapper launch one GPU kernel and MPI reduction per Field. We can be more efficient than that: we could combine the kernels and MPI calls.The Remapper could be extended to allow multiple Fields that are defined on the same space to be remapped at the same time. This can be accomplished by increasing the rank of the storage areas used by the Remapper (
_local_interpolated_values
,field_values
, and_interpolated_values
).I think it is possible to stil keep the
Remapper
independent of the targetField
s, but I have to think how to accomplish this.