1#pragma once
2
3#include <torch/csrc/jit/api/module.h>
4
5namespace torch {
6namespace jit {
7
8/** Recursively deduplicate multiple uses of the same module by
9 * creating an instance clone for each use of the module, which means
10 * the type will be the same as before and all the attributes will be
11 * copied, then we'll change the use of the original module to the use
12 * of cloned module in the Graph.
13 *
14 * This is done to ensure that modules can survive destructive passes
15 * without changing model behavior. For example, here:
16 *
17 * x = self.conv1(x)
18 * x = self.relu(x)
19 * x = self.conv2(x)
20 * x = self.relu(x)
21 *
22 * self.relu needs to be deduplicated for potential future destructive passes
23 * to work properly.
24 */
25TORCH_API void DedupModuleUses(Module& module);
26
27} // namespace jit
28} // namespace torch
29