The optimization process of Rheem is currently affected by means of Platforms. Those can be registered with a RheemContext and all their ExecutionOperators etc. will then be considered when executing a RheemPlan. However, this abstraction is not really appropriate as there is a different between platforms and "plug-ins". A platform provides an Executor to have specific ExecutionOperators executed. However, neither the ExecutionOperators nor the mappings from Operators to ExecutionOperators nor the ChannelConversions are necessarily described (exhaustively) by a platform.
To this end, we should introduce plug-ins decouple execution platforms from the above mentioned components in Rheem. A plug-in provides Mappings, ChannelConversions, ExecutionOperators, as well as Configuration properties and requires Platforms. Also, each platform should ship with a "basic" plugin.
From @sekruse on August 1, 2016 15:13
The optimization process of Rheem is currently affected by means of
Platform
s. Those can be registered with aRheemContext
and all theirExecutionOperator
s etc. will then be considered when executing aRheemPlan
. However, this abstraction is not really appropriate as there is a different between platforms and "plug-ins". A platform provides anExecutor
to have specificExecutionOperator
s executed. However, neither theExecutionOperator
s nor the mappings fromOperator
s toExecutionOperator
s nor theChannelConversion
s are necessarily described (exhaustively) by a platform.To this end, we should introduce plug-ins decouple execution platforms from the above mentioned components in Rheem. A plug-in provides
Mapping
s,ChannelConversion
s,ExecutionOperator
s, as well asConfiguration
properties and requiresPlatform
s. Also, each platform should ship with a "basic" plugin.Copied from original issue: daqcri/rheem#9