wangwei created SINGA-86:
----------------------------
Summary: Register new Layer/Updater/etc using macro
Key: SINGA-86
URL: https://issues.apache.org/jira/browse/SINGA-86
Project: Singa
Issue Type: Improvement
Reporter: wangwei
To make the code modular, SINGA provides base classes for Layer/Updater/etc.
New implementations are registered via Driver::RegisterLayer,
Driver::RegisterUpdater, etc. Consequently, driver.cc has to include all
subclasses, leading to a long include list. Everytime, we add a new
implementation (i.e.,a new subclass), we need to change the driver.cc to
register this new subclass.
This ticket is going to create macros for register Layer (e.g., RegisterLayer)
Updater (e.g., RegisterUpdater), etc. These macros are called in the
xxxlayer.cc file. Particularly, the RegisterLayer macro defines a static
instance of LayerRegister, e.g.,
RegisterLayer(FooLayer), which is equivalent to
{code}
static LayerRegister<FooLayer> foolayer_registry;
{code}
The constructor would register the layer creator into a global map as
{code}
template<typename LayerType>
class LayerRegister {
public:
LayerRegister() {
// call Factory<LayerType> to register the creator of the layer into a
global map.
}
};
{code}
Correspondingly, we can create macros for other classes, e.g., Updater,
LRGenerator.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)