...
As Fig.2 shown, we implement the whole workflow based on subgraph API. `SgParallelOpSelector` SgParallelOpSelector inherited from `SubgraphSelector` SubgraphSelector is used to find the parallel structure, and `SgParallelOpProperty` inherited from `SubgraphProperty` is SgParallelOpProperty inherited from SubgraphProperty is to connect its input/output entry.
The key bock in Fig.2 is Filter which is used check whether the finding parallel structure meet some conditions. For example, we must make sure OP the metrics. It must guarantee that the operator is thread safe or ; otherwise, it may fails during simultaneous execution by multiple threads. From MKL-DNN OP 1.0 all MKLDNN operators will be thread safe after version 1.0and can be executed in parallel. But now, we need to maintain a whitelist for thread safe OPsoperators. There are some other conditions which used to fine tune the performance such as paralleled Node number >= threshold or OPs to be paralleled will cause performance drop based on the parameters we got. Environment variable may be add by user to add/remove whitelists in future release.
...