From 22a5bf8ebadc9e23ca6e05ef8b9dfb844b4a1b61 Mon Sep 17 00:00:00 2001 From: ZijunYin Date: Thu, 30 Sep 2021 15:14:19 +0800 Subject: [PATCH] update docs 2.0.3.B090 --- ...57\346\214\201\346\270\205\345\215\225.md" | 5206 ++++++++--------- ...11\350\243\205\346\214\207\345\215\227.md" | 137 +- .../figures/210926103326800.png" | Bin 0 -> 14379 bytes ...7\346\265\201\347\250\213\345\233\276.png" | Bin 29241 -> 0 bytes ...00\345\217\221\346\214\207\345\215\227.md" | 213 +- ...55\347\273\203\346\214\207\345\215\227.md" | 503 +- .../figures/zh-cn_image_0000001208897433.png" | Bin 0 -> 336820 bytes ...27\345\255\220\346\270\205\345\215\225.md" | 3274 ++++++----- ...27\345\255\220\346\270\205\345\215\225.md" | 36 +- 9 files changed, 4809 insertions(+), 4560 deletions(-) create mode 100644 "docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/210926103326800.png" delete mode 100644 "docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" create mode 100644 "docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001208897433.png" diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" index 1ca98fd8b40..b2c94fdbf2b 100644 --- "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" +++ "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" @@ -16,346 +16,346 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -366,59 +366,59 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.is_tensor

+

torch.is_tensor

+

2

torch.is_storage

+

torch.is_storage

+

3

torch.is_complex

+

torch.is_complex

+

4

torch.is_floating_point

+

torch.is_floating_point

+

5

torch.set_default_dtype

+

torch.set_default_dtype

+

6

torch.get_default_dtype

+

torch.get_default_dtype

+

7

torch.set_default_tensor_type

+

torch.set_default_tensor_type

+

8

torch.numel

+

torch.numel

+

9

torch.set_printoptions

+

torch.set_printoptions

+

10

torch.set_flush_denormal

+

torch.set_flush_denormal

+

11

torch.tensor

+

torch.tensor

+

12

torch.sparse_coo_tensor

+

torch.sparse_coo_tensor

+

13

torch.as_tensor

+

torch.as_tensor

+

14

torch.as_strided

+

torch.as_strided

+

15

torch.from_numpy

+

torch.from_numpy

+

16

torch.zeros

+

torch.zeros

+

17

torch.zeros_like

+

torch.zeros_like

+

18

torch.ones

+

torch.ones

+

19

torch.ones_like

+

torch.ones_like

+

20

torch.arange

+

torch.arange

+

21

torch.range

+

torch.range

+

22

torch.linspace

+

torch.linspace

+

23

torch.logspace

+

torch.logspace

+

24

torch.eye

+

torch.eye

+

25

torch.empty

+

torch.empty

+

26

torch.empty_like

+

torch.empty_like

+

27

torch.empty_strided

+

torch.empty_strided

+

28

torch.full

+

torch.full

+

29

torch.full_like

+

torch.full_like

+

30

torch.quantize_per_tensor

+

torch.quantize_per_tensor

+

31

torch.quantize_per_channel

+

torch.quantize_per_channel

+

32

torch.cat

+

torch.cat

+

33

torch.chunk

+

torch.chunk

+

34

torch.gather

+

torch.gather

+

35

torch.index_select

+

torch.index_select

+

36

torch.masked_select

+

torch.masked_select

+

37

torch.narrow

+

torch.narrow

+

38

torch.nonzero

+

torch.nonzero

+

39

torch.reshape

+

torch.reshape

+

40

torch.split

+

torch.split

+

41

torch.squeeze

+

torch.squeeze

+

42

torch.stack

+

torch.stack

+

43

torch.t

+

torch.t

+

44

torch.take

+

torch.take

+

45

torch.transpose

+

torch.transpose

+

46

torch.unbind

+

torch.unbind

+

47

torch.unsqueeze

+

torch.unsqueeze

+

48

torch.where

+

torch.where

+

- - - - - - - - - - - - - - - - @@ -429,213 +429,213 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch._C.Generator

+

torch._C.Generator

+

2

torch._C.Generator.device

+

torch._C.Generator.device

+

3

torch._C.Generator.get_state

+

torch._C.Generator.get_state

+

4

torch._C.Generator.initial_seed

+

torch._C.Generator.initial_seed

+

5

torch._C.Generator.manual_seed

+

torch._C.Generator.manual_seed

+

6

torch._C.Generator.seed

+

torch._C.Generator.seed

+

7

torch._C.Generator.set_state

+

torch._C.Generator.set_state

+

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -646,24 +646,24 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.seed

+

torch.seed

+

2

torch.manual_seed

+

torch.manual_seed

+

3

torch.initial_seed

+

torch.initial_seed

+

4

torch.get_rng_state

+

torch.get_rng_state

+

5

torch.set_rng_state

+

torch.set_rng_state

+

6

torch.torch.default_generator

+

torch.torch.default_generator

+

7

torch.bernoulli

+

torch.bernoulli

+

8

torch.multinomial

+

torch.multinomial

+

9

torch.normal

+

torch.normal

+

10

torch.poisson

+

torch.poisson

+

11

torch.rand

+

torch.rand

+

12

torch.rand_like

+

torch.rand_like

+

13

torch.randint

+

torch.randint

+

14

torch.randint_like

+

torch.randint_like

+

15

torch.randn

+

torch.randn

+

16

torch.randn_like

+

torch.randn_like

+

17

torch.randperm

+

torch.randperm

+

18

torch.Tensor.bernoulli_()

+

torch.Tensor.bernoulli_()

+

19

torch.Tensor.bernoulli_()

+

torch.Tensor.bernoulli_()

+

20

torch.Tensor.exponential_()

+

torch.Tensor.exponential_()

+

21

torch.Tensor.geometric_()

+

torch.Tensor.geometric_()

+

22

torch.Tensor.log_normal_()

+

torch.Tensor.log_normal_()

+

23

torch.Tensor.normal_()

+

torch.Tensor.normal_()

+

24

torch.Tensor.random_()

+

torch.Tensor.random_()

+

25

torch.Tensor.uniform_()

+

torch.Tensor.uniform_()

+

26

torch.quasirandom.SobolEngine

+

torch.quasirandom.SobolEngine

+

27

torch.quasirandom.SobolEngine.draw

+

torch.quasirandom.SobolEngine.draw

+

28

torch.quasirandom.SobolEngine.fast_forward

+

torch.quasirandom.SobolEngine.fast_forward

+

29

torch.quasirandom.SobolEngine.reset

+

torch.quasirandom.SobolEngine.reset

+

- - - - - - @@ -674,1200 +674,1200 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.save

+

torch.save

+

2

torch.load

+

torch.load

+

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1878,38 +1878,38 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.abs

+

torch.abs

+

2

torch.acos

+

torch.acos

+

3

torch.add

+

torch.add

+

4

torch.addcdiv

+

torch.addcdiv

+

5

torch.addcmul

+

torch.addcmul

+

6

torch.angle

+

torch.angle

+

7

torch.asin

+

torch.asin

+

8

torch.atan

+

torch.atan

+

9

torch.atan2

+

torch.atan2

+

10

torch.bitwise_not

+

torch.bitwise_not

+

11

torch.bitwise_and

+

torch.bitwise_and

+

12

torch.bitwise_or

+

torch.bitwise_or

+

13

torch.bitwise_xor

+

torch.bitwise_xor

+

14

torch.ceil

+

torch.ceil

+

15

torch.clamp

+

torch.clamp

+

16

torch.conj

+

torch.conj

+

17

torch.cos

+

torch.cos

+

18

torch.cosh

+

torch.cosh

+

19

torch.div

+

torch.div

+

20

torch.digamma

+

torch.digamma

+

21

torch.erf

+

torch.erf

+

22

torch.erfc

+

torch.erfc

+

23

torch.erfinv

+

torch.erfinv

+

24

torch.exp

+

torch.exp

+

25

torch.expm1

+

torch.expm1

+

26

torch.floor

+

torch.floor

+

27

torch.floor_divide

+

torch.floor_divide

+

28

torch.fmod

+

torch.fmod

+

29

torch.frac

+

torch.frac

+

30

torch.imag

+

torch.imag

+

31

torch.lerp

+

torch.lerp

+

32

torch.lgamma

+

torch.lgamma

+

33

torch.log

+

torch.log

+

34

torch.log10

+

torch.log10

+

35

torch.log1p

+

torch.log1p

+

36

torch.log2

+

torch.log2

+

37

torch.logical_and

+

torch.logical_and

+

38

torch.logical_not

+

torch.logical_not

+

39

torch.logical_or

+

torch.logical_or

+

40

torch.logical_xor

+

torch.logical_xor

+

41

torch.mul

+

torch.mul

+

42

torch.mvlgamma

+

torch.mvlgamma

+

43

torch.neg

+

torch.neg

+

44

torch.polygamma

+

torch.polygamma

+

45

torch.pow

+

torch.pow

+

46

torch.real

+

torch.real

+

47

torch.reciprocal

+

torch.reciprocal

+

48

torch.remainder

+

torch.remainder

+

49

torch.round

+

torch.round

+

50

torch.rsqrt

+

torch.rsqrt

+

51

torch.sigmoid

+

torch.sigmoid

+

52

torch.sign

+

torch.sign

+

53

torch.sin

+

torch.sin

+

54

torch.sinh

+

torch.sinh

+

55

torch.sqrt

+

torch.sqrt

+

56

torch.square

+

torch.square

+

57

torch.tan

+

torch.tan

+

58

torch.tanh

+

torch.tanh

+

59

torch.true_divide

+

torch.true_divide

+

60

torch.trunc

+

torch.trunc

+

61

torch.argmax

+

torch.argmax

+

62

torch.argmin

+

torch.argmin

+

63

torch.dist

+

torch.dist

+

64

torch.logsumexp

+

torch.logsumexp

+

65

torch.mean

+

torch.mean

+

66

torch.median

+

torch.median

+

67

torch.mode

+

torch.mode

+

68

torch.norm

+

torch.norm

+

69

torch.prod

+

torch.prod

+

70

torch.std

+

torch.std

+

71

torch.std_mean

+

torch.std_mean

+

72

torch.sum

+

torch.sum

+

73

torch.unique

+

torch.unique

+

74

torch.unique_consecutive

+

torch.unique_consecutive

+

75

torch.var

+

torch.var

+

76

torch.var_mean

+

torch.var_mean

+

77

torch.allclose

+

torch.allclose

+

78

torch.argsort

+

torch.argsort

+

79

torch.eq

+

torch.eq

+

80

torch.equal

+

torch.equal

+

81

torch.ge

+

torch.ge

+

82

torch.gt

+

torch.gt

+

83

torch.isfinite

+

torch.isfinite

+

84

torch.isinf

+

torch.isinf

+

85

torch.isnan

+

torch.isnan

+

86

torch.kthvalue

+

torch.kthvalue

+

87

torch.le

+

torch.le

+

88

torch.lt

+

torch.lt

+

89

torch.max

+

torch.max

+

90

torch.min

+

torch.min

+

91

torch.ne

+

torch.ne

+

92

torch.sort

+

torch.sort

+

93

torch.topk

+

torch.topk

+

94

torch.fft

+

torch.fft

+

95

torch.ifft

+

torch.ifft

+

96

torch.rfft

+

torch.rfft

+

97

torch.irfft

+

torch.irfft

+

98

torch.stft

+

torch.stft

+

99

torch.bartlett_window

+

torch.bartlett_window

+

100

torch.blackman_window

+

torch.blackman_window

+

101

torch.hamming_window

+

torch.hamming_window

+

102

torch.hann_window

+

torch.hann_window

+

103

torch.bincount

+

torch.bincount

+

104

torch.broadcast_tensors

+

torch.broadcast_tensors

+

105

torch.cartesian_prod

+

torch.cartesian_prod

+

106

torch.cdist

+

torch.cdist

+

107

torch.combinations

+

torch.combinations

+

108

torch.cross

+

torch.cross

+

109

torch.cummax

+

torch.cummax

+

110

torch.cummin

+

torch.cummin

+

111

torch.cumprod

+

torch.cumprod

+

112

torch.cumsum

+

torch.cumsum

+

113

torch.diag

+

torch.diag

+

114

torch.diag_embed

+

torch.diag_embed

+

115

torch.diagflat

+

torch.diagflat

+

116

torch.diagonal

+

torch.diagonal

+

117

torch.einsum

+

torch.einsum

+

118

torch.flatten

+

torch.flatten

+

119

torch.flip

+

torch.flip

+

120

torch.rot90

+

torch.rot90

+

121

torch.histc

+

torch.histc

+

122

torch.meshgrid

+

torch.meshgrid

+

123

torch.renorm

+

torch.renorm

+

124

torch.repeat_interleave

+

torch.repeat_interleave

+

125

torch.roll

+

torch.roll

+

126

torch.tensordot

+

torch.tensordot

+

127

torch.trace

+

torch.trace

+

128

torch.tril

+

torch.tril

+

129

torch.tril_indices

+

torch.tril_indices

+

130

torch.triu

+

torch.triu

+

131

torch.triu_indices

+

torch.triu_indices

+

132

torch.addbmm

+

torch.addbmm

+

133

torch.addmm

+

torch.addmm

+

134

torch.addmv

+

torch.addmv

+

135

torch.addr

+

torch.addr

+

136

torch.baddbmm

+

torch.baddbmm

+

137

torch.bmm

+

torch.bmm

+

138

torch.chain_matmul

+

torch.chain_matmul

+

139

torch.cholesky

+

torch.cholesky

+

140

torch.cholesky_inverse

+

torch.cholesky_inverse

+

141

torch.cholesky_solve

+

torch.cholesky_solve

+

142

torch.dot

+

torch.dot

+

143

torch.eig

+

torch.eig

+

144

torch.geqrf

+

torch.geqrf

+

145

torch.ger

+

torch.ger

+

146

torch.inverse

+

torch.inverse

+

147

torch.det

+

torch.det

+

148

torch.logdet

+

torch.logdet

+

149

torch.slogdet

+

torch.slogdet

+

150

torch.lstsq

+

torch.lstsq

+

151

torch.lu

+

torch.lu

+

152

torch.lu_solve

+

torch.lu_solve

+

153

torch.lu_unpack

+

torch.lu_unpack

+

154

torch.matmul

+

torch.matmul

+

155

torch.matrix_power

+

torch.matrix_power

+

156

torch.matrix_rank

+

torch.matrix_rank

+

157

torch.mm

+

torch.mm

+

158

torch.mv

+

torch.mv

+

159

torch.orgqr

+

torch.orgqr

+

160

torch.ormqr

+

torch.ormqr

+

161

torch.pinverse

+

torch.pinverse

+

162

torch.qr

+

torch.qr

+

163

torch.solve

+

torch.solve

+

164

torch.svd

+

torch.svd

+

165

torch.svd_lowrank

+

torch.svd_lowrank

+

166

torch.pca_lowrank

+

torch.pca_lowrank

+

167

torch.symeig

+

torch.symeig

+

168

torch.lobpcg

+

torch.lobpcg

+

169

torch.trapz

+

torch.trapz

+

170

torch.triangular_solve

+

torch.triangular_solve

+

- - - - - - - - - - @@ -1920,59 +1920,59 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.compiled_with_cxx11_abi

+

torch.compiled_with_cxx11_abi

+

2

torch.result_type

+

torch.result_type

+

3

torch.can_cast

+

torch.can_cast

+

4

torch.promote_types

+

torch.promote_types

+

- - - - - - - - - - - - - - - - @@ -1983,2502 +1983,2502 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.no_grad

+

torch.no_grad

+

2

torch.enable_grad

+

torch.enable_grad

+

3

torch.set_grad_enabled

+

torch.set_grad_enabled

+

4

torch.get_num_threads

+

torch.get_num_threads

+

5

torch.set_num_threads

+

torch.set_num_threads

+

6

torch.get_num_interop_threads

+

torch.get_num_interop_threads

+

7

torch.set_num_interop_threads

+

torch.set_num_interop_threads

+

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4487,2224 +4487,2224 @@

Layers (torch.nn)

-

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.Tensor

+

torch.Tensor

+

2

torch.Tensor.new_tensor

+

torch.Tensor.new_tensor

+

3

torch.Tensor.new_full

+

torch.Tensor.new_full

+

4

torch.Tensor.new_empty

+

torch.Tensor.new_empty

+

5

torch.Tensor.new_ones

+

torch.Tensor.new_ones

+

6

torch.Tensor.new_zeros

+

torch.Tensor.new_zeros

+

7

torch.Tensor.is_cuda

+

torch.Tensor.is_cuda

+

8

torch.Tensor.is_quantized

+

torch.Tensor.is_quantized

+

9

torch.Tensor.device

+

torch.Tensor.device

+

10

torch.Tensor.ndim

+

torch.Tensor.ndim

+

11

torch.Tensor.T

+

torch.Tensor.T

+

12

torch.Tensor.abs

+

torch.Tensor.abs

+

13

torch.Tensor.abs_

+

torch.Tensor.abs_

+

14

torch.Tensor.acos

+

torch.Tensor.acos

+

15

torch.Tensor.acos_

+

torch.Tensor.acos_

+

16

torch.Tensor.add

+

torch.Tensor.add

+

17

torch.Tensor.add_

+

torch.Tensor.add_

+

18

torch.Tensor.addbmm

+

torch.Tensor.addbmm

+

19

torch.Tensor.addbmm_

+

torch.Tensor.addbmm_

+

20

torch.Tensor.addcdiv

+

torch.Tensor.addcdiv

+

21

torch.Tensor.addcdiv_

+

torch.Tensor.addcdiv_

+

22

torch.Tensor.addcmul

+

torch.Tensor.addcmul

+

23

torch.Tensor.addcmul_

+

torch.Tensor.addcmul_

+

24

torch.Tensor.addmm

+

torch.Tensor.addmm

+

25

torch.Tensor.addmm_

+

torch.Tensor.addmm_

+

26

torch.Tensor.addmv

+

torch.Tensor.addmv

+

27

torch.Tensor.addmv_

+

torch.Tensor.addmv_

+

28

torch.Tensor.addr

+

torch.Tensor.addr

+

29

torch.Tensor.addr_

+

torch.Tensor.addr_

+

30

torch.Tensor.allclose

+

torch.Tensor.allclose

+

31

torch.Tensor.angle

+

torch.Tensor.angle

+

32

torch.Tensor.apply_

+

torch.Tensor.apply_

+

33

torch.Tensor.argmax

+

torch.Tensor.argmax

+

34

torch.Tensor.argmin

+

torch.Tensor.argmin

+

35

torch.Tensor.argsort

+

torch.Tensor.argsort

+

36

torch.Tensor.asin

+

torch.Tensor.asin

+

37

torch.Tensor.asin_

+

torch.Tensor.asin_

+

38

torch.Tensor.as_strided

+

torch.Tensor.as_strided

+

39

torch.Tensor.atan

+

torch.Tensor.atan

+

40

torch.Tensor.atan2

+

torch.Tensor.atan2

+

41

torch.Tensor.atan2_

+

torch.Tensor.atan2_

+

42

torch.Tensor.atan_

+

torch.Tensor.atan_

+

43

torch.Tensor.baddbmm

+

torch.Tensor.baddbmm

+

44

torch.Tensor.baddbmm_

+

torch.Tensor.baddbmm_

+

45

torch.Tensor.bernoulli

+

torch.Tensor.bernoulli

+

46

torch.Tensor.bernoulli_

+

torch.Tensor.bernoulli_

+

47

torch.Tensor.bfloat16

+

torch.Tensor.bfloat16

+

48

torch.Tensor.bincount

+

torch.Tensor.bincount

+

49

torch.Tensor.bitwise_not

+

torch.Tensor.bitwise_not

+

50

torch.Tensor.bitwise_not_

+

torch.Tensor.bitwise_not_

+

51

torch.Tensor.bitwise_and

+

torch.Tensor.bitwise_and

+

52

torch.Tensor.bitwise_and_

+

torch.Tensor.bitwise_and_

+

53

torch.Tensor.bitwise_or

+

torch.Tensor.bitwise_or

+

54

torch.Tensor.bitwise_or_

+

torch.Tensor.bitwise_or_

+

55

torch.Tensor.bitwise_xor

+

torch.Tensor.bitwise_xor

+

56

torch.Tensor.bitwise_xor_

+

torch.Tensor.bitwise_xor_

+

57

torch.Tensor.bmm

+

torch.Tensor.bmm

+

58

torch.Tensor.bool

+

torch.Tensor.bool

+

59

torch.Tensor.byte

+

torch.Tensor.byte

+

60

torch.Tensor.cauchy_

+

torch.Tensor.cauchy_

+

61

torch.Tensor.ceil

+

torch.Tensor.ceil

+

62

torch.Tensor.ceil_

+

torch.Tensor.ceil_

+

63

torch.Tensor.char

+

torch.Tensor.char

+

64

torch.Tensor.cholesky

+

torch.Tensor.cholesky

+

65

torch.Tensor.cholesky_inverse

+

torch.Tensor.cholesky_inverse

+

66

torch.Tensor.cholesky_solve

+

torch.Tensor.cholesky_solve

+

67

torch.Tensor.chunk

+

torch.Tensor.chunk

+

68

torch.Tensor.clamp

+

torch.Tensor.clamp

+

69

torch.Tensor.clamp_

+

torch.Tensor.clamp_

+

70

torch.Tensor.clone

+

torch.Tensor.clone

+

71

torch.Tensor.contiguous

+

torch.Tensor.contiguous

+

72

torch.Tensor.copy_

+

torch.Tensor.copy_

+

73

torch.Tensor.conj

+

torch.Tensor.conj

+

74

torch.Tensor.cos

+

torch.Tensor.cos

+

75

torch.Tensor.cos_

+

torch.Tensor.cos_

+

76

torch.Tensor.cosh

+

torch.Tensor.cosh

+

77

torch.Tensor.cosh_

+

torch.Tensor.cosh_

+

78

torch.Tensor.cpu

+

torch.Tensor.cpu

+

79

torch.Tensor.cross

+

torch.Tensor.cross

+

80

torch.Tensor.cuda

+

torch.Tensor.cuda

+

81

torch.Tensor.cummax

+

torch.Tensor.cummax

+

82

torch.Tensor.cummin

+

torch.Tensor.cummin

+

83

torch.Tensor.cumprod

+

torch.Tensor.cumprod

+

84

torch.Tensor.cumsum

+

torch.Tensor.cumsum

+

85

torch.Tensor.data_ptr

+

torch.Tensor.data_ptr

+

86

torch.Tensor.dequantize

+

torch.Tensor.dequantize

+

87

torch.Tensor.det

+

torch.Tensor.det

+

88

torch.Tensor.dense_dim

+

torch.Tensor.dense_dim

+

89

torch.Tensor.diag

+

torch.Tensor.diag

+

90

torch.Tensor.diag_embed

+

torch.Tensor.diag_embed

+

91

torch.Tensor.diagflat

+

torch.Tensor.diagflat

+

92

torch.Tensor.diagonal

+

torch.Tensor.diagonal

+

93

torch.Tensor.fill_diagonal_

+

torch.Tensor.fill_diagonal_

+

94

torch.Tensor.digamma

+

torch.Tensor.digamma

+

95

torch.Tensor.digamma_

+

torch.Tensor.digamma_

+

96

torch.Tensor.dim

+

torch.Tensor.dim

+

97

torch.Tensor.dist

+

torch.Tensor.dist

+

98

torch.Tensor.div

+

torch.Tensor.div

+

99

torch.Tensor.div_

+

torch.Tensor.div_

+

100

torch.Tensor.dot

+

torch.Tensor.dot

+

101

torch.Tensor.double

+

torch.Tensor.double

+

102

torch.Tensor.eig

+

torch.Tensor.eig

+

103

torch.Tensor.element_size

+

torch.Tensor.element_size

+

104

torch.Tensor.eq

+

torch.Tensor.eq

+

105

torch.Tensor.eq_

+

torch.Tensor.eq_

+

106

torch.Tensor.equal

+

torch.Tensor.equal

+

107

torch.Tensor.erf

+

torch.Tensor.erf

+

108

torch.Tensor.erf_

+

torch.Tensor.erf_

+

109

torch.Tensor.erfc

+

torch.Tensor.erfc

+

110

torch.Tensor.erfc_

+

torch.Tensor.erfc_

+

111

torch.Tensor.erfinv

+

torch.Tensor.erfinv

+

112

torch.Tensor.erfinv_

+

torch.Tensor.erfinv_

+

113

torch.Tensor.exp

+

torch.Tensor.exp

+

114

torch.Tensor.exp_

+

torch.Tensor.exp_

+

115

torch.Tensor.expm1

+

torch.Tensor.expm1

+

116

torch.Tensor.expm1_

+

torch.Tensor.expm1_

+

117

torch.Tensor.expand

+

torch.Tensor.expand

+

118

torch.Tensor.expand_as

+

torch.Tensor.expand_as

+

119

torch.Tensor.exponential_

+

torch.Tensor.exponential_

+

120

torch.Tensor.fft

+

torch.Tensor.fft

+

121

torch.Tensor.fill_

+

torch.Tensor.fill_

+

122

torch.Tensor.flatten

+

torch.Tensor.flatten

+

123

torch.Tensor.flip

+

torch.Tensor.flip

+

124

torch.Tensor.float

+

torch.Tensor.float

+

125

torch.Tensor.floor

+

torch.Tensor.floor

+

126

torch.Tensor.floor_

+

torch.Tensor.floor_

+

127

torch.Tensor.floor_divide

+

torch.Tensor.floor_divide

+

128

torch.Tensor.floor_divide_

+

torch.Tensor.floor_divide_

+

129

torch.Tensor.fmod

+

torch.Tensor.fmod

+

130

torch.Tensor.fmod_

+

torch.Tensor.fmod_

+

131

torch.Tensor.frac

+

torch.Tensor.frac

+

132

torch.Tensor.frac_

+

torch.Tensor.frac_

+

133

torch.Tensor.gather

+

torch.Tensor.gather

+

134

torch.Tensor.ge

+

torch.Tensor.ge

+

135

torch.Tensor.ge_

+

torch.Tensor.ge_

+

136

torch.Tensor.geometric_

+

torch.Tensor.geometric_

+

137

torch.Tensor.geqrf

+

torch.Tensor.geqrf

+

138

torch.Tensor.ger

+

torch.Tensor.ger

+

139

torch.Tensor.get_device

+

torch.Tensor.get_device

+

140

torch.Tensor.gt

+

torch.Tensor.gt

+

141

torch.Tensor.gt_

+

torch.Tensor.gt_

+

142

torch.Tensor.half

+

torch.Tensor.half

+

143

torch.Tensor.hardshrink

+

torch.Tensor.hardshrink

+

144

torch.Tensor.histc

+

torch.Tensor.histc

+

145

torch.Tensor.ifft

+

torch.Tensor.ifft

+

146

torch.Tensor.index_add_

+

torch.Tensor.index_add_

+

147

torch.Tensor.index_add

+

torch.Tensor.index_add

+

148

torch.Tensor.index_copy_

+

torch.Tensor.index_copy_

+

149

torch.Tensor.index_copy

+

torch.Tensor.index_copy

+

150

torch.Tensor.index_fill_

+

torch.Tensor.index_fill_

+

151

torch.Tensor.index_fill

+

torch.Tensor.index_fill

+

152

torch.Tensor.index_put_

+

torch.Tensor.index_put_

+

153

torch.Tensor.index_put

+

torch.Tensor.index_put

+

154

torch.Tensor.index_select

+

torch.Tensor.index_select

+

155

torch.Tensor.indices

+

torch.Tensor.indices

+

156

torch.Tensor.int

+

torch.Tensor.int

+

157

torch.Tensor.int_repr

+

torch.Tensor.int_repr

+

158

torch.Tensor.inverse

+

torch.Tensor.inverse

+

159

torch.Tensor.irfft

+

torch.Tensor.irfft

+

160

torch.Tensor.is_contiguous

+

torch.Tensor.is_contiguous

+

161

torch.Tensor.is_complex

+

torch.Tensor.is_complex

+

162

torch.Tensor.is_floating_point

+

torch.Tensor.is_floating_point

+

163

torch.Tensor.is_pinned

+

torch.Tensor.is_pinned

+

164

torch.Tensor.is_set_to

+

torch.Tensor.is_set_to

+

165

torch.Tensor.is_shared

+

torch.Tensor.is_shared

+

166

torch.Tensor.is_signed

+

torch.Tensor.is_signed

+

167

torch.Tensor.is_sparse

+

torch.Tensor.is_sparse

+

168

torch.Tensor.item

+

torch.Tensor.item

+

169

torch.Tensor.kthvalue

+

torch.Tensor.kthvalue

+

170

torch.Tensor.le

+

torch.Tensor.le

+

171

torch.Tensor.le_

+

torch.Tensor.le_

+

172

torch.Tensor.lerp

+

torch.Tensor.lerp

+

173

torch.Tensor.lerp_

+

torch.Tensor.lerp_

+

174

torch.Tensor.lgamma

+

torch.Tensor.lgamma

+

175

torch.Tensor.lgamma_

+

torch.Tensor.lgamma_

+

176

torch.Tensor.log

+

torch.Tensor.log

+

177

torch.Tensor.log_

+

torch.Tensor.log_

+

178

torch.Tensor.logdet

+

torch.Tensor.logdet

+

179

torch.Tensor.log10

+

torch.Tensor.log10

+

180

torch.Tensor.log10_

+

torch.Tensor.log10_

+

181

torch.Tensor.log1p

+

torch.Tensor.log1p

+

182

torch.Tensor.log1p_

+

torch.Tensor.log1p_

+

183

torch.Tensor.log2

+

torch.Tensor.log2

+

184

torch.Tensor.log2_

+

torch.Tensor.log2_

+

185

torch.Tensor.log_normal_

+

torch.Tensor.log_normal_

+

186

torch.Tensor.logsumexp

+

torch.Tensor.logsumexp

+

187

torch.Tensor.logical_and

+

torch.Tensor.logical_and

+

188

torch.Tensor.logical_and_

+

torch.Tensor.logical_and_

+

189

torch.Tensor.logical_not

+

torch.Tensor.logical_not

+

190

torch.Tensor.logical_not_

+

torch.Tensor.logical_not_

+

191

torch.Tensor.logical_or

+

torch.Tensor.logical_or

+

192

torch.Tensor.logical_or_

+

torch.Tensor.logical_or_

+

193

torch.Tensor.logical_xor

+

torch.Tensor.logical_xor

+

194

torch.Tensor.logical_xor_

+

torch.Tensor.logical_xor_

+

195

torch.Tensor.long

+

torch.Tensor.long

+

196

torch.Tensor.lstsq

+

torch.Tensor.lstsq

+

197

torch.Tensor.lt

+

torch.Tensor.lt

+

198

torch.Tensor.lt_

+

torch.Tensor.lt_

+

199

torch.Tensor.lu

+

torch.Tensor.lu

+

200

torch.Tensor.lu_solve

+

torch.Tensor.lu_solve

+

201

torch.Tensor.map_

+

torch.Tensor.map_

+

202

torch.Tensor.masked_scatter_

+

torch.Tensor.masked_scatter_

+

203

torch.Tensor.masked_scatter

+

torch.Tensor.masked_scatter

+

204

torch.Tensor.masked_fill_

+

torch.Tensor.masked_fill_

+

205

torch.Tensor.masked_fill

+

torch.Tensor.masked_fill

+

206

torch.Tensor.masked_select

+

torch.Tensor.masked_select

+

207

torch.Tensor.matmul

+

torch.Tensor.matmul

+

208

torch.Tensor.matrix_power

+

torch.Tensor.matrix_power

+

209

torch.Tensor.max

+

torch.Tensor.max

+

210

torch.Tensor.mean

+

torch.Tensor.mean

+

211

torch.Tensor.median

+

torch.Tensor.median

+

212

torch.Tensor.min

+

torch.Tensor.min

+

213

torch.Tensor.mm

+

torch.Tensor.mm

+

214

torch.Tensor.mode

+

torch.Tensor.mode

+

215

torch.Tensor.mul

+

torch.Tensor.mul

+

216

torch.Tensor.mul_

+

torch.Tensor.mul_

+

217

torch.Tensor.multinomial

+

torch.Tensor.multinomial

+

218

torch.Tensor.mv

+

torch.Tensor.mv

+

219

torch.Tensor.mvlgamma

+

torch.Tensor.mvlgamma

+

220

torch.Tensor.mvlgamma_

+

torch.Tensor.mvlgamma_

+

221

torch.Tensor.narrow

+

torch.Tensor.narrow

+

222

torch.Tensor.narrow_copy

+

torch.Tensor.narrow_copy

+

223

torch.Tensor.ndimension

+

torch.Tensor.ndimension

+

224

torch.Tensor.ne

+

torch.Tensor.ne

+

225

torch.Tensor.ne_

+

torch.Tensor.ne_

+

226

torch.Tensor.neg

+

torch.Tensor.neg

+

227

torch.Tensor.neg_

+

torch.Tensor.neg_

+

228

torch.Tensor.nelement

+

torch.Tensor.nelement

+

229

torch.Tensor.nonzero

+

torch.Tensor.nonzero

+

230

torch.Tensor.norm

+

torch.Tensor.norm

+

231

torch.Tensor.normal_

+

torch.Tensor.normal_

+

232

torch.Tensor.numel

+

torch.Tensor.numel

+

233

torch.Tensor.numpy

+

torch.Tensor.numpy

+

234

torch.Tensor.orgqr

+

torch.Tensor.orgqr

+

235

torch.Tensor.ormqr

+

torch.Tensor.ormqr

+

236

torch.Tensor.permute

+

torch.Tensor.permute

+

237

torch.Tensor.pin_memory

+

torch.Tensor.pin_memory

+

238

torch.Tensor.pinverse

+

torch.Tensor.pinverse

+

239

torch.Tensor.polygamma

+

torch.Tensor.polygamma

+

240

torch.Tensor.polygamma_

+

torch.Tensor.polygamma_

+

241

torch.Tensor.pow

+

torch.Tensor.pow

+

242

torch.Tensor.pow_

+

torch.Tensor.pow_

+

243

torch.Tensor.prod

+

torch.Tensor.prod

+

244

torch.Tensor.put_

+

torch.Tensor.put_

+

245

torch.Tensor.qr

+

torch.Tensor.qr

+

246

torch.Tensor.qscheme

+

torch.Tensor.qscheme

+

247

torch.Tensor.q_scale

+

torch.Tensor.q_scale

+

248

torch.Tensor.q_zero_point

+

torch.Tensor.q_zero_point

+

249

torch.Tensor.q_per_channel_scales

+

torch.Tensor.q_per_channel_scales

+

250

torch.Tensor.q_per_channel_zero_points

+

torch.Tensor.q_per_channel_zero_points

+

251

torch.Tensor.q_per_channel_axis

+

torch.Tensor.q_per_channel_axis

+

252

torch.Tensor.random_

+

torch.Tensor.random_

+

253

torch.Tensor.reciprocal

+

torch.Tensor.reciprocal

+

254

torch.Tensor.reciprocal_

+

torch.Tensor.reciprocal_

+

255

torch.Tensor.record_stream

+

torch.Tensor.record_stream

+

256

torch.Tensor.remainder

+

torch.Tensor.remainder

+

257

torch.Tensor.remainder_

+

torch.Tensor.remainder_

+

258

torch.Tensor.renorm

+

torch.Tensor.renorm

+

259

torch.Tensor.renorm_

+

torch.Tensor.renorm_

+

260

torch.Tensor.repeat

+

torch.Tensor.repeat

+

261

torch.Tensor.repeat_interleave

+

torch.Tensor.repeat_interleave

+

262

torch.Tensor.requires_grad_

+

torch.Tensor.requires_grad_

+

263

torch.Tensor.reshape

+

torch.Tensor.reshape

+

264

torch.Tensor.reshape_as

+

torch.Tensor.reshape_as

+

265

torch.Tensor.resize_

+

torch.Tensor.resize_

+

266

torch.Tensor.resize_as_

+

torch.Tensor.resize_as_

+

267

torch.Tensor.rfft

+

torch.Tensor.rfft

+

268

torch.Tensor.roll

+

torch.Tensor.roll

+

269

torch.Tensor.rot90

+

torch.Tensor.rot90

+

270

torch.Tensor.round

+

torch.Tensor.round

+

271

torch.Tensor.round_

+

torch.Tensor.round_

+

272

torch.Tensor.rsqrt

+

torch.Tensor.rsqrt

+

273

torch.Tensor.rsqrt_

+

torch.Tensor.rsqrt_

+

274

torch.Tensor.scatter

+

torch.Tensor.scatter

+

275

torch.Tensor.scatter_

+

torch.Tensor.scatter_

+

276

torch.Tensor.scatter_add_

+

torch.Tensor.scatter_add_

+

277

torch.Tensor.scatter_add

+

torch.Tensor.scatter_add

+

278

torch.Tensor.select

+

torch.Tensor.select

+

279

torch.Tensor.set_

+

torch.Tensor.set_

+

280

torch.Tensor.share_memory_

+

torch.Tensor.share_memory_

+

281

torch.Tensor.short

+

torch.Tensor.short

+

282

torch.Tensor.sigmoid

+

torch.Tensor.sigmoid

+

283

torch.Tensor.sigmoid_

+

torch.Tensor.sigmoid_

+

284

torch.Tensor.sign

+

torch.Tensor.sign

+

285

torch.Tensor.sign_

+

torch.Tensor.sign_

+

286

torch.Tensor.sin

+

torch.Tensor.sin

+

287

torch.Tensor.sin_

+

torch.Tensor.sin_

+

288

torch.Tensor.sinh

+

torch.Tensor.sinh

+

289

torch.Tensor.sinh_

+

torch.Tensor.sinh_

+

290

torch.Tensor.size

+

torch.Tensor.size

+

291

torch.Tensor.slogdet

+

torch.Tensor.slogdet

+

292

torch.Tensor.solve

+

torch.Tensor.solve

+

293

torch.Tensor.sort

+

torch.Tensor.sort

+

294

torch.Tensor.split

+

torch.Tensor.split

+

295

torch.Tensor.sparse_mask

+

torch.Tensor.sparse_mask

+

296

torch.Tensor.sparse_dim

+

torch.Tensor.sparse_dim

+

297

torch.Tensor.sqrt

+

torch.Tensor.sqrt

+

298

torch.Tensor.sqrt_

+

torch.Tensor.sqrt_

+

299

torch.Tensor.square

+

torch.Tensor.square

+

300

torch.Tensor.square_

+

torch.Tensor.square_

+

301

torch.Tensor.squeeze

+

torch.Tensor.squeeze

+

302

torch.Tensor.squeeze_

+

torch.Tensor.squeeze_

+

303

torch.Tensor.std

+

torch.Tensor.std

+

304

torch.Tensor.stft

+

torch.Tensor.stft

+

305

torch.Tensor.storage

+

torch.Tensor.storage

+

306

torch.Tensor.storage_offset

+

torch.Tensor.storage_offset

+

307

torch.Tensor.storage_type

+

torch.Tensor.storage_type

+

308

torch.Tensor.stride

+

torch.Tensor.stride

+

309

torch.Tensor.sub

+

torch.Tensor.sub

+

310

torch.Tensor.sub_

+

torch.Tensor.sub_

+

311

torch.Tensor.sum

+

torch.Tensor.sum

+

312

torch.Tensor.sum_to_size

+

torch.Tensor.sum_to_size

+

313

torch.Tensor.svd

+

torch.Tensor.svd

+

314

torch.Tensor.symeig

+

torch.Tensor.symeig

+

315

torch.Tensor.t

+

torch.Tensor.t

+

316

torch.Tensor.t_

+

torch.Tensor.t_

+

317

torch.Tensor.to

+

torch.Tensor.to

+

318

torch.Tensor.to_mkldnn

+

torch.Tensor.to_mkldnn

+

319

torch.Tensor.take

+

torch.Tensor.take

+

320

torch.Tensor.tan

+

torch.Tensor.tan

+

321

torch.Tensor.tan_

+

torch.Tensor.tan_

+

322

torch.Tensor.tanh

+

torch.Tensor.tanh

+

323

torch.Tensor.tanh_

+

torch.Tensor.tanh_

+

324

torch.Tensor.tolist

+

torch.Tensor.tolist

+

325

torch.Tensor.topk

+

torch.Tensor.topk

+

326

torch.Tensor.to_sparse

+

torch.Tensor.to_sparse

+

327

torch.Tensor.trace

+

torch.Tensor.trace

+

328

torch.Tensor.transpose

+

torch.Tensor.transpose

+

329

torch.Tensor.transpose_

+

torch.Tensor.transpose_

+

330

torch.Tensor.triangular_solve

+

torch.Tensor.triangular_solve

+

331

torch.Tensor.tril

+

torch.Tensor.tril

+

332

torch.Tensor.tril_

+

torch.Tensor.tril_

+

333

torch.Tensor.triu

+

torch.Tensor.triu

+

334

torch.Tensor.triu_

+

torch.Tensor.triu_

+

335

torch.Tensor.true_divide

+

torch.Tensor.true_divide

+

336

torch.Tensor.true_divide_

+

torch.Tensor.true_divide_

+

337

torch.Tensor.trunc

+

torch.Tensor.trunc

+

338

torch.Tensor.trunc_

+

torch.Tensor.trunc_

+

339

torch.Tensor.type

+

torch.Tensor.type

+

340

torch.Tensor.type_as

+

torch.Tensor.type_as

+

341

torch.Tensor.unbind

+

torch.Tensor.unbind

+

342

torch.Tensor.unfold

+

torch.Tensor.unfold

+

343

torch.Tensor.uniform_

+

torch.Tensor.uniform_

+

344

torch.Tensor.unique

+

torch.Tensor.unique

+

345

torch.Tensor.unique_consecutive

+

torch.Tensor.unique_consecutive

+

346

torch.Tensor.unsqueeze

+

torch.Tensor.unsqueeze

+

347

torch.Tensor.unsqueeze_

+

torch.Tensor.unsqueeze_

+

348

torch.Tensor.values

+

torch.Tensor.values

+

349

torch.Tensor.var

+

torch.Tensor.var

+

350

torch.Tensor.view

+

torch.Tensor.view

+

351

torch.Tensor.view_as

+

torch.Tensor.view_as

+

352

torch.Tensor.where

+

torch.Tensor.where

+

353

torch.Tensor.zero_

+

torch.Tensor.zero_

+

354

torch.BoolTensor

+

torch.BoolTensor

+

355

torch.BoolTensor.all

+

torch.BoolTensor.all

+

356

torch.BoolTensor.any

+

torch.BoolTensor.any

+

序号

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -6715,703 +6715,703 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

+

1

torch.nn.Parameter

+

torch.nn.Parameter

+

2

+

2

torch.nn.Module

+

torch.nn.Module

+

3

+

3

torch.nn.Module.add_module

+

torch.nn.Module.add_module

+

4

+

4

torch.nn.Module.apply

+

torch.nn.Module.apply

+

5

+

5

torch.nn.Module.bfloat16

+

torch.nn.Module.bfloat16

+

6

+

6

torch.nn.Module.buffers

+

torch.nn.Module.buffers

+

7

+

7

torch.nn.Module.children

+

torch.nn.Module.children

+

8

+

8

torch.nn.Module.cpu

+

torch.nn.Module.cpu

+

9

+

9

torch.nn.Module.cuda

+

torch.nn.Module.cuda

+

10

+

10

torch.nn.Module.double

+

torch.nn.Module.double

+

11

+

11

torch.nn.Module.dump_patches

+

torch.nn.Module.dump_patches

+

12

+

12

torch.nn.Module.eval

+

torch.nn.Module.eval

+

13

+

13

torch.nn.Module.extra_repr

+

torch.nn.Module.extra_repr

+

14

+

14

torch.nn.Module.float

+

torch.nn.Module.float

+

15

+

15

torch.nn.Module.forward

+

torch.nn.Module.forward

+

16

+

16

torch.nn.Module.half

+

torch.nn.Module.half

+

17

+

17

torch.nn.Module.load_state_dict

+

torch.nn.Module.load_state_dict

+

18

+

18

torch.nn.Module.modules

+

torch.nn.Module.modules

+

19

+

19

torch.nn.Module.named_buffers

+

torch.nn.Module.named_buffers

+

20

+

20

torch.nn.Module.named_children

+

torch.nn.Module.named_children

+

21

+

21

torch.nn.Module.named_modules

+

torch.nn.Module.named_modules

+

22

+

22

torch.nn.Module.named_parameters

+

torch.nn.Module.named_parameters

+

23

+

23

torch.nn.Module.parameters

+

torch.nn.Module.parameters

+

24

+

24

torch.nn.Module.register_backward_hook

+

torch.nn.Module.register_backward_hook

+

25

+

25

torch.nn.Module.register_buffer

+

torch.nn.Module.register_buffer

+

26

+

26

torch.nn.Module.register_forward_hook

+

torch.nn.Module.register_forward_hook

+

27

+

27

torch.nn.Module.register_forward_pre_hook

+

torch.nn.Module.register_forward_pre_hook

+

28

+

28

torch.nn.Module.register_parameter

+

torch.nn.Module.register_parameter

+

29

+

29

torch.nn.Module.requires_grad_

+

torch.nn.Module.requires_grad_

+

30

+

30

torch.nn.Module.state_dict

+

torch.nn.Module.state_dict

+

31

+

31

torch.nn.Module.to

+

torch.nn.Module.to

+

32

+

32

torch.nn.Module.train

+

torch.nn.Module.train

+

33

+

33

torch.nn.Module.type

+

torch.nn.Module.type

+

34

+

34

torch.nn.Module.zero_grad

+

torch.nn.Module.zero_grad

+

35

+

35

torch.nn.Sequential

+

torch.nn.Sequential

+

36

+

36

torch.nn.ModuleList

+

torch.nn.ModuleList

+

37

+

37

torch.nn.ModuleList.append

+

torch.nn.ModuleList.append

+

38

+

38

torch.nn.ModuleList.extend

+

torch.nn.ModuleList.extend

+

39

+

39

torch.nn.ModuleList.insert

+

torch.nn.ModuleList.insert

+

40

+

40

torch.nn.ModuleDict

+

torch.nn.ModuleDict

+

41

+

41

torch.nn.ModuleDict.clear

+

torch.nn.ModuleDict.clear

+

42

+

42

torch.nn.ModuleDict.items

+

torch.nn.ModuleDict.items

+

43

+

43

torch.nn.ModuleDict.keys

+

torch.nn.ModuleDict.keys

+

44

+

44

torch.nn.ModuleDict.pop

+

torch.nn.ModuleDict.pop

+

45

+

45

torch.nn.ModuleDict.update

+

torch.nn.ModuleDict.update

+

46

+

46

torch.nn.ModuleDict.values

+

torch.nn.ModuleDict.values

+

47

+

47

torch.nn.ParameterList

+

torch.nn.ParameterList

+

48

+

48

torch.nn.ParameterList.append

+

torch.nn.ParameterList.append

+

49

+

49

torch.nn.ParameterList.extend

+

torch.nn.ParameterList.extend

+

50

+

50

torch.nn.ParameterDict

+

torch.nn.ParameterDict

+

51

+

51

torch.nn.ParameterDict.clear

+

torch.nn.ParameterDict.clear

+

52

+

52

torch.nn.ParameterDict.items

+

torch.nn.ParameterDict.items

+

53

+

53

torch.nn.ParameterDict.keys

+

torch.nn.ParameterDict.keys

+

54

+

54

torch.nn.ParameterDict.pop

+

torch.nn.ParameterDict.pop

+

55

+

55

torch.nn.ParameterDict.update

+

torch.nn.ParameterDict.update

+

56

+

56

torch.nn.ParameterDict.values

+

torch.nn.ParameterDict.values

+

57

+

57

torch.nn.Conv1d

+

torch.nn.Conv1d

+

58

+

58

torch.nn.Conv2d

+

torch.nn.Conv2d

+

59

+

59

torch.nn.Conv3d

+

torch.nn.Conv3d

+

60

+

60

torch.nn.ConvTranspose1d

+

torch.nn.ConvTranspose1d

+

61

+

61

torch.nn.ConvTranspose2d

+

torch.nn.ConvTranspose2d

+

62

+

62

torch.nn.ConvTranspose3d

+

torch.nn.ConvTranspose3d

+

63

+

63

torch.nn.Unfold

+

torch.nn.Unfold

+

64

+

64

torch.nn.Fold

+

torch.nn.Fold

+

65

+

65

torch.nn.MaxPool1d

+

torch.nn.MaxPool1d

+

66

+

66

torch.nn.MaxPool2d

+

torch.nn.MaxPool2d

+

67

+

67

torch.nn.MaxPool3d

+

torch.nn.MaxPool3d

+

68

+

68

torch.nn.MaxUnpool1d

+

torch.nn.MaxUnpool1d

+

69

+

69

torch.nn.MaxUnpool2d

+

torch.nn.MaxUnpool2d

+

70

+

70

torch.nn.MaxUnpool3d

+

torch.nn.MaxUnpool3d

+

71

+

71

torch.nn.AvgPool1d

+

torch.nn.AvgPool1d

+

72

+

72

torch.nn.AvgPool2d

+

torch.nn.AvgPool2d

+

73

+

73

torch.nn.AvgPool3d

+

torch.nn.AvgPool3d

+

74

+

74

torch.nn.FractionalMaxPool2d

+

torch.nn.FractionalMaxPool2d

+

75

+

75

torch.nn.LPPool1d

+

torch.nn.LPPool1d

+

76

+

76

torch.nn.LPPool2d

+

torch.nn.LPPool2d

+

77

+

77

torch.nn.AdaptiveMaxPool1d

+

torch.nn.AdaptiveMaxPool1d

+

78

+

78

torch.nn.AdaptiveMaxPool2d

+

torch.nn.AdaptiveMaxPool2d

+

79

+

79

torch.nn.AdaptiveMaxPool3d

+

torch.nn.AdaptiveMaxPool3d

+

80

+

80

torch.nn.AdaptiveAvgPool1d

+

torch.nn.AdaptiveAvgPool1d

+

81

+

81

torch.nn.AdaptiveAvgPool2d

+

torch.nn.AdaptiveAvgPool2d

+

82

+

82

torch.nn.AdaptiveAvgPool3d

+

torch.nn.AdaptiveAvgPool3d

+

83

+

83

torch.nn.ReflectionPad1d

+

torch.nn.ReflectionPad1d

+

84

+

84

torch.nn.ReflectionPad2d

+

torch.nn.ReflectionPad2d

+

85

+

85

torch.nn.ReplicationPad1d

+

torch.nn.ReplicationPad1d

+

86

+

86

torch.nn.ReplicationPad2d

+

torch.nn.ReplicationPad2d

+

87

+

87

torch.nn.ReplicationPad3d

+

torch.nn.ReplicationPad3d

+

88

+

88

torch.nn.ZeroPad2d

+

torch.nn.ZeroPad2d

+

89

+

89

torch.nn.ConstantPad1d

+

torch.nn.ConstantPad1d

+

90

+

90

torch.nn.ConstantPad2d

+

torch.nn.ConstantPad2d

+

91

+

91

torch.nn.ConstantPad3d

+

torch.nn.ConstantPad3d

+

92

+

92

torch.nn.ELU

+

torch.nn.ELU

+

93

+

93

torch.nn.Hardshrink

+

torch.nn.Hardshrink

+

94

+

94

torch.nn.Hardtanh

+

torch.nn.Hardtanh

+

95

+

95

torch.nn.LeakyReLU

+

torch.nn.LeakyReLU

+

96

+

96

torch.nn.LogSigmoid

+

torch.nn.LogSigmoid

+

97

+

97

torch.nn.MultiheadAttention

+

torch.nn.MultiheadAttention

+

98

+

98

torch.nn.PReLU

+

torch.nn.PReLU

+

99

+

99

torch.nn.ReLU

+

torch.nn.ReLU

+

100

+

100

torch.nn.ReLU6

+

torch.nn.ReLU6

+

101

+

101

torch.nn.RReLU

+

torch.nn.RReLU

+

102

+

102

torch.nn.SELU

+

torch.nn.SELU

+

103

+

103

torch.nn.CELU

+

torch.nn.CELU

+

104

+

104

torch.nn.GELU

+

torch.nn.GELU

+

105

+

105

torch.nn.Sigmoid

+

torch.nn.Sigmoid

+

106

+

106

torch.nn.Softplus

+

torch.nn.Softplus

+

107

+

107

torch.nn.Softshrink

+

torch.nn.Softshrink

是,SoftShrink场景暂不支持

+

是,SoftShrink场景暂不支持

108

+

108

torch.nn.Softsign

+

torch.nn.Softsign

+

109

+

109

torch.nn.Tanh

+

torch.nn.Tanh

+

110

+

110

torch.nn.Tanhshrink

+

torch.nn.Tanhshrink

+

111

+

111

torch.nn.Threshold

+

torch.nn.Threshold

+

112

+

112

torch.nn.Softmin

+

torch.nn.Softmin

+

113

+

113

torch.nn.Softmax

+

torch.nn.Softmax

+

114

+

114

torch.nn.Softmax2d

+

torch.nn.Softmax2d

+

115

+

115

torch.nn.LogSoftmax

+

torch.nn.LogSoftmax

+

116

+

116

torch.nn.AdaptiveLogSoftmaxWithLoss

+

torch.nn.AdaptiveLogSoftmaxWithLoss

+

117

+

117

torch.nn.AdaptiveLogSoftmaxWithLoss.log_prob

+

torch.nn.AdaptiveLogSoftmaxWithLoss.log_prob

+

118

+

118

torch.nn.AdaptiveLogSoftmaxWithLoss.predict

+

torch.nn.AdaptiveLogSoftmaxWithLoss.predict

+

119

+

119

torch.nn.BatchNorm1d

+

torch.nn.BatchNorm1d

+

120

+

120

torch.nn.BatchNorm2d

+

torch.nn.BatchNorm2d

+

121

+

121

torch.nn.BatchNorm3d

+

torch.nn.BatchNorm3d

+

122

+

122

torch.nn.GroupNorm

+

torch.nn.GroupNorm

+

123

+

123

torch.nn.SyncBatchNorm

+

torch.nn.SyncBatchNorm

+

124

+

124

torch.nn.SyncBatchNorm.convert_sync_batchnorm

+

torch.nn.SyncBatchNorm.convert_sync_batchnorm

+

125

+

125

torch.nn.InstanceNorm1d

+

torch.nn.InstanceNorm1d

+

126

+

126

torch.nn.InstanceNorm2d

+

torch.nn.InstanceNorm2d

+

127

+

127

torch.nn.InstanceNorm3d

+

torch.nn.InstanceNorm3d

+

128

+

128

torch.nn.LayerNorm

+

torch.nn.LayerNorm

+

129

+

129

torch.nn.LocalResponseNorm

+

torch.nn.LocalResponseNorm

+

130

+

130

torch.nn.RNNBase

+

torch.nn.RNNBase

+

131

+

131

torch.nn.RNNBase.flatten_parameters

+

torch.nn.RNNBase.flatten_parameters

+

132

+

132

torch.nn.RNN

+

torch.nn.RNN

+

133

+

133

torch.nn.LSTM

+

torch.nn.LSTM

+

134

+

134

torch.nn.GRU

+

torch.nn.GRU

是,DynamicGRUV2场景暂不支持

+

是,DynamicGRUV2场景暂不支持

135

+

135

torch.nn.RNNCell

+

torch.nn.RNNCell

+

136

+

136

torch.nn.LSTMCell

+

torch.nn.LSTMCell

+

137

+

137

torch.nn.GRUCell

+

torch.nn.GRUCell

+

138

+

138

torch.nn.Transformer

+

torch.nn.Transformer

+

139

+

139

torch.nn.Transformer.forward

+

torch.nn.Transformer.forward

+

140

+

140

torch.nn.Transformer.generate_square_subsequent_mask

+

torch.nn.Transformer.generate_square_subsequent_mask

+

141

+

141

torch.nn.TransformerEncoder

+

torch.nn.TransformerEncoder

+

142

+

142

torch.nn.TransformerEncoder.forward

+

torch.nn.TransformerEncoder.forward

+

143

+

143

torch.nn.TransformerDecoder

+

torch.nn.TransformerDecoder

+

144

+

144

torch.nn.TransformerDecoder.forward

+

torch.nn.TransformerDecoder.forward

+

145

+

145

torch.nn.TransformerEncoderLayer

+

torch.nn.TransformerEncoderLayer

+

146

+

146

torch.nn.TransformerEncoderLayer.forward

+

torch.nn.TransformerEncoderLayer.forward

+

147

+

147

torch.nn.TransformerDecoderLayer

+

torch.nn.TransformerDecoderLayer

+

148

+

148

torch.nn.TransformerDecoderLayer.forward

+

torch.nn.TransformerDecoderLayer.forward

+

149

+

149

torch.nn.Identity

+

torch.nn.Identity

+

150

+

150

torch.nn.Linear

+

torch.nn.Linear

+

151

+

151

torch.nn.Bilinear

+

torch.nn.Bilinear

+

152

+

152

torch.nn.Dropout

+

torch.nn.Dropout

+

153

+

153

torch.nn.Dropout2d

+

torch.nn.Dropout2d

+

154

+

154

torch.nn.Dropout3d

+

torch.nn.Dropout3d

+

155

+

155

torch.nn.AlphaDropout

+

torch.nn.AlphaDropout

+

156

+

156

torch.nn.Embedding

+

torch.nn.Embedding

+

157

+

157

torch.nn.Embedding.from_pretrained

+

torch.nn.Embedding.from_pretrained

+

158

+

158

torch.nn.EmbeddingBag

+

torch.nn.EmbeddingBag

+

159

+

159

torch.nn.EmbeddingBag.from_pretrained

+

torch.nn.EmbeddingBag.from_pretrained

+

160

+

160

torch.nn.CosineSimilarity

+

torch.nn.CosineSimilarity

+

161

+

161

torch.nn.PairwiseDistance

+

torch.nn.PairwiseDistance

+

162

+

162

torch.nn.L1Loss

+

torch.nn.L1Loss

+

163

+

163

torch.nn.MSELoss

+

torch.nn.MSELoss

+

164

+

164

torch.nn.CrossEntropyLoss

+

torch.nn.CrossEntropyLoss

+

165

+

165

torch.nn.CTCLoss

+

torch.nn.CTCLoss

+

166

+

166

torch.nn.NLLLoss

+

torch.nn.NLLLoss

+

167

+

167

torch.nn.PoissonNLLLoss

+

torch.nn.PoissonNLLLoss

+

168

+

168

torch.nn.KLDivLoss

+

torch.nn.KLDivLoss

+

169

+

169

torch.nn.BCELoss

+

torch.nn.BCELoss

+

170

+

170

torch.nn.BCEWithLogitsLoss

+

torch.nn.BCEWithLogitsLoss

+

171

+

171

torch.nn.MarginRankingLoss

+

torch.nn.MarginRankingLoss

+

172

+

172

torch.nn.HingeEmbeddingLoss

+

torch.nn.HingeEmbeddingLoss

+

173

+

173

torch.nn.MultiLabelMarginLoss

+

torch.nn.MultiLabelMarginLoss

+

174

+

174

torch.nn.SmoothL1Loss

+

torch.nn.SmoothL1Loss

+

175

+

175

torch.nn.SoftMarginLoss

+

torch.nn.SoftMarginLoss

+

176

+

176

torch.nn.MultiLabelSoftMarginLoss

+

torch.nn.MultiLabelSoftMarginLoss

+

177

+

177

torch.nn.CosineEmbeddingLoss

+

torch.nn.CosineEmbeddingLoss

+

178

+

178

torch.nn.MultiMarginLoss

+

torch.nn.MultiMarginLoss

+

179

+

179

torch.nn.TripletMarginLoss

+

torch.nn.TripletMarginLoss

+

180

+

180

torch.nn.PixelShuffle

+

torch.nn.PixelShuffle

+

181

+

181

torch.nn.Upsample

+

torch.nn.Upsample

+

182

+

182

torch.nn.UpsamplingNearest2d

+

torch.nn.UpsamplingNearest2d

+

183

+

183

torch.nn.UpsamplingBilinear2d

+

torch.nn.UpsamplingBilinear2d

+

184

+

184

torch.nn.DataParallel

+

torch.nn.DataParallel

+

185

+

185

torch.nn.parallel.DistributedDataParallel

+

torch.nn.parallel.DistributedDataParallel

+

186

+

186

torch.nn.parallel.DistributedDataParallel.no_sync

+

torch.nn.parallel.DistributedDataParallel.no_sync

+

187

+

187

torch.nn.utils.clip_grad_norm_

+

torch.nn.utils.clip_grad_norm_

+

188

+

188

torch.nn.utils.clip_grad_value_

+

torch.nn.utils.clip_grad_value_

+

189

+

189

torch.nn.utils.parameters_to_vector

+

torch.nn.utils.parameters_to_vector

+

190

+

190

torch.nn.utils.vector_to_parameters

+

torch.nn.utils.vector_to_parameters

+

197

+

197

torch.nn.utils.prune.PruningContainer

+

torch.nn.utils.prune.PruningContainer

+

198

+

198

torch.nn.utils.prune.PruningContainer.add_pruning_method

+

torch.nn.utils.prune.PruningContainer.add_pruning_method

+

199

+

199

torch.nn.utils.prune.PruningContainer.apply

+

torch.nn.utils.prune.PruningContainer.apply

+

200

+

200

torch.nn.utils.prune.PruningContainer.apply_mask

+

torch.nn.utils.prune.PruningContainer.apply_mask

+

201

+

201

torch.nn.utils.prune.PruningContainer.compute_mask

+

torch.nn.utils.prune.PruningContainer.compute_mask

+

202

+

202

torch.nn.utils.prune.PruningContainer.prune

+

torch.nn.utils.prune.PruningContainer.prune

+

203

+

203

torch.nn.utils.prune.PruningContainer.remove

+

torch.nn.utils.prune.PruningContainer.remove

+

204

+

204

torch.nn.utils.prune.Identity

+

torch.nn.utils.prune.Identity

+

205

+

205

torch.nn.utils.prune.Identity.apply

+

torch.nn.utils.prune.Identity.apply

+

206

+

206

torch.nn.utils.prune.Identity.apply_mask

+

torch.nn.utils.prune.Identity.apply_mask

+

207

+

207

torch.nn.utils.prune.Identity.prune

+

torch.nn.utils.prune.Identity.prune

+

208

+

208

torch.nn.utils.prune.Identity.remove

+

torch.nn.utils.prune.Identity.remove

+

209

+

209

torch.nn.utils.prune.RandomUnstructured

+

torch.nn.utils.prune.RandomUnstructured

+

210

+

210

torch.nn.utils.prune.RandomUnstructured.apply

+

torch.nn.utils.prune.RandomUnstructured.apply

+

211

+

211

torch.nn.utils.prune.RandomUnstructured.apply_mask

+

torch.nn.utils.prune.RandomUnstructured.apply_mask

+

212

+

212

torch.nn.utils.prune.RandomUnstructured.prune

+

torch.nn.utils.prune.RandomUnstructured.prune

+

213

+

213

torch.nn.utils.prune.RandomUnstructured.remove

+

torch.nn.utils.prune.RandomUnstructured.remove

+

214

+

214

torch.nn.utils.prune.L1Unstructured

+

torch.nn.utils.prune.L1Unstructured

+

215

+

215

torch.nn.utils.prune.L1Unstructured.apply

+

torch.nn.utils.prune.L1Unstructured.apply

+

216

+

216

torch.nn.utils.prune.L1Unstructured.apply_mask

+

torch.nn.utils.prune.L1Unstructured.apply_mask

+

217

+

217

torch.nn.utils.prune.L1Unstructured.prune

+

torch.nn.utils.prune.L1Unstructured.prune

+

218

+

218

torch.nn.utils.prune.L1Unstructured.remove

+

torch.nn.utils.prune.L1Unstructured.remove

+

219

+

219

torch.nn.utils.prune.RandomStructured

+

torch.nn.utils.prune.RandomStructured

+

220

+

220

torch.nn.utils.prune.RandomStructured.apply

+

torch.nn.utils.prune.RandomStructured.apply

+

221

+

221

torch.nn.utils.prune.RandomStructured.apply_mask

+

torch.nn.utils.prune.RandomStructured.apply_mask

+

222

+

222

torch.nn.utils.prune.RandomStructured.compute_mask

+

torch.nn.utils.prune.RandomStructured.compute_mask

+

223

+

223

torch.nn.utils.prune.RandomStructured.prune

+

torch.nn.utils.prune.RandomStructured.prune

+

224

+

224

torch.nn.utils.prune.RandomStructured.remove

+

torch.nn.utils.prune.RandomStructured.remove

+

225

+

225

torch.nn.utils.prune.LnStructured

+

torch.nn.utils.prune.LnStructured

+

226

+

226

torch.nn.utils.prune.LnStructured.apply

+

torch.nn.utils.prune.LnStructured.apply

+

227

+

227

torch.nn.utils.prune.LnStructured.apply_mask

+

torch.nn.utils.prune.LnStructured.apply_mask

+

228

+

228

torch.nn.utils.prune.LnStructured.compute_mask

+

torch.nn.utils.prune.LnStructured.compute_mask

+

229

+

229

torch.nn.utils.prune.LnStructured.prune

+

torch.nn.utils.prune.LnStructured.prune

+

230

+

230

torch.nn.utils.prune.LnStructured.remove

+

torch.nn.utils.prune.LnStructured.remove

+

231

+

231

torch.nn.utils.prune.CustomFromMask

+

torch.nn.utils.prune.CustomFromMask

+

232

+

232

torch.nn.utils.prune.CustomFromMask.apply

+

torch.nn.utils.prune.CustomFromMask.apply

+

233

+

233

torch.nn.utils.prune.CustomFromMask.apply_mask

+

torch.nn.utils.prune.CustomFromMask.apply_mask

+

234

+

234

torch.nn.utils.prune.CustomFromMask.prune

+

torch.nn.utils.prune.CustomFromMask.prune

+

235

+

235

torch.nn.utils.prune.CustomFromMask.remove

+

torch.nn.utils.prune.CustomFromMask.remove

+

236

+

236

torch.nn.utils.prune.identity

+

torch.nn.utils.prune.identity

+

237

+

237

torch.nn.utils.prune.random_unstructured

+

torch.nn.utils.prune.random_unstructured

+

238

+

238

torch.nn.utils.prune.l1_unstructured

+

torch.nn.utils.prune.l1_unstructured

+

239

+

239

torch.nn.utils.prune.random_structured

+

torch.nn.utils.prune.random_structured

+

240

+

240

torch.nn.utils.prune.ln_structured

+

torch.nn.utils.prune.ln_structured

+

241

+

241

torch.nn.utils.prune.global_unstructured

+

torch.nn.utils.prune.global_unstructured

+

242

+

242

torch.nn.utils.prune.custom_from_mask

+

torch.nn.utils.prune.custom_from_mask

+

243

+

243

torch.nn.utils.prune.remove

+

torch.nn.utils.prune.remove

+

244

+

244

torch.nn.utils.prune.is_pruned

+

torch.nn.utils.prune.is_pruned

+

245

+

245

torch.nn.utils.weight_norm

+

torch.nn.utils.weight_norm

+

246

+

246

torch.nn.utils.remove_weight_norm

+

torch.nn.utils.remove_weight_norm

+

247

+

247

torch.nn.utils.spectral_norm

+

torch.nn.utils.spectral_norm

+

248

+

248

torch.nn.utils.remove_spectral_norm

+

torch.nn.utils.remove_spectral_norm

+

249

+

249

torch.nn.utils.rnn.PackedSequence

+

torch.nn.utils.rnn.PackedSequence

+

250

+

250

torch.nn.utils.rnn.pack_padded_sequence

+

torch.nn.utils.rnn.pack_padded_sequence

+

251

+

251

torch.nn.utils.rnn.pad_packed_sequence

+

torch.nn.utils.rnn.pad_packed_sequence

+

252

+

252

torch.nn.utils.rnn.pad_sequence

+

torch.nn.utils.rnn.pad_sequence

+

253

+

253

torch.nn.utils.rnn.pack_sequence

+

torch.nn.utils.rnn.pack_sequence

+

254

+

254

torch.nn.Flatten

+

torch.nn.Flatten

+

255

+

255

torch.quantization.quantize

+

torch.quantization.quantize

+

256

+

256

torch.quantization.quantize_dynamic

+

torch.quantization.quantize_dynamic

+

257

+

257

torch.quantization.quantize_qat

+

torch.quantization.quantize_qat

+

258

+

258

torch.quantization.prepare

+

torch.quantization.prepare

+

259

+

259

torch.quantization.prepare_qat

+

torch.quantization.prepare_qat

+

260

+

260

torch.quantization.convert

+

torch.quantization.convert

+

261

+

261

torch.quantization.QConfig

+

torch.quantization.QConfig

+

262

+

262

torch.quantization.QConfigDynamic

+

torch.quantization.QConfigDynamic

+

263

+

263

torch.quantization.fuse_modules

+

torch.quantization.fuse_modules

+

264

+

264

torch.quantization.QuantStub

+

torch.quantization.QuantStub

+

265

+

265

torch.quantization.DeQuantStub

+

torch.quantization.DeQuantStub

+

266

+

266

torch.quantization.QuantWrapper

+

torch.quantization.QuantWrapper

+

267

+

267

torch.quantization.add_quant_dequant

+

torch.quantization.add_quant_dequant

+

268

+

268

torch.quantization.add_observer_

+

torch.quantization.add_observer_

+

269

+

269

torch.quantization.swap_module

+

torch.quantization.swap_module

+

270

+

270

torch.quantization.propagate_qconfig_

+

torch.quantization.propagate_qconfig_

+

271

+

271

torch.quantization.default_eval_fn

+

torch.quantization.default_eval_fn

+

272

+

272

torch.quantization.MinMaxObserver

+

torch.quantization.MinMaxObserver

+

273

+

273

torch.quantization.MovingAverageMinMaxObserver

+

torch.quantization.MovingAverageMinMaxObserver

+

274

+

274

torch.quantization.PerChannelMinMaxObserver

+

torch.quantization.PerChannelMinMaxObserver

+

275

+

275

torch.quantization.MovingAveragePerChannelMinMaxObserver

+

torch.quantization.MovingAveragePerChannelMinMaxObserver

+

276

+

276

torch.quantization.HistogramObserver

+

torch.quantization.HistogramObserver

+

277

+

277

torch.quantization.FakeQuantize

+

torch.quantization.FakeQuantize

+

278

+

278

torch.quantization.NoopObserver

+

torch.quantization.NoopObserver

+

279

+

279

torch.quantization.get_observer_dict

+

torch.quantization.get_observer_dict

+

280

+

280

torch.quantization.RecordingObserver

+

torch.quantization.RecordingObserver

+

281

+

281

torch.nn.intrinsic.ConvBn2d

+

torch.nn.intrinsic.ConvBn2d

+

282

+

282

torch.nn.intrinsic.ConvBnReLU2d

+

torch.nn.intrinsic.ConvBnReLU2d

+

283

+

283

torch.nn.intrinsic.ConvReLU2d

+

torch.nn.intrinsic.ConvReLU2d

+

284

+

284

torch.nn.intrinsic.ConvReLU3d

+

torch.nn.intrinsic.ConvReLU3d

+

285

+

285

torch.nn.intrinsic.LinearReLU

+

torch.nn.intrinsic.LinearReLU

+

286

+

286

torch.nn.intrinsic.qat.ConvBn2d

+

torch.nn.intrinsic.qat.ConvBn2d

+

287

+

287

torch.nn.intrinsic.qat.ConvBnReLU2d

+

torch.nn.intrinsic.qat.ConvBnReLU2d

+

288

+

288

torch.nn.intrinsic.qat.ConvReLU2d

+

torch.nn.intrinsic.qat.ConvReLU2d

+

289

+

289

torch.nn.intrinsic.qat.LinearReLU

+

torch.nn.intrinsic.qat.LinearReLU

+

290

+

290

torch.nn.intrinsic.quantized.ConvReLU2d

+

torch.nn.intrinsic.quantized.ConvReLU2d

+

291

+

291

torch.nn.intrinsic.quantized.ConvReLU3d

+

torch.nn.intrinsic.quantized.ConvReLU3d

+

292

+

292

torch.nn.intrinsic.quantized.LinearReLU

+

torch.nn.intrinsic.quantized.LinearReLU

+

293

+

293

torch.nn.qat.Conv2d

+

torch.nn.qat.Conv2d

+

294

+

294

torch.nn.qat.Conv2d.from_float

+

torch.nn.qat.Conv2d.from_float

+

295

+

295

torch.nn.qat.Linear

+

torch.nn.qat.Linear

+

296

+

296

torch.nn.qat.Linear.from_float

+

torch.nn.qat.Linear.from_float

+

297

+

297

torch.nn.quantized.functional.relu

+

torch.nn.quantized.functional.relu

+

298

+

298

torch.nn.quantized.functional.linear

+

torch.nn.quantized.functional.linear

+

299

+

299

torch.nn.quantized.functional.conv2d

+

torch.nn.quantized.functional.conv2d

+

300

+

300

torch.nn.quantized.functional.conv3d

+

torch.nn.quantized.functional.conv3d

+

301

+

301

torch.nn.quantized.functional.max_pool2d

+

torch.nn.quantized.functional.max_pool2d

+

302

+

302

torch.nn.quantized.functional.adaptive_avg_pool2d

+

torch.nn.quantized.functional.adaptive_avg_pool2d

+

303

+

303

torch.nn.quantized.functional.avg_pool2d

+

torch.nn.quantized.functional.avg_pool2d

+

304

+

304

torch.nn.quantized.functional.interpolate

+

torch.nn.quantized.functional.interpolate

+

305

+

305

torch.nn.quantized.functional.upsample

+

torch.nn.quantized.functional.upsample

+

306

+

306

torch.nn.quantized.functional.upsample_bilinear

+

torch.nn.quantized.functional.upsample_bilinear

+

307

+

307

torch.nn.quantized.functional.upsample_nearest

+

torch.nn.quantized.functional.upsample_nearest

+

308

+

308

torch.nn.quantized.ReLU

+

torch.nn.quantized.ReLU

+

309

+

309

torch.nn.quantized.ReLU6

+

torch.nn.quantized.ReLU6

+

310

+

310

torch.nn.quantized.Conv2d

+

torch.nn.quantized.Conv2d

+

311

+

311

torch.nn.quantized.Conv2d.from_float

+

torch.nn.quantized.Conv2d.from_float

+

312

+

312

torch.nn.quantized.Conv3d

+

torch.nn.quantized.Conv3d

+

313

+

313

torch.nn.quantized.Conv3d.from_float

+

torch.nn.quantized.Conv3d.from_float

+

314

+

314

torch.nn.quantized.FloatFunctional

+

torch.nn.quantized.FloatFunctional

+

315

+

315

torch.nn.quantized.QFunctional

+

torch.nn.quantized.QFunctional

+

316

+

316

torch.nn.quantized.Quantize

+

torch.nn.quantized.Quantize

+

317

+

317

torch.nn.quantized.DeQuantize

+

torch.nn.quantized.DeQuantize

+

318

+

318

torch.nn.quantized.Linear

+

torch.nn.quantized.Linear

+

319

+

319

torch.nn.quantized.Linear.from_float

+

torch.nn.quantized.Linear.from_float

+

320

+

320

torch.nn.quantized.dynamic.Linear

+

torch.nn.quantized.dynamic.Linear

+

321

+

321

torch.nn.quantized.dynamic.Linear.from_float

+

torch.nn.quantized.dynamic.Linear.from_float

+

322

+

322

torch.nn.quantized.dynamic.LSTM

+

torch.nn.quantized.dynamic.LSTM

+

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -7422,220 +7422,220 @@

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.nn.functional.conv1d

+

torch.nn.functional.conv1d

+

2

torch.nn.functional.conv2d

+

torch.nn.functional.conv2d

+

3

torch.nn.functional.conv3d

+

torch.nn.functional.conv3d

+

4

torch.nn.functional.conv_transpose1d

+

torch.nn.functional.conv_transpose1d

+

5

torch.nn.functional.conv_transpose2d

+

torch.nn.functional.conv_transpose2d

+

6

torch.nn.functional.conv_transpose3d

+

torch.nn.functional.conv_transpose3d

+

7

torch.nn.functional.unfold

+

torch.nn.functional.unfold

+

8

torch.nn.functional.fold

+

torch.nn.functional.fold

+

9

torch.nn.functional.avg_pool1d

+

torch.nn.functional.avg_pool1d

+

10

torch.nn.functional.avg_pool2d

+

torch.nn.functional.avg_pool2d

+

11

torch.nn.functional.avg_pool3d

+

torch.nn.functional.avg_pool3d

+

12

torch.nn.functional.max_pool1d

+

torch.nn.functional.max_pool1d

+

13

torch.nn.functional.max_pool2d

+

torch.nn.functional.max_pool2d

+

14

torch.nn.functional.max_pool3d

+

torch.nn.functional.max_pool3d

+

15

torch.nn.functional.max_unpool1d

+

torch.nn.functional.max_unpool1d

+

16

torch.nn.functional.max_unpool2d

+

torch.nn.functional.max_unpool2d

+

17

torch.nn.functional.max_unpool3d

+

torch.nn.functional.max_unpool3d

+

18

torch.nn.functional.lp_pool1d

+

torch.nn.functional.lp_pool1d

+

19

torch.nn.functional.lp_pool2d

+

torch.nn.functional.lp_pool2d

+

20

torch.nn.functional.adaptive_max_pool1d

+

torch.nn.functional.adaptive_max_pool1d

+

21

torch.nn.functional.adaptive_max_pool2d

+

torch.nn.functional.adaptive_max_pool2d

+

22

torch.nn.functional.adaptive_max_pool3d

+

torch.nn.functional.adaptive_max_pool3d

+

23

torch.nn.functional.adaptive_avg_pool1d

+

torch.nn.functional.adaptive_avg_pool1d

+

24

torch.nn.functional.adaptive_avg_pool2d

+

torch.nn.functional.adaptive_avg_pool2d

+

25

torch.nn.functional.adaptive_avg_pool3d

+

torch.nn.functional.adaptive_avg_pool3d

+

26

torch.nn.functional.threshold

+

torch.nn.functional.threshold

+

27

torch.nn.functional.threshold_

+

torch.nn.functional.threshold_

+

28

torch.nn.functional.relu

+

torch.nn.functional.relu

+

29

torch.nn.functional.relu_

+

torch.nn.functional.relu_

+

30

torch.nn.functional.hardtanh

+

torch.nn.functional.hardtanh

+

31

torch.nn.functional.hardtanh_

+

torch.nn.functional.hardtanh_

+

32

torch.nn.functional.relu6

+

torch.nn.functional.relu6

+

33

torch.nn.functional.elu

+

torch.nn.functional.elu

+

34

torch.nn.functional.elu_

+

torch.nn.functional.elu_

+

35

torch.nn.functional.selu

+

torch.nn.functional.selu

+

36

torch.nn.functional.celu

+

torch.nn.functional.celu

+

37

torch.nn.functional.leaky_relu

+

torch.nn.functional.leaky_relu

+

38

torch.nn.functional.leaky_relu_

+

torch.nn.functional.leaky_relu_

+

39

torch.nn.functional.prelu

+

torch.nn.functional.prelu

+

40

torch.nn.functional.rrelu

+

torch.nn.functional.rrelu

+

41

torch.nn.functional.rrelu_

+

torch.nn.functional.rrelu_

+

42

torch.nn.functional.glu

+

torch.nn.functional.glu

+

43

torch.nn.functional.gelu

+

torch.nn.functional.gelu

+

44

torch.nn.functional.logsigmoid

+

torch.nn.functional.logsigmoid

+

45

torch.nn.functional.hardshrink

+

torch.nn.functional.hardshrink

+

46

torch.nn.functional.tanhshrink

+

torch.nn.functional.tanhshrink

+

47

torch.nn.functional.softsign

+

torch.nn.functional.softsign

+

48

torch.nn.functional.softplus

+

torch.nn.functional.softplus

+

49

torch.nn.functional.softmin

+

torch.nn.functional.softmin

+

50

torch.nn.functional.softmax

+

torch.nn.functional.softmax

+

51

torch.nn.functional.softshrink

+

torch.nn.functional.softshrink

+

52

torch.nn.functional.gumbel_softmax

+

torch.nn.functional.gumbel_softmax

+

53

torch.nn.functional.log_softmax

+

torch.nn.functional.log_softmax

+

54

torch.nn.functional.tanh

+

torch.nn.functional.tanh

+

55

torch.nn.functional.sigmoid

+

torch.nn.functional.sigmoid

+

56

torch.nn.functional.batch_norm

+

torch.nn.functional.batch_norm

+

57

torch.nn.functional.instance_norm

+

torch.nn.functional.instance_norm

+

58

torch.nn.functional.layer_norm

+

torch.nn.functional.layer_norm

+

59

torch.nn.functional.local_response_norm

+

torch.nn.functional.local_response_norm

+

60

torch.nn.functional.normalize

+

torch.nn.functional.normalize

+

61

torch.nn.functional.linear

+

torch.nn.functional.linear

+

62

torch.nn.functional.bilinear

+

torch.nn.functional.bilinear

+

63

torch.nn.functional.dropout

+

torch.nn.functional.dropout

+

64

torch.nn.functional.alpha_dropout

+

torch.nn.functional.alpha_dropout

+

65

torch.nn.functional.dropout2d

+

torch.nn.functional.dropout2d

+

66

torch.nn.functional.dropout3d

+

torch.nn.functional.dropout3d

+

67

torch.nn.functional.embedding

+

torch.nn.functional.embedding

+

68

torch.nn.functional.embedding_bag

+

torch.nn.functional.embedding_bag

+

69

torch.nn.functional.one_hot

+

torch.nn.functional.one_hot

+

70

torch.nn.functional.pairwise_distance

+

torch.nn.functional.pairwise_distance

+

71

torch.nn.functional.cosine_similarity

+

torch.nn.functional.cosine_similarity

+

72

torch.nn.functional.pdist

+

torch.nn.functional.pdist

+

73

torch.nn.functional.binary_cross_entropy

+

torch.nn.functional.binary_cross_entropy

+

74

torch.nn.functional.binary_cross_entropy_with_logits

+

torch.nn.functional.binary_cross_entropy_with_logits

+

75

torch.nn.functional.poisson_nll_loss

+

torch.nn.functional.poisson_nll_loss

+

76

torch.nn.functional.cosine_embedding_loss

+

torch.nn.functional.cosine_embedding_loss

+

77

torch.nn.functional.cross_entropy

+

torch.nn.functional.cross_entropy

+

78

torch.nn.functional.ctc_loss

+

torch.nn.functional.ctc_loss

+

79

torch.nn.functional.hinge_embedding_loss

+

torch.nn.functional.hinge_embedding_loss

+

80

torch.nn.functional.kl_div

+

torch.nn.functional.kl_div

+

81

torch.nn.functional.l1_loss

+

torch.nn.functional.l1_loss

+

82

torch.nn.functional.mse_loss

+

torch.nn.functional.mse_loss

+

83

torch.nn.functional.margin_ranking_loss

+

torch.nn.functional.margin_ranking_loss

+

84

torch.nn.functional.multilabel_margin_loss

+

torch.nn.functional.multilabel_margin_loss

+

85

torch.nn.functional.multilabel_soft_margin_loss

+

torch.nn.functional.multilabel_soft_margin_loss

+

86

torch.nn.functional.multi_margin_loss

+

torch.nn.functional.multi_margin_loss

+

87

torch.nn.functional.nll_loss

+

torch.nn.functional.nll_loss

+

88

torch.nn.functional.smooth_l1_loss

+

torch.nn.functional.smooth_l1_loss

+

89

torch.nn.functional.soft_margin_loss

+

torch.nn.functional.soft_margin_loss

+

90

torch.nn.functional.triplet_margin_loss

+

torch.nn.functional.triplet_margin_loss

+

91

torch.nn.functional.pixel_shuffle

+

torch.nn.functional.pixel_shuffle

+

92

torch.nn.functional.pad

+

torch.nn.functional.pad

+

93

torch.nn.functional.interpolate

+

torch.nn.functional.interpolate

+

94

torch.nn.functional.upsample

+

torch.nn.functional.upsample

+

95

torch.nn.functional.upsample_nearest

+

torch.nn.functional.upsample_nearest

+

96

torch.nn.functional.upsample_bilinear

+

torch.nn.functional.upsample_bilinear

+

97

torch.nn.functional.grid_sample

+

torch.nn.functional.grid_sample

+

98

torch.nn.functional.affine_grid

+

torch.nn.functional.affine_grid

+

99

torch.nn.parallel.data_parallel

+

torch.nn.parallel.data_parallel

+

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -7648,9 +7648,9 @@ - - @@ -7658,567 +7658,567 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" index e9176a02b4d..b9b6722f48b 100644 --- "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" @@ -5,19 +5,18 @@ - [安装PyTorch框架](#安装PyTorch框架md) - [配置环境变量](#配置环境变量md) - [安装混合精度模块](#安装混合精度模块md) -- [使用Ascend Hub镜像](#使用Ascend-Hub镜像md) - - [Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像md) - - [配置环境变量](#配置环境变量-0md) - [参考信息](#参考信息md) - [CMake安装方法](#CMake安装方法md) - [安装7.3.0版本gcc](#安装7-3-0版本gccmd) - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配md)

简介

-用户在准备相关环境进行基于PyTorch框架模型的开发、运行时,可以选择在服务器中手动编译安装PyTorch框架相关模块,或直接获取Ascend Hub镜像中心提供的基础镜像(镜像中已安装PyTorch模块和混合精度模块),进行模型的开发、运行。 +用户在准备相关环境进行基于PyTorch框架模型的开发、运行时,可以选择在服务器中手动编译安装PyTorch框架相关模块。 **图 1** 环境准备流程图 -![](figures/环境准备流程图.png "环境准备流程图") + + +![](figures/210926103326800.png)

手动编译安装

@@ -37,6 +36,7 @@ - 需完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 - 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法md)。 - 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参考[安装7.3.0版本gcc](#安装7-3-0版本gccmd)。 +- 需安装python版本为3.7.5或3.8。 - 需确保环境中已安装patch、git工具,以Ubuntu和CentOS系统为例,命令如下: - Ubuntu系统 @@ -79,36 +79,32 @@ 下载的源码主要目录结构如下所示: ``` - pytorch - │ ├─patch # 昇腾AI处理器适配补丁目录 - │ ├─npu.patch - │ ├─scripts # 编译构建目录 - │ ├─gen.sh - │ ├─src # 源码目录 - │ ├─test # 测试用例存放目录 - │ ├─README.md + ├── patch # 昇腾AI处理器适配补丁目录 + │ ├── pytorch1.5.0_npu.patch # pytorch1.5.0版本补丁 + │ └── pytorch1.8.1_npu.patch # pytorch1.8.1版本补丁 + ├── pytorch1.5.0 # pytorch1.5.0源码及测试目录 + │ ├── access_control_test.py + │ ├── src # 源码目录 + │ └── test # 测试用例存放目录 + ├── pytorch1.8.1 # pytorch1.8.1源码及测试目录 + │ ├── access_control_test.py + │ ├── src # 源码目录 + │ └── test # 测试用例存放目录 + └── scripts # 编译构建目录 ``` - 2. 运行如下命令,进入“pytorch“目录,并获取原生PyTorch源代码。 + 2. 在当前仓根目录“/pytorch“下获取原生PyTorch源代码。 + - 若安装pytorch1.5.0版本,执行如下命令。 - ``` - cd pytorch - git clone -b v1.5.0 --depth=1 https://github.com/pytorch/pytorch.git - ``` + ``` + git clone -b v1.5.0 --depth=1 https://github.com/pytorch/pytorch.git + ``` - 下载原生pytorch源码后,代码主要目录结构如下所示: + - 若安装pytorch1.8.1版本,执行如下命令。 - ``` - pytorch - │ ├─patch # 昇腾AI处理器适配补丁目录 - │ ├─npu.patch - │ ├─pytorch # 原生pytorch代码目录 - │ ├─scripts # 编译构建目录 - │ ├─gen.sh - │ ├─src # 源码目录 - │ ├─test # 测试用例存放目录 - │ ├─README.md - ``` + ``` + git clone -b v1.8.1 --depth=1 https://github.com/pytorch/pytorch.git + ``` 3. 运行如下命令,进入原生pytorch代码目录“pytorch“,并获取PyTorch被动依赖代码。 @@ -126,26 +122,37 @@ ``` cd ../scripts + # 若安装1.5.0版本 bash gen.sh + # 若安装1.8.1版本 + bash gen.sh -v 1.8.1 ``` 将在"pytorch/pytorch"目录中生成适配昇腾AI处理器的全量代码。 - 2. 进入适配后的全量代码目录,即“pytorch/pytorch“目录,编译生成pytorch的二进制安装包。 + 2. 进入到“pytorch/pytorch/“目录,依赖库安装。 ``` cd ../pytorch - bash build.sh + pip3 install -r requirements.txt ``` - 生成的二进制包在当前的dist目录下,即“pytorch/pytorch/dist”文件夹目录下。 + 3. 编译生成pytorch的二进制安装包。 + + ``` + bash build.sh --python=3.7 + 或 + bash build.sh --python=3.8 + ``` + + 请指定环境中python版本进行编译。生成的二进制包在当前的dist目录下,即“pytorch/pytorch/dist”文件夹目录下。 5. 安装PyTorch。 进入“pytorch/pytorch/dist“文件夹目录,执行如下命令安装。 ``` - pip3 install --upgrade torch-1.5.0+ascend-cp37-cp37m-linux_{arch}.whl + pip3 install --upgrade torch-1.5.0+ascend.post3-cp37-cp37m-linux_{arch}.whl ``` **\{arch\}**表示架构信息,为aarch64或x86\_64。 @@ -178,7 +185,7 @@ 3. (可选)NPU场景下配置功能或性能环境变量。默认为不开启。 ``` - export DYNAMIC_COMPILE_ENABLE=1 # 动态shape特性功能,针对shape变化场景,可选,开启设置为1 + export DYNAMIC_COMPILE_ENABLE=1 # 动态shape特性功能,针对shape变化场景,可选,开启设置为1(PyTorch1.8.1不支持该环境变量) export COMBINED_ENABLE=1 # 非连续两个算子组合类场景优化,可选,开启设置为1 export TRI_COMBINED_ENABLE=1 # 非连续三个算子组合类场景优化,可选,开启设置为1 export ACL_DUMP_DATA=1 # 算子数据dump功能,调试时使用,可选,开启设置为1 @@ -276,22 +283,22 @@ - - - -

序号

API名称

+

API名称

是否支持

+

是否支持(PyTorch1.5.0)

1

torch.distributed.init_process_group

+

torch.distributed.init_process_group

+

2

torch.distributed.Backend

+

torch.distributed.Backend

+

3

torch.distributed.get_backend

+

torch.distributed.get_backend

+

4

torch.distributed.get_rank

+

torch.distributed.get_rank

+

5

torch.distributed.get_world_size

+

torch.distributed.get_world_size

+

6

torch.distributed.is_initialized

+

torch.distributed.is_initialized

+

7

torch.distributed.is_mpi_available

+

torch.distributed.is_mpi_available

+

8

torch.distributed.is_nccl_available

+

torch.distributed.is_nccl_available

+

9

torch.distributed.new_group

+

torch.distributed.new_group

+

10

torch.distributed.send

+

torch.distributed.send

+

11

torch.distributed.recv

+

torch.distributed.recv

+

12

torch.distributed.isend

+

torch.distributed.isend

+

13

torch.distributed.irecv

+

torch.distributed.irecv

+

14

is_completed

+

is_completed

+

15

wait

+

wait

+

16

torch.distributed.broadcast

+

torch.distributed.broadcast

+

17

torch.distributed.all_reduce

+

torch.distributed.all_reduce

+

18

torch.distributed.reduce

+

torch.distributed.reduce

+

19

torch.distributed.all_gather

+

torch.distributed.all_gather

+

20

torch.distributed.gather

+

torch.distributed.gather

+

21

torch.distributed.scatter

+

torch.distributed.scatter

+

22

torch.distributed.barrier

+

torch.distributed.barrier

+

23

torch.distributed.ReduceOp

+

torch.distributed.ReduceOp

+

24

torch.distributed.reduce_op

+

torch.distributed.reduce_op

+

25

torch.distributed.broadcast_multigpu

+

torch.distributed.broadcast_multigpu

+

26

torch.distributed.all_reduce_multigpu

+

torch.distributed.all_reduce_multigpu

+

27

torch.distributed.reduce_multigpu

+

torch.distributed.reduce_multigpu

+

28

torch.distributed.all_gather_multigpu

+

torch.distributed.all_gather_multigpu

+

29

torch.distributed.launch

+

torch.distributed.launch

+

30

torch.multiprocessing.spawn

+

torch.multiprocessing.spawn

+

API名称

npu对应API名称

+

npu对应API名称

是否支持

+

是否支持(PyTorch1.5.0)

torch.cuda.current_blas_handle

torch.npu.current_blas_handle

+

torch.npu.current_blas_handle

+

2

torch.cuda.current_device

torch.npu.current_device

+

torch.npu.current_device

+

3

torch.cuda.current_stream

torch.npu.current_stream

+

torch.npu.current_stream

+

4

torch.cuda.default_stream

torch.npu.default_stream

+

torch.npu.default_stream

+

5

torch.cuda.device

torch.npu.device

+

torch.npu.device

+

6

torch.cuda.device_count

torch.npu.device_count

+

torch.npu.device_count

+

7

torch.cuda.device_of

torch.npu.device_of

+

torch.npu.device_of

+

8

torch.cuda.get_device_capability

torch.npu.get_device_capability

+

torch.npu.get_device_capability

+

9

torch.cuda.get_device_name

torch.npu.get_device_name

+

torch.npu.get_device_name

+

10

torch.cuda.init

torch.npu.init

+

torch.npu.init

+

11

torch.cuda.ipc_collect

torch.npu.ipc_collect

+

torch.npu.ipc_collect

+

12

torch.cuda.is_available

torch.npu.is_available

+

torch.npu.is_available

+

13

torch.cuda.is_initialized

torch.npu.is_initialized

+

torch.npu.is_initialized

+

14

torch.cuda.set_device

torch.npu.set_device

+

torch.npu.set_device

部分支持

+

部分支持

15

torch.cuda.stream

torch.npu.stream

+

torch.npu.stream

+

16

torch.cuda.synchronize

torch.npu.synchronize

+

torch.npu.synchronize

+

17

torch.cuda.get_rng_state

torch.npu.get_rng_state

+

torch.npu.get_rng_state

+

18

torch.cuda.get_rng_state_all

torch.npu.get_rng_state_all

+

torch.npu.get_rng_state_all

+

19

torch.cuda.set_rng_state

torch.npu.set_rng_state

+

torch.npu.set_rng_state

+

20

torch.cuda.set_rng_state_all

torch.npu.set_rng_state_all

+

torch.npu.set_rng_state_all

+

21

torch.cuda.manual_seed

torch.npu.manual_seed

+

torch.npu.manual_seed

+

22

torch.cuda.manual_seed_all

torch.npu.manual_seed_all

+

torch.npu.manual_seed_all

+

23

torch.cuda.seed

torch.npu.seed

+

torch.npu.seed

+

24

torch.cuda.seed_all

torch.npu.seed_all

+

torch.npu.seed_all

+

25

torch.cuda.initial_seed

torch.npu.initial_seed

+

torch.npu.initial_seed

+

26

torch.cuda.comm.broadcast

torch.npu.comm.broadcast

+

torch.npu.comm.broadcast

+

27

torch.cuda.comm.broadcast_coalesced

torch.npu.comm.broadcast_coalesced

+

torch.npu.comm.broadcast_coalesced

+

28

torch.cuda.comm.reduce_add

torch.npu.comm.reduce_add

+

torch.npu.comm.reduce_add

+

29

torch.cuda.comm.scatter

torch.npu.comm.scatter

+

torch.npu.comm.scatter

+

30

torch.cuda.comm.gather

torch.npu.comm.gather

+

torch.npu.comm.gather

+

31

torch.cuda.Stream

torch.npu.Stream

+

torch.npu.Stream

+

32

torch.cuda.Stream.query

torch.npu.Stream.query

+

torch.npu.Stream.query

+

33

torch.cuda.Stream.record_event

torch.npu.Stream.record_event

+

torch.npu.Stream.record_event

+

34

torch.cuda.Stream.synchronize

torch.npu.Stream.synchronize

+

torch.npu.Stream.synchronize

+

35

torch.cuda.Stream.wait_event

torch.npu.Stream.wait_event

+

torch.npu.Stream.wait_event

+

36

torch.cuda.Stream.wait_stream

torch.npu.Stream.wait_stream

+

torch.npu.Stream.wait_stream

+

37

torch.cuda.Event

torch.npu.Event

+

torch.npu.Event

+

38

torch.cuda.Event.elapsed_time

torch.npu.Event.elapsed_time

+

torch.npu.Event.elapsed_time

+

39

torch.cuda.Event.from_ipc_handle

torch.npu.Event.from_ipc_handle

+

torch.npu.Event.from_ipc_handle

+

40

torch.cuda.Event.ipc_handle

torch.npu.Event.ipc_handle

+

torch.npu.Event.ipc_handle

+

41

torch.cuda.Event.query

torch.npu.Event.query

+

torch.npu.Event.query

+

42

torch.cuda.Event.record

torch.npu.Event.record

+

torch.npu.Event.record

+

43

torch.cuda.Event.synchronize

torch.npu.Event.synchronize

+

torch.npu.Event.synchronize

+

44

torch.cuda.Event.wait

torch.npu.Event.wait

+

torch.npu.Event.wait

+

45

torch.cuda.empty_cache

torch.npu.empty_cache

+

torch.npu.empty_cache

+

46

torch.cuda.memory_stats

torch.npu.memory_stats

+

torch.npu.memory_stats

+

47

torch.cuda.memory_summary

torch.npu.memory_summary

+

torch.npu.memory_summary

+

48

torch.cuda.memory_snapshot

torch.npu.memory_snapshot

+

torch.npu.memory_snapshot

+

49

torch.cuda.memory_allocated

torch.npu.memory_allocated

+

torch.npu.memory_allocated

+

50

torch.cuda.max_memory_allocated

torch.npu.max_memory_allocated

+

torch.npu.max_memory_allocated

+

51

torch.cuda.reset_max_memory_allocated

torch.npu.reset_max_memory_allocated

+

torch.npu.reset_max_memory_allocated

+

52

torch.cuda.memory_reserved

torch.npu.memory_reserved

+

torch.npu.memory_reserved

+

53

torch.cuda.max_memory_reserved

torch.npu.max_memory_reserved

+

torch.npu.max_memory_reserved

+

54

torch.cuda.memory_cached

torch.npu.memory_cached

+

torch.npu.memory_cached

+

55

torch.cuda.max_memory_cached

torch.npu.max_memory_cached

+

torch.npu.max_memory_cached

+

56

torch.cuda.reset_max_memory_cached

torch.npu.reset_max_memory_cached

+

torch.npu.reset_max_memory_cached

+

57

torch.cuda.nvtx.mark

torch.npu.nvtx.mark

+

torch.npu.nvtx.mark

+

58

torch.cuda.nvtx.range_push

torch.npu.nvtx.range_push

+

torch.npu.nvtx.range_push

+

59

torch.cuda.nvtx.range_pop

torch.npu.nvtx.range_pop

+

torch.npu.nvtx.range_pop

+

60

torch.cuda._sleep

torch.npu._sleep

+

torch.npu._sleep

+

61

torch.cuda.Stream.priority_range

torch.npu.Stream.priority_range

+

torch.npu.Stream.priority_range

+

62

torch.cuda.get_device_properties

torch.npu.get_device_properties

+

torch.npu.get_device_properties

+

63

torch.cuda.amp.GradScaler

torch.npu.amp.GradScaler

+

torch.npu.amp.GradScaler

+

DYNAMIC_COMPILE_ENABLE

(可选)动态shape特性功能,针对shape变化场景,开启设置为1

+

(可选)动态shape特性功能,针对shape变化场景,开启设置为1(PyTorch1.8.1不支持该环境变量)。

COMBINED_ENABLE

(可选)非连续两个算子组合类场景优化,开启设置为1

+

(可选)非连续两个算子组合类场景优化,开启设置为1。

RI_COMBINED_ENABLE

(可选)非连续三个算子组合类场景优化,开启设置为1

+

(可选)非连续三个算子组合类场景优化,开启设置为1。

ACL_DUMP_DATA

(可选)算子数据dump功能,调试时使用,开启设置为1

+

(可选)算子数据dump功能,调试时使用,开启设置为1。

DYNAMIC_OP

@@ -335,7 +342,6 @@ │ ├─gen.sh │ ├─src # 源码目录 │ ├─tests # 测试用例存放目录 - │ ├─README.md ``` 2. 运行如下命令,进入“apex“目录,并获取原生apex源代码。 @@ -356,7 +362,6 @@ │ ├─gen.sh │ ├─src # 源码目录 │ ├─tests # 测试用例存放目录 - │ ├─README.md ``` 3. 进入原生apex代码目录,即“apex/apex“目录。切换至commitid为4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a的代码分支。 @@ -364,7 +369,6 @@ ``` cd apex git checkout 4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a - cd .. ``` >![](public_sys-resources/icon-note.gif) **说明:** @@ -387,14 +391,14 @@ python3 setup.py --cpp_ext --npu_float_status bdist_wheel ``` - 生成的二进制包在当前的dist目录下,即“apex/apex/dist”文件夹目录下。 + Python版本需与PyTorch使用的Python一致,生成的二进制包在当前的dist目录下,即“apex/apex/dist”文件夹目录下。 4. 安装apex。 进入“apex/apex/dist“文件夹目录,执行如下命令安装。 ``` - pip3.7 install --upgrade apex-0.1+ascend-cp37-cp37m-linux_{arch}.whl + pip3 install --upgrade apex-0.1+ascend-cp37-cp37m-linux_{arch}.whl ``` **\{arch\}**表示架构信息,为aarch64或x86\_64。 @@ -404,51 +408,6 @@ >**pip3 list | grep apex** -

使用Ascend Hub镜像

- -- **[Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像md)** - -- **[配置环境变量](#配置环境变量-0md)** - - -

Ascend Hub获取PyTorch镜像

- -#### 前提条件 - -- 已准备好相应硬件环境驱动和固件的安装,请参见各硬件产品[“驱动和固件安装升级指南”](https://support.huawei.com/enterprise/zh/category/ai-computing-platform-pid-1557196528909)。需要在硬件设备上安装与CANN版本配套的固件与驱动。 -- 宿主机上已安装Docker。 - -#### 获取并使用镜像 - -用户可登录[Ascend Hub](https://ascendhub.huawei.com/#/home)获取相应镜像(首次申请需要激活账号)。 - -当前支持的镜像列表如[表1](#zh-cn_topic_0000001118701830_zh-cn_topic_0000001074498056_table1519011227314)所示。用户可根据实际选择所需的镜像进行下载并使用。 - -**表 1** 镜像列表 - - - - - - - - - - - - -

镜像名称

-

镜像版本

-

配套CANN版本

-
-

21.0.2

-

5.0.2

-
- -

配置环境变量

- -启动并进入镜像容器后,请参见[配置环境变量](#配置环境变量md)配置模型训练依赖的环境变量。 -

参考信息

- **[CMake安装方法](#CMake安装方法md)** diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/210926103326800.png" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/210926103326800.png" new file mode 100644 index 0000000000000000000000000000000000000000..c80fd7d78db31105935b2d63c07ad620e61b1803 GIT binary patch literal 14379 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 literal 0 HcmV?d00001 diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/figures/\347\216\257\345\242\203\345\207\206\345\244\207\346\265\201\347\250\213\345\233\276.png" deleted file mode 100644 index 8b6f8a733933b101007a233938709dbe3454e899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29241 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 diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" index 12cc6c8103d..f48ac358650 100644 --- "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" @@ -8,10 +8,13 @@ - [前提条件](#前提条件md) - [获取PyTorch源码](#获取PyTorch源码md) - [注册算子开发](#注册算子开发md) + - [概述](#概述md) + - [PyTorch1.5.0 注册算子开发](#PyTorch1-5-0-注册算子开发md) + - [PyTorch1.8.1 注册算子开发](#PyTorch1-8-1-注册算子开发md) - [算子适配插件开发](#算子适配插件开发md) - [编译和安装PyTorch框架](#编译和安装PyTorch框架md) - [算子功能验证](#算子功能验证md) - - [概述](#概述md) + - [概述](#概述-0md) - [实现过程](#实现过程md) - [FAQ](#FAQmd) - [Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败md) @@ -33,7 +36,7 @@

算子开发流程

-Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。 +PyTorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。 1. TBE算子开发:昇腾AI软件栈中不包含相应的算子,需要先完成TBE算子的开发,再进行PyTorch框架下的算子适配。 @@ -128,39 +131,27 @@ Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。

环境准备

-#### 前提条件 - - 需完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南》。 +- 需安装python版本为3.7.5或3.8。 - 需安装3.12.0及以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法md)。 - 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参见《CANN 软件安装指南》中的“安装7.3.0版本gcc”章节。 - 需确保环境中已安装git工具,以Ubuntu和CentOS系统为例,命令如下: - Ubuntu系统 ``` + apt-get install patch apt-get install git ``` - CentOS系统 ``` + yum install patch yum install git ``` -#### 安装PyTorch依赖环境 - -如果使用非root用户安装Python及其依赖,用户需要在每句命令末尾加上**--user**,保证安装的正常进行。命令示例为:**pip3.7 install pyyaml --user** - -``` -pip3.7 install pyyaml -pip3.7 install wheel -pip3.7 install Pillow==5.3.0 -``` - ->![](public_sys-resources/icon-note.gif) **说明:** ->若以上过程出错,请参考[FAQ](#FAQmd)尝试解决问题。 -

算子速查

进行算子开发时,您可以查询当前昇腾AI处理器中支持的算子列表和当前PyTorch适配的算子列表。根据查询结果进行算子开发或PyTorch算子适配。 @@ -197,24 +188,24 @@ pip3.7 install Pillow==5.3.0

获取PyTorch源码

-从gitee上获取适配昇腾AI处理器的PyTorch源代码,获取地址为: [https://gitee.com/ascend/pytorch-develop](https://gitee.com/ascend/pytorch-develop) 。用户可以通过执行下面git命令行下载源代码。 +目前只支持PyTorch1.5.0和1.8.1版本,PyTorch源码获取请参见《PyTorch安装指南》中“安装PyTorch框架”章节,完成在"pytorch/pytorch"目录生成适配昇腾AI处理器的全量代码步骤。将在pytorch/pytorch目录中进行PyTorch 算子适配开发。 -``` -git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 -``` +

注册算子开发

-下载成功后,得到pytorch文件目录。 +- **[概述](#概述md)** ->![](public_sys-resources/icon-note.gif) **说明:** ->如无权限获取代码,请联系华为技术支持申请加入“Ascend”组织。 +- **[PyTorch1.5.0 注册算子开发](#PyTorch1-5-0-注册算子开发md)** -

注册算子开发

+- **[PyTorch1.8.1 注册算子开发](#PyTorch1-8-1-注册算子开发md)** -#### 概述 + +

概述

当前制定的NPU适配派发原则是NPU算子的派发不经过框架公共函数,直接派发成NPU适配的函数,即算子执行调用栈中只包含NPU适配的函数调用,不包含框架公共函数。PyTorch框架在编译时,会根据 native\_functions.yaml 的定义,按框架中定义的类型和设备分发原则,生成相应的新算子的中间层的调用说明。对于NPU,会生成在 build/aten/src/ATen/NPUType.cpp。 -#### 注册算子开发方法 +

PyTorch1.5.0 注册算子开发

+ +##### 注册算子开发方法 1. 打开native\_functions.yaml文件。 @@ -227,7 +218,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 - yaml中未存在的自定义算子 - 由于yaml中没有相关算子的信息,需要手动添加相关函数,包括函数名,参数信息,返回类型信息。 + 由于yaml中没有相关算子的信息,需要手动添加相关函数,包括函数名,参数信息,返回类型信息。添加规则及方法请参见“pytorch/aten/src/ATen/native/README.md“。 ``` - func:适配算子名称(输入参数信息) -> 返回类型 @@ -258,7 +249,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 >该格式供参考,算子适配开发过程中的函数名需与NPU\_Adapt\_Fun\_Name保持一致。 -#### 示例 +##### 示例 以torch.add\(\)算子为例介绍注册算子开发过程。 @@ -344,6 +335,94 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 +

PyTorch1.8.1 注册算子开发

+ +##### 注册算子开发方法 + +1. 打开native\_functions.yaml文件。 + + native\_functions.yaml 文件中,定义了所有算子函数原型,包括函数名称和参数等信息,每个算子函数支持不同硬件平台的派发信息。该文件所在路径为pytorch/aten/src/ATen/native/native\_functions.yaml。 + +2. 确定需要派发函数。 + - yaml 中已存在的算子 + + 将所有与待适配算子相关的函数进行派发。 + + - yaml中未存在的自定义算子 + + 由于yaml中没有相关算子的信息,需要手动添加相关函数,包括函数名,参数信息,返回类型信息。添加规则及方法请参见“pytorch/aten/src/ATen/native/README.md“。 + + ``` + - func:适配算子名称(输入参数信息) -> 返回类型 + ``` + + + +##### 示例 + +以torch.add\(\)算子为例介绍注册算子开发过程。 + +1. 打开native\_functions.yaml文件。 +2. 搜索相关函数。 + + 在yaml中搜索add,找到与add算子相关的函数描述func。由于add是PyTorch内置算子,不需要手动添加func。若是自定义算子,需要手动添加func。 + +3. 确定算子相关函数名称及其类型的func描述。 + - add.Tensor 的函数分发描述。 + + ``` + - func: add.Tensor(Tensor self, Tensor other, *, Scalar alpha=1) -> Tensor + structured_delegate: add.out + variants: function, method + dispatch: + SparseCPU, SparseCUDA: add_sparse + MkldnnCPU: mkldnn_add + ``` + + - add.Scalar 的函数分发描述。 + + ``` + - func: add.Scalar(Tensor self, Scalar other, Scalar alpha=1) -> Tensor + variants: function, method + dispatch: + DefaultBackend: add + ``` + + - add\_.Tensor 的函数分发描述。 + + ``` + - func: add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!) + variants: method + structured_delegate: add.out + dispatch: + SparseCPU, SparseCUDA: add_sparse_ + MkldnnCPU: mkldnn_add_ + ``` + + - add\_.Scalar 的函数分发描述。 + + ``` + - func: add_.Scalar(Tensor(a!) self, Scalar other, Scalar alpha=1) -> Tensor(a!) + variants: method + dispatch: + DefaultBackend: add_ + ``` + + - add.out 的函数分发描述。 + + ``` + - func: add.out(Tensor self, Tensor other, *, Scalar alpha=1, Tensor(a!) out) -> Tensor(a!) + structured: True + structured_inherits: TensorIteratorBase + dispatch: + CPU, CUDA: add_out + SparseCPU: add_out_sparse_cpu + SparseCUDA: add_out_sparse_cuda + MkldnnCPU: mkldnn_add_out + ``` + + +

算子适配插件开发

#### 简介 @@ -371,6 +450,21 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 实现算子适配主题函数,根据TBE算子原型构造得到对应的input、output、attr。 +5. (仅1.8.1版本需要操作该步骤)使用TORCH\_LIBRARY\_IMPL宏关联注册算子开发中native\_functions.yaml文件的算子描述func。 + + TORCH\_LIBRARY\_IMPL是PyTorch提供的用于注册算子分发的宏,使用方法如下。 + + ``` + Torch_LIBRARY_IMPL(aten, PrivateUse1, m){ + m.impl("yaml中算子func方法名1", TORCH_FN("对应的适配主体函数名1")) + m.impl("yaml中算子func方法名2", TORCH_FN("对应的适配主体函数名2")) + } + ``` + + - aten为命名空间,可以根据实现文件命名空间自行定义。 + - PrivateUse1为dispatchKey, 固定设置NPU。 + - m为固定字段。 + #### 示例 @@ -524,6 +618,14 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 } ``` +5. (仅1.8.1版本需要操作该步骤)使用TORCH\_LIBRARY\_IMPL宏关联注册算子。 + + ``` + TORCH_LIBRARY_IMPL(aten, NPU, m) { + m.impl("add.Tensor", TORCH_FN(add_npu)); + m.impl("add_.Tensor", TORCH_FN(add_npu_)); + m.impl("add.out", TORCH_FN(add_out_npu));} + ``` >![](public_sys-resources/icon-note.gif) **说明:** @@ -533,50 +635,48 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 #### 编译PyTorch框架 -1. 进入PyTorch工作目录 :“pytorch“。 -2. 给脚本文件赋权限: +1. 进入PyTorch工作目录 :“pytorch/pytorch“。 +2. 依赖库安装。 - **chmod +x build.sh** + ``` + pip3 install -r requirements.txt + ``` -3. 执行如下命令进行编译: +3. 编译生成pytorch的二进制安装包。 - **./build.sh** + ``` + bash build.sh --python=3.7 + 或 + bash build.sh --python=3.8 + ``` - >![](public_sys-resources/icon-note.gif) **说明:** - >首次编译持续的时间较长,可能超过30分钟,建议:若无必要,无需执行"make clean"。 + 请指定环境中python版本进行编译。编译成功后,会在pytorch/pytorch/dist”文件夹目录下生成二进制包 torch-\*.whl ,例如:torch-1.5.0+ascend.post3-cp37-cp37m-linux\_x86.whl或者torch-1.8.1+ascend-cp37-cp37m-linux\_x86.whl。 -4. 编译成功后,会在“**pytorch/dist**” 下生成 torch-\*.whl 包,例如:torch-1.5.0a0-cp37-cp37m-linux\_x86.whl。 #### 安装PyTorch框架 -1. 将[编译和安装PyTorch框架](#编译和安装PyTorch框架md)生成的torch-\*.whl包上传到服务器任一路径。 -2. 进入torch-\*.whl 所在的目录,使用pip命令完成torch安装。 - - 当前登录用户为root用户时,执行: - - ``` - pip3.7 install torch-*.whl - ``` - - 当前登录用户为非root用户时,执行: +进入“pytorch/pytorch/dist“文件夹目录,执行如下命令安装。 - ``` - pip3.7 install torch-*.whl --user - ``` +``` +pip3 install --upgrade torch-1.5.0+ascend.post3-cp37-cp37m-linux_{arch}.whl +``` +**\{arch\}**表示架构信息,为aarch64或x86\_64。 >![](public_sys-resources/icon-note.gif) **说明:** ->- 修改代码之后,需要重新执行“编译”和“安装”PyTorch过程。 ->- 安装过程中,可能会出现错误提示"torchvision 0.6.0" 版本不匹配,此问题无影响,忽略即可。 +>若环境中已安装PyTorch时,需要先卸载环境中已安装的PyTorch软件包再执行,可以通过执行如下命令查询环境上是否已安装PyTorch。 +>**pip3 list | grep torch** + +修改代码之后,需要重新执行“编译”和“安装”PyTorch过程。

算子功能验证

-- **[概述](#概述md)** +- **[概述](#概述-0md)** - **[实现过程](#实现过程md)** -

概述

+

概述

#### 简介 @@ -588,7 +688,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 进行自定义算子功能验证,通过PyTorch前端构造自定义算子的函数并运行验证。 -在https://gitee.com/ascend/pytorch-develop中 "pytorch/test/test\_npu/test\_network\_ops"目录下提供了测试用例及测试工具,供用户参考。 +在https://gitee.com/ascend/pytorch中 "pytorch/test/test\_npu"目录下提供了测试用例及测试工具,供用户参考。

实现过程

@@ -633,7 +733,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 output = output.numpy() return output - # 定义add对应场景通用函数,该函数中负责场景对应输入数据和对比CPU和NPU返回结果 + # 定义add对应场景通用函数,该函数负责输入数据并对比CPU和NPU的计算结果 def add_result(self, shape_format): for item in shape_format: cpu_input1, npu_input1 = create_common_tensor(item, 0, 100) @@ -656,7 +756,6 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 instantiate_device_type_tests(TestAdd, globals(), except_for="cpu") if __name__ == "__main__": - torch.npu.set_device("npu:0") run_tests() ``` diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" index 7e907d38300..5f125b6d8b0 100644 --- "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" @@ -14,26 +14,26 @@ - [多P训练模型迁移](#多P训练模型迁移md) - [PyTorch接口替换](#PyTorch接口替换md) - [混合精度](#混合精度md) - - [性能优化](#性能优化md) - - [概述](#概述-0md) - - [修改CPU性能模式(X86服务器)](#修改CPU性能模式X86服务器md) - - [修改CPU性能模式(ARM服务器)](#修改CPU性能模式ARM服务器md) - - [安装高性能pillow库(X86服务器)](#安装高性能pillow库X86服务器md) - - [(可选)安装指定版本OpenCV库](#可选安装指定版本OpenCV库md) - [模型训练](#模型训练md) - [性能调优和分析](#性能调优和分析md) - [前提条件](#前提条件md) - [调测过程](#调测过程md) - [总体思路](#总体思路md) - [采集训练过程相关数据](#采集训练过程相关数据md) - - [性能优化](#性能优化-1md) + - [host侧性能优化](#host侧性能优化md) + - [概述](#概述-0md) + - [修改CPU性能模式(X86服务器)](#修改CPU性能模式X86服务器md) + - [修改CPU性能模式(ARM服务器)](#修改CPU性能模式ARM服务器md) + - [安装高性能pillow库(X86服务器)](#安装高性能pillow库X86服务器md) + - [(可选)安装指定版本OpenCV库](#可选安装指定版本OpenCV库md) + - [训练过程性能优化](#训练过程性能优化md) - [亲和库](#亲和库md) - [来源介绍](#来源介绍md) - - [功能介绍](#功能介绍-2md) + - [功能介绍](#功能介绍-1md) - [精度调测](#精度调测md) - - [前提条件](#前提条件-3md) - - [调测过程](#调测过程-4md) - - [总体思路](#总体思路-5md) + - [前提条件](#前提条件-2md) + - [调测过程](#调测过程-3md) + - [总体思路](#总体思路-4md) - [精度调优方法](#精度调优方法md) - [单算子溢出检测](#单算子溢出检测md) - [整网调测](#整网调测md) @@ -49,7 +49,7 @@ - [分布式训练修改](#分布式训练修改md) - [脚本执行](#脚本执行md) - [ShuffleNet模型调优示例](#ShuffleNet模型调优示例md) - - [样例获取](#样例获取-6md) + - [样例获取](#样例获取-5md) - [模型评估](#模型评估md) - [网络迁移](#网络迁移md) - [网络调测](#网络调测md) @@ -68,11 +68,12 @@ - [在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevicemd) - [在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncsmd) - [在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what-HelpACLExecutemd) + - [在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): 0 INTERNAL ASSERT”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what-0-INTERNAL-ASSERTmd) - [在模型运行时遇到报错“ImportError: libhccl.so.”](#在模型运行时遇到报错-ImportError-libhccl-somd) - [在模型运行时遇到报错“RuntimeError: Initialize.”](#在模型运行时遇到报错-RuntimeError-Initializemd) - [在模型运行时遇到报错“TVM/te/cce error.”](#在模型运行时遇到报错-TVM-te-cce-errormd) - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failedmd) - - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-7md) + - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-6md) - [在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭export-TASK_QUEUE_ENABLE-0后仍然遇到报错-HelpACLExecutemd) - [在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1failedmd) - [模型调测常见问题](#模型调测常见问题md) @@ -226,8 +227,6 @@ - **[混合精度](#混合精度md)** -- **[性能优化](#性能优化md)** -

工具迁移

@@ -803,7 +802,7 @@ def main(): # 需屏蔽掉初始化方式 dist.init_process_group(backend='hccl',# init_method=args.dist_url, world_size=args.world_size, rank=args.rank) - model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.gpu]) + model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.gpu]) # model需要下发到npu上 train_loader = torch.utils.data.DataLoader( train_dataset, batch_size=args.batch_size, shuffle=(train_sampler is None), num_workers=args.workers, pin_memory=True, sampler=train_sampler) @@ -1104,7 +1103,171 @@ def main(): ``` -

性能优化

+

模型训练

+ +训练脚本迁移完成后,需要参见[配置环境变量](#zh-cn_topic_0000001144082004md)设置环境变量,然后执行**python3** _xxx_进行模型训练。具体样例请参考[脚本执行](#脚本执行md)。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>执行“python3 xxx“命令时,须将python3软链接到与当前pytorch适配版本的python安装路径。 + +

性能调优和分析

+ +- **[前提条件](#前提条件md)** + +- **[调测过程](#调测过程md)** + +- **[亲和库](#亲和库md)** + + +

前提条件

+ +1. 参见[样例说明](#样例说明md)改造开源代码,使模型能够正常运行,包括数据预处理,前向计算,loss计算,混合精度,反向计算,参数更新等。 +2. 模型迁移阶段优先关注模型是否能跑通,现有算子是否能满足,如果遇到不满足的算子需参见《PyTorch算子开发指南》进行算子适配开发。 +3. 优先打通单卡功能,再打通多卡功能。 + +

调测过程

+ +- **[总体思路](#总体思路md)** + +- **[采集训练过程相关数据](#采集训练过程相关数据md)** + +- **[host侧性能优化](#host侧性能优化md)** + +- **[训练过程性能优化](#训练过程性能优化md)** + + +

总体思路

+ +1. 通过训练执行结果,判断吞吐量指标是否达到预期要求。 +2. 当吞吐量指标不达标时,需要找出制约性能瓶颈的原因,主要为以下几个方面: + - 算子瓶颈,在某个算子上执行过慢。 + - copy瓶颈,非连续转连续时进行copy带来的瓶颈。 + - 框架瓶颈,由于算子格式转换带来了额外操作。 + - 编译瓶颈,由于shape或属性来回变化造成反复编译。 + +3. 针对以上制约性能瓶颈的原因进行分析与优化。 + +

采集训练过程相关数据

+ +##### Profiling数据采集 + +当模型训练过程中吞吐量指标不达标时,可以通过采集训练过程中的profiling数据,分析哪个环节、哪个算子导致的性能消耗。Profiling数据采集分为PyTorch层面和CANN层面的采集,PyTorch层面采集的是PyTorch API的数据,CANN层面采集的是TBE算子的数据。 + +请参见以下方式进行profiling数据的获取,并根据实际情况选择需要的数据采集方式。 + +- PyTorch层面Profiling数据采集。 + 1. 获取chrome\_trace文件。 + + 使用profile接口对原始代码的loss计算和优化过程进行改造。 + + ``` + # 使用ascend-pytorch适配的profile接口,即可获得,推荐只运行一个step + with torch.autograd.profiler.profile(use_npu=True) as prof: + out = model(input_tensor) + loss=loss_func(out) + loss.backward() + optimizer.zero_grad() + optimizer.step() + # 导出chrome_trace文件到指定路径 + output_path = '/home/HwHiAiUser/profile_data.json' + prof.export_chrome_trace(output_path) + ``` + + 2. 查看chrome\_trace文件。 + + chrome\_trace文件可以通过以下方式打开查看:在Chrome浏览器中输入“chrome://tracing“地址,然后将落盘文件拖到空白处即可打开文件内容,通过键盘W、A、S、D键,可以对profiler的结果进行缩放和移动。 + + +- CANN层面Profiling数据采集。 + 1. 获取性能数据文件。 + + ``` + profiler_result_path = "/home/profiling_data" # profiling 数据保存的文件夹,需提前手动创建,请根据实际指定。 + with torch.npu.profile(profiler_result_path): + out = model(input_tensor) + loss=loss_func(out,target) + loss.backward() + optimizer.zero_grad() + optimizer.step() + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >获取性能数据文件时,model、input\_tensor、target需要下发到npu上。 + + 2. 解析性能数据文件。 + + 请参见《CANN 开发辅助工具指南》中“Profiling工具使用指南(训练)”章节。 + + + +##### 获取算子信息OP\_INFO + +网络模型最终是以OP执行的,通过OPInfo日志,我们可以获取实际执行时的算子及其属性。通过get\_ascend\_op\_info.py脚本获取。 + +1. 编写get\_ascend\_op\_info.py脚本获取算子信息,脚本内容如下。 + + ``` + # -*- coding: utf-8 -*- + """用于导出OPINFO + """ + import os + import sys + import argparse + + def func(host_log_folder): + """ + :param host_log_folder: where host_log_folder addr is. + :return: + """ + host_log_files = os.listdir(host_log_folder) + result = {} + + for host_log in host_log_files: + if not host_log.endswith('.log') or host_log.endswith('.out'): + continue + with open(os.path.join(host_log_folder, host_log), 'r')as f: + host_log_lines = f.readlines() + for line in host_log_lines: + if line.startswith('[INFO] ASCENDCL') and "aclopCompile::aclOp" in line: + op_info = line.split('OpType: ')[1][:-2] + op_type = op_info.split(',')[0] + op_param = op_info[len(op_type) + 2:] + if op_type not in result.keys(): + result[op_type] = [op_param] + else: + result[op_type].append(op_param) + + with open('ascend_op_info_summary.txt', 'w')as f: + for k, v in result.items(): + v_set = set(v) + for info in v_set: + f.write(k + " " + info + "\n") + + if __name__ == "__main__": + parser = argparse.ArgumentParser(description='trans the log') + parser.add_argument('--host_log_folder', default="./", + help="input the dir name, trans the current dir with default") + ags = parser.parse_args() + func(ags.host_log_folder) + ``` + +2. 设置环境变量,将host日志打屏。 + + ``` + export ASCEND_SLOG_PRINT_TO_STDOUT=1 + ``` + +3. 设置日志级别为info,参考《CANN 日志参考》设置日志级别。 +4. 执行训练脚本,进行模型训练,训练完成后获取host侧日志,默认位置为$HOME/ascend/log/plog目录下,$HOME表示Host侧用户根目录。 +5. 解析host侧日志会在当前目录下得到OPInfo信息ascend\_op\_info\_summary.txt。 + + ``` + python3 get_ascend_op_info.py --host_log_folder $HOME/ascend/log/plog + ``` + +6. 分析TaskInfo中额外的task,尤其关注transdata。 + +

host侧性能优化

- **[概述](#概述-0md)** @@ -1117,16 +1280,17 @@ def main(): - **[(可选)安装指定版本OpenCV库](#可选安装指定版本OpenCV库md)** -

概述

+
概述
-在进行PyTorch模型迁移训练时,部分网络模型会出现1秒内识别的图像数(fps)较低、性能不达标的情况。此时需要针对服务器进行以下优化。 +在进行PyTorch模型迁移训练时,部分网络模型会出现FPS较低、性能不达标的情况。可以考虑对服务器进行以下优化尝试提高训练性能。 - 修改CPU性能模式。 - 安装高性能pillow库。 +- (可选)安装指定版本OpenCV库。 -

修改CPU性能模式(X86服务器)

+
修改CPU性能模式(X86服务器)
-##### 设置电源策略为高性能模式 +###### 设置电源策略为高性能模式 提升网络性能需要在X86服务器BIOS设置中将电源策略设为高性能模式,具体操作如下。 @@ -1153,7 +1317,7 @@ def main(): 6. 按下“F10”保存配置并重启服务器。 -##### 将CPU设置为performance模式 +###### 将CPU设置为performance模式 请使用root用户执行如下操作。 @@ -1231,9 +1395,9 @@ def main(): 4. 再次执行[步骤1](#li158435131344)查看当前CPU模式是否已设置为performance模式。 -

修改CPU性能模式(ARM服务器)

+
修改CPU性能模式(ARM服务器)
-##### 设置电源策略为高性能模式 +###### 设置电源策略为高性能模式 在某些对Host侧CPU要求较高的模型中,例如目标检测类模型,需要进行较为复杂的图像预处理,开启电源高性能模式能一定程度上提高性能和稳定性。ARM服务器提升网络性能需要在BIOS设置中将电源策略设为高性能模式,具体操作如下。 @@ -1260,7 +1424,7 @@ def main(): 6. 按下“F10”保存配置并重启服务器。 -

安装高性能pillow库(X86服务器)

+
安装高性能pillow库(X86服务器)
1. 安装高性能pillow库相关依赖,命令如下。 @@ -1311,173 +1475,14 @@ def main(): ``` -

(可选)安装指定版本OpenCV库

+
(可选)安装指定版本OpenCV库
如模型依赖OpenCV,基于训练性能考虑,建议安装OpenCV-3.4.10版本。 1. 获取源码:[获取地址](https://opencv.org/releases/)。 2. 安装指导:[获取地址](https://docs.opencv.org/3.4.10/d7/d9f/tutorial_linux_install.html)。 -

模型训练

- -训练脚本迁移完成后,需要参见[配置环境变量](#zh-cn_topic_0000001144082004)设置环境变量,然后执行**python3** _xxx_进行模型训练。具体样例请参考[脚本执行](#脚本执行md)。 - ->![](public_sys-resources/icon-note.gif) **说明:** ->执行“python3 xxx“命令时,须将python3软链接到与当前pytorch适配版本的python安装路径。 - -

性能调优和分析

- -- **[前提条件](#前提条件md)** - -- **[调测过程](#调测过程md)** - -- **[亲和库](#亲和库md)** - - -

前提条件

- -1. 参见[样例说明](#样例说明md)改造开源代码,使模型能够正常运行,包括数据预处理,前向计算,loss计算,混合精度,反向计算,参数更新等。 -2. 模型迁移阶段优先关注模型是否能跑通,现有算子是否能满足,如果遇到不满足的算子需参见《PyTorch算子开发指南》进行算子适配开发。 -3. 优先打通单卡功能,再打通多卡功能。 - -

调测过程

- -- **[总体思路](#总体思路md)** - -- **[采集训练过程相关数据](#采集训练过程相关数据md)** - -- **[性能优化](#性能优化-1md)** - - -

总体思路

- -1. 通过训练执行结果,判断吞吐量指标是否达到预期要求。 -2. 当吞吐量指标不达标时,需要找出制约性能瓶颈的原因,主要为以下几个方面: - - 算子瓶颈,在某个算子上执行过慢。 - - copy瓶颈,非连续转连续时进行copy带来的瓶颈。 - - 框架瓶颈,由于算子格式转换带来了额外操作。 - - 编译瓶颈,由于shape或属性来回变化造成反复编译。 - -3. 针对以上制约性能瓶颈的原因进行分析与优化。 - -

采集训练过程相关数据

- -##### Profiling数据采集 - -当模型训练过程中吞吐量指标不达标时,可以通过采集训练过程中的profiling数据,分析哪个环节、哪个算子导致的性能消耗。Profiling数据采集分为PyTorch层面和CANN层面的采集,PyTorch层面采集的是PyTorch API的数据,CANN层面采集的是TBE算子的数据。 - -请参见以下方式进行profiling数据的获取,并根据实际情况选择需要的数据采集方式。 - -- PyTorch层面Profiling数据采集。 - 1. 获取chrome\_trace文件。 - - 使用profile接口对原始代码的loss计算和优化过程进行改造。 - - ``` - # 使用ascend-pytorch适配的profile接口,即可获得,推荐只运行一个step - with torch.autograd.profiler.profile(use_npu=True) as prof: - out = model(input_tensor) - loss=loss_func(out) - loss.backward() - optimizer.zero_grad() - optimizer.step() - # 导出chrome_trace文件到指定路径 - output_path = '/home/HwHiAiUser/profile_data.json' - prof.export_chrome_trace(output_path) - ``` - - 2. 查看chrome\_trace文件。 - - chrome\_trace文件可以通过以下方式打开查看:在Chrome浏览器中输入“chrome://tracing“地址,然后将落盘文件拖到空白处即可打开文件内容,通过键盘W、A、S、D键,可以对profiler的结果进行缩放和移动。 - - -- CANN层面Profiling数据采集。 - 1. 获取性能数据文件。 - - ``` - profiler_result_path = "/home/profiling_data" # profiling 数据保存的文件夹,需提前手动创建,请根据实际指定。 - with torch.npu.profile(profiler_result_path) as prof: - out = model(input_tensor) - loss=loss_func(out) - loss.backward() - optimizer.zero_grad() - optimizer.step() - ``` - - 2. 解析性能数据文件。 - - 请参见《CANN 开发辅助工具指南》中“Profiling工具使用指南(训练)”章节。 - - - -##### 获取算子信息OP\_INFO - -网络模型最终是以OP执行的,通过OPInfo日志,我们可以获取实际执行时的算子及其属性。通过get\_ascend\_op\_info.py脚本获取。 - -1. 编写get\_ascend\_op\_info.py脚本获取算子信息,脚本内容如下。 - - ``` - # -*- coding: utf-8 -*- - """用于导出OPINFO - """ - import os - import sys - import argparse - - def func(host_log_folder): - """ - :param host_log_folder: where host_log_folder addr is. - :return: - """ - host_log_files = os.listdir(host_log_folder) - result = {} - - for host_log in host_log_files: - if not host_log.endswith('.log') or host_log.endswith('.out'): - continue - with open(os.path.join(host_log_folder, host_log), 'r')as f: - host_log_lines = f.readlines() - for line in host_log_lines: - if line.startswith('[INFO] ASCENDCL') and "aclopCompile::aclOp" in line: - op_info = line.split('OpType: ')[1][:-2] - op_type = op_info.split(',')[0] - op_param = op_info[len(op_type) + 2:] - if op_type not in result.keys(): - result[op_type] = [op_param] - else: - result[op_type].append(op_param) - - with open('ascend_op_info_summary.txt', 'w')as f: - for k, v in result.items(): - v_set = set(v) - for info in v_set: - f.write(k + " " + info + "\n") - - if __name__ == "__main__": - parser = argparse.ArgumentParser(description='trans the log') - parser.add_argument('--host_log_folder', default="./", - help="input the dir name, trans the current dir with default") - ags = parser.parse_args() - func(ags.host_log_folder) - ``` - -2. 设置环境变量,将host日志打屏。 - - ``` - export ASCEND_SLOG_PRINT_TO_STDOUT=1 - ``` - -3. 设置日志级别为info,参考《CANN 日志参考》设置日志级别。 -4. 执行训练脚本,进行模型训练,训练完成后获取host侧日志,默认位置为$HOME/ascend/log/plog目录下,$HOME表示Host侧用户根目录。 -5. 解析host侧日志会在当前目录下得到OPInfo信息ascend\_op\_info\_summary.txt。 - - ``` - python3 get_ascend_op_info.py --host_log_folder $HOME/ascend/log/plog - ``` - -6. 分析TaskInfo中额外的task,尤其关注transdata。 - -

性能优化

+

训练过程性能优化

##### 算子瓶颈优化 @@ -1526,14 +1531,14 @@ def main(): - **[来源介绍](#来源介绍md)** -- **[功能介绍](#功能介绍-2md)** +- **[功能介绍](#功能介绍-1md)**

来源介绍

针对公版模型中常见的网络结构和函数,我们针对性地对其进行了优化,使得运算性能大幅度提升,同时,将其集成到Pytorch框架中,便于模型性能调优中使用。 -

功能介绍

+

功能介绍

函数名

@@ -1580,23 +1585,23 @@ def main():

精度调测

-- **[前提条件](#前提条件-3md)** +- **[前提条件](#前提条件-2md)** -- **[调测过程](#调测过程-4md)** +- **[调测过程](#调测过程-3md)** -

前提条件

+

前提条件

优先在同等语义和超参下,跑一定的epoch(推荐完整epoch数的20%),使精度,loss等对齐GPU相应水平,完成后再对齐最终精度。 -

调测过程

+

调测过程

-- **[总体思路](#总体思路-5md)** +- **[总体思路](#总体思路-4md)** - **[精度调优方法](#精度调优方法md)** -

总体思路

+

总体思路

精度问题排查需要找出是哪一步出现的问题,主要以下几个方面: @@ -1641,12 +1646,12 @@ def main():
单算子溢出检测
-用户通过采集训练过程中各算子的运算结果(即Dump数据),然后查看算子是否产生溢出,从而帮助开发人员快速定位并解决算子精度问题。 +用户通过算子溢出检测功能检测算子是否有溢出,然后采集溢出算子的数据,从而帮助开发人员快速定位并解决算子精度问题。 ###### 约束说明 - 需要安装hdf5工具以支持算子dump功能,安装详情请参见[编译安装hdf5](#编译安装hdf5md); -- 本功能只提供IR级别的算子溢出检测,且只支持AICORE的溢出检测,不支持Atomic溢出检测; +- 本功能只提供IR级别的算子溢出检测,且只支持AICORE,不支持Atomic; - 须在PyTorch源代码“build.sh“文件中添加“USE\_DUMP=1”字段。 ``` @@ -1658,13 +1663,13 @@ def main(): - 使用单算子溢出检测功能时,请不要同时开启apex的动态loss scale模式和使用tensor融合功能。 -###### 采集算子Dump数据 +###### 采集溢出算子数据 ``` # check_overflow为溢出检测控制开关 # dump_path为dump文件保存路径 with torch.utils.dumper(check_overflow=check_overflow, dump_path=dump_path, load_file_path='') as dump: - # 需要算子采集的代码片段 + # 需要检测算子溢出的代码片段 ``` 模型运行过程中,如果有算子溢出,会打印出相应IR的名字。 @@ -2491,7 +2496,7 @@ if __name__ == "__main__": ##### 配置环境变量 -请参考[配置环境变量](#zh-cn_topic_0000001144082004)配置环境变量。 +请参考[配置环境变量](#zh-cn_topic_0000001144082004md)配置环境变量。 ##### 执行命令 @@ -2536,7 +2541,7 @@ python3 main.py /home/data/resnet50/imagenet --addr='1.1.1.1' \ #

ShuffleNet模型调优示例

-- **[样例获取](#样例获取-6md)** +- **[样例获取](#样例获取-5md)** - **[模型评估](#模型评估md)** @@ -2545,7 +2550,7 @@ python3 main.py /home/data/resnet50/imagenet --addr='1.1.1.1' \ # - **[网络调测](#网络调测md)** -

样例获取

+

样例获取

##### 样例获取 @@ -2647,10 +2652,10 @@ python3 main.py /home/data/resnet50/imagenet --addr='1.1.1.1' \ # 详细说明如下: -- 由于原生实现的torch.transpose\(x, 1, 2\).contiguous\(\)是使用了View类框架算子transpose,造成了非连续场景,如[copy瓶颈优化](#性能优化-1md)所描述Copy瓶颈,使用channel\_shuffle\_index\_select,在语义相同的情况下使用计算类算子替换框架类算子,从而减少耗时。 -- 由于shufflenetv2中含有大量的chunk操作,而chunk操作在Pytorch中为框架类算子,其结果会将一个tensor分割为几个等长的非连续的tensor,而非连续转连续这个操作目前耗时较长,故使用计算类算子消除非连续,如[copy瓶颈优化](#性能优化-1md)所描述Copy瓶颈。 +- 由于原生实现的torch.transpose\(x, 1, 2\).contiguous\(\)是使用了View类框架算子transpose,造成了非连续场景,如[copy瓶颈优化](#训练过程性能优化md)所描述Copy瓶颈,使用channel\_shuffle\_index\_select,在语义相同的情况下使用计算类算子替换框架类算子,从而减少耗时。 +- 由于shufflenetv2中含有大量的chunk操作,而chunk操作在Pytorch中为框架类算子,其结果会将一个tensor分割为几个等长的非连续的tensor,而非连续转连续这个操作目前耗时较长,故使用计算类算子消除非连续,如[copy瓶颈优化](#训练过程性能优化md)所描述Copy瓶颈。 - 适配层在适配算子时默认指定输出格式为输入格式,但是concat不支持C轴非16整数倍的5HD的格式,会转为4D进行处理,又由于concat后面接的是gatherv2算子,也是仅支持4D格式的算子,所以导致数据格式转换过程为5HD-\>4D-\>concat-\>5HD-\>4D-\>gatherv2-\>5HD,解决方法是修改concat输出格式,当非16整数倍时指定输出格式为4D,优化后数据格式转换过程为5HD-\>4D-\>concat-\>gatherv2-\>5HD,当前针对ShuffleNet的做法具体可参考pytorch/aten/src/ATen/native/npu/CatKernelNpu.cpp 第121行。 -- 设置weight初始化格式避免计算过程中反复的transdata,如[copy瓶颈优化](#性能优化-1md)所描述框架瓶颈。 +- 设置weight初始化格式避免计算过程中反复的transdata,如[copy瓶颈优化](#训练过程性能优化md)所描述框架瓶颈。 - 修复了DWCONV weight输出格式指定,避免一些不必要5HD-\>4D。 ##### 整网排查 @@ -3108,6 +3113,7 @@ for group in [2, 4, 8]: def cpu_op_exec(self, input1): # 调用算子 output = torch.max(input1) + output = output.to('cpu') output = output.numpy() return output @@ -3303,15 +3309,38 @@ torch.npu.finalize_dump() 2. 开启重定向日志到stdout,用于导出host日志到屏幕。 - **export ASCEND\_SLOG\_PRINT\_TO\_STDOUT=1** + **export ASCEND\_SLOG\_PRINT\_TO\_STDOUT=0** 3. 设置日志级别,日志级别设置,信息从多到少分别是 debug --\> info --\> warning --\> error --\> null,一般设置为error,调试时使用info。请参考《CANN 日志参考》设置日志级别。 + + **export ASCEND\_GLOBAL\_LOG\_LEVEL=3** + 4. dump图,主要用于查看图结构。 **export DUMP\_GE\_GRAPH=2** **export DUMP\_GRAPH\_LEVEL=3** +5. 设置Event日志开启标志。 + + **export ASCEND\_GLOBAL\_EVENT\_ENABLE=0** + +6. 设置是否开启PTCopy。 + + **export PTCOPY\_ENABLE=1** + +7. 设置是否开启combined标志。 + + **export COMBINED\_ENABLE=1** + +8. 设置特殊场景是否需要重新编译,不需要修改。 + + **export DYNAMIC\_OP="ADD\#MUL"** + +9. HCCL白名单开关。 + + **export HCCL\_WHITELIST\_DISABLE=1** +

dump op方法

@@ -3341,15 +3370,17 @@ torch.npu.set_option(option) # 以dict方式进行设置 ACL_OP_SELECT_IMPL_MODE, //选择算子是高精度实现还是高性能实现 ACL_OPTYPELIST_FOR_IMPLMODE, //列举算子类型的列表,该列表中的算子使用ACL_OP_SELECT_IMPL_MODE指定的模式 ACL_OP_DEBUG_LEVEL, //TBE算子编译debug功能开关 -ACL_DEBUG_DIR, //保存模型转换、网络迁移过程中算子编译生成的调试相关过程文件的路径,包括算子.o/.json/.cce等文件。 +ACL_DEBUG_DIR, //保存模型转换、网络迁移过程中算子编译生成的调试相关过程文件的路径,包括算子.o/.json/.cce等文件。路径必须已经存在。 ACL_OP_COMPILER_CACHE_MODE, //算子编译磁盘缓存模式 -ACL_OP_COMPILER_CACHE_DIR, //算子编译磁盘缓存的目录 +ACL_OP_COMPILER_CACHE_DIR, //算子编译磁盘缓存的路径,路径必须已经存在。 key对应的val值解释和可设置值如下: -ACL_OPTYPELIST_FOR_IMPLMODE: 用于选择算子是高精度实现还是高性能实现。如果不配置该编译选项,默认采用high_precision。 +ACL_OP_SELECT_IMPL_MODE: 用于选择算子是高精度实现还是高性能实现。如果不配置该编译选项,默认采用high_precision。 high_precision:表示网络模型中所有算子选择高精度实现。 high_performance:表示网络模型中所有算子选择高性能实现。 +ACL_OPTYPELIST_FOR_IMPLMODE:设置optype列表中算子的实现方式,该参数当前仅支持设置某个具体算子的实现方式,不支持设置多个算子。当前仅支持配置的算子为Pooling、SoftmaxV2、LRN、ROIAlign。算子类型的列表中的算子使用ACL_OP_SELECT_IMPL_MODE指定的模式。 + ACL_OP_DEBUG_LEVEL:用于配置TBE算子编译debug功能开关。 0:不开启算子debug功能。在执行atc命令当前路径算子编译生成的kernel_meta文件夹中不保留.o(算子二进制文件)和.json文件(算子描述文件)。 1:开启算子debug功能,在执行atc命令当前路径算子编译生成的kernel_meta文件夹中生成TBE指令映射文件(算子cce文件*.cce和python-cce映射文件*_loc.json),用于后续工具进行AICore Error问题定位。 @@ -3533,7 +3564,9 @@ pip3.7 install pillow==5.3.0安装失败。 - **[在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncsmd)** -- **[在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what()-HelpACLExecutemd)** +- **[在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what-HelpACLExecutemd)** + +- **[在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): 0 INTERNAL ASSERT”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what-0-INTERNAL-ASSERTmd)** - **[在模型运行时遇到报错“ImportError: libhccl.so.”](#在模型运行时遇到报错-ImportError-libhccl-somd)** @@ -3543,11 +3576,11 @@ pip3.7 install pillow==5.3.0安装失败。 - **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failedmd)** -- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-7md)** +- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-6md)** -- **[在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭(export-TASK_QUEUE_ENABLE-0)后仍然遇到报错-HelpACLExecutemd)** +- **[在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭export-TASK_QUEUE_ENABLE-0后仍然遇到报错-HelpACLExecutemd)** -- **[在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1(failed)md)** +- **[在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1failedmd)**

在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”

@@ -3595,6 +3628,50 @@ pip3.7 install pillow==5.3.0安装失败。 - 查看具体的host报错日志信息。日志默认路径为/var/log/npu/slog/host-0/,根据时间标识查找以host-0为前缀的日志文件,打开日志文件,搜索“ERROR”,查询具体的报错信息。 - 关闭多线程下发\(export TASK\_QUEUE\_ENABLE=0\),再次运行代码,一般可根据终端报错信息定位错误原因。 +

在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): 0 INTERNAL ASSERT”

+ +##### 现象描述 + +``` +import torch + +npu = "npu" + +def test_cpu(): + input = torch.randn(2000, 1000).detach().requires_grad_() + output = torch.sum(input) + output.backward(torch.ones_like(output)) + +def test_npu(): + input = torch.randn(2000, 1000).detach().requires_grad_().npu() + output = torch.sum(input) + output.backward(torch.ones_like(output)) + +if __name__ == "__main__": + test_cpu() + torch.npu.set_device(f"{npu}:1") + test_npu() +``` + +执行代码后出现如下报错。 + +![](figures/zh-cn_image_0000001208897433.png) + +##### 可能原因 + +在运行backward运算后,通过set\_decice\(\)方法手动设置device设备,导致报错。在运行backward运算时,若没有设置device,程序会自动默认初始化device为0,相当于执行了set\_device\("npu:0"\)。由于目前不支持切换device进行计算,若再通过set\_decice\(\)方法手动设置device设备,则可能出现该错误。 + +##### 处理方法 + +在运行backward运算前,通过set\_decice\(\)方法手动设置device。修改如下。 + +``` +if __name__ == "__main__": + torch.npu.set_device(f"{npu}:1") + test_cpu() + test_npu() +``` +

在模型运行时遇到报错“ImportError: libhccl.so.”

##### 现象描述 @@ -3732,7 +3809,7 @@ shell报错是在同步操作中和AI CPU错误,而日志报错信息却是在 4. 打印stack所有参数的shape、dtype、npu\_format,通过构造单算子用例复现问题。定位到问题原因为减法计算输入参数数据类型不同,导致a-b和b-a结果的数据类型不一致,最终在stack算子中报错。 5. 将stack入参数据类型转换为一致即可临时规避问题。 -

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”

+

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”

##### 现象描述 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001208897433.png" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/figures/zh-cn_image_0000001208897433.png" new file mode 100644 index 0000000000000000000000000000000000000000..1062f4a4217f6570f339fe3e1f75d2bf28b834d7 GIT binary patch literal 336820 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ïTAU;;ULX#_i3q7=R{HAUkR!;<0*B4e^Cs;r`_w2*`lSIjl0sO&<>DN83VE`!3V zO3F)@5g+7)-qZx8l?U-?v-Zf%-H6Ft#_Ho&`O7~(pu4)7s^aCOggT*6 zTC=chFMa*(tjqMp*3t}(S1eUaB2lW%a0-bhDLx2;6dxH2oWfa>9yJqFwa$Xbj3RP# zvdAy4q@uixtVk#HYNN(iU|I#smL!u?SVcv-$mb9VEHafF@Qg{PyrP1tstPjWy|EH{ zkUCoe6OxHbPA5ILh>EHeR4&iL$4-u1slm=ak&^W~MS!dK>Z%-DYHO20BA16%A(@Y<`_+S6lQt9a`^LmR2pnMX5E~v$K)04?g7X z$s;rNsFgyGZUHJY3nJ4C$<4`p%s&>|sd%MM#jA7~i-MieODtHK)ZPQ*Gbt18y|R+5 z_;9Jc8~u|`_Oe2XOA5$NPGEU?8CB)UgxMK2?3Cs~R5kU}zN-KqtpG2LjB2@3jeA%Y z1(o8OB`iye!o}LizSBi*<^G>1SRIi~VPz#ND#}=r5Q2>W4TX-Z+(2-2Iu%m9D#=Rl z!AdSz)5iAh;2%v^Rt8!5B~l+%URp$~*HpZAHc0-tcdA|TPgz5xoa^>^iGu&EDRmoD~{GBjYJ5$zn zk;{j-5o>FORm2jSZofl&g*%EV;PhGcO#e@59!OPVKb`xE@sXJN#&~HhB51nxi2hY+ zc-Xs>va_9`-d!a4>Lh(*>yQjevmYH;w0Cbx1YeRsa(-i3PBRaa1&9ge|Nj=8NLX(gLz8M@2u>u0FhT1iEI zJWguiAA91KuV!cCS#G@ZkmEHgsVGP#z}^DAQzpkh_<;W6AapuQTo)Fzr)PkznXc&N z!k%=aJzxBXWKY$!Ju(@BRi)Nw&}y|=ZlR$jV6n)qM?tU~$W!Nk@uJOsC>q%f(Is&f6#xa=8+#=%`o|k~PK`)&` z5GNVbIuD|j6tJSIf|BJqgt|GRlD;QHX6Hj>NCs6=F#=c2u7tH!8U|7g0OvhjNOB!Z~-)U|QH&c}8jJ35T5h+Va44wr=WpZ=;^R_e8UrXQBfAUsi@{B#k z7@MGSOs92tlEbSPqEnina*AU4iY$^+#C)TY(!xw4Jnc{mcCNyWMa7jQ`KpYdm8k|R zrx4=f!tiu;COSQrHJ#)9UX^0bm4LU6UOHJI>{(WoH8uaKq^hilq=jDS)TWrq9Z4_GA>LPm*4&bi z;?11AImW6)s~3WS=?mRv>@d|i6P1?B>W)$V{XakC)W+8& z|D=VxNNvGXZh@U|961H0QqC4;hvT69ezvaCF^c6YMZ9vPF;j|{moZ*q6H;b7ozE3g zJ|~96ME&L{_E zs?uTbjh5y{VqQ?3n}Lswweh5rOpZqHMdGqbswzuanwv{@dJ@5o)~JN6gTev7lzgfx zDyS%3PI81BdNGE}WLUd~le)Z&@(Qu;$Rp9m?g!7jx@MG9%rmfbVHw_%!WX*HSFzV^x*pF80Il7z5vU zLO|tF#l#19s7akVAt2UL)&Z<)dj>Ep)))b)lvPwwRg%v_ANyHgICKrSzZ+#wW}ei4 zmzOSQ@j^F=v24trDgTts=8sqp3Se1mwktF`%(C_}IeAP1h7}SpD90@{pYF>ysmqPU z(b6zq~md*M{ zslY^KiBEJq3E^It3!;gr(cqOpQBD*F0m8okuoN{8+`_V0US(|W%hF@;6zyGFpUIFb z?TK8RFRh0wN(-j^GkYpRjE|lxPV({XI=sXf^MZRlf83o1S>}B+p9AwbFrNeSIq-^d zK&|s7cVjJ`1K0S~qhB%7y`OzsN{Df@k&a*~lq$Ad`UjtXaEY$tN7=t`4;zXT@p07P zm9~mKwGGrBsHMJsfD41?*_h;w-YuSueV3US?xBD58t>gd&)LRWCf|FLqa|KgxrDKD z*Ky9CXyfp~4o;0-prtGtbJZ-U^JKuq!ciHR#kO60nf&5|+ z0$pZ~{Ygj54B_m%_%6-MZ6yY@xSmqu&#JEbeEn`W*#h{Uo(w)`a2Astg~o!6b={0z zJHmgofO=OsAt?=D4 zB(a*mVnAf2skG@ifB+xN~&pRv}M5xVRU z!^0=&u4~}Pu~RelsBHtuUb%^y^KbEw|N4T_x;pl4-$HSs7iKo$RJRRsWLq9y>IKN= z03QmyJ;~dSGt|9>aIrX*t1(I2$DK=uW^6XN`f=#i?|ARQMcR)XX8+#ZRA+i)&>8jR zHck8+Uwt@9ch_t_`#EayO5Dh?z7zD<*U`|}$GOpNRxGr`%q5yly_cB0HbVQsgB+|o z!G+t87~HfFjhQ(fv4w1FAK=dCU-JH?GaTN(pIzmNSnAa{Z5`zgf4IV#*7LM)%fMn` z`4li5fNOa>-~M${l1fm>6cVdqN5^UQl|*2bw*I-mu(@3X)rZe>Zm5-&sUi62R1(M` za@HXWA-u);4nBzyS^(9AJ3pBAb$ZCI4*fo#gWP0R3avdFTEx zXB&*|y}Q^|Dz>5ah-G`<0L?4Yu$y6qn_^~}z}}H-oIF{>fdjQPH0+>gQ6T0E7NC!M zodQqYHJU$XXoqWMp)n(SI8Uf{oMZi3qHJZmbU%-nd={Mlz)MxKbhM*=-pdF$YYDG z7k9);tvRJ9jnV`XBX$np^<+1@)q>*@^b#RiOsnW-sO zA-lQq#RZBSRmg?BN&G6>PIOWk=Y^R{jbq{p&Rm*ccZv^gVU_IeJxTqVXuJ)!glDf{ zTTM52zWq-gjn%V%&vsVkL}07b;}x0B+Fk98zxN#<-t42XZXY|U7vm&XVe1}4>9%GD zFTcn8zq-nawiyiNuRmhsL@j%^loRV_gH7}%9{goo(qt79 zL?+G)$vZg6@%0(Fsci{gVzlS(cmFlVo`o2m*r4>tZ{V}{PmYuqSb(`xFl+ZT zP`fpYl}9cyet4Ax3@f!d7Oicep`o4w2U<9BVw}O6ZG<>kqEKoG&TnP-)~uU0QeXFMRj$Bt6~7*uQrV8%vV#x1VOD3oylj+~fDT*P4X0YIf26EMQoS zQRWUotk~Ye#jZBm+Iu*CV}jP|Wb`T-3YCuJHGPa+8RBGT4GoQrY%N`ktEH)QlsdSy zhQ{V5YHI2@+;*08$BvN~<~jqYem^j5VA1vg$v-~YS&;U*z_46}d0Zt2+IqQk^EUg- zqi15Fi`*#1>%p0Jn(OLmJ3GdyzFIQ;3}_ruXt{oa^G9mfwtpY{_U)xQFA@7WeV2`Y z1`QpJyk5SL>hpi%e#2Z~Sj19Kz_MM8^lc$0KmdCSuuN^?v;X{g&3=c<)oryb&h>lzN9is_t<;S>hI?M&u!@eK7W6Z z9N$@%vyttqCm??(!@XO`4YZav*wwmN_D$a7)KDEY`;GZro*F7iV=a&=SP+!Qj{OHY z{pL4Zs?VFTLvH0mR;AHD|M7pno2c5KO6I8OFhURAW@2}&cCM7eEjh*KiuB#@-LnYaxcl2iI zmR9QOMW5Hk(9kt{x0GTfYJVuTB(E7@a&(B!re>PX-r(N7G2TcG!CIk~<{M{+`{>?Z zOIybPX9nxZ3a~-0bR~b+aR$eZaf_7Va5jPIas@&hJy#l4$vSpm{)fUbL-(HIvX1} zSbL0-J0Edw$D%p$62uO3{PK2k=EN5AgAEedL&~e?0K?)GfN4-JJNDLc=HYL-*0juc zJxNL;i;kPOc=y&2?e%rk^^8ai`PbrIX74E#J+vWuOD}Ks6cC`F+E{o2Fl-`MqKmDd zrnQSJcOOu{GJXy)EHutP;NkhBG}RuYb?BlLuk1iu32^sJcPb}GIrw-X%0dzLxF969hc4@BGTUSIl$=@gE@39w|@6Nr@M~QR8vdq zk#mfXonu9sHwyPmj$FSf`KO~{)<5eL+%UBYU`1<}ku5DY3lu68rM-OppqX&to9Cx17aXnX$*v>?WFrm7gaH8X=hy& za}(f!LZM*u*k8Ceu#q57d(9>*#Dw`_V`GD@Qv{WVZ*r}r2v5%hHuhcM z*tSAq%3Jv0?Os;6+VRHN?-}2nMo8*b`i6Vhy4VXBTMr_)^z-n-E+Vb85~%ZZfW@Lv zj#{h7(mI_JpFChsN;u1F2I$+HkHeH!r2sDk03blD%&q4b8$3X`%dC`yV8r^wEumm( zJT5Q67#6GrbDJzW?%&~1SrG2F8mt`L@bj_7LOXTL`#Hd{#$N!j=XoPMiRD`xdA%Tv z!0qRFIJA|RDgDr=?0JGQ>=dww?4_v$I~WlC{?QvU>9}{BrW{Y~ z4UV`K?qg_tkT(_wVrL#t!&@J7aa{yHHukv36tb`HjAW0EU_Yu_MYTWbr!BBMp=gGoOmf<*u|ITiAS6|Sb~R>0kukrQUL3wCXz1a#*2UA zt&L<%mP{4Gs(z- zyKeFA#6+n@fO|4xM*2xg9qcsm;MrZj>8ISl!IMYXekdg-P1GDy3Y?1EK4u3r?eU z@(QQ6ET8p{06@hi#E$@m4I$}l+S^QLR}WV|{U^V9ILy(GBQ)%Kjb!iV%b&<~wj^#n z#`#lqlqHq0wz>$Psur%_>u06CB}#`%nON`+GB4@;Xr3e;w6O|e(f){V2d-N-MjIsQVwc-o$~ z{>HgAR%q2mduDXZMIOk4SkrTZhb@bYj5BczSMNwv;T8_=TtSSN1DOXdF*XGZ3oS_B z=oG^IT(LGd5wK(@r_S`VD&7YxT@>|iJ!1HcMff|aF}F0}>FbS?L2PizQ8*{Ct>Xwg z()=*DabWZCZ#lL)1g%pz8%_*x^o_L?6>Vm7MGE@rvwZtW7nyRI1W--)k59b{Hk3k* zP0(U?bd9mMH1Y{x_-jsW2***Y!#W^`4adhgRGoy?6X5t$*Ojz|mB@q3IdS0>+v05y z{iy7Ff#J1W_}!-*+niu*??MmP%Msn2v1Z+c-}C6)Mk0J2r}}Qwnav()5g)gcyKkPS z!dD^5e@xr9P(afNK|8K$8!76;#@blrc*t=?{SR8>*6 zqLzW78|=*ulg0$4O(4r(uVG(RI$lopl%4(~_vQe@f;A_1Ph#Vt6Es%F;Vf9=3j{FS z%%}hMi1uQCY%OhZTfUR_!DCcJd!SQluwQn9kKSt~UM0saa1lF(ZqdFzRoZ+~sZ>}O zHS@=RTxEl;l{9x0Cq0ae;Yn_f)sg9Mi(c=F->%zycWpOrrYij7R?~OoEE^MCv9@(1 zU}F!L&ejlVZH84!GoSwBBbrJAuoZg!DO>3{HOR_EelrCJJ#%-^-q}I#*eMRTR^$65 zbMtv%%v5_{dHgDGwj@d$snhYA^-m9tmGQVtvFcT3s~P^&mmJ@kgpaQsZbI|l+fh2D zC3IN@IIPlJlYi_(#_MK*VIh4Y=08@2P5j~Cud>O`8sRVDADP^iw6!gqIoUvAxEl_( z-Xyl%=Bu%dxJoir#^QTIt6HN`qgKkLd6OVdm@jVPvwwa}XK4Vo7B;vo+d=!uE-GWa z(8?7^`5Y?p*#_6pT=w){p?zH%HcC%cAG^T$wrb*i&CzPqxcGU(_&-o*(iTAUZ;~&8o7QpZ*cPHw} z4zkBw=S;xP>wI@(?^L|RTEP^BTLSA_dT6Lhz*Rp@f-zyibAVxyKLSiu>nvGz>=Bn6 z<^sc+wBNYT?T!jUZOt)r3nlybn@ltp%xt_1|0sh>=sY*X>j@5Mru-vL`n`xTEWlxd zZ!9}{u2Q$+31Iklzvl9`XlcB#iOyqF-x$rS5-=z{SaswK=Z~ymk^fx(%*N}Pz_3Ek z!s<4zOtw&!T+Es^C4{W3=i;5ytaP@;$SQtv!8^qi4_U*lZ$IU{ut%fC+9#ED-B;+? zn1!u-Chb@6al5mUFgpv(+(KA#>;ab!72{wPz^We$3~N>}^5?HOu`L;2KRaCf{0Z`Q z!b0?Gs!$HxdYjQrQ8;OJ*hDR5bKe+;RwrUPHRqiNhM$b({NK}K%>3(oF3jh^d=C6V zazJPdTM&>eG=@7U4PP)Ly&wz}!0@J#-!Za1S}I&LZM4|UmPKT+r*VLb7snaBbd?+L zKH^^2D#E-I+1PiA=2c5^Put5|S6aw(vS!=Z9~iG&M$-Dzyz})ZJiIo_#KZ)n4?gDi z?;az|R{tCpuQ=`#&YHu0j7+@CxBvbd-oJI5cRu@u&)*wicToZ^;y9*>DRQNflx@vC zxYHC6MfFU+(?hPgTslT9?eNcCSbPsKyklV$p|NSi zhI$da{VWgq))6*SSZdmqDL`uOb)R9Y5g2ac=KFn;J%X{fAiR{r{hbof=(K1jcm8md zH8v`gas{TYQIt0J(z78QpU@HssNNRpB}o&QYOV3za{4jG@QeNPw5^hV;tz7^yhys9cQIr$(f)pZsWIqnV>=x zlbV`5iQ}RhdQNg^brx=75<8bMY%UnXT@qtBLIRZ3n56H2j4>>L&xSL%sV@z9tk9Im z15uP~B6|TMW5qFMP6Xp@eroOXuZqCI+ zVS=ergK6m?-`=hvN^Jz8)B%gBnYhGUO<$Q@hQpSNeErD)g~8cu=r~1VTN{HXk52)^ z0u=v_cP1y9m>A>wtzkNMuaGt%bYZ0oynT@!5mQnU=C(6Z5(4-#)mq{n6i!-ZCb@ZA z7@GW&TRYNGP3fen{TEX+e(9MSy4Fr!)StdZW10VB?L!-|o~wWSBOl+LoQc<)zq&*B z`gB~>Don%E+1b#~$i*?KyqKeEl@thgK3DXple&0Sw>!(=}eR(;yee zU0otsUf)mG`gDA}b7{Xb%HHGvbYc@rYlX+=bKE?-3V)?s+SE#@Zs6L9ZG^g8&M-D+ z;_a8j{_#orH{?FG`5=H{6RQBSws%U5;ov!}yXo&g`KovDB5rXeOY;k8z4Lc|eSSN+ zIZH@SScsR+^BKBwos9$xUl`g?mUlP{Bf~KiG;rhkF^cUiBu#C>ig$@DqW#`iJi1Uv zZm=lwWn}yc7O&orLF@frvoBK=WLqHlPUDv+0mFL|;t7jQCnnSjuh)mU*SCSNmjQ-d zBBgk>y|x6$xxjFG3lBaYpxD`;u-JIqGgs4ivX4C}L0C)r-==7-g4lZLH+=o}FmEI~ zJl3bHby1S0@5w4Nqpfq=wo>EAs_q92?25x$J9Q#ss!x=w97x+>)EJI*6`Pi`{kKeR zhJWG~I){fSSt#10@jbc92A|3SCa>RN{Nf1b2Zk7(yv*R%rFe+V1EE!`i=yViUnR|B z$#-+EYa$alznKdY{j3kOG`1~MGdx4qaZpzs9vc-(a1inbfCAF`SB{Tp38w8@(Lal!b?0h0e;3EhFD@ zd`&23&JhwYd~ACa31N$fittCh;tb!t(@Ns^0mGtCHI-rEm&of!FS4g(E-<{2H~)H* z4Nhj#hN_9nLY5vp$+2}A5))bY=gB;u`?p->LR!rTr<<1HsTV~A7t8>|7pED+3S<8~ z%@{V*`;oTyBICCwxp4h7Ct6n#7h;%U#fs~{cJ>=??^}pw4jXv-z6y;mrKdmP(w<-} zr(`{*-E&4qaCM4vS4 z&sku&kjJDXX5y8=mSf}WE{&S;jZsSC7Moo35_{joC4%hw(;Qo$g_i^jU*%Xu7A^`I zDy<7i2k&#OeI+gmM;7HBprvLL3GNo?br%0Wd++@f#kQ>tOLtdQCupKX$vFv#D1stM zMNtuRMleT23?P^jB3T3p3Sz<>w>bw4fLnJw_uO;ud&4`v@B1sBZ_HIy-Ayp;efK`+ z+%fop(c0Cu)?9NwD?MwjIWepLN8BnN!wv}uhYFQ7!ZHhSpmYn8{0&AzhKS)upH3oU zu$GZj7DF?!sk{O!&LPXj z6hl`ehL53o+bno%R2al-F=$2|x^5I9O0dGn`FqiFW;wy=Oh;7CkJpNzRhB`B>sfJxC#CLGgPrl5m5 z(Z(`%=+i>ULosw2>RM}%Gt>rx6oQPNQD}#-X$3fNWE+wLO#0!qK1j@OL)+D}Xu4F7 z^1TZY8)j!be4%$$S_8%%e2kWD6HRhReamvvHhlW)S!CN<8lS1G12KQ^S-j|ejw|O+ zqqXe}PCfX5pYHC&P{Q;e4TgkFLP1qCT27uo)y8!AI#HMs3s{XV#?zl$k?EuZg+x+> zPeWdL6;_T8fwhW*DtGD$}iua||A zxPXs8zrhdx`WDR_;$SZ&x@Eetbw>F7O{l7AVPjs~o!5Bx;3y_I+Q2$u6K?<1ifK$9 zB^2Qq$SbeLsxhH(@|%wfKmLH%cP@zXT)2jtkM5yj3|X zMKx9>gu+1mK%vBfx=wtzH3E9IOln$ycTT{r^NlE)5)CU(3bn)ZqmV*LRHJtL9Qf%t zSa516XVjqc)(%84dr^XKD}+tS$HDSKqz2g-`xo0!e2y5F+DRc8#vgow)7#TUj2M&8 zHDlM5Xc%}U6oL-Ut4`x;N@Tj&ea53!CWaT`a`#!R@s{Lq4nk^C6UtVn!^0yP2ilvkd+Kml(;>2; zW%{{Ry#fJ7Vt598)HEju;Ad2!^Y*SD9>XL*`!mji7U0#M7@OCM)7PlKH=umqVvGv6 zXZb_~ui0pOe;TX3ZP>m;$E#cx9f~kk@<6g-uq)c3aqvsm1Dm4&p_Es#Ot%_44 zdHo(dx^W0oeVw6KiR7bP9-W}8Xc54PoVB@hG4Ud~J- z=PBlzSg_pm8k4UHgx^NPXDomD8yNrX@6bR53kj5Xmt zuq5v^OM3*aX}~p#i!6nb5am&SULIb2CMS)e-&?z{Lc^02nCHVmtyV)dY!3F;9A+NF zPL8ut-`$Sf@Nf(b4M9j~7=nZR;6B*EV!F|yOFwNtx@2OQ7L#-sp$){0Z4}=$1Hm>* zk-#O-H_Ga3aK`A>WvDA#g-D8Lt=57Yw++|N?Jk_mq+k?be?^MVF?dk=W| z`y+PzEY!9&V&A+3II>U@D{?Hi(*7jH9hPkupRBt=~-oDvce6FW8Q@hu3hUwGo>pN3*!# z%(L|~#IRt9$JR6FuzO|%>~w1AYzAZ8?rUf(NMr3WC#m{t6Q}jZ%&k=@DVzy^gGj^@ zp<-}bfs=2~VL_lCTCExrN32Er+lx5UbQyJdli z_aufD91qUM9Ugum2nh*BOiBi}SDZw_?BUQ*oaL_&!<^a!lXslO#qw-;S`+DR0fk_L z$k}DM|Nb4G+`WZ6_wM7x_y3Ad-EVNOWj$gXX5!GJC)l$fjg29pnYk!yI*K*%L2z=I zj{1-Hu{lc5NM@Bv#pVF&2b^09id*jC#j}UFbNd$VJ$!<ho&r8_L?{Pv*nkG;WLNFZy4fcdrfImj0Wa4OR0}d}qhBF;1NSov@5yRSq zb$I;YB9_s$V`;vS+pO_TL+Q%h9u2vWD`M~fWrH)aAMs|1O*2pG$|7+Do&xyj2PBMEybWS7;Tbi*{b(>leBAQ0`_=7MIGh;b#+s*@dU@b!HOls(!p!p8FXDM!qUyh&|a2}0G%mhhGqJ8eEM5EvTRJmr@YR^?MX`wuj$ZH%48ZWD3{;;yj`HQHaOGrD@oU6z0Y3iq9G2Kh z@n6|th8L!7D#4Kh8;~3tis0Z-goH;T(ASlDMOzFa;@=kTKK=*@@Q1IP9kk?0%RGj6 z;`v{0U`dFckyU);bZn`r!OAhAu-A-6!JX$gnL8VSfk6lzn*j;|RlafpJoO{6xup&J z7RSO?qhJTGL`G*n1r*Nrx8z!&YgY(x$tH4>3&64bEX$Qd)=On`XjKYr>CA3=hlNk8@|XVT4X&JRp$Ak^YI{R2;l? z0TtP!V5gy5GkOeJcNW*Gm%)ej7UZEEJPAkIPhwA6Bn(9M8^;*YV|f0)a#U`f32$}Z z*wy_L!&$ic@h*16*@^MK-9nMJ>jcVHPr?xGaO5?f#Qr68XrN-Tpp_iQ@FTaQUt-uo zi{LSv(R{5GX+D+^)LQt?*@MdsMerMJFp=3t*@+}DCx%ZT+o3Np?CFt$gYD;0nG*+l zt=Q*>tUZJ4M_0m+h~d3usM<0MK5Bu54ARc7!G}A$5g~_?pgEZrAgIYHK`F^WH)we_ zfB6IjA!_VYlpe1`<;wAJr!mJW4K*D%P#9;=94-XcU`*U~0_AHa!AU--tP`20jO{Fo1yp4E&Q|fRdnDAs~Jg4%8gL^zfb@!?bx_+WY~{YoZu2 zCkxH1+HBRVP29 zWy45#4o^c#eJl2*hr&e=;2WQbqE$1X*YJH#ndSOuqeh9HGAiDoW}YnqCvHW3=^_Mb z#YK%m<%#%JEqHXR64U(LpeGMhn$X#)uLw4!$`jLyPT)@aPQ+Vl8G$C3-`^*NO3>N3 zA@|g4T(6jkSRVl{A#s>FH4I)(;)yu(oYvVQXmvd!$pSS3^A_RNdZcb?!Nc19NVKzt z?bs~TKKTxtQz^`V=&hnuc`$jtJHHcg25k>76NS{WAwARK2xhJ0E{Q3m= zxdtL`OCzq{X=TK)gQX4T9D9S;ho>Q2;8_TR%mq0}iw$DBC!1=c*Wmicd)OSMfk1J( zDBJ_Df#DB1IvYExvB$;`aC@d{Mh1!DY2(%Fw#wwK(gO{H~$Kz5Y zaRS_;C*#PCPxzNNr?F;qAY5ncL+8(@FpCza(!x=eN6^I~|I}U7t)C7%OD*ePyRJUN z;f29aQmR`2-=}oUG^TGwR518NKsLqRvaswfgnj9c91b>5Nuq$P;l%L zw$JeI*{3yDm~*TH9i^F~y-IZbDOrF} z_h>9FtHz$3$#6^Dgv)KakmhK>islbEvmr_hBfx7AIWr%XhqfX8!ZL0V ziY`CHk;S1z8+qL{3>N>WXF}$X2wMtRG60;ue{V?Nu$v zNp@$l%I|&cQ>E5nTGe}8*&O{%N!}=wk9$-q4mN*>1Je>P#BU_lp1*^J%`vdmQIb6Y zjvh-o?y#(^3?6`hC|#^8tzr@GL-aV`R!{V;joanx5X z!!UOh+h{A4>8N@84%JzX2#ueF!;R;$Zb}$?pL8eaB9VXnM;x6)q_=dqCT;pSwJ+u! zzK-hk!(r3gW0-fu*z6-XvVR$Rdkia7TKL5-$HAsrWRl0QRugLz%55Iwg5XDV|M<12djQ{4)cC59&N!1+gQ$Vu{m;1z?6id%U6T_wiZ zTS6DP9($Li!Jp&c>=%pD=98#fH3{x!#PH(dUAUYV!46`L?UAlkk1sfbM`anXrnN#Z z`FQOJY-;%q$G617PA`Tbp*dGdj%gJ)aqjRUI9u`1Svg=s`zPEy zx&U#$99)7&A~PczzAhHf=qI7(!xI!QvH`C%z;i|cYVJHl>CzOqNQXTdt4TQa;S-L{ zwPN!L9m)}DMc5lQdn?XVZoo)?lYZp(s01%e+t`5SW2+GDL2Cx_8a%U?iib_WD6Bbr z3i-2!i{+BNB9`LD&ws(E`nd?x8Q?v08xEg2ixuO%p;2p*x}^avyEh}j+7ep*DC}(N zM%&gjs3{h>jXj)PTo`7Dcz9vyi68LzP#T;atXPN#&zOlQt*$_JvM0NxAj?Sr$3Qs0 z#PGZS_zBkvCcxLh3$Yt(QD46gV}tCCu{f<9a&Y~>{tZ8M+-CEW#*7rzMdskvj}K8i ziu5BUA|+xttE3#I>!-qle#>bvX!=of-q?-^g%Tb^$KqhyO_aEbEQk* zY$d=jx(N3_9K{5^TJ#tW%Rt_da;%68f}P(?>{&AlkrYx%YX#34TTyfMCbrCqHr_^3 z@qt)z;t^i7=OKvjYK9@+BN_WHTtWHLSQrG+9;65Iy!9BK#`Lo^#nYHPn4WP%*Wtj5 zNeJM1IC{t6P{Ro{uAc%==2a>toFwc_IPef{h3R6_RKkZ;uQnnZH-C759q|T9Ka@m| zL&UT-Xg*PkWzk-+=6HloT!E7H8GYt4*-ql87-RVTfB%9T+tc7{?}?GQHK;#+0Er=k zq18=5Rp&$O%(jP0V+oJxTTy-QDauxi#}HnF)cgkAxn7B!L|drUJVs1kftd*^sO*BU z@IVtzmgXST-45x+=kWf1?p! z{13RiZGt3EEzaM+#E4-BwH|Yiy+r5Hc?eUfU_IC!Qx>emlriB@xWr@0`~{fc=>#pu zA%4+u{MucONjf#_Uo>w<&d5hgc`il=5)o%ws}gZY;T;z4Z$wK;7KS>}cuzz<9rjo= zd9E;dJTP)Y6^=I?L{jKrMs`yFn}6&*Zf+h59TDG>om89#DS7p{bG-^ViFVL1{j9{S z1dfGen7{7`%JZhdi*CYk0+iFM@cw2o^YEtIPD6%Gz`@E&EKBud>s+~9k>u1OIBpwG z-D|?!7%jsHt&QoA_8@}R5@`n?u}~6XA5ub~7`p9`@agh)jB~PqcK9q5-|j~BvM6vw zZmM`h%*e;dvW*xMWN(~*Wt=Ef?nqx%gOiQxG17DA;5TviD#+6G4kUZ20 zLQpbRoPUpxcXt~-hAk`%7&bW%EmxYcbaXH*+4|f9s<1UUxN;JL1OfJ*!?C-j2`6$h z;LCI1cpYX}JwsPL>BkZtQ#ayB`z5TK+)sX6aCt-Pboh z2i4b~ptG|RciYO4ok%gl#LaiV4W-2nAA;3w=dd=~fPjVjQM+ce@oJgMV*+-x-p1Px zAMo+x_xRA=jn@yaW5;xF&*?i_aPQ*oZz6_igQrjmupKfU+fLs_S63&VTt9{E zc=E~-ujnc#AH=)PE_8qR9v{E|fUaj3uw(8h45n43C<-6K5~hV$pDs7*;41FpS=clb4DSuTVfiS1E(jQE+evvPbyAal|^@ z_^}PUcQ)cqS0`RSxq@AbMzU+c6i-u?uol&KWP8##1Iyrfl7 zxrHNj&jmc`?n39I%h-147;d)}Ai;*n9SazoJh9=(DdbM_?z8wJ&(3*O&v0y6m~k^s zcq77x>@~ii9=C|jm{f?zua6;vVzc%l zhG}!C@}Gr*OxmnH*Ox^fk<8qYa!Z_ zJ&w{`6P*FegQsEM}8mEp^f49WK>gT9m9?Hmg+FUDLM`P{ILM%%R zhK=Omq*7~Dg(ed^@)6dD>>F_u6P8~KYAIEnuL4b?NTTLEYn7z{Hp;5M1<0{x$shNH_y*);+ zJcRnPyP z(^z6j<$ctxAIsvca(ozOZ>dAgwghb?A8W9-Z$m zWB1B%M$&(iT+|<2}`F!$&+ba!{*^^-f;yJRvWVTq^}iQ0iyA#1vhV`#tlT$~d_(m5xKYYZ8??0it`vcy;y?||F z!{Hjb5N$7yB2!HVvI-1x3`WYv66{_u2996wawpQ0lKZT!tiZMj!{B5_1hQ~WF2NYP z`vM-(nEvPr3J=%gYRh(vwbiqvkz;o@;5PO57k6>KAQQ1JCXaIJBeN@>3=_p7+1Qw@%H(B?49G!h!x&51*U_O(|*;!wDTEWqiP$52>Qk6T?`=y-Mm+m=i7C3$x8epr}ai&q`**nHZy ze=P!NZs~#;lV^xw{-yyhJ4cXi>} z?Ru;p7YrM-g9Ejt4c1)z8y=i3#28N5gM^|ux*3Pt(DmU1I$uA*@eO04v<<+l;=S0F zGahb~09eUmQ2HS}Kc9yXS`(x=ma?nMkoWUNPfT`^*U zoK5Qna!9ZXK+^hhQ9o=xFp-dS=#sEQ!t=}fXfK?BI9ECTc>tC-J;3|!@A2W|4{VLt z`Tib`ZpeVYG~YA*l$=86hY#p_{S=M4iL5UwITu9E*oHIrUa-0NR>MvfCP%hQ|DQw* z7vsf$oJaXl*RS2Ls?>7FJQCNxU9di(9Pq`t2u;%1LT+EMVB%Q%C01J*?#KZ1xbUwa{;?jCt zI$4B7drGLx!P+?$hi-SG`_&_yJJE{vlhs%~CKNU_jtE0Bv+64AmmN>c>JNMyDTniqmUCAjmO!rTLWlS8`qrp1gi5>SsUc zhl9e}57W2p#-0^vVptd@2SxgRJUyR}5IPLC^+n?P3Y2Y|gHUpQ=qHSc%E=$`J1^it zR~H^M6(F9HKdSt(tl=Ks5q>^N`02clV|mjN?3RGSrc#tt)#Jj84s>>PqV-UQG$$w^ zc#Or$@@i~L9|;%fpxj(PG){BDsaR5f8_zqtaO==)45m;>Tm*{Pd?91@1Kz*CjP2v1 z;TkXpCm+|KXh%J6()jcI7K&DlVPgpCTgCe#DX#{PCHQNd|&=ajxTnQpC2?9Ci0JmhY;^tBaf2 z_`}xX76wF5$;YW{Em$^2CWdK`#9?%CJ#Nwb_3|Owi)LfAtBQ?zgjr4qM_$EcHvYVM zejBB$$H1K<4{-`%ql7kW5!zoK!$Mn2(->p62I|qqf$xn6GXr`VAixGNFo1yp4E)_N zKqLZrqw*r@rsx^lktTdfu0hKDQOguW+q}s)&YC25p^rui;{>4>^*agP$pvv!J!u0q18fA zt07Q$5b0VqVV3IQXhGJCI3XQUQY-qS4YLtnur=|H%XlWH+CQAy9#(CPHhX|>SwDu?xHqda<67wMHPpcNJji=uvd>VP~4sa&n3 z1A*ch(-nG_#EOTY(SYQkeoy$J{zbZE?cfC#r;$8lSo_$uUeQa8CE`)25SG3Qn-`44 z5F3TjvyKQD+5Tc89Z@EgR4x%_tl!XvODWn}^l+j6B`_RlwQ5N}CQmQ24e5+NO?DOs zR-=A28rFBo7P5XU?H!S`a~D=l@M3oBW1ByG!A@fg$Ho!D9fb-}sYLw{A*Lh`BzF6O z+Ceu3l+2q_r4+priJYMRKv*^5-GpcA@093`61Fjq#&40I`i6ptmKDgKKN9X_FZLc` zK?OC9Ba*C~L=2K`$lIStQ|eoE<(Y6p;~|aJ^gfN#oLc;iNmkJ&G!}@@h|Chh%E)%3 zaYQAk*_M=H&bWQarcpait7h9PRJNSurPfUret6rGOd5-}O6_&$w^N;ZekxJGLRnmb4z zMBXZRHJkhC8La{6da-CrNhjoqs8X}F2mOZDI!68M-G*3iYoiBy4|xd-N*)9oV@>jYm;+GZx0WLe;C^5i$Je(=kl7w-)P_#}U$xv zo8Q$M&{~h_hvr>s3x(OC_@1n*K> zXDPllON^<5#>|%V8-Z?nNyM-`=9%;(hdrR%BAm45)EX0G_P|h|ahzfd7vafI^_b>h zBVvTvOAIeXZBa^iCS0i{JX3#H5OFm~!SF|RBK%MyQ#ynuJJbA5e`Grv<9Lmh{g&im zhuCTjTYJ;^M2BT6a*UugyM+oWYbUrl*ulou0ZyYAVpmNCa^eD^XGE-$&EX`Eag9Us z80|@Tfz?Cuu(4Y)NIXnbX%LyY4u=mEA>P;4=(%pL8|uF_AFy>htyk3Ip}6Q3OY1UP zJIV8+s2}z|y{A+_!&5j7(>x)1sVdpNMb;1NU($TS3!H>!TDOS_B&na#nD06?3B|Ri zkQFz?Xm@j2>EE=Tq}&x`6T&^4?`a)H|2M~vP78tdKD4&c(Aq}>t)Au*)0|+TQX^v8 zYLp%*#%MoLKYi9P)PHGhA&}j)Og|(m^$$U-HyeM%d5XeB(cG!gQk`08^?EV!A&oyw zPvSUA;q3?mZ2S>K{4kxXp|NG(OXsjphJaJJ8;S_Mbif#I-$* z?;1*A%Zr}H)EC)pK1%pV-v8~#P@EP6M}wufRx!?*V%ueTXb;LlM$jBC^-ID}-%t`# z_&>S7ldL@LpX5VqQ3v#%h%GTOq)|T#1x7B(L+yrmSm}tM?m4ga#>Bw?2lO+5fdLE* zU|;|P{{Re#N@p7(wwdp11o>GX;pEK$EfyION)uzxKXD<}`#UKNgY+J44(Po;<@a9r z_9~kuR(ZiA)+@@v7O$*qD%Y$%J>EC_zIQ#n|KCqLMOj5+##A5GFSS)FgX9vQ_tVBN z$|IG-eq)kV)~`ud;_s*qUGy4U`_#g&-qS`>B)ZJ>%F2>#Wo|FIy}wl+vKgm^^Mn;B zTs8+2(q>`9o?6uIUWy1ey+p{Hvk@e8GOi?fLa|vIc!Ib!0 zGrh>|r$wRBUZSjoFNQNoPIJ4na?IXko)K)3E4@qjG<#3*V)6C z=DKCFojpTK001BWNkl5u^zxn)k5*C;Y<~pSBMZNWv)x3{W zeWI<6He_X)|HiD`FFpH)cJ|*sldS#f=?ir-9I)qK(wkU5BdN$f((g@pHjN{)o=rCS zj2?{T5Rq)E+w>k0E}~xLGC%jp+H4#{&1@#?v&Y;k^{=mBUTN?|a`sAOO^m@{8e97O zzURD1SYdL=b&~9oO!D{U@{`_sf3I>Hh9$-8F)h#?YAUBsof3|iUQB)3RIc2==o#tG zq}QHfp7}FLA4XYC?JzI5_qeY#cpy1@1+vped`3T?mzA~q3-%(}Wo-3rhp0E>^Uq;K z(h-xJ)4^}t669@|2ESghj;W1A3_tu>i-}egdaI}I=iFxmoa~&rmtP3 zy3FlO<+64fZ6NB|9P6S@B)pp0i{9(eZfVXD?IGDq9-GYGGun&f>2Dn(VM^>*CTv)6 zTKJ`AA%9~g{FvvT*?48_r=P*IRF}~nMjV;u8W}si^&{)Z_%73?M^!-!VDZ?_^t1A2E$obWAw zC*#711GBZ9MX#|y#;%2a2oe@9!_tgV{oYnEw#UqFvh1uKvd+yu<@WVA{+PFkerJ@G zmEU))lb_3Vit>>DL=1^_5n1nyu=ue^Nl8U&s_8E!B^k-1Bj9N#CM!3V!^Q$SP*;K@ zV)%S53dcpkT5?9|F=v{!o#YYg?AgD>?`VEA`(CoMY!~*MUVV_h6WiDe&(gR@`!b`A zd%W9gY#Dg=8`rA?`ZMUP zP;ulXD27xpUs(NKozh~2_e{dNJvkUo-q&B+JpV4Rm}5j>o>9z0QNclHHxyIX7NVr2 z1iK5CBPG<8CENKeSMYyxyJ_=5S+~infNcPOpDliKy}wI$|3KN8=dtLe_0O&+TDX(9 z4$1k4*oAErD2XG_Jo3o%lX==R8xo$$!;E9zL*(ga(vOIB^7x_TLgcki&qzKdmxMj? z3?WYz(Sz{!$xQv0Jfq1Qo&NoYwEG{7QSwY<-aBl=^$*1UpP&b_5#fQ|wouazn7+3X z{%9N0CX?eu3{&h+ie3J#br7y(S^3X+jEnZ7L_xGc7VRb0$+6oKz3ZZ91&aeH3Y)rSJ2xnjW?VtYKVi3bQ z(@#G)PyY1!`x(Qi|BHC;s~@%BWNhBM5aInK6eBNG8VhI)p_@R|r+UlJ2(MoFG4>%g z*8R3QioABM21g?!cPGlrk6?fCYD|jug5HeK?GLlmhp3Gz7OUBWIg*#;A#YLYV}Gwc zO(ZOh^`bn#MF-;iPWb6h-@Wz!t^fa$JaV7@d+O(_a!Z6Nd12F^JkNaoJ^D=q7VO%K zg9i`x`a6Jwg;^NoVb9_z_bo$=F+FYN0!#{ahvuJQ9O< zzyJpR0T>`JCj|zn?cfzN4cTipVg1rfM7!HT7?@D|ES&!c1F5Wd3{SVilmrbNG(AIi z{1N5y7?ht%t-h+d>g6p)iUX7xosE{GnZq1?nbPhI~vaN zftQ5mp~>^HYTYKR%bEZm9mTyRQrLoxhwj5Nuw>OntY11E!`LDMHm<91jO-V(x!E{w&y)Sf7O1m^_j~ahN>4zG|=k1#PF8 z&%@GlurY5V^767VDcYZ9v;Q;grg!v4>g*M)&P|&ZVDu0NaNnpa&#?=!F)t5!d8;sQ z@(4K7)$m^L(iLW(v2!sw))aG`v-LsB>`55$8|wOJv@cz&c8f~F)O3nP`Uj0Gz4Z6b z)NUe$9Y@VU&cv{9AYcCZ7Tgvp0dA4wFl$yaylsBlA;3SA9sVp?ER+IVBN8z!BNi^d z@sPwZay(Y8&Bdm?T&!J@2EYEueiaAD*xAULIMlfIRcP%Io|KAlBLiXG51IVgwpv)g zeaw7p+O!FId8@H7BNndx$V_p%y^|JVN}Qimrv;SOUPzib5u>~u!T-*=^|NyQ=Kd?m zGb0UgUQYiU@)*33I9-%S_=oG~>*ENK)lPv!F*zw5L+r$O{(qc(zFz-8T?0BAz`y_o z1~4#yfdLGB69&Y%NjAQ*Sh}MD2MbnWer6&92OBGXL!N zX~XFjzZk^_DzJHNHs(%=g^Td#ddsoczJeHEwKthThZ$ODe~cO#1y?)W|H@6Ud|j5} z4;N4EM2fv7DAp&%6Q>xl8mg1; zKL+pT@WkRi(|Z(i@DK9BV;)1c9vHo33-+#=j$m7vz!9$({%-wnY6Q;MkE3P#kh6FJ zW=)8I9eJ*>xQIO5;ufLsKs7e66Y=aSh{?Rj+ttQr1eWYPi30_zFmGBCf*i&1kghxO zI%|yIb{TaCHe%k)Nf;UE0_|_`_NDlX6c?MtN!QyWcG&^cSFXfRifP(=(@NJXDaJX) zWu;i%6sKJ#xR~d%7^9Km5>lM$zOl1EKVGxg|0;w8F8r6M8R<(skm zIlT4$UiK~{o%FaGYF2;mcmAjUH`YnXWz;$Z#81J375O-NxebSxrNQk_Cco9Tt{9$@ ziA5Xs;nIsX{5hIkpy&{alA9yt@q>hlFrfqrC+0 z@i=(-7&d&NF6MzKjRh3zw!e6`EFQL6j9cGlTqFFdcosLDh=V?3{BN`=dF0W&Po90U z%@t~E#ANS7bKN>bl85teEK@G0&nNYFihIq8IR+>mJ zEKrO~o;SPAAoW@5`=lS$w|gFw{cXciks0q})PXEdfBKQ1{j+>31S>>m9l^y5`;qF& z_i4jFT26M|T}83<h~$0Bp)94skr#mla0Owg(O=$F>lwxKD=jQ2G@Q`!Y${@zj?UOxq%W__ziT@uDc z{fL;Q1J=Qj6ESb$5)@Ro;^K*1ME4^zVb*on1SCedNp)JVPyl<+*C0P34EoPFsE|iF zc|McwsbBRc&mZ%h1vvL4>^WC0%JT=!liwyAC1+EL@xtYKe~>88?lYo1mVZ}yKEIy$ zVtXts;1D$hhw64>UbHVX{~KgB8@IpMwt?UMiGA;P;%&et12!4JzyJmYFz`Duz^*b| z!Y^(K4%C!kevFo7<2B#Ju}vEzA;h>^;)YyYh_Pq=#4;1#5o0aM{}w;RfnI)(#mQpV zjJ`er&^t-ndU5){zJR6RtGbxr;_wZ|5rwu6kx3wpmp|EKrl zcg^ML@0t95kKeJYcRgjXFe~$$Hp+B;S{RJcS%*-$Zy82-Qz!{jTrRSUsZP=3Qk2D9 zSK_9*=WoSpf$aJsvx!`e_?{4)g514%nCj&WHDSzHkNBK61`J0=`^p%SpUbg0&9Exf zBgQime@C*ja(c)hm-UUG^sX#VuUNk(-SjMrk{&5lK3K5v0GgWWQFVAN(nh(MVkpY8 zvi4CMM0uI43I&`;q+oSPCF&ZF-W;Z4bHbA4%Vc6u& zC~a&+Q&SBN<<3E*yRDHBGU`IoHhEKh zp6!?QLYr*6kOZtRZ9;B(AoNnAGFdDw?o*fXMbqEy)*NS+i>x~i)l$;K}v5T?)cs=HhATnLNVo&c9A*r{GLE*($*gn~g zCE4o_m*!)n+)frV(Lw=r%zRYTHlTQhKh#zZ7`^&1nrhb}(kx^J^&e($6%X5Cld-*& z>~$11#mf;N=q~D4se;lc9=ZD)(A?aNy6RFaofHpyO5S6J1L`L|0m>w!xjgcC)f0m<9+-|k(|;-XpLgbVRID6r3^&3%g=1-XH4d#x$B;gr z-tzd?;#M9)OJgpg zD6yJR$9?r9+kxsja;p)W;zFP^!w-8`#!qx2Rvs#6_$k?(#$ss7@5}h%0}`=*PZbU> zPlT1G=RqPRce4viMt063MEKZ?UO(T?Wxj1Z834SP0XW{^9ZFUYn^ zjWtHCID}ItHX>RhCC`$^r=GG(aUrF8=o!O?xjg3Y(R#=^6tgxQKz(B~8XNavS%#14 z(8j3aUU;LiC3ywPnwrtn+>8?^PT*uq3yvRJfe0&2kAop1%DL%+x-yEkeK;rk`0M9!C9`ej{T~?(aS2HvP`@y}5q+j4{3OEa}dKJ$alK z*9GDjGYAU7fY@b~xOTl1lhiMeX%9Ch3X(V**M#0{2>|5^Nc#FC{;5a~NuTBAvEh<~iZBrC1ix~*q?bdpId z#{w$*AY_$PpfW!b-crIqQMV>6$aRYPS-|vTV@brbD058qekOB_R`{km1+Nqwx>ARN zlt@_7VU~;^3GdW4&MzKocjjVlm?yNxB%QKMy)hzxZ)TGov0zPc%SC&bVT*-nOUA)V zbtp&`<@qi1BGZ*wJYaL(iOOz@s5IB@Y8lgGdk zI?DZ4wi~rm)`5g|S$BkWGkLy!ewQ&qnEd>FYCaZ->ljfMm8BDA?mC8J`Li(Cs_&tM zdHVJK-sXRa1aU$C{-2^I131Z z1$Z@O-&R1QRY0dxK%=Hi$Ah48*JHgIF|1KrK%i$TG43#xN$;sO3TU+o=yeM494-9B z#Vf@o)@Z~sbz14!ph4iMUY<4?ruNWp)l&JqRHiJCRwK$|TD+OwlXXuEaKebz(hF&; zYfyV=DdPO~&`BQIJb5tkVg_nju(FKwlu1}co{T(rHDz_zfV`tv)^0%}a~Od`u`>mh z6`62AURQMWoMj?bYhX2YIZi)5i><1 zEW;LIS@M#j*oB{yM~=n$dt<#4A>)^{5c%ttAi_gVyw_KsvR>(v6SPR(b_Gvs_aZYU z7L&K`N5%1NNDiRv*DB`i!@No<`~k&NCcScmJ2jj~WMXG!1NP@mMqErd(iX49(j;j! zL)pbuJj)WUu{1zEejBcx+rx-qtH>N|-#Z`46GAa`Oa?ZVoyF1ZnFw?gH>X6#@`76O zWK)Y?!PNJ70bc2OXl`jh{(=}pL`Gohq9vF-OssQ|l+j#6nZC86_bSV1Znmj5Z@c-w zm7Enq6LV44yccP{YN({Ek(^qK)Pk#cdTbx2#f-${E&EZ~P-xN*Cx~9R=K5i{JAz=kAkZ`Wj3dNPw^QE&z_jDvKqCes}LWcXBpTj(>KL(RqN~#Hg+8r1d}(=3EI zDWK5>VR8L^Tx;HlX%W#FKXWVUPBkMtB>+sGL1O>XGMk7V>GVCtRdyPYf#S+W?8}{E z#Lu#1*;`!!rIKSA(wRpiwZEUlROU8h|EAc&D#~6jdP34Wa=#?+e?dcYjhww+%f@~3 zGVPCm=~K3ZBS9UG<<(blqHqjsXzXLz;OSNYZB)hahhjrh+-Dj`lq&MZ*MhR0v&{As zf897%3}W~pPi$%@jZcITo-(4F5pHVj80>l2iI$~K#xeNw#4zQ3~m7spr{ zqZFX|l-WchdhF9Y%fgo^D7LDU(VX-|n)wdACygCfatFPeX_OVPqRPSerVTwcB z%U<$aAQQt|#zw$a!Vl?&BVV?yigUw+<>hFoS&QLb6w6x$jZO^>Wxc0A!iylr24>#v8ZA^jFX2Tb z&8W|+c_mw87{+9w_2F6UNQi{JPRHVqs)!U{aR{edHer;t6~lo}tAW7F9-mYW#a>mj zXH=)aQ$L{fhSE$P9q2vs%BMc0P&y)c!F*)TjYs6rP(;n!h{ng4kTpsqGvzk+`BW&O zvm1hdkWhq#h9V*=3OR=_;Y!s?46zb=^aT~?it)?J&{(?;G2TQ1Qv6^w>t8hY5k3Tl zRl<*g*^(19Y+j_fSMFCt)X~|Vy)pXdb>_ZIG_@LDa%rlf>lL&bw-MA3j zsnyUN#YuhI)W6u;K&=5!a|GE-T5r(2NY8Xyx`82ixw8X5TF20uf!d*lno}C*A#*+O zLNJzATtv&RRM_chF5#hba6{7WQ+Uv_8KbQY?Dh}ooQSzWgTxyhRA&$UNV=psQlsXX z-bI^o5LC3D6!jyon?(JnL}Ga90h~X(74fzPHjc=6Cd``4s#G~+T=ro!)osK`UyX5n zWHq`7PkIx>{oqF|%R~%UZ<&c8Yb$Af7uV3{^-+5{J{UP=?P%RS9`=^xx&H-XnC1&k z4W5n9Iu^TKu9Jx2k}LHnnh*^KD@$m}Uec`uT9cCft>PA<>F#OlNr{G|rHE(oeF@JD zBU(1Mi?;`*^%xPooQm0l#(dHrjUlv8ps~O>1``h0n5Se!?7_=*D4H-FgPA;9=xE$y41Zo8nhR+T7x6>mmbms2ZN#y0&Dd|XVjt>_pPsfI#P)kiuIKneb0rJE#Ykvc zxAMldqiip^9GW*m<{!YtnoV%Gx9o8UCjVyO^K&>F_U|&vCwPKU!|R!RuEqaiKH^u|6CW-lMQ+ zMF{(>KW`~^S%{4+j1X~O!n zVQ{jvgkH--Pzx})dSgTL6C9l5%@$cyo>Jw3jKU_|I$Ml517+FnxsdK%CoQ6Aflp*4 zBj`8|E+M0^a(@LX)(nGpf)g&j_d+HSx+J@c7MX?aD9N&dd!P*tT=c}+P2RZG9fn_i z4#V@)Zb%BSfX>sB5yNf!?J(5Q0#U0x@vhqonGqJ?EIEu^Is~=t-Z)$zfcL+ILfMnlxnQ3^T+XQjuFJ9NBVP$G~iI#5G>4b zV)CrpJTJ}+L2`fv^H}cNb`g9Q3Jp9W=Ai1%dwlxk-|*`%KjHh%*LZb#2jXn> zu!+w{!?^;)F)u(B1_h-de{Ufc4flavcot4RuEgB=M{)Ia2i`opkH+GK2z4gnl1Ljr zjN4L+Coc&<&rw&91#hJSD*F)3C}_Zwk3Zty|NB4i^Y**0Zr&4NuC-ePlqgzivpf0 z%dmg{9%LoPLn~eLr%fB#)tpG`ttY~zLaAhgVbrW`s3|Q%LWms%?rTZ$ETGm;METo? z*g3`?R$48bB2%&X$Z_Olgs{!7=aj8D+f;xAdjkZGCEUjq;CSP9r27Y8N^TRHYgS@x zpcZ=C%v;&OQYUV7l`0pEOx}Tu_d4+U?E{q7w&T_1y^I*v>J2bhYZ*p(jUKTJi*dBH z5TpFWFcT^+9CIo!GTlAB-;Ny%N5F;17wrhFZMu(^!qM<_kceYTYv?pe)<3AuVY3Tx z_U;pOync;KHQNyOEo9=LK~U)(5VyPp$E(*Ok|*L$#GYE8hVplhuq(kHRvOYz3O1EB zVq-=q(~rlLtvJ(Ihy({wKSNTt;ds+_O!RiZh#A{(`pF0U{I~zcuRnjn`?s(0q;(B~ zRa$sP%tqy%PJH_H-|_2Te!++L9e8zlC*o{$(CA}OboDK|fA|;t`mcY(r|!3SeXAM^ zqP=0o2Vr^BeZ1@b3BUgPf8wW)@6qw_EQ;rhf`d{83$Iwr-(HU=&tKv7t5;|!UdA%n zGyE`e-4mHRs!?B%h_x+0;%31JXsrih%<58Hc-(@c&6n`7<27!#Z9|%u1Jp_-Y!ixc z`FSlS8nobv^clGTJF7~tEY=qeR#Q;%?iVyHwu3>dfpd5g^2<+R)AUGo_@(6hkdj}6 zM-Rv@HxZRou*wF<0q0jGKtl@f0_O- zl3$wP^U!>@8jGTRSj=b3ksHx+Z3jj(uQDYD1&+u1T}5pCu@=+_n{ogbJ38>D;|1=u zmts+jXOD3|d1C|4*A(ICl@7dq{R(%_Rb%0BnHZ)zmC%hZ#M?*Z7-OUPDlx23^00ME z!ojBNc+=5=2UlybEGYoi(p;+I!!fJ!B764q-gWF;Gzl)`eMKaRXDsFw*5S$Xmw5g9 zHJWy=fImn25&OfJiD5}U(R0vrrV3djd?CmOiJ$WrrugF%cHueM>-j?*U6UYs?G73Q zkr-}5MNI?FJ$Z(X*DukuYZCJc<^(UKuWLZ_@m!1z5=l0l!JgqqB=6{e)E*;e=b`NI zaugoDh_m~%7%?ojg@{bvYXsIEslmRiBsg#isDtO?|N5NG^ zAsZr)U3vzkt0Q4earu=T435dzQdy1c@qw7WwH{ADe!_qL-~WSu`RNnhc68uz$yA8M za0yP|JB5Aam++wD4c^>2gEf=(8I?_Du(#9?oC{IQ4gr=mj`*{tn*I_;Y$Y()}F4OZe$4 zwG4X!YIUB=#=IA$**?<_n=Vs^nXJbw0)_4gBdR!MlK!)6ymWNyK! z+mG28bES4WB8cFXJch5|ID(1(dUzydq3+@_teNJ+>_uTutYQ~nZ^JcK=7XzkSdlW4 z*^3?g^WoUo{t9n8UgGAh^Ek5a5O&TV14kD2!xu@pm3Z*%C2Qx2y_4b3lH4ib96TPI zYp>(+n>XlqbrrRXi{NMljD?WC; z$BVQ3kvP>0cED9%>9h-sVAdixPNI$lB44=)kJ2hslcH1<_o#)CH^p4UwYgpM~`&sr#; za*xKUl4_JJONFB#hgbQG$FPMG7Q+{#_QC_adDn^OWiyRLvgk2fiMDGkIC1q3o_4&( z)%t8ism%{EB>hCpKwWDER*VUf!UcSZ7*@ez{0=;Q*@3sOo}qq2lCe&~D-|VIkK^d^ zCY*cn9IrcGqh;S@1dzQ9zL=7C43EG6i2wMnzu|Ac{D60F-{9GiO!mG~Wk6umJRCbm zc<#V=r;9KpzzKrn6|OcoV0qa!oNp?}g}blWo~C7MGW;FMp(PxdW$k$LrUTFJ-^AYR zDR85ZU7jg8c)1?Mdzx^X=C3zz@aWWjBnF!6KtI^9uJbS0E?WiygcW5v}5UFnfJD9zJ=& z>TKOV8G&XuRH*N&Ll>g#QY{v_etVq!{$v^W&SaMXT@2`A00RRU7{I^)2L3P%(1w%~ zY!H&L4u|UwV|J7ZYMxHqMUs|IvX`I!7rcFW2D8Tou#N>b0=6 zO~QftXK2Ywg28hnmX^1nX4?!*T3Ldp9VfBI%>k=gzDLW35%7#o!{LV0IFu0%H=RFb z@4tvE2Qo3(>PyMY==zfiJg>vD=1v@5=!c|b`%$tr6GOtLNaP-{0tT3~#PGBh^j`OFL_9Iva}1#Rk~;SYmy% zKhBpqU{R4LuHW^=ayx3nAaDjAWAl9R_G19{&ep>H|7Y*L-=fO4^lY zvDNMF!w)vSBLTAMR&ZNWjHu1*?K982USKQd^Du*4&-vT z7a7qC7B+_QRg)RD)*h8shDK#abcQ3RPWw?<<~}HoQ@=dXk~~`FkPYeYvVx@2RndiB z<4wkj7Mk}6ZfB7ZEEa-toYHr3`Mo+)M)j}JJ$y@>JS%$W2V)QTr(HHu6&oxy~oiyM>+#^ZFf_i*{;AE=)_Rh?s)@$k#l(1wLajA0zwKMTZ^>u0#(|It1O9A%&mM)!f$+(z zIe7Xg^AlB8ok`b;xTnOyIfK2ozhFz2pxv<^00=)w%3aC3i!yM~YtcDOVb95L=&nph zB>-}nioonOv~4dYHpGkh?LTvKs{n>wnfy)%-~8n!2lGbb9W;Ub)_Yv4TZo5AgH!4* zu6=fdES*})AU`^gQTD3r@p1T zG6R*A?fZ;LT{IF@_>#S*g=5vz2ywM`q&H99$*nIMNf(s}BK}0rrK;f|t0soxYMjN9 zA3kJ9u>(4-4$sIm=9T6UC1SPB$8vV|@#}wl#MXslq^xM`JYsua0H?}GmbKpEbh#($ zAsn^CW(?cep)oqK=FIn8uFN3BEtpB0PH?h)CsV>KXmv&ww13B6Z*O5%tP+by0Mq8p zBst1@_&8zi3RW-9#6hn?Ye;7IsqZ_pD&;6R9L@`kB7Enf9t_gt-k;Mm#ZN zSY#NAv7k3Iea~IGDl-Rwd`)mRhwpsFFITEachsXxDrV=cZ#Y~Mh0Z;erH9+;K7D~p z*FWW_N5ArMZwnKRdh5DDro=fWgH6@dESwTV#+D15-CHsU42%299f?j~M`Ob#vLmfk zB)Yg|-2U}H`Q>B*v3e7M3$}6i{CSq8`=L~-30$zBt4G%3W7eY78u5Gg9Cy1bnIyND zGWQG<3pxMEMRrb!k>(5OkV9i8X~hXX`|%z-7LLJF6GZa5%iKG;6;HDkozamsJwI`E za~2`4flRDC&dFoDm=f-YakN#Q2d4^&QR?xCUP5ihEjHyPpb!U!(t(){i=!hR(^k;) z*U#9P@r;b&f%#R;3krg!y~DNRRU}2a4*}?LtPsB?T$hkqOhHC&>%N}9QsOQ()8Ex{MHM$dv{-|_Q_ zLSnQ={PU|h`u@ipT9%2oN<(^O2M*+jZqv*U#h6%Nj%?e6B|bDO0(SgL9gS*b#v_HX(5 zWRXpttsL&X#EMLRWWp|^?3ljwEPwy?19ldUvmTa2BhIjs7zQ~HpxqLJ3B z8AN&XSBpFa7`DY9h1STl{U6d(l|67zD=_>Szuw$QmYWI9xW&}m|B0rhvB+&ziMnwM z>3aVhdotoNOOna>?B+vOelAmE<*58JIB@k-KDkvxx{yaVfo0u~IA1-( zX3OE`F98f2NGLwS_kVprbK!WKJU1kHJk1)ZYAkKn1I|~?kbq)!%q%u{ouM{+9Bv{> zLZQS|dW!$^=s0st2FXXnx=`tt!Tu|sNb+R3o6%^;OY&UUmV?4xPVCGTbe%cDI}?I% zjLc;9{{j`^{8+S zoB26CgL+Jv z_dB0LstjuslqQt)?7Ve`2Q)XoXVqLE3Ui~#clXxX1trb}K*&&LMZ?QcKx^=A+H;Jtesm}jzPa}BouwzET*xQd&P&Qj!<#QLM>*|;*7yt-4IUO$I0 z+on{j&*0FPf8(1kf93A384@_9@l0S@(>3mO9%6C0Kduh(tZev}ACDJc);W_nV<$&C zs!8>bqta+mWL9zg!X6127T~DJ=2GkQB+e}1#PL@0l0zgq6s=_*?LU4(-K;ReLqZ6d zG?V4^$Eja3m4Jvj9KQ1zx9iq2)yWY@=c(*G{sm_@XJRr$kiVss`mOVbv$HrOsM? zI)}denQy-O2M_k-NadIP_f%>^C~CY*>)He?S{vPq%@zukJE`SOH0&)S!F!bS{Qa`Y z6na7@t)lK!EA!&SfyAKQh3@o@Y3#oFIhE;x#>7VNB4{QoZg}_v5)>FjaO7yFRA1oQ zp<=?+I?SOtY^>c%>Ev+SEKV#u_BZZqn}E^LgDLMGZ3R4pC+uI#V*6 z&tIcy&2-|z0ttqvwt<3(09;L0|M}@e5e^y)3DbAbCYlv` zTd99UtQWCRszMmfmxumORCeecnYQ~5U6mOF{LGq=92)N4XL~y=skPksx|s~M3X!clDs~=KjfZ$=QW&m= zbavkVhMW6Vl0GefkPshSoDIL>ou9Sy5+5I$iC$z=4WW+^_mnBLm~*PR*s+CF7yZCI zBHkMg7#0AW(PKGX-}O-#s*xxolnL|M*3!sIA&*lo$A12R&53%60zgzvh?pe-cM1h6 zM>jltg9r!+AUGn9CUU8qT7b|37{1BD#R-^{b`p5(yZS6w4wn$&5zDg1%e;S~nWE?*Tuq}{+3+1d zpDIBoGHG4on6tWuZA+#SXf~6z^#bSXmf&vDNC&tA*wFZnVSa5Z`%98=ms{r_ef)Cn z{qqy5#uy}EQR$mN&dw7YEKA2jp+Xjr&%vuFsEqQ&!Q#XE-XA#m?qrm031L=}Y+WqdwcTbfxh zDIAZ4<=p$vkEtGOKrS*)z2nK=af15t4BTyp3xRX1xqS0J55Kxe)9$%=IvWPE%KPKV zaId0d-Ci3{@s18Uwx<*3ItW6F_cXqVJ4iXKmF)($zI#WIY@`L3ZHngcb<~;<0(qy z9o_Np4aVO;fZ*^LCT_pRwT7jHssor;*-YcUQlgv`R$xw{lnz3z8N)~T^gq7iv#%d= zV#5MLH3}5Au_+f-6CVEf`Uevb6impBcc?pgj1|cdxR_^g{O1qZI?e%^ojnSl(PYB zvsYk9oX@t#11y^qgvl27g>LP2W>RZA`KYIoaYHzC)#jNT`|Af(jWscxOSowIZ^NdX8&zucSG}SF7%Guf+Rwnc#Vuj!sE^p-K&4Xn5X(XC2 zMfzsW^wg8?>>z<~0^rqn$1|_?70v zD>N-l!XhZ!GzPraT;y7FIf3Gyc6O)}^XYu=EW6X=7-+y|rzI+73n#B1BGXS$G^kLg zZ{+N`dNN#15~!>-yRxbMCXJ<$Xw`$1GHQnz9R2IY_3P8HGZPbLvjIdiOBX(Sb4Z z*3!}0#`Jg}D@B8y3}ev={`=7}X7zJIOB}-j819qgan#6B*yOq1vYcRX(6Qza%?HYe zc2*(iWi$(q^5gwoL@SMqDLKroTL-Q3$d#zlHgKj#$YZhk&w%`c>mIQOQ>c>JcJov2 z9$HIURscc4UU;|}rGpH)CXtGhUF=&r5h0JD-11&?fg4Ab59mkuuN4?R#J}}|~BR=pi^MPjr!^^vVrfba@DeI))P%@=6{)JoU?7YsEzRUDp zxz5dppK|L^Au)jyS=Q1{P0@6GQ!9CJsg@iM8!%iolSyUmJox5Q?)F~fQg1I8FZOb- zc@^BYW9YI***m6Nn1&mda+I4GafS z8K*`sHm*83;p+qWXaE=v=a=t7xb<};@3&bP=WQXEjpPqI%675GJ7oE%WL?;?L{n(VI#Vf&$_y508wodTm!N)L4md56TlJF&uhv6~aD$fGJXDE|P^5kxBk>v4G z8__xX5*|O1l++?N?ro*}R5xuK7m)1nWMJ5OXd$vpwT#Z+!jXg9m>g~yXiCDXnj& zwloVL0a&PX$n%f#(~ZrHvv@FRX+7<&YZ;@JAy=vgn$L-hVF3)Qv^vJmT|jeZ3l%vD zIN3^DwGn0XJ^F!%eSP%x_R`yXiSwrqvnqQuo&nkHzj2ax<3rGk1-{Ng;L4L+tuG|n zGoB^&ZR}k+1AkGTEi!?`&#)Ve#{->Q=fs54I*uP*N1|4S%mxDJB9_wksFzY_4GOsu zrQcZQ*R-+!_xd?Cpxdw*V`w>!)qUX#m&Pd zM42L4xb7s~%{wWXl}hHc>Fm7vPrf)_&eY_wWUpza`@{yu>f}-;yl58K*JI^`R;jc& zj$6f^w)0%*KFOg&$LQ-g#L}c-oZVB{_rcfH6$@$&9WDWL*;IRsZ3Po>3l#SHfQR>P zbNS*$$(9#-I@!A_6Mxqjmee<~d-)7}1x=3RKkfW@b1P#UT$s3|juS#2y< z!)B!lS;#^*H#X6J`4aaZbW*c&0;VCQ+%tDvJI}ITp1QREV9&)~3U(niPgd)DkZLdYPqeI;;Fc#!0{b9Phe8 zU+*QW|9t!xZZ?z>V&jp08ZfLd_%drlGcCK85aT*HhJ>t7%ovu&=hJ}U9;(t~&;*W^N;c4t!fg~CdOp!;(T8h8yBRLk(ous(fho2 zW)HJdBXLv;AJ-EzVhCKzhyuCNG zcb((QV+#q5t>nr#-OLLTS%B8Vnc;z9Tl2Zo8%PjYg$gxxshj9IvyUt%15V?rxcOrT zGo3V2#<^YWJT^B9AU_<>gk{|O&+`;H2zl(W^Nbsi$HN8;3!97g)NwOeec=n*-kE@2 ztS_Ds`|RZ!949SdS8D?$6N02QLcibHD|AF>Z=n553$wyi1BYvZTUQpcfK83fwDt9J z|Gh5uu9=8sNM`E`1H&o@#uPR3(XZcf_i`V-BJN-6qo-vZ34(5Gls!6AB5Rt@a^b>x zPVIe%v?z-N%;`s$N%mUqWsvy2g?=)(ouIxf18cma&ssJdz)#jT1cSQdM`;o!mkFJ&uvCD zaub~H_9>Ngov9gNvt!`C{g$w|a04w_YZ+*Y0EYGWBePXvZVroEo{g}dnK z-AL>*3*|czJ5OCTN`NJwU{uA(4m!{V|ZZL)_hJh=aaa(b-1rO$MxoAgc?Iw zyt9F(>V*W02CWJ;iu_i-zgtVJ(#Y82z4V^j%y^wz;_H^DRM2&{o-8-BC27%$i>G-B>*P)MB^YqV~}M9hG%=oadJ1)_GuXVXQ*&5GfS z74KQ=X=vTU;xWFsjCz}zsifat z?ny#%9hWXwP*hmU`L4s{$9SUEdXc$e8?|efFu}=;QSU|Unxo53^#A}M07*naRLlHy zVKu>86H$|w)7aTSX`&lu7hi(PTX=A_PU0BW>AV;-YYDAq+o@hS1#i*7Pw@7M3>@89 zc09O2eOfF577MN(UPQ)>CeYIntuCA;%}1%3okpNukKP=@^zB#Z-8Bzioi~{)_R`k4 zo|&VaFzMB}1Vjersh*~ z^e8Jc{RZ?CU$kG+Phnv#7rGlH{U}5>so=GJgBine^?25H-lBcmTzov7aSR*J?1tMC zFdXR=NXp_3>}zbI;qYOaTaR+}>;J`(Wo7~_LZXTZ^SDy2KyIlN{j;reiv zHXq|~$qb@hop5w?Bsh93vB6%b)gELnuV&YVawa%i{U>J46@I$7h9I?($mDXG&L3q( znlG*dj5v@oGFXuR9Ox^ZDrwxXTJ z0q+$Z5-=S4RAAUz;%tgcrTX|OcH}4FI0Te4#%5j(af=5mTOb>3EYF)+Xp}_F=3lcCR=AOZ4vTn%T(^qijQZt1yevk33D$Efq z-rY`9)j}dH;^4yCBu#Hl?a$)9y_c>pkBQ;kOhex{L zY#Q#oNAJ$rgqU>b{9?)2e~mNSa_~~Qk-2OuyEm^O$;BeYpO`gQ`Rk>11gH&!q%383 zOA8GR4K%g1a`D5z^3BJ$Xsek|fXIwCdyu>TJl(bV1PnRIu>!;2(X}KBH{s7?XR)lI zgB=UUN*uCw0;EiQhYvnKM@{QJK0987uX?b_nr3t!$KUH?&y0918qv!@j$C7HK6m!? zdI=a7K-#Dj0SxbzfMEwy8izl6kD3{QIGddD%2~_)wt5zh@xvvdoO}Oyjv@!0wXvaR z99h*?pxWEuL3l_gJ|-igd7<7vmh8iKxU_Ept~OxUUT!2HF_oneT6Iqp&MoPq2D=_>mXUk)7)#`B^Gn4YhPIfFBhqHPNYdUVy zUb_H4PiHJ4W0=wS9ygno5~gq=qpX(p_G)G)x=QnfYd{oHesUWy+`_HfP0UQ2O!>i1 z&exSQ&fA)Gt1=YR@#t%|%!|U}=1pMkMp}A0Bw*M@8_$jhAJbVHg_~B7C2WbXeG3Uv4UKCee%qmoT+hu%S11m3kQxw5haUD;+5)w~#Mr7kJnAY( zB^~I?Q8`7hr2Z^-&u(Q}m@@{qAY!)m@zt5-_(&kF3`1x#m2D^3S0wZ^_$QDUgZNvl$cWB~|N*_#ra|k|5?&2Q$tdew6L#;{DTW z7^hYsSNKy{caoFa<`L;+MCTnL+3WnSxi))QIf~;->*;H*z}rdxn|L@l_db1%G4i<) z{fzj)h!2eTz=#iw_`qxRftLe@73v`7>~5yLtD4G9>#3+cz`ouG&jg0M*Nw;G6G!pJ z22LKTW!w4+Hdk+F$C4=+wNCYVv3O81w_ zk{9(v^4)vBY~Sfg)zLtDKMZ|NU^s-cyDdaJjbd!R7x(`X#@4AS^o~l>HVqF9&vKKa zGs>Cyjz9OieQ2!nq5VcM?c1D)auf6bGG??y@z0+_SU*Nh=B`k_yzkGlDRNA)uO1kd zN`lQ(S<&+zmpgZ}VM`SiM=o&l*2!lA!#-LqK~q-IbmkP@O_gleu%3bVy5aTH}X=;4ORnU3i6y<47=nRfzmUnXY z=sLy)Y4ME7p>k^@ZPit5-B8EruG<{QOF*SiVDgG)$(AY7jT<+zsj`vN$9s4uB~&Vz_lTasro+eSIZ;FP<_fm%sAa)urDV&YAk}bs6qzUv z0pnS+t%-GWVWn(iCxEAsH-a_##1z6vg)Vf{3*&)t@_C*@8ZnS zb&U15#*sG(3@bDN%-PdI+nJqIZmM8iO&ztpA9Ayygiu94-=fv81wU%u(Vw}oWgI%e zF}(UHAANJ3Q+un}vg;6SS1z!jXcBt0H5)S`XDwSct)+VVE>3iGu(do5Pm|z8jA73H zE1W)E&-(S1?5sIXXImp>X(3otY67RM;!sN?jhi;IVf}ils<%*_9x7$03wv$Y(nxD{ z6;&JR=3x~KVK;57=Mdtk z83GzxZ75T?5S6!s1KsWH-La11tZ1|<849(5)Fnr_*t(xR)wLWv)5GB{1%$h5rSTOr zr;an%Pjm8sb$qQYU%+TDQF`mooITC7ovo#^avke-?x*I`$J`tO49nF4Ox}E&lbw6n zym2iHCwW;jS=AQeX0M=W_j)n|OphIS+Q~F{j4oo+**==<*0VHs3f_WZNj1b?cmK-g zSKCR5o;Ss_z)H$9YNzbM8^uRBUPHNR{xP{dAqZ$Dsvd zAImTooTaIo&T(dM3C@DERy5~}%Hhz-R+f!+mJZ$e{Yj#d_|Gr7cYH6~Hg2NkSU2rQ zs!0!Z9H{V7>*LsZ|DXK#e}2UNsh+6i{lLyBRIZWIe9?PiADcIDRKsfPPDQ@($C;EO3!hUKUb|= z$HtA79BXc(ad|Sng6CXrCNedTvbB{Qxb_qO^+`AD*1kjG>?C~ctmXbn7oneSdQa9# z`dL0BTA~#)x<{~}qLudgT6R=auyxxGwv}Z{>#=@$hkLbBNqoWmlY6P&P|42rZjQBW zCnL-Wh1!qVyPIe|x5wts``FRbQ2Lg98=o z*<5#&?rXPbTAqcMTuIR6mDDvg(@?pA4HXq^+rEv`tZ-yHSH{gOWpmXQHmqC6zPdK< z9bLkBouHDi#-FGe%W2rPp6LO`frHC_o!H6MMC7cX>;5&4)NbINf*Az3o22XLn`s562*RG~e9FRLj zu(ZCLPd+|R^Uf_)?mI%~?Tf6M5iC82o!U%P&TyRs47?-zE1ucY#^JA56O*}^j5s%BavhG| zv1HC$NJ&XC`8lb?`07#ExCVzcglIS+cVYC5S;V_*aEeMMGv0e(V<~_+i%$Ysd5b72 zE~dDoi0PApaTGjZw#FM`^At8|CJW{ys1vInIH(Q#Cls2RENj(ud$8^op8H z^0+Wu^j6L~0oKcuTFmj;%r7aXq+mYjS<{)Gl}xOs1-*MLIRzO6i_$v@Y;hrQ%w&=y zy)X#gQn?dBNz<(MDlTGLQY@Asji_V_1wM(B$zNPZaZwQqCI?9k?o6%`q~#Y=T)KqP z(o#xGN+>GGBtoN-c#ieP0Mc^uDJ?BwasD*oe4WsU<|3{!Pn5?fvd$F>$+j;F3JaYH zU5HY-exBs#p(+v0IAn5nCS>GNT2jQ~1sTMII7YqT)!eUBF7m=PhlLa{w@YAW$`b=bA z>Cyqc6&Dwim!5!|Nq{zTWD0kpGIFJHS+Fpll*AyM4Z`Q;lD%TaXHisCEa^NuIo>+H zgni`>ctlQQ?xF(e+T5&(xJns~gR$gEz9mXE?KO^!p0Sjwbp^z^T7eQtKZ@V!C$wKb za!EgPCH*KR{pfA_iSn>!3`^rZc@|S*T~Nz^3u@ZSba+KhCV4`nEn(rDWSlH|3E&gu<2qw3+4G7hS-hB8DM@%b8>RAc zkvXq$A4^7V2_+>Zlol-}XL1~_M$rgT_?9yPVLP|@DnLjg~K(okhvX<;W$&U6iN8+Y0ps1vjk|j$i zDJ`YAXdY>CfjFD}NuHHPoSOx?;Eb26&_|__JuwWkEdzMC?-jCIg2u3HPdi%|jgcr; z1`itSB>0B_{3A;e9e&*I`@=1vNhnpBDypfv=L zlASM&k%IZti4Sl=EviPO@#R6J81JRU6fVjqIVJ>ym{WxRL?)8CaIq8*i{?!uE;);w zWZ^$nY65Y++;0pic?A>|7m<_TBE=g^U?SyvkFj;pSSg!vs4ok7r8w>2if{5<7Krhl zIRPf1Qi_W5NE0CbSu=(&ur6&T`NhQ) z7347`-WQ{wk+99lDxHzcgJ1CXyH$iMMPu2)xl8EKH!+#Kf?`BmTQoHod$|ga=p-`J zN8=)sNzL{~dBu~NF#%tVXjG|0V+drbWUpc*dj(qUC4kgf#aV=jtV;pv>YedPOkrY# zw0U!Q@*P}#Nzck8HpoTd)$jK! zrB=_hZC5z9BL`o(piKGg^SLEVVXj!;6c(^Bb1V_gR)4m$HxM)~lf1%GN|u&WQo4lV zqQ%V4h?i&!q>MkCe&+S-CnZE$)7i_lm^@=inX`bB;$r5{${;SlB=M*B%Qf7qHDmY! z6&bV0v)OBEf}f-tDIP{9kg>2p(vR@x*yL&CBu8Kt>jt?A_wb3#ULfL6G4rM;<0>`j zRN@{rnVg(S_&CUs%Z)@#%4Wu7tN+NAO8lqhSjYQf>v+$|oI;F;1+}0J(D*VocL}9M zg)A;vM#Z7i9A2JH%V3T92g$HgEuOO`1-7@M9e-LJSH zj})PwAsNSh3F*vD@>Laot~wf#CLYGyv>Km9fo0H`rxCi6;4SvV()C~qOFfxxl9_n!jhWQpoJ z3y~A2Fm3j9vUBHCSW?3LoCK6Ar8F+gezBD8@1VM9Jg&p&M}X^cqcc8}bD3XKLVngb zJS}SM?JdM+pgo*U~ z^Wv0H3Dgq)?Bo%{wAl+J-�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%0D`V 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 bNDTZJ>)S&DfYw@*00000NkvXXu0mjfgTbl_ literal 0 HcmV?d00001 diff --git "a/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" "b/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" index c253042254a..0ebe58e9f8f 100644 --- "a/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" +++ "b/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" @@ -1,7 +1,7 @@ # PyTorch适配算子清单 -- [PyTorch原生算子与昇腾算子对应表](#PyTorch原生算子与昇腾算子对应表.md) -- [PyTorch昇腾自定义算子](#PyTorch昇腾自定义算子.md) -

PyTorch原生算子与昇腾算子对应表

+- [PyTorch原生算子与昇腾算子对应表](#PyTorch原生算子与昇腾算子对应表md) +- [PyTorch昇腾自定义算子](#PyTorch昇腾自定义算子md) +

PyTorch原生算子与昇腾算子对应表

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

序号

@@ -14,5524 +14,5636 @@

1

dropout

+

dropout

dropout_npu

+

dropout_npu

2

dropout_

+

dropout_

dropout_npu_

+

dropout_npu_

3

abs

+

abs

abs_npu

+

abs_npu

4

abs_

+

abs_

abs_npu_

+

abs_npu_

5

abs.out

+

abs.out

abs_out_npu

+

abs_out_npu

6

acos

+

acos

acos_npu

+

acos_npu

7

acos_

+

acos_

acos_npu_

+

acos_npu_

8

acos.out

+

acos.out

acos_out_npu

+

acos_out_npu

9

adaptive_avg_pool1d

+

adaptive_avg_pool1d

adaptive_avg_pool1d_npu

+

adaptive_avg_pool1d_npu

10

add.Tensor

+

add.Tensor

add_npu

+

add_npu

11

add_.Tensor

+

add_.Tensor

add_npu_

+

add_npu_

12

add.out

+

add.out

add_out_npu

+

add_out_npu

13

add.Scalar

+

add.Scalar

add_npu

+

add_npu

14

add_.Scalar

+

add_.Scalar

add_npu_

+

add_npu_

15

addmv

+

addmv

addmv_npu

+

addmv_npu

16

addmv_

+

addmv_

addmv_npu_

+

addmv_npu_

17

addmv.out

+

addmv.out

addmv_out_npu

+

addmv_out_npu

18

addr

+

addr

addr_npu

+

addr_npu

19

addr_

+

addr_

addr_npu_

+

addr_npu_

20

addr.out

+

addr.out

addr_out_npu

+

addr_out_npu

21

affine_grid_generator

+

affine_grid_generator

affine_grid_generator_npu

+

affine_grid_generator_npu

22

affine_grid_generator_backward

+

affine_grid_generator_backward

affine_grid_generator_backward_npu

+

affine_grid_generator_backward_npu

23

all.dim

+

all.dim

all_npu

+

all_npu

24

all.out

+

all.out

all_out_npu

+

all_out_npu

25

any.dim

+

any.dim

any_npu

+

any_npu

26

any.out

+

any.out

any_out_npu

+

any_out_npu

27

arange

+

arange

arange_npu

+

arange_npu

28

arange.start

+

arange.start

arange_npu

+

arange_npu

29

arange.start_step

+

arange.start_step

arange_npu

+

arange_npu

30

arange.out

+

arange.out

arange_out_npu

+

arange_out_npu

31

arange.start_out

+

arange.start_out

arange_out_npu

+

arange_out_npu

32

_dim_arange

+

_dim_arange

_dim_arange_npu

+

_dim_arange_npu

33

argmax

+

argmax

argmax_npu

+

argmax_npu

34

argmin

+

argmin

argmin_npu

+

argmin_npu

35

as_strided

+

as_strided

as_strided_npu

+

as_strided_npu

36

as_strided_

+

as_strided_

as_strided_npu_

+

as_strided_npu_

37

asin

+

asin

asin_npu

+

asin_npu

38

asin_

+

asin_

asin_npu_

+

asin_npu_

39

asin.out

+

asin.out

asin_out_npu

+

asin_out_npu

40

atan

+

atan

atan_npu

+

atan_npu

41

atan_

+

atan_

atan_npu_

+

atan_npu_

42

atan.out

+

atan.out

atan_out_npu

+

atan_out_npu

43

baddbmm

+

baddbmm

baddbmm_npu

+

baddbmm_npu

44

baddbmm_

+

baddbmm_

baddbmm_npu_

+

baddbmm_npu_

45

baddbmm.out

+

baddbmm.out

baddbmm_out_npu

+

baddbmm_out_npu

46

bartlett_window

+

bartlett_window

bartlett_window_npu

+

bartlett_window_npu

47

bartlett_window.periodic

+

bartlett_window.periodic

bartlett_window_npu

+

bartlett_window_npu

48

batch_norm

+

batch_norm

batch_norm_npu_

+

batch_norm_npu_

49

_batch_norm_impl_index

+

_batch_norm_impl_index

_batch_norm_impl_index_npu

+

_batch_norm_impl_index_npu

50

_batch_norm_impl_index_backward

+

_batch_norm_impl_index_backward

_batch_norm_impl_index_backward_npu

+

_batch_norm_impl_index_backward_npu

51

bernoulli

+

bernoulli

bernoulli_npu

+

bernoulli_npu

52

bernoulli_.Tensor

+

bernoulli_.Tensor

bernoulli_npu_

+

bernoulli_npu_

53

bernoulli_.float

+

bernoulli_.float

bernoulli_npu_

+

bernoulli_npu_

54

binary_cross_entropy

+

binary_cross_entropy

binary_cross_entropy_npu

+

binary_cross_entropy_npu

55

binary_cross_entropy.out

+

binary_cross_entropy.out

binary_cross_entropy_out_npu

+

binary_cross_entropy_out_npu

56

binary_cross_entropy_backward

+

binary_cross_entropy_backward

binary_cross_entropy_backward_npu

+

binary_cross_entropy_backward_npu

57

binary_cross_entropy_backward.grad_input

+

binary_cross_entropy_backward.grad_input

binary_cross_entropy_backward_out_npu

+

binary_cross_entropy_backward_out_npu

58

binary_cross_entropy_with_logits

+

binary_cross_entropy_with_logits

binary_cross_entropy_with_logits_npu

+

binary_cross_entropy_with_logits_npu

59

binary_cross_entropy_with_logits_backward

+

binary_cross_entropy_with_logits_backward

binary_cross_entropy_with_logits_backward_npu

+

binary_cross_entropy_with_logits_backward_npu

60

bitwise_not

+

bitwise_not

bitwise_not_npu

+

bitwise_not_npu

61

bitwise_not_

+

bitwise_not_

bitwise_not_npu_

+

bitwise_not_npu_

62

bitwise_not.out

+

bitwise_not.out

bitwise_not_out_npu

+

bitwise_not_out_npu

63

logical_not

+

logical_not

logical_not_npu

+

logical_not_npu

64

logical_not_

+

logical_not_

logical_not_npu_

+

logical_not_npu_

65

logical_not.out

+

logical_not.out

logical_not_out_npu

+

logical_not_out_npu

66

logical_and

+

logical_and

logical_and_npu

+

logical_and_npu

67

logical_and_

+

logical_and_

logical_and_npu_

+

logical_and_npu_

68

logical_and.out

+

logical_and.out

logical_and_out_npu

+

logical_and_out_npu

69

logical_or

+

logical_or

logical_or_npu

+

logical_or_npu

70

logical_or_

+

logical_or_

logical_or_npu_

+

logical_or_npu_

71

logical_or.out

+

logical_or.out

logical_or_out_npu

+

logical_or_out_npu

72

blackman_window

+

blackman_window

blackman_window_npu

+

blackman_window_npu

73

blackman_window.periodic

+

blackman_window.periodic

blackman_window_npu

+

blackman_window_npu

74

bmm

+

bmm

bmm_npu

+

bmm_npu

75

bmm.out

+

bmm.out

bmm_out_npu

+

bmm_out_npu

76

cat

+

cat

cat_npu

+

cat_npu

77

cat.out

+

cat.out

cat_out_npu

+

cat_out_npu

78

cat.names

+

cat.names

cat_npu

+

cat_npu

79

cat.names_out

+

cat.names_out

cat_out_npu

+

cat_out_npu

80

ceil

+

ceil

ceil_npu

+

ceil_npu

81

ceil_

+

ceil_

ceil_npu_

+

ceil_npu_

82

ceil.out

+

ceil.out

ceil_out_npu

+

ceil_out_npu

83

clamp

+

clamp

clamp_npu

+

clamp_npu

84

clamp_

+

clamp_

clamp_npu_

+

clamp_npu_

85

clamp.out

+

clamp.out

clamp_out_npu

+

clamp_out_npu

86

clamp_max

+

clamp_max

clamp_max_npu

+

clamp_max_npu

87

clamp_max_

+

clamp_max_

clamp_max_npu_

+

clamp_max_npu_

88

clamp_max.out

+

clamp_max.out

clamp_max_out_npu

+

clamp_max_out_npu

89

clamp_min

+

clamp_min

clamp_min_npu

+

clamp_min_npu

90

clamp_min_

+

clamp_min_

clamp_min_npu_

+

clamp_min_npu_

91

clamp_min.out

+

clamp_min.out

clamp_min_out_npu

+

clamp_min_out_npu

92

constant_pad_nd

+

constant_pad_nd

constant_pad_nd_npu

+

constant_pad_nd_npu

93

contiguous

+

contiguous

contiguous_npu

+

contiguous_npu

94

convolution

+

convolution

convolution_npu

+

convolution_npu

95

_convolution

+

_convolution

_convolution_npu

+

_convolution_npu

96

_convolution_nogroup

+

_convolution_nogroup

_convolution_nogroup_npu

+

_convolution_nogroup_npu

97

conv2d

+

conv2d

conv2d_npu_

+

conv2d_npu_

98

conv3d

+

conv3d

_conv3d_npu

+

_conv3d_npu

99

conv_tbc

+

conv_tbc

conv_tbc_npu

+

conv_tbc_npu

100

conv_tbc_backward

+

conv_tbc_backward

conv_tbc_backward_npu

+

conv_tbc_backward_npu

101

conv_transpose2d.input

+

conv_transpose2d.input

conv_transpose2d_npu_

+

conv_transpose2d_npu_

102

conv_transpose3d.input

+

conv_transpose3d.input

conv_transpose3d_npu_

+

conv_transpose3d_npu_

103

copy_

+

copy_

copy_npu_

+

copy_npu_

104

cos

+

cos

cos_npu

+

cos_npu

105

cos_

+

cos_

cos_npu_

+

cos_npu_

106

cos.out

+

cos.out

cos_out_npu

+

cos_out_npu

107

cosh

+

cosh

cosh_npu

+

cosh_npu

108

cosh_

+

cosh_

cosh_npu_

+

cosh_npu_

109

cosh.out

+

cosh.out

cosh_out_npu

+

cosh_out_npu

110

_cummax_helper

+

_cummax_helper

cummax_helper_npu

+

cummax_helper_npu

111

_cummin_helper

+

_cummin_helper

cummin_helper_npu

+

cummin_helper_npu

112

cumprod

+

cumprod

cumprod_npu

+

cumprod_npu

113

cumprod.out

+

cumprod.out

cumprod_out_npu

+

cumprod_out_npu

114

cumprod.dimname

+

cumprod.dimname

cumprod_npu

+

cumprod_npu

115

cumprod.dimname_out

+

cumprod.dimname_out

cumprod_out_npu

+

cumprod_out_npu

116

ctc_loss.IntList

+

ctc_loss.IntList

ctc_loss_npu

+

ctc_loss_npu

117

ctc_loss.Tensor

+

ctc_loss.Tensor

ctc_loss_npu

+

ctc_loss_npu

118

_ctc_loss

+

_ctc_loss

ctc_loss_npu

+

ctc_loss_npu

119

_ctc_loss_backward

+

_ctc_loss_backward

ctc_loss_backward_npu

+

ctc_loss_backward_npu

120

fill_diagonal_

+

fill_diagonal_

fill_diagonal_npu_

+

fill_diagonal_npu_

121

div.Tensor

+

div.Tensor

div_npu

+

div_npu

122

div_.Tensor

+

div_.Tensor

div_npu_

+

div_npu_

123

div.out

+

div.out

div_out_npu

+

div_out_npu

124

div.Scalar

+

div.Scalar

div_npu

+

div_npu

125

div_.Scalar

+

div_.Scalar

div_npu_

+

div_npu_

126

dot

+

dot

dot_npu

+

dot_npu

127

dot.out

+

dot.out

dot_out_npu

+

dot_out_npu

128

embedding

+

embedding

embedding_npu

+

embedding_npu

129

embedding_backward

+

embedding_backward

embedding_backward_npu

+

embedding_backward_npu

130

embedding_dense_backward

+

embedding_dense_backward

embedding_dense_backward_npu

+

embedding_dense_backward_npu

131

embedding_renorm_

+

embedding_renorm_

embedding_renorm_npu_

+

embedding_renorm_npu_

132

_embedding_bag

+

_embedding_bag

_embedding_bag_npu

+

_embedding_bag_npu

133

empty.memory_format

+

empty.memory_format

empty_npu

+

empty_npu

134

resize_

+

resize_

resize_npu_

+

resize_npu_

135

empty_like

+

empty_like

empty_like_npu

+

empty_like_npu

136

empty_strided

+

empty_strided

empty_strided_npu

+

empty_strided_npu

137

erf

+

erf

erf_npu

+

erf_npu

138

erf_

+

erf_

erf_npu_

+

erf_npu_

139

erf.out

+

erf.out

erf_out_npu

+

erf_out_npu

140

erfc

+

erfc

erfc_npu

+

erfc_npu

141

erfc_

+

erfc_

erfc_npu_

+

erfc_npu_

142

erfc.out

+

erfc.out

erfc_out_npu

+

erfc_out_npu

143

exp

+

exp

exp_npu

+

exp_npu

144

exp_

+

exp_

exp_npu_

+

exp_npu_

145

exp.out

+

exp.out

exp_out_npu

+

exp_out_npu

146

expm1

+

expm1

expm1_npu

+

expm1_npu

147

expm1_

+

expm1_

expm1_npu_

+

expm1_npu_

148

expm1.out

+

expm1.out

expm1_out_npu

+

expm1_out_npu

149

eye

+

eye

eye_npu

+

eye_npu

150

eye.m

+

eye.m

eye_npu

+

eye_npu

151

eye.out

+

eye.out

eye_out_npu

+

eye_out_npu

152

eye.m_out

+

eye.m_out

eye_out_npu

+

eye_out_npu

153

fill_.Scalar

+

fill_.Scalar

fill_npu_

+

fill_npu_

154

fill_.Tensor

+

fill_.Tensor

fill_npu_

+

fill_npu_

155

floor

+

floor

floor_npu

+

floor_npu

156

floor_

+

floor_

floor_npu_

+

floor_npu_

157

floor.out

+

floor.out

floor_out_npu

+

floor_out_npu

158

floor_divide

+

floor_divide

floor_divide_npu

+

floor_divide_npu

159

floor_divide_.Tensor

+

floor_divide_.Tensor

floor_divide_npu_

+

floor_divide_npu_

160

floor_divide.out

+

floor_divide.out

floor_divide_out_npu

+

floor_divide_out_npu

161

floor_divide.Scalar

+

floor_divide.Scalar

floor_divide_npu

+

floor_divide_npu

162

floor_divide_.Scalar

+

floor_divide_.Scalar

floor_divide_npu_

+

floor_divide_npu_

163

frac

+

frac

frac_npu

+

frac_npu

164

frac_

+

frac_

frac_npu_

+

frac_npu_

165

frac.out

+

frac.out

frac_out_npu

+

frac_out_npu

166

full.names

+

full.names

full_npu

+

full_npu

167

full

+

full

full_npu

+

full_npu

168

full.out

+

full.out

full_out_npu

+

full_out_npu

169

grid_sampler

+

grid_sampler

grid_sampler_npu

+

grid_sampler_npu

170

grid_sampler_3d

+

grid_sampler_3d

grid_sampler_3d_npu

+

grid_sampler_3d_npu

171

grid_sampler_3d_backward

+

grid_sampler_3d_backward

grid_sampler_3d_backward_npu

+

grid_sampler_3d_backward_npu

172

hann_window

+

hann_window

hann_window_npu

+

hann_window_npu

173

hann_window.periodic

+

hann_window.periodic

hann_window_npu

+

hann_window_npu

174

hamming_window

+

hamming_window

hamming_window_npu

+

hamming_window_npu

175

hamming_window.periodic

+

hamming_window.periodic

hamming_window_npu

+

hamming_window_npu

176

hamming_window.periodic_alpha

+

hamming_window.periodic_alpha

hamming_window_npu

+

hamming_window_npu

177

hamming_window.periodic_alpha_beta

+

hamming_window.periodic_alpha_beta

hamming_window_npu

+

hamming_window_npu

178

ger

+

ger

ger_npu

+

ger_npu

179

ger.out

+

ger.out

ger_out_npu

+

ger_out_npu

180

index.Tensor

+

index.Tensor

index_npu

+

index_npu

181

index_put_

+

index_put_

index_put_npu_

+

index_put_npu_

182

index_put

+

index_put

index_put_npu

+

index_put_npu

183

_index_put_impl_

+

_index_put_impl_

_index_put_impl_npu_

+

_index_put_impl_npu_

184

inverse

+

inverse

inverse_npu

+

inverse_npu

185

inverse.out

+

inverse.out

inverse_out_npu

+

inverse_out_npu

186

isclose

+

isclose

isclose_npu

+

isclose_npu

187

isnan

+

isnan

isnan_npu

+

isnan_npu

188

is_nonzero

+

is_nonzero

is_nonzero_npu

+

is_nonzero_npu

189

kl_div

+

kl_div

kl_div_npu

+

kl_div_npu

190

kl_div_backward

+

kl_div_backward

kl_div_backward_npu

+

kl_div_backward_npu

191

kthvalue

+

kthvalue

kthvalue_npu

+

kthvalue_npu

192

kthvalue.values

+

kthvalue.values

kthvalue_out_npu

+

kthvalue_out_npu

193

kthvalue.dimname

+

kthvalue.dimname

kthvalue_npu

+

kthvalue_npu

194

kthvalue.dimname_out

+

kthvalue.dimname_out

kthvalue_out_npu

+

kthvalue_out_npu

195

native_layer_norm

+

native_layer_norm

layer_norm_npu

+

layer_norm_npu

196

native_layer_norm_backward

+

native_layer_norm_backward

layer_norm_backward_npu

+

layer_norm_backward_npu

197

linspace

+

linspace

linspace_npu

+

linspace_npu

198

linspace.out

+

linspace.out

linspace_out_npu

+

linspace_out_npu

199

log

+

log

log_npu

+

log_npu

200

log_

+

log_

log_npu_

+

log_npu_

201

log.out

+

log.out

log_out_npu

+

log_out_npu

202

log10

+

log10

log10_npu

+

log10_npu

203

log10_

+

log10_

log10_npu_

+

log10_npu_

204

log10.out

+

log10.out

log10_out_npu

+

log10_out_npu

205

log1p

+

log1p

log1p_npu

+

log1p_npu

206

log1p_

+

log1p_

log1p_npu_

+

log1p_npu_

207

log1p.out

+

log1p.out

log1p_out_npu

+

log1p_out_npu

208

log2

+

log2

log2_npu

+

log2_npu

209

log2_

+

log2_

log2_npu_

+

log2_npu_

210

log2.out

+

log2.out

log2_out_npu

+

log2_out_npu

211

logspace

+

logspace

logspace_npu

+

logspace_npu

212

logspace.out

+

logspace.out

logspace_out_npu

+

logspace_out_npu

213

log_softmax.int

+

log_softmax.int

log_softmax_npu

+

log_softmax_npu

214

log_softmax.Dimname

+

log_softmax.Dimname

log_softmax_npu

+

log_softmax_npu

215

_log_softmax

+

_log_softmax

_log_softmax_npu

+

_log_softmax_npu

216

_log_softmax_backward_data

+

_log_softmax_backward_data

_log_softmax_backward_npu

+

_log_softmax_backward_npu

217

logsumexp

+

logsumexp

logsumexp_npu

+

logsumexp_npu

218

logsumexp.out

+

logsumexp.out

logsumexp_out_npu

+

logsumexp_out_npu

219

logsumexp.names

+

logsumexp.names

logsumexp_npu

+

logsumexp_npu

220

logsumexp.names_out

+

logsumexp.names_out

logsumexp_out_npu

+

logsumexp_out_npu

221

matmul

+

matmul

matmul_npu

+

matmul_npu

222

matmul.out

+

matmul.out

matmul_out_npu

+

matmul_out_npu

223

max.dim

+

max.dim

max_npu

+

max_npu

224

max.dim_max

+

max.dim_max

max_out_npu

+

max_out_npu

225

max_values

+

max_values

max_npu

+

max_npu

226

max.names_dim

+

max.names_dim

max_npu

+

max_npu

227

max.names_dim_max

+

max.names_dim_max

max_out_npu

+

max_out_npu

228

max_values.names

+

max_values.names

max_npu

+

max_npu

229

max_pool2d

+

max_pool2d

max_pool2d_npu

+

max_pool2d_npu

230

mean

+

mean

mean_npu

+

mean_npu

231

mean.dim

+

mean.dim

mean_npu

+

mean_npu

232

mean.out

+

mean.out

mean_out_npu

+

mean_out_npu

233

mean.names_dim

+

mean.names_dim

mean_npu

+

mean_npu

234

mean.names_out

+

mean.names_out

mean_out_npu

+

mean_out_npu

235

median.dim

+

median.dim

median_npu

+

median_npu

236

median.dim_values

+

median.dim_values

median_out_npu

+

median_out_npu

237

median.names_dim

+

median.names_dim

median_npu

+

median_npu

238

median.names_dim_values

+

median.names_dim_values

median_out_npu

+

median_out_npu

239

min.dim

+

min.dim

min_npu

+

min_npu

240

min.dim_min

+

min.dim_min

min_out_npu

+

min_out_npu

241

min_values

+

min_values

min_npu

+

min_npu

242

min.names_dim

+

min.names_dim

min_npu

+

min_npu

243

min.names_dim_min

+

min.names_dim_min

min_out_npu

+

min_out_npu

244

min_values.names

+

min_values.names

min_npu

+

min_npu

245

mm

+

mm

mm_npu

+

mm_npu

246

mm.out

+

mm.out

mm_out_npu

+

mm_out_npu

247

mul.Tensor

+

mul.Tensor

mul_npu

+

mul_npu

248

mul_.Tensor

+

mul_.Tensor

mul_npu_

+

mul_npu_

249

mul.out

+

mul.out

mul_out_npu

+

mul_out_npu

250

mul.Scalar

+

mul.Scalar

mul_npu

+

mul_npu

251

mul_.Scalar

+

mul_.Scalar

mul_npu_

+

mul_npu_

252

mv

+

mv

mv_npu

+

mv_npu

253

mv.out

+

mv.out

mv_out_npu

+

mv_out_npu

254

narrow_copy

+

narrow_copy

narrow_copy_npu

+

narrow_copy_npu

255

native_batch_norm

+

native_batch_norm

batch_norm_npu

+

batch_norm_npu

256

native_batch_norm_backward

+

batch_norm_stats

batch_norm_backward_npu

+

batch_norm_stats_npu

257

_nnpack_spatial_convolution

+

batch_norm_elemt

_nnpack_spatial_convolution_npu

+

batch_norm_elemt_npu

258

ones.names

+

batch_norm_elemt.out

ones_npu

+

batch_norm_elemt_out_npu

259

ones

+

native_batch_norm_backward

ones_npu

+

batch_norm_backward_npu

260

ones.out

+

batch_norm_backward_reduce

ones_out_npu

+

batch_norm_backward_reduce_npu

261

ones_like

+

_nnpack_spatial_convolution

ones_like_npu

+

_nnpack_spatial_convolution_npu

262

cdist

+

ones.names

cdist_npu

+

ones_npu

263

_cdist_forward

+

ones

_cdist_forward_npu

+

ones_npu

264

_cdist_backward

+

ones.out

_cdist_backward_npu

+

ones_out_npu

265

pdist

+

ones_like

pdist_npu

+

ones_like_npu

266

_pdist_forward

+

cdist

_pdist_forward_npu

+

cdist_npu

267

randperm

+

_cdist_forward

randperm_npu

+

_cdist_forward_npu

268

randperm.generator

+

_cdist_backward

randperm_npu

+

_cdist_backward_npu

269

randperm.out

+

pdist

randperm_out_npu

+

pdist_npu

270

randperm.generator_out

+

_pdist_forward

randperm_out_npu

+

_pdist_forward_npu

271

range.step

+

randperm

range_npu

+

randperm_npu

272

range

+

randperm.generator

range_npu

+

randperm_npu

273

range.out

+

randperm.out

range_out_npu

+

randperm_out_npu

274

reciprocal

+

randperm.generator_out

reciprocal_npu

+

randperm_out_npu

275

reciprocal_

+

range.step

reciprocal_npu_

+

range_npu

276

reciprocal.out

+

range

reciprocal_out_npu

+

range_npu

277

neg

+

range.out

neg_npu

+

range_out_npu

278

neg_

+

reciprocal

neg_npu_

+

reciprocal_npu

279

neg.out

+

reciprocal_

neg_out_npu

+

reciprocal_npu_

280

repeat

+

reciprocal.out

repeat_npu

+

reciprocal_out_npu

281

repeat_interleave.self_int

+

neg

repeat_interleave_npu

+

neg_npu

282

round

+

neg_

round_npu

+

neg_npu_

283

round_

+

neg.out

round_npu_

+

neg_out_npu

284

round.out

+

repeat

round_out_npu

+

repeat_npu

285

relu

+

repeat_interleave.self_int

relu_npu

+

repeat_interleave_npu

286

relu_

+

round

relu_npu_

+

round_npu

287

prelu

+

round_

prelu_npu

+

round_npu_

288

prelu_backward

+

round.out

prelu_backward_npu

+

round_out_npu

289

gelu

+

relu

gelu_npu

+

relu_npu

290

gelu_backward

+

relu_

gelu_backward_npu

+

relu_npu_

291

hardshrink

+

prelu

hardshrink_npu

+

prelu_npu

292

hardshrink_backward

+

prelu_backward

hardshrink_backward_npu

+

prelu_backward_npu

293

rsqrt

+

gelu

rsqrt_npu

+

gelu_npu

294

rsqrt_

+

gelu_backward

rsqrt_npu_

+

gelu_backward_npu

295

rsqrt.out

+

hardshrink

rsqrt_out_npu

+

hardshrink_npu

296

selu

+

hardshrink_backward

selu_npu

+

hardshrink_backward_npu

297

selu_

+

rsqrt

selu_npu_

+

rsqrt_npu

298

celu

+

rsqrt_

celu_npu

+

rsqrt_npu_

299

celu_

+

rsqrt.out

celu_npu_

+

rsqrt_out_npu

300

sigmoid

+

selu

sigmoid_npu

+

selu_npu

301

sigmoid_

+

selu_

sigmoid_npu_

+

selu_npu_

302

sigmoid.out

+

celu

sigmoid_out_npu

+

celu_npu

303

sin

+

celu_

sin_npu

+

celu_npu_

304

sin_

+

sigmoid

sin_npu_

+

sigmoid_npu

305

sin.out

+

sigmoid_

sin_out_npu

+

sigmoid_npu_

306

sinh

+

sigmoid.out

sinh_npu

+

sigmoid_out_npu

307

sinh_

+

sin

sinh_npu_

+

sin_npu

308

sinh.out

+

sin_

sinh_out_npu

+

sin_npu_

309

slogdet

+

sin.out

slogdet_npu

+

sin_out_npu

310

softmax.int

+

sinh

softmax_npu

+

sinh_npu

311

softmax.Dimname

+

sinh_

softmax_npu

+

sinh_npu_

312

_softmax

+

sinh.out

_softmax_npu

+

sinh_out_npu

313

_softmax_backward_data

+

slogdet

_softmax_backward_npu

+

slogdet_npu

314

stack

+

softmax.int

stack_npu

+

softmax_npu

315

stack.out

+

softmax.Dimname

stack_out_npu

+

softmax_npu

316

sum

+

_softmax

sum_npu

+

_softmax_npu

317

sum.dim_IntList

+

_softmax_backward_data

sum_npu

+

_softmax_backward_npu

318

sum.dim_DimnameList

+

stack

sum_npu

+

stack_npu

319

sum.IntList_out

+

stack.out

sum_out_npu

+

stack_out_npu

320

sum.DimnameList_out

+

sum

sum_out_npu

+

sum_npu

321

sqrt

+

sum.dim_IntList

sqrt_npu

+

sum_npu

322

sqrt_

+

sum.dim_DimnameList

sqrt_npu_

+

sum_npu

323

sqrt.out

+

sum.IntList_out

sqrt_out_npu

+

sum_out_npu

324

std

+

sum.DimnameList_out

std_npu

+

sum_out_npu

325

std.dim

+

sqrt

std_dim_npu

+

sqrt_npu

326

std_mean

+

sqrt_

std_mean_npu

+

sqrt_npu_

327

std_mean.dim

+

sqrt.out

std_mean_dim_npu

+

sqrt_out_npu

328

std_mean.names_dim

+

std

std_mean_names_npu

+

std_npu

329

std.out

+

std.dim

std_out_npu

+

std_dim_npu

330

std.names_dim

+

std_mean

std_names_npu

+

std_mean_npu

331

std.names_out

+

std_mean.dim

std_out_npu

+

std_mean_dim_npu

332

prod

+

std_mean.names_dim

prod_npu

+

std_mean_names_npu

333

prod.dim_int

+

std.out

prod_npu

+

std_out_npu

334

prod.int_out

+

std.names_dim

prod_out_npu

+

std_names_npu

335

prod.dim_Dimname

+

std.names_out

prod_npu

+

std_out_npu

336

prod.Dimname_out

+

prod

prod_out_npu

+

prod_npu

337

tan

+

prod.dim_int

tan_npu

+

prod_npu

338

tan_

+

prod.int_out

tan_npu_

+

prod_out_npu

339

tan.out

+

prod.dim_Dimname

tan_out_npu

+

prod_npu

340

tanh

+

prod.Dimname_out

tanh_npu

+

prod_out_npu

341

tanh_

+

tan

tanh_npu_

+

tan_npu

342

tanh.out

+

tan_

tanh_out_npu

+

tan_npu_

343

threshold

+

tan.out

threshold_npu

+

tan_out_npu

344

threshold_

+

tanh

threshold_npu_

+

tanh_npu

345

threshold.out

+

tanh_

threshold_out_npu

+

tanh_npu_

346

threshold_backward

+

tanh.out

threshold_backward_npu

+

tanh_out_npu

347

one_hot

+

threshold

one_hot_npu1

+

threshold_npu

348

flip

+

threshold_

flip_npu

+

threshold_npu_

349

roll

+

threshold.out

roll_npu

+

threshold_out_npu

350

true_divide.Tensor

+

threshold_backward

true_divide_npu

+

threshold_backward_npu

351

true_divide_.Tensor

+

one_hot

true_divide_npu_

+

one_hot_npu1

352

true_divide.out

+

flip

true_divide_out_npu

+

flip_npu

353

true_divide.Scalar

+

roll

true_divide_npu

+

roll_npu

354

true_divide_.Scalar

+

true_divide.Tensor

true_divide_npu_

+

true_divide_npu

355

trunc

+

true_divide_.Tensor

trunc_npu

+

true_divide_npu_

356

trunc_

+

true_divide.out

trunc_npu_

+

true_divide_out_npu

357

trunc.out

+

true_divide.Scalar

trunc_out_npu

+

true_divide_npu

358

_unique2

+

true_divide_.Scalar

_unique2_npu

+

true_divide_npu_

359

var

+

trunc

var_npu

+

trunc_npu

360

var.dim

+

trunc_

var_npu

+

trunc_npu_

361

var.out

+

trunc.out

var_out_npu

+

trunc_out_npu

362

var.names_dim

+

_unique2

var_npu

+

_unique2_npu

363

var.names_out

+

var

var_out_npu

+

var_npu

364

var_mean

+

var.dim

var_mean_npu

+

var_npu

365

var_mean.dim

+

var.out

var_mean_npu

+

var_out_npu

366

var_mean.names_dim

+

var.names_dim

var_mean_npu

+

var_npu

367

where.self

+

var.names_out

where_npu

+

var_out_npu

368

where

+

var_mean

where_npu

+

var_mean_npu

369

_s_where

+

var_mean.dim

_s_where_npu

+

var_mean_npu

370

zeros.names

+

var_mean.names_dim

zeros_npu

+

var_mean_npu

371

zeros

+

where.self

zeros_npu

+

where_npu

372

zeros.out

+

where

zeros_out_npu

+

where_npu

373

zeros_like

+

_s_where

zeros_like_npu

+

_s_where_npu

374

norm.ScalarOpt_dtype

+

zeros.names

norm_npu

+

zeros_npu

375

norm.Scalar

+

zeros

norm_npu

+

zeros_npu

376

norm.ScalarOpt_dim_dtype

+

zeros.out

norm_npu

+

zeros_out_npu

377

norm.ScalarOpt_dim

+

zeros_like

norm_npu

+

zeros_like_npu

378

norm.dtype_out

+

norm.ScalarOpt_dtype

norm_out_npu

+

norm_npu

379

norm.out

+

norm.Scalar

norm_out_npu

+

norm_npu

380

clone

+

norm.ScalarOpt_dim_dtype

clone_npu

+

norm_npu

381

resize_as_

+

norm.ScalarOpt_dim

resize_as_npu_

+

norm_npu

382

pow.Tensor_Scalar_out

+

norm.dtype_out

pow_out_npu

+

norm_out_npu

383

pow.Tensor_Scalar

+

norm.out

pow_npu

+

norm_out_npu

384

zero_

+

clone

zero_npu_

+

clone_npu

385

sub.out

+

resize_as_

sub_out_npu

+

resize_as_npu_

386

sub.Tensor

+

pow.Tensor_Scalar_out

sub_npu

+

pow_out_npu

387

sub_.Tensor

+

pow.Tensor_Scalar

sub_npu_

+

pow_npu

388

sub.Scalar

+

zero_

sub_npu

+

zero_npu_

389

sub_.Scalar

+

sub.out

sub_npu_

+

sub_out_npu

390

rsub.Tensor

+

sub.Tensor

rsub_npu

+

sub_npu

391

rsub.Scalar

+

sub_.Tensor

rsub_npu

+

sub_npu_

392

addmm.out

+

sub.Scalar

addmm_out_npu

+

sub_npu

393

addmm

+

sub_.Scalar

addmm_npu

+

sub_npu_

394

addmm_

+

rsub.Tensor

addmm_npu_

+

rsub_npu

395

quantize_per_tensor

+

rsub.Scalar

quantize_per_tensor_npu

+

rsub_npu

396

quantize_per_channel

+

addmm.out

quantize_per_channel_npu

+

addmm_out_npu

397

to.dtype_layout

+

addmm

to_npu

+

addmm_npu

398

to.device

+

addmm_

to_device_npu

+

addmm_npu_

399

to.dtype

+

quantize_per_tensor

to_dtype_npu

+

quantize_per_tensor_npu

400

to.other

+

quantize_per_channel

to_other_npu

+

quantize_per_channel_npu

401

_local_scalar_dense

+

to.dtype_layout

_local_scalar_dense_npu

+

to_npu

402

lstm.input

+

to.device

lstm_npu

+

to_device_npu

403

lstm.data

+

to.dtype

lstm_npu

+

to_dtype_npu

404

gru.input

+

to.other

gru_npu_

+

to_other_npu

405

_pack_padded_sequence

+

_local_scalar_dense

_pack_padded_sequence_npu

+

_local_scalar_dense_npu

406

_pad_packed_sequence

+

lstm.input

_pad_packed_sequence_npu

+

lstm_npu

407

set_.source_Storage

+

lstm.data

set_npu_

+

lstm_npu

408

set_.source_Storage_storage_offset

+

gru.input

set_npu_

+

gru_npu_

409

set_.source_Tensor

+

_pack_padded_sequence

set_npu_

+

_pack_padded_sequence_npu

410

set_

+

_pad_packed_sequence

set_npu_

+

_pad_packed_sequence_npu

411

masked_fill_.Scalar

+

set_.source_Storage

masked_fill_npu_

+

set_npu_

412

masked_fill_.Tensor

+

set_.source_Storage_storage_offset

masked_fill_npu_

+

set_npu_

413

masked_scatter_

+

set_.source_Tensor

masked_scatter_npu_

+

set_npu_

414

view

+

set_

view_npu

+

set_npu_

415

put_

+

masked_fill_.Scalar

put_npu_

+

masked_fill_npu_

416

index_add_

+

masked_fill_.Tensor

index_add_npu_

+

masked_fill_npu_

417

index_add

+

masked_scatter_

index_add_npu

+

masked_scatter_npu_

418

index_add.dimname

+

view

index_add_npu

+

view_npu

419

index_fill_.int_Scalar

+

put_

index_fill_npu_

+

put_npu_

420

index_fill.int_Scalar

+

index_add_

index_fill_npu

+

index_add_npu_

421

index_fill_.int_Tensor

+

index_add

index_fill_npu_

+

index_add_npu

422

index_fill.int_Tensor

+

index_add.dimname

index_fill_npu

+

index_add_npu

423

scatter_.src

+

index_fill_.int_Scalar

scatter_npu_

+

index_fill_npu_

424

scatter_.value

+

index_fill.int_Scalar

scatter_npu_

+

index_fill_npu

425

scatter_add_

+

index_fill_.int_Tensor

scatter_add_npu_

+

index_fill_npu_

426

scatter_add

+

index_fill.int_Tensor

scatter_add_npu

+

index_fill_npu

427

scatter_add.dimname

+

scatter_.src

scatter_add_npu

+

scatter_npu_

428

lt_.Scalar

+

scatter_.value

lt_npu_

+

scatter_npu_

429

lt_.Tensor

+

scatter_add_

lt_npu_

+

scatter_add_npu_

430

gt_.Scalar

+

scatter_add

gt_npu_

+

scatter_add_npu

431

gt_.Tensor

+

scatter_add.dimname

gt_npu_

+

scatter_add_npu

432

le_.Scalar

+

lt_.Scalar

le_npu_

+

lt_npu_

433

le_.Tensor

+

lt_.Tensor

le_npu_

+

lt_npu_

434

ge_.Scalar

+

gt_.Scalar

ge_npu_

+

gt_npu_

435

ge_.Tensor

+

gt_.Tensor

ge_npu_

+

gt_npu_

436

eq_.Scalar

+

le_.Scalar

eq_npu_

+

le_npu_

437

eq_.Tensor

+

le_.Tensor

eq_npu_

+

le_npu_

438

ne_.Scalar

+

ge_.Scalar

ne_npu_

+

ge_npu_

439

ne_.Tensor

+

ge_.Tensor

ne_npu_

+

ge_npu_

440

bitwise_and.Tensor_out

+

eq_.Scalar

bitwise_and_out_npu

+

eq_npu_

441

bitwise_and.Scalar_out

+

eq_.Tensor

bitwise_and_out_npu

+

eq_npu_

442

bitwise_and.Scalar

+

ne_.Scalar

bitwise_and_npu

+

ne_npu_

443

bitwise_and.Tensor

+

ne_.Tensor

bitwise_and_npu

+

ne_npu_

444

bitwise_and_.Scalar

+

bitwise_and.Tensor_out

bitwise_and_npu_

+

bitwise_and_out_npu

445

bitwise_and_.Tensor

+

bitwise_and.Scalar_out

bitwise_and_npu_

+

bitwise_and_out_npu

446

__and__.Scalar

+

bitwise_and.Scalar

__and___npu

+

bitwise_and_npu

447

__and__.Tensor

+

bitwise_and.Tensor

__and___npu

+

bitwise_and_npu

448

bitwise_or.Tensor_out

+

bitwise_and_.Scalar

bitwise_or_out_npu

+

bitwise_and_npu_

449

bitwise_or.Scalar_out

+

bitwise_and_.Tensor

bitwise_or_out_npu

+

bitwise_and_npu_

450

bitwise_or.Scalar

+

__and__.Scalar

bitwise_or_npu

+

__and___npu

451

bitwise_or.Tensor

+

__and__.Tensor

bitwise_or_npu

+

__and___npu

452

bitwise_or_.Scalar

+

bitwise_or.Tensor_out

bitwise_or_npu_

+

bitwise_or_out_npu

453

bitwise_or_.Tensor

+

bitwise_or.Scalar_out

bitwise_or_npu_

+

bitwise_or_out_npu

454

__or__.Scalar

+

bitwise_or.Scalar

__or___npu

+

bitwise_or_npu

455

__or__.Tensor

+

bitwise_or.Tensor

__or___npu

+

bitwise_or_npu

456

__ior__.Scalar

+

bitwise_or_.Scalar

__ior___npu

+

bitwise_or_npu_

457

__ior__.Tensor

+

bitwise_or_.Tensor

__ior___npu

+

bitwise_or_npu_

458

bitwise_xor.Tensor_out

+

__or__.Scalar

bitwise_xor_out_npu

+

__or___npu

459

bitwise_xor.Scalar_out

+

__or__.Tensor

bitwise_xor_out_npu

+

__or___npu

460

bitwise_xor.Scalar

+

__ior__.Scalar

bitwise_xor_npu

+

__ior___npu

461

bitwise_xor.Tensor

+

__ior__.Tensor

bitwise_xor_npu

+

__ior___npu

462

bitwise_xor_.Scalar

+

bitwise_xor.Tensor_out

bitwise_xor_npu_

+

bitwise_xor_out_npu

463

bitwise_xor_.Tensor

+

bitwise_xor.Scalar_out

bitwise_xor_npu_

+

bitwise_xor_out_npu

464

__xor__.Scalar

+

bitwise_xor.Scalar

__xor___npu

+

bitwise_xor_npu

465

__xor__.Tensor

+

bitwise_xor.Tensor

__xor___npu

+

bitwise_xor_npu

466

__lshift__.Scalar

+

bitwise_xor_.Scalar

__lshift___npu

+

bitwise_xor_npu_

467

__lshift__.Tensor

+

bitwise_xor_.Tensor

__lshift___npu

+

bitwise_xor_npu_

468

__ilshift__.Scalar

+

__xor__.Scalar

__iLshift___npu

+

__xor___npu

469

__ilshift__.Tensor

+

__xor__.Tensor

__iLshift___npu

+

__xor___npu

470

__rshift__.Scalar

+

__lshift__.Scalar

__rshift___npu

+

__lshift___npu

471

__rshift__.Tensor

+

__lshift__.Tensor

__rshift___npu

+

__lshift___npu

472

__irshift__.Scalar

+

__ilshift__.Scalar

__iRshift___npu

+

__iLshift___npu

473

__irshift__.Tensor

+

__ilshift__.Tensor

__iRshift___npu

+

__iLshift___npu

474

atan2_

+

__rshift__.Scalar

atan2_npu_

+

__rshift___npu

475

tril_

+

__rshift__.Tensor

tril_npu_

+

__rshift___npu

476

triu_

+

__irshift__.Scalar

triu_npu_

+

__iRshift___npu

477

renorm_

+

__irshift__.Tensor

renorm_npu_

+

__iRshift___npu

478

pow_.Scalar

+

atan2_

pow_npu_

+

atan2_npu_

479

pow_.Tensor

+

tril_

pow_npu_

+

tril_npu_

480

lerp_.Scalar

+

triu_

lerp_npu_

+

triu_npu_

481

lerp_.Tensor

+

renorm_

lerp_npu_

+

renorm_npu_

482

fmod_.Scalar

+

pow_.Scalar

fmod_npu_

+

pow_npu_

483

fmod_.Tensor

+

pow_.Tensor

fmod_npu_

+

pow_npu_

484

remainder_.Scalar

+

lerp_.Scalar

remainder_npu_

+

lerp_npu_

485

remainder_.Tensor

+

lerp_.Tensor

remainder_npu_

+

lerp_npu_

486

addbmm_

+

fmod_.Scalar

addbmm_npu_

+

fmod_npu_

487

addbmm.out

+

fmod_.Tensor

addbmm_out_npu

+

fmod_npu_

488

addbmm

+

remainder_.Scalar

addbmm_npu

+

remainder_npu_

489

addcdiv_

+

remainder_.Tensor

addcdiv_npu_

+

remainder_npu_

490

random_.from

+

addbmm_

random_npu_

+

addbmm_npu_

491

random_.to

+

addbmm.out

random_npu_

+

addbmm_out_npu

492

random_

+

addbmm

random_npu_

+

addbmm_npu

493

uniform_

+

addcdiv_

uniform_npu_

+

addcdiv_npu_

494

diag.out

+

random_.from

diag_out_npu

+

random_npu_

495

diag

+

random_.to

diag_npu

+

random_npu_

496

cross.out

+

random_

cross_out_npu

+

random_npu_

497

cross

+

uniform_

cross_npu

+

uniform_npu_

498

triu.out

+

diag.out

triu_out_npu

+

diag_out_npu

499

triu

+

diag

triu_npu

+

diag_npu

500

tril.out

+

cross.out

tril_out_npu

+

cross_out_npu

501

tril

+

cross

tril_npu

+

cross_npu

502

tril_indices

+

triu.out

tril_indices_npu

+

triu_out_npu

503

triu_indices

+

triu

triu_indices_npu

+

triu_npu

504

ne.Scalar_out

+

tril.out

ne_out_npu

+

tril_out_npu

505

ne.Scalar

+

tril

ne_npu

+

tril_npu

506

ne.Tensor_out

+

tril_indices

ne_out_npu

+

tril_indices_npu

507

ne.Tensor

+

triu_indices

ne_npu

+

triu_indices_npu

508

eq.Scalar_out

+

ne.Scalar_out

eq_out_npu

+

ne_out_npu

509

eq.Scalar

+

ne.Scalar

eq_npu

+

ne_npu

510

eq.Tensor_out

+

ne.Tensor_out

eq_out_npu

+

ne_out_npu

511

eq.Tensor

+

ne.Tensor

eq_npu

+

ne_npu

512

ge.Scalar_out

+

eq.Scalar_out

ge_out_npu

+

eq_out_npu

513

ge.Scalar

+

eq.Scalar

ge_npu

+

eq_npu

514

ge.Tensor_out

+

eq.Tensor_out

ge_out_npu

+

eq_out_npu

515

ge.Tensor

+

eq.Tensor

ge_npu

+

eq_npu

516

le.Scalar_out

+

ge.Scalar_out

le_out_npu

+

ge_out_npu

517

le.Scalar

+

ge.Scalar

le_npu

+

ge_npu

518

le.Tensor_out

+

ge.Tensor_out

le_out_npu

+

ge_out_npu

519

le.Tensor

+

ge.Tensor

le_npu

+

ge_npu

520

gt.Scalar_out

+

le.Scalar_out

gt_out_npu

+

le_out_npu

521

gt.Scalar

+

le.Scalar

gt_npu

+

le_npu

522

gt.Tensor_out

+

le.Tensor_out

gt_out_npu

+

le_out_npu

523

gt.Tensor

+

le.Tensor

gt_npu

+

le_npu

524

lt.Scalar_out

+

gt.Scalar_out

lt_out_npu

+

gt_out_npu

525

lt.Scalar

+

gt.Scalar

lt_npu

+

gt_npu

526

lt.Tensor_out

+

gt.Tensor_out

lt_out_npu

+

gt_out_npu

527

lt.Tensor

+

gt.Tensor

lt_npu

+

gt_npu

528

take.out

+

lt.Scalar_out

take_out_npu

+

lt_out_npu

529

take

+

lt.Scalar

take_npu

+

lt_npu

530

index_select.out

+

lt.Tensor_out

index_select_out_npu

+

lt_out_npu

531

index_select

+

lt.Tensor

index_select_npu

+

lt_npu

532

index_select.dimname_out

+

take.out

index_select_out_npu

+

take_out_npu

533

index_select.dimname

+

take

index_select_npu

+

take_npu

534

masked_select.out

+

index_select.out

masked_select_out_npu

+

index_select_out_npu

535

masked_select

+

index_select

masked_select_npu

+

index_select_npu

536

nonzero.out

+

index_select.dimname_out

nonzero_out_npu

+

index_select_out_npu

537

nonzero

+

index_select.dimname

nonzero_npu

+

index_select_npu

538

gather.out

+

masked_select.out

gather_out_npu

+

masked_select_out_npu

539

gather

+

masked_select

gather_npu

+

masked_select_npu

540

gather.dimname_out

+

nonzero.out

gather_out_npu

+

nonzero_out_npu

541

gather.dimname

+

nonzero

gather_npu

+

nonzero_npu

542

addcmul.out

+

gather.out

addcmul_out_npu

+

gather_out_npu

543

addcmul

+

gather

addcmul_npu

+

gather_npu

544

addcmul_

+

gather.dimname_out

addcmul_npu_

+

gather_out_npu

545

addcdiv.out

+

gather.dimname

addcdiv_out_npu

+

gather_npu

546

addcdiv

+

addcmul.out

addcdiv_npu

+

addcmul_out_npu

547

_triangular_solve_helper

+

addcmul

_triangular_solve_helper_npu

+

addcmul_npu

548

_symeig_helper

+

addcmul_

_symeig_helper_npu

+

addcmul_npu_

549

_svd_helper

+

addcdiv.out

_svd_helper_npu

+

addcdiv_out_npu

550

qr.Q

+

addcdiv

qr_out_npu

+

addcdiv_npu

551

qr

+

_triangular_solve_helper

qr_npu

+

_triangular_solve_helper_npu

552

multinomial.out

+

_symeig_helper

multinomial_out_npu

+

_symeig_helper_npu

553

multinomial

+

_svd_helper

multinomial_npu

+

_svd_helper_npu

554

erfinv

+

qr.Q

erfinv_npu

+

qr_out_npu

555

erfinv_

+

qr

erfinv_npu_

+

qr_npu

556

erfinv.out

+

multinomial.out

erfinv_out_npu

+

multinomial_out_npu

557

sign

+

multinomial

sign_npu

+

multinomial_npu

558

sign_

+

erfinv

sign_npu_

+

erfinv_npu

559

sign.out

+

erfinv_

sign_out_npu

+

erfinv_npu_

560

atan2.out

+

erfinv.out

atan2_out_npu

+

erfinv_out_npu

561

atan2

+

sign

atan2_npu

+

sign_npu

562

lerp.Scalar_out

+

sign_

lerp_out_npu

+

sign_npu_

563

lerp.Tensor_out

+

sign.out

lerp_out_npu

+

sign_out_npu

564

lerp.Scalar

+

atan2.out

lerp_npu

+

atan2_out_npu

565

lerp.Tensor

+

atan2

lerp_npu

+

atan2_npu

566

fmod.Scalar_out

+

lerp.Scalar_out

fmod_out_npu

+

lerp_out_npu

567

fmod.Scalar

+

lerp.Tensor_out

fmod_npu

+

lerp_out_npu

568

fmod.Tensor_out

+

lerp.Scalar

fmod_out_npu

+

lerp_npu

569

fmod.Tensor

+

lerp.Tensor

fmod_npu

+

lerp_npu

570

remainder.Scalar_out

+

fmod.Scalar_out

remainder_out_npu

+

fmod_out_npu

571

remainder.Scalar

+

fmod.Scalar

remainder_npu

+

fmod_npu

572

remainder.Tensor_out

+

fmod.Tensor_out

remainder_out_npu

+

fmod_out_npu

573

remainder.Tensor

+

fmod.Tensor

remainder_npu

+

fmod_npu

574

min.out

+

remainder.Scalar_out

min_out_npu

+

remainder_out_npu

575

min.other

+

remainder.Scalar

min_npu

+

remainder_npu

576

min

+

remainder.Tensor_out

min_npu

+

remainder_out_npu

577

max.out

+

remainder.Tensor

max_out_npu

+

remainder_npu

578

max.other

+

min.out

max_npu

+

min_out_npu

579

max

+

min.other

max_npu

+

min_npu

580

median

+

min

median_npu

+

min_npu

581

sort.values

+

max.out

sort_out_npu

+

max_out_npu

582

sort

+

max.other

sort_npu

+

max_npu

583

sort.dimname_values

+

max

sort_out_npu

+

max_npu

584

sort.dimname

+

median

sort_npu

+

median_npu

585

argsort

+

sort.values

argsort_npu

+

sort_out_npu

586

argsort.dimname

+

sort

argsort_npu

+

sort_npu

587

topk.values

+

sort.dimname_values

topk_out_npu

+

sort_out_npu

588

topk

+

sort.dimname

topk_npu

+

sort_npu

589

all

+

argsort

all_npu

+

argsort_npu

590

any

+

argsort.dimname

any_npu

+

argsort_npu

591

renorm.out

+

topk.values

renorm_out_npu

+

topk_out_npu

592

renorm

+

topk

renorm_npu

+

topk_npu

593

unfold

+

all

unfold

+

all_npu

594

equal

+

any

equal_npu

+

any_npu

595

pow.Tensor_Tensor_out

+

renorm.out

pow_out_npu

+

renorm_out_npu

596

pow.Tensor_Tensor

+

renorm

pow_npu

+

renorm_npu

597

pow.Scalar_out

+

unfold

pow_out_npu

+

unfold

598

pow.Scalar

+

equal

pow_npu

+

equal_npu

599

normal_

+

pow.Tensor_Tensor_out

normal_npu_

+

pow_out_npu

600

normal.Tensor_float_out

+

pow.Tensor_Tensor

normal_out_npu

+

pow_npu

601

normal.Tensor_float

+

pow.Scalar_out

normal_npu

+

pow_out_npu

602

normal.float_Tensor_out

+

pow.Scalar

normal_out_npu

+

pow_npu

603

normal.float_Tensor

+

normal_

normal_npu

+

normal_npu_

604

normal.Tensor_Tensor_out

+

normal.Tensor_float_out

normal_out_npu

+

normal_out_npu

605

normal.Tensor_Tensor

+

normal.Tensor_float

normal_npu

+

normal_npu

606

normal.float_float

+

normal.float_Tensor_out

normal_npu

+

normal_out_npu

607

normal.float_float_out

+

normal.float_Tensor

normal_out_npu

+

normal_npu

608

_addr

+

normal.Tensor_Tensor_out

_addr_npu

+

normal_out_npu

609

_addr_

+

normal.Tensor_Tensor

_addr_npu_

+

normal_npu

610

_addr.out

+

normal.float_float

_addr_out_npu

+

normal_npu

611

_index_copy_

+

normal.float_float_out

index_copy_npu_

+

normal_out_npu

612

_cumsum

+

_addr

_cumsum_npu

+

_addr_npu

613

_cumsum.out

+

_addr_

_cumsum_out_npu

+

_addr_npu_

614

_cumprod

+

_addr.out

_cumprod_npu

+

_addr_out_npu

615

_cumprod.out

+

_index_copy_

_cumprod_out_npu

+

index_copy_npu_

616

_var

+

_cumsum

_var_npu

+

_cumsum_npu

617

_amp_non_finite_check_and_unscale_

+

_cumsum.out

_amp_non_finite_check_and_unscale_npu_

+

_cumsum_out_npu

618

_cat

+

_cumprod

_cat_npu

+

_cumprod_npu

619

_cat.out

+

_cumprod.out

_cat_out_npu

+

_cumprod_out_npu

620

_max

+

_var

_max_npu

+

_var_npu

621

_max.max

+

_amp_non_finite_check_and_unscale_

_max_out_npu

+

_amp_non_finite_check_and_unscale_npu_

622

_min

+

_cat

_min_npu

+

_cat_npu

623

_min.min

+

_cat.out

_min_out_npu

+

_cat_out_npu

624

mse_loss.out

+

_max

mse_loss_out_npu

+

_max_npu

625

mse_loss

+

_max.max

mse_loss_npu

+

_max_out_npu

626

mse_loss_backward.grad_input

+

_min

mse_loss_backward_out_npu

+

_min_npu

627

mse_loss_backward

+

_min.min

mse_loss_backward_npu

+

_min_out_npu

628

l1_loss.out

+

mse_loss.out

l1_loss_out_npu

+

mse_loss_out_npu

629

l1_loss

+

mse_loss

l1_loss_npu

+

mse_loss_npu

630

l1_loss_backward.grad_input

+

mse_loss_backward.grad_input

l1_loss_backward_out_npu

+

mse_loss_backward_out_npu

631

l1_loss_backward

+

mse_loss_backward

l1_loss_backward_npu

+

mse_loss_backward_npu

632

multilabel_margin_loss.out

+

l1_loss.out

multilabel_margin_loss_out_npu

+

l1_loss_out_npu

633

multilabel_margin_loss

+

l1_loss

multilabel_margin_loss_npu

+

l1_loss_npu

634

multilabel_margin_loss_forward.output

+

l1_loss_backward.grad_input

multilabel_margin_loss_forward_out_npu

+

l1_loss_backward_out_npu

635

multilabel_margin_loss_forward

+

l1_loss_backward

multilabel_margin_loss_forward_npu

+

l1_loss_backward_npu

636

nll_loss.out

+

multilabel_margin_loss.out

nll_loss_out_npu

+

multilabel_margin_loss_out_npu

637

nll_loss

+

multilabel_margin_loss

nll_loss_npu

+

multilabel_margin_loss_npu

638

nll_loss_forward.output

+

multilabel_margin_loss_forward.output

nll_loss_forward_out_npu

+

multilabel_margin_loss_forward_out_npu

639

nll_loss_forward

+

multilabel_margin_loss_forward

nll_loss_forward_npu

+

multilabel_margin_loss_forward_npu

640

nll_loss_backward.grad_input

+

nll_loss.out

nll_loss_backward_out_npu

+

nll_loss_out_npu

641

nll_loss_backward

+

nll_loss

nll_loss_backward_npu

+

nll_loss_npu

642

nll_loss2d.out

+

nll_loss_forward.output

nll_loss2d_out_npu

+

nll_loss_forward_out_npu

643

nll_loss2d

+

nll_loss_forward

nll_loss2d_npu

+

nll_loss_forward_npu

644

nll_loss2d_forward.output

+

nll_loss_backward.grad_input

nll_loss2d_forward_out_npu

+

nll_loss_backward_out_npu

645

nll_loss2d_forward

+

nll_loss_backward

nll_loss2d_forward_npu

+

nll_loss_backward_npu

646

nll_loss2d_backward.grad_input

+

nll_loss2d.out

nll_loss2d_backward_out_npu

+

nll_loss2d_out_npu

647

nll_loss2d_backward

+

nll_loss2d

nll_loss2d_backward_npu

+

nll_loss2d_npu

648

smooth_l1_loss.out

+

nll_loss2d_forward.output

smooth_l1_loss_out_npu

+

nll_loss2d_forward_out_npu

649

smooth_l1_loss

+

nll_loss2d_forward

smooth_l1_loss_npu

+

nll_loss2d_forward_npu

650

smooth_l1_loss_backward.grad_input

+

nll_loss2d_backward.grad_input

smooth_l1_loss_backward_out_npu

+

nll_loss2d_backward_out_npu

651

smooth_l1_loss_backward

+

nll_loss2d_backward

smooth_l1_loss_backward_npu

+

nll_loss2d_backward_npu

652

soft_margin_loss.out

+

smooth_l1_loss.out

soft_margin_loss_out_npu

+

smooth_l1_loss_out_npu

653

soft_margin_loss

+

smooth_l1_loss

soft_margin_loss_npu

+

smooth_l1_loss_npu

654

soft_margin_loss_backward.grad_input

+

smooth_l1_loss_backward.grad_input

soft_margin_loss_backward_out_npu

+

smooth_l1_loss_backward_out_npu

655

soft_margin_loss_backward

+

smooth_l1_loss_backward

soft_margin_loss_backward_npu

+

smooth_l1_loss_backward_npu

656

elu.out

+

soft_margin_loss.out

elu_out_npu

+

soft_margin_loss_out_npu

657

elu

+

soft_margin_loss

elu_npu

+

soft_margin_loss_npu

658

elu_backward.grad_input

+

soft_margin_loss_backward.grad_input

elu_backward_out_npu

+

soft_margin_loss_backward_out_npu

659

elu_backward

+

soft_margin_loss_backward

elu_backward_npu

+

soft_margin_loss_backward_npu

660

elu_

+

elu.out

elu_npu_

+

elu_out_npu

661

glu.out

+

elu

glu_out_npu

+

elu_npu

662

glu

+

elu_backward.grad_input

glu_npu

+

elu_backward_out_npu

663

glu_backward.grad_input

+

elu_backward

glu_backward_out_npu

+

elu_backward_npu

664

glu_backward

+

elu_

glu_backward_npu

+

elu_npu_

665

hardsigmoid.out

+

glu.out

hardsigmoid_out_npu

+

glu_out_npu

666

hardsigmoid

+

glu

hardsigmoid_npu

+

glu_npu

667

hardsigmoid_

+

glu_backward.grad_input

hardsigmoid_npu_

+

glu_backward_out_npu

668

hardsigmoid_backward

+

glu_backward

hardsigmoid_backward_npu

+

glu_backward_npu

669

hardtanh.out

+

hardsigmoid.out

hardtanh_out_npu

+

hardsigmoid_out_npu

670

hardtanh

+

hardsigmoid

hardtanh_npu

+

hardsigmoid_npu

671

hardtanh_backward.grad_input

+

hardsigmoid_

hardtanh_backward_out_npu

+

hardsigmoid_npu_

672

hardtanh_backward

+

hardsigmoid_backward

hardtanh_backward_npu

+

hardsigmoid_backward_npu

673

hardtanh_

+

hardtanh.out

hardtanh_npu_

+

hardtanh_out_npu

674

leaky_relu.out

+

hardtanh

leaky_relu_out_npu

+

hardtanh_npu

675

leaky_relu

+

hardtanh_backward.grad_input

leaky_relu_npu

+

hardtanh_backward_out_npu

676

leaky_relu_backward

+

hardtanh_backward

leaky_relu_backward_npu

+

hardtanh_backward_npu

677

leaky_relu_

+

hardtanh_

leaky_relu_npu_

+

hardtanh_npu_

678

log_sigmoid.out

+

leaky_relu.out

log_sigmoid_out_npu

+

leaky_relu_out_npu

679

log_sigmoid

+

leaky_relu

log_sigmoid_npu

+

leaky_relu_npu

680

log_sigmoid_forward.output

+

leaky_relu_backward

log_sigmoid_forward_out_npu

+

leaky_relu_backward_npu

681

log_sigmoid_forward

+

leaky_relu_

log_sigmoid_forward_npu

+

leaky_relu_npu_

682

log_sigmoid_backward.grad_input

+

log_sigmoid.out

log_sigmoid_backward_out_npu

+

log_sigmoid_out_npu

683

log_sigmoid_backward

+

log_sigmoid

log_sigmoid_backward_npu

+

log_sigmoid_npu

684

rrelu_with_noise.out

+

log_sigmoid_forward.output

rrelu_with_noise_out_npu

+

log_sigmoid_forward_out_npu

685

rrelu_with_noise

+

log_sigmoid_forward

rrelu_with_noise_npu

+

log_sigmoid_forward_npu

686

rrelu_with_noise_backward

+

log_sigmoid_backward.grad_input

rrelu_with_noise_backward_npu

+

log_sigmoid_backward_out_npu

687

rrelu_with_noise_

+

log_sigmoid_backward

rrelu_with_noise_npu_

+

log_sigmoid_backward_npu

688

softplus.out

+

rrelu_with_noise.out

softplus_out_npu

+

rrelu_with_noise_out_npu

689

softplus

+

rrelu_with_noise

softplus_npu

+

rrelu_with_noise_npu

690

softplus_backward.grad_input

+

rrelu_with_noise_backward

softplus_backward_out_npu

+

rrelu_with_noise_backward_npu

691

softplus_backward

+

rrelu_with_noise_

softplus_backward_npu

+

rrelu_with_noise_npu_

692

softshrink.out

+

softplus.out

softshrink_out_npu

+

softplus_out_npu

693

softshrink

+

softplus

softshrink_npu

+

softplus_npu

694

softshrink_backward.grad_input

+

softplus_backward.grad_input

softshrink_backward_out_npu

+

softplus_backward_out_npu

695

softshrink_backward

+

softplus_backward

softshrink_backward_npu

+

softplus_backward_npu

696

adaptive_avg_pool2d.out

+

softshrink.out

adaptive_avg_pool2d_out_npu

+

softshrink_out_npu

697

adaptive_avg_pool2d

+

softshrink

adaptive_avg_pool2d_npu

+

softshrink_npu

698

_adaptive_avg_pool2d

+

softshrink_backward.grad_input

_adaptive_avg_pool2d_npu

+

softshrink_backward_out_npu

699

_adaptive_avg_pool2d_backward

+

softshrink_backward

adaptive_avg_pool2d_backward_npu

+

softshrink_backward_npu

700

adaptive_avg_pool3d.out

+

adaptive_avg_pool2d.out

adaptive_avg_pool3d_out_npu

+

adaptive_avg_pool2d_out_npu

701

adaptive_avg_pool3d

+

adaptive_avg_pool2d

adaptive_avg_pool3d_npu

+

adaptive_avg_pool2d_npu

702

adaptive_avg_pool3d_backward.grad_input

+

_adaptive_avg_pool2d

adaptive_avg_pool3d_backward_out_npu

+

_adaptive_avg_pool2d_npu

703

adaptive_avg_pool3d_backward

+

_adaptive_avg_pool2d_backward

adaptive_avg_pool3d_backward_npu

+

adaptive_avg_pool2d_backward_npu

704

adaptive_max_pool2d.out

+

adaptive_avg_pool3d.out

adaptive_max_pool2d_out_npu

+

adaptive_avg_pool3d_out_npu

705

adaptive_max_pool2d

+

adaptive_avg_pool3d

adaptive_max_pool2d_npu

+

adaptive_avg_pool3d_npu

706

adaptive_max_pool2d_backward.grad_input

+

adaptive_avg_pool3d_backward.grad_input

adaptive_max_pool2d_backward_out_npu

+

adaptive_avg_pool3d_backward_out_npu

707

adaptive_max_pool2d_backward

+

adaptive_avg_pool3d_backward

adaptive_max_pool2d_backward_npu

+

adaptive_avg_pool3d_backward_npu

708

avg_pool2d.out

+

adaptive_max_pool2d.out

avg_pool2d_out_npu

+

adaptive_max_pool2d_out_npu

709

avg_pool2d

+

adaptive_max_pool2d

avg_pool2d_npu

+

adaptive_max_pool2d_npu

710

avg_pool2d_backward.grad_input

+

adaptive_max_pool2d_backward.grad_input

avg_pool2d_backward_out_npu

+

adaptive_max_pool2d_backward_out_npu

711

avg_pool2d_backward

+

adaptive_max_pool2d_backward

avg_pool2d_backward_npu

+

adaptive_max_pool2d_backward_npu

712

avg_pool3d.out

+

avg_pool2d.out

avg_pool3d_out_npu

+

avg_pool2d_out_npu

713

avg_pool3d

+

avg_pool2d

avg_pool3d_npu

+

avg_pool2d_npu

714

avg_pool3d_backward.grad_input

+

avg_pool2d_backward.grad_input

avg_pool3d_backward_out_npu

+

avg_pool2d_backward_out_npu

715

avg_pool3d_backward

+

avg_pool2d_backward

avg_pool3d_backward_npu

+

avg_pool2d_backward_npu

716

max_pool2d_with_indices.out

+

avg_pool3d.out

max_pool2d_with_indices_out_npu

+

avg_pool3d_out_npu

717

max_pool2d_with_indices

+

avg_pool3d

max_pool2d_with_indices_npu

+

avg_pool3d_npu

718

max_pool2d_with_indices_backward.grad_input

+

avg_pool3d_backward.grad_input

max_pool2d_with_indices_backward_out_npu

+

avg_pool3d_backward_out_npu

719

max_pool2d_with_indices_backward

+

avg_pool3d_backward

max_pool2d_with_indices_backward_npu

+

avg_pool3d_backward_npu

720

max_pool3d_with_indices.out

+

max_pool2d_with_indices.out

max_pool3d_with_indices_out_npu

+

max_pool2d_with_indices_out_npu

721

max_pool3d_with_indices

+

max_pool2d_with_indices

max_pool3d_with_indices_npu

+

max_pool2d_with_indices_npu

722

max_pool3d_with_indices_backward.grad_input

+

max_pool2d_with_indices_backward.grad_input

max_pool3d_with_indices_backward_out_npu

+

max_pool2d_with_indices_backward_out_npu

723

max_pool3d_with_indices_backward

+

max_pool2d_with_indices_backward

max_pool3d_with_indices_backward_npu

+

max_pool2d_with_indices_backward_npu

724

reflection_pad2d.out

+

max_pool3d_with_indices.out

reflection_pad2d_out_npu

+

max_pool3d_with_indices_out_npu

725

reflection_pad2d

+

max_pool3d_with_indices

reflection_pad2d_npu

+

max_pool3d_with_indices_npu

726

replication_pad2d.out

+

max_pool3d_with_indices_backward.grad_input

replication_pad2d_out_npu

+

max_pool3d_with_indices_backward_out_npu

727

replication_pad2d

+

max_pool3d_with_indices_backward

replication_pad2d_npu

+

max_pool3d_with_indices_backward_npu

728

upsample_linear1d.out

+

max_unpool2d.out

upsample_linear1d_out_npu

+

max_unpool2d_out_npu

729

upsample_linear1d

+

max_unpool2d

upsample_linear1d_npu

+

max_unpool2d_npu

730

upsample_linear1d_backward

+

max_unpool2d_backward.grad_input

upsample_linear1d_backward_npu

+

max_unpool2d_backward_out_npu

731

upsample_bilinear2d.out

+

max_unpool2d_backward

upsample_bilinear2d_out_npu

+

max_unpool2d_backward_npu

732

upsample_bilinear2d

+

max_unpool3d.out

upsample_bilinear2d_npu

+

max_unpool3d_out_npu

733

upsample_bilinear2d_backward.grad_input

+

max_unpool3d

upsample_bilinear2d_backward_out_npu

+

max_unpool3d_npu

734

upsample_bilinear2d_backward

+

max_unpool3d_backward.grad_input

upsample_bilinear2d_backward_npu

+

max_unpool3d_backward_out_npu

735

upsample_bicubic2d.out

+

max_unpool3d_backward

upsample_bicubic2d_out_npu

+

max_unpool3d_backward_npu

736

upsample_bicubic2d

+

reflection_pad2d.out

upsample_bicubic2d_npu

+

reflection_pad2d_out_npu

737

upsample_bicubic2d_backward.grad_input

+

reflection_pad2d

upsample_bicubic2d_backward_out_npu

+

reflection_pad2d_npu

738

upsample_bicubic2d_backward

+

reflection_pad2d_backward.grad_input

upsample_bicubic2d_backward_npu

+

reflection_pad2d_backward_out_npu

739

upsample_trilinear3d.out

+

reflection_pad2d_backward

upsample_trilinear3d_out_npu

+

reflection_pad2d_backward_npu

740

upsample_trilinear3d

+

replication_pad2d.out

upsample_trilinear3d_npu

+

replication_pad2d_out_npu

741

upsample_trilinear3d_backward.grad_input

+

replication_pad2d

upsample_trilinear3d_backward_out_npu

+

replication_pad2d_npu

742

upsample_trilinear3d_backward

+

replication_pad2d_backward.grad_input

upsample_trilinear3d_backward_npu

+

replication_pad2d_backward_out_npu

743

upsample_nearest1d.out

+

replication_pad2d_backward

upsample_nearest1d_out_npu

+

replication_pad2d_backward_npu

744

upsample_nearest1d

+

upsample_linear1d.out

upsample_nearest1d_npu

+

upsample_linear1d_out_npu

745

upsample_nearest1d_backward.grad_input

+

upsample_linear1d

upsample_nearest1d_backward_out_npu

+

upsample_linear1d_npu

746

upsample_nearest1d_backward

+

upsample_linear1d_backward

upsample_nearest1d_backward_npu

+

upsample_linear1d_backward_npu

747

upsample_nearest2d.out

+

upsample_bilinear2d.out

upsample_nearest2d_out_npu

+

upsample_bilinear2d_out_npu

748

upsample_nearest2d

+

upsample_bilinear2d

upsample_nearest2d_npu

+

upsample_bilinear2d_npu

749

upsample_nearest2d_backward.grad_input

+

upsample_bilinear2d_backward.grad_input

upsample_nearest2d_backward_out_npu

+

upsample_bilinear2d_backward_out_npu

750

upsample_nearest2d_backward

+

upsample_bilinear2d_backward

upsample_nearest2d_backward_npu

+

upsample_bilinear2d_backward_npu

751

upsample_nearest3d.out

+

upsample_bicubic2d.out

upsample_nearest3d_out_npu

+

upsample_bicubic2d_out_npu

752

upsample_nearest3d

+

upsample_bicubic2d

upsample_nearest3d_npu

+

upsample_bicubic2d_npu

753

upsample_nearest3d_backward.grad_input

+

upsample_bicubic2d_backward.grad_input

upsample_nearest3d_backward_out_npu

+

upsample_bicubic2d_backward_out_npu

754

upsample_nearest3d_backward

+

upsample_bicubic2d_backward

upsample_nearest3d_backward_npu

+

upsample_bicubic2d_backward_npu

755

sigmoid_backward.grad_input

+

upsample_trilinear3d.out

sigmoid_backward_out_npu

+

upsample_trilinear3d_out_npu

756

sigmoid_backward

+

upsample_trilinear3d

sigmoid_backward_npu

+

upsample_trilinear3d_npu

757

tanh_backward.grad_input

+

upsample_trilinear3d_backward.grad_input

tanh_backward_out_npu

+

upsample_trilinear3d_backward_out_npu

758

tanh_backward

+

upsample_trilinear3d_backward

tanh_backward_npu

+

upsample_trilinear3d_backward_npu

759

slow_conv_transpose2d.out

+

upsample_nearest1d.out

slow_conv_transpose2d_out_npu

+

upsample_nearest1d_out_npu

760

slow_conv_transpose2d

+

upsample_nearest1d

slow_conv_transpose2d_npu

+

upsample_nearest1d_npu

761

slow_conv_transpose2d_backward.grad_output

+

upsample_nearest1d_backward.grad_input

slow_conv_transpose2d_backward_out_npu

+

upsample_nearest1d_backward_out_npu

762

slow_conv_transpose2d_backward.output_mask

+

upsample_nearest1d_backward

slow_conv_transpose2d_backward_npu

+

upsample_nearest1d_backward_npu

763

thnn_conv2d.out

+

upsample_nearest2d.out

thnn_conv2d_out_npu

+

upsample_nearest2d_out_npu

764

thnn_conv2d

+

upsample_nearest2d

thnn_conv2d_npu

+

upsample_nearest2d_npu

765

thnn_conv2d_forward.output

+

upsample_nearest2d_backward.grad_input

thnn_conv2d_forward_out_npu

+

upsample_nearest2d_backward_out_npu

766

thnn_conv2d_forward

+

upsample_nearest2d_backward

thnn_conv2d_forward_npu

+

upsample_nearest2d_backward_npu

767

thnn_conv2d_backward.output_mask

+

upsample_nearest3d.out

thnn_conv2d_backward_npu

+

upsample_nearest3d_out_npu

768

thnn_conv_depthwise2d.out

+

upsample_nearest3d

thnn_conv_depthwise2d_out_npu

+

upsample_nearest3d_npu

769

thnn_conv_depthwise2d

+

upsample_nearest3d_backward.grad_input

thnn_conv_depthwise2d_npu

+

upsample_nearest3d_backward_out_npu

770

thnn_conv_depthwise2d_forward.out

+

upsample_nearest3d_backward

thnn_conv_depthwise2d_forward_out_npu

+

upsample_nearest3d_backward_npu

771

thnn_conv_depthwise2d_forward

+

sigmoid_backward.grad_input

thnn_conv_depthwise2d_forward_npu

+

sigmoid_backward_out_npu

772

thnn_conv_depthwise2d_backward.grad_input

+

sigmoid_backward

thnn_conv_depthwise2d_backward_out_npu

+

sigmoid_backward_npu

773

thnn_conv_depthwise2d_backward.output_mask

+

tanh_backward.grad_input

thnn_conv_depthwise2d_backward_npu

+

tanh_backward_out_npu

774

slow_conv3d.out

+

tanh_backward

slow_conv3d_out_npu

+

tanh_backward_npu

775

slow_conv3d

+

slow_conv_transpose2d.out

slow_conv3d_npu

+

slow_conv_transpose2d_out_npu

776

slow_conv3d_forward.output

+

slow_conv_transpose2d

slow_conv3d_forward_out_npu

+

slow_conv_transpose2d_npu

777

slow_conv3d_forward

+

slow_conv_transpose2d_backward.grad_output

slow_conv3d_forward_npu

+

slow_conv_transpose2d_backward_out_npu

778

slow_conv_dilated2d

+

slow_conv_transpose2d_backward.output_mask

slow_conv_dilated2d_npu

+

slow_conv_transpose2d_backward_npu

779

slow_conv_dilated2d_backward

+

thnn_conv2d.out

slow_conv_dilated2d_backward_npu

+

thnn_conv2d_out_npu

780

col2im.out

+

thnn_conv2d

im2col_backward_out_npu

+

thnn_conv2d_npu

781

col2im

+

thnn_conv2d_forward.output

im2col_backward_npu

+

thnn_conv2d_forward_out_npu

782

col2im_backward.grad_input

+

thnn_conv2d_forward

im2col_out_npu

+

thnn_conv2d_forward_npu

783

col2im_backward

+

thnn_conv2d_backward.output_mask

im2col_npu

+

thnn_conv2d_backward_npu

784

im2col.out

+

thnn_conv_depthwise2d.out

im2col_out_npu

+

thnn_conv_depthwise2d_out_npu

785

im2col

+

thnn_conv_depthwise2d

im2col_npu

+

thnn_conv_depthwise2d_npu

786

im2col_backward.grad_input

+

thnn_conv_depthwise2d_forward.out

im2col_backward_out_npu

+

thnn_conv_depthwise2d_forward_out_npu

787

im2col_backward

+

thnn_conv_depthwise2d_forward

im2col_backward_npu

+

thnn_conv_depthwise2d_forward_npu

788

+

788

isfinite

+

thnn_conv_depthwise2d_backward.grad_input

isfinite_npu

+

thnn_conv_depthwise2d_backward_out_npu

+

789

+

thnn_conv_depthwise2d_backward.output_mask

+

thnn_conv_depthwise2d_backward_npu

+

790

+

slow_conv3d.out

+

slow_conv3d_out_npu

+

791

+

slow_conv3d

+

slow_conv3d_npu

+

792

+

slow_conv3d_forward.output

+

slow_conv3d_forward_out_npu

+

793

+

slow_conv3d_forward

+

slow_conv3d_forward_npu

+

794

+

slow_conv_dilated2d

+

slow_conv_dilated2d_npu

+

795

+

slow_conv_dilated2d_backward

+

slow_conv_dilated2d_backward_npu

+

796

+

col2im.out

+

im2col_backward_out_npu

+

797

+

col2im

+

im2col_backward_npu

+

798

+

col2im_backward.grad_input

+

im2col_out_npu

+

799

+

col2im_backward

+

im2col_npu

+

800

+

im2col.out

+

im2col_out_npu

+

801

+

im2col

+

im2col_npu

+

802

+

im2col_backward.grad_input

+

im2col_backward_out_npu

+

803

+

im2col_backward

+

im2col_backward_npu

+

804

+

isfinite

+

isfinite_npu

-

PyTorch昇腾自定义算子

+

PyTorch昇腾自定义算子

序号

diff --git "a/docs/zh/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" "b/docs/zh/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" index f3b021d8098..2c606fdd006 100644 --- "a/docs/zh/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" +++ "b/docs/zh/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225/\346\224\257\346\214\201ONNX\347\256\227\345\255\220\346\270\205\345\215\225.md" @@ -422,7 +422,7 @@ keep\_dim:可选,keep\_dim默认为1,支持1或0。 【约束】 -算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 +算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32类型输入 ### 支持的ONNX版本 @@ -454,7 +454,7 @@ axis:数据类型为int,含义:指定计算轴;取值范围:\[-r, r-1\ 【约束】 -算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 +算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32类型输入 ### 支持的ONNX版本 @@ -820,7 +820,7 @@ kernel\_shape\_H或kernel\_shape\_W取值超过\[1,255\],或者kernel\_shape\_ ceil\_mode参数仅在auto\_pad='NOTSET'时生效; -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入; +不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32类型输入; auto\_pad属性值SAME\_UPPER, SAME\_LOWER统一使用的TBE的SAME属性,即TBE算子没有根据这个属性区分pad的填充位置,可能会带来精度问题 @@ -1170,7 +1170,7 @@ dilations只支持1 output\_shape支持限制:实现部分功能。现在支持output shape的大小,小于原始输入大小,但是不支持大于原始输入大小 -算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32,fp64的输入 +算子不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32,float64的输入 属性auto\_pad不支持 "SAME\_UPPER","SAME\_LOWER" @@ -1252,7 +1252,7 @@ strides:4个整数的列表,指定沿高度H和宽度W的卷积步长。H和 当输出张量的W = 1,H != 1时,算子不支持 -不支持atc工具--precision\_mode=must\_keep\_origin\_dtype参数时输入类型为fp32和fp64 +不支持atc工具--precision\_mode=must\_keep\_origin\_dtype参数时输入类型为float32和float64 ### 支持的ONNX版本 @@ -1440,7 +1440,7 @@ modulated:bool,指定DeformableConv2D版本,true表示v2版本,false表 权重张量,W维度取值范围为\[1, 63\],H取值范围为\[1, 63\] -不支持atc工具--precision\_mode=must\_keep\_origin\_dtype参数时输入类型为fp32和fp64 +不支持atc工具--precision\_mode=must\_keep\_origin\_dtype参数时输入类型为float32和float64 ### 支持的ONNX版本 @@ -1950,7 +1950,7 @@ beta:float,该参数暂不支持 【约束】 -v8/v9/v10版本不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 +v8/v9/v10版本不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32类型输入 ### 支持的ONNX版本 @@ -2438,7 +2438,7 @@ y:tensor,数据类型:float16 【属性】 -auto\_pad:string,默认为NOTSET,支持:NOTSET, SAME\_UPPER, SAME\_LOWER 或者 VALID +auto\_pad:string,默认为NOTSET,支持:NOTSET, SAME\_UPPER或者 VALID kernel\_shape:必选,int列表,kernel每个轴上的尺寸 @@ -2448,10 +2448,6 @@ pads:int列表 strides:int列表 -【约束】 - -auto\_pad属性值SAME\_UPPER, SAME\_LOWER统一使用的TBE的SAME属性,即TBE算子没有根据这个属性区分pad的填充位置,可能会带来精度问题 - ### 支持的ONNX版本 Opset v11/v12/v13 @@ -2655,7 +2651,7 @@ kernel\_shape\_H或kernel\_shape\_W取值超过\[1,255\],或者kernel\_shape\_ auto\_pad属性是VALID时,ceil\_mode属性值必须为0 -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 +不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32类型输入 pads属性和auto\_pad属性不可同时使用 @@ -2689,7 +2685,7 @@ spatial\_scale: float,默认值:1.0 【约束】 -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32类型输入 +不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32类型输入 ### 支持的ONNX版本 @@ -3691,7 +3687,7 @@ spatial\_scale:float,默认为1.0,含义:相对于输入图像的空间 batch\_indices数据类型只能写int32不能写int64 -不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时fp32,fp64的输入 +不支持atc工具参数--precision\_mode=must\_keep\_origin\_dtype时float32,float64的输入 ### 支持的ONNX版本 @@ -3885,7 +3881,7 @@ Opset v9/v10/v11/ v12/v13 一个输入 -x:fp16,fp32,double类型的tensor +x:float16,float32,double类型的tensor 两个属性 @@ -4531,19 +4527,25 @@ x:数据类型支持float16、float32、int32 pads:数据类型支持int32 、int64 +constant\_value:可选。默认情况下为0、空字符串或False,如果选择的模式为\`constant\`,则要使用的标量值。 + 【输出】 一个输出 y:数据类型和输入x一致 +【属性】 + +mode:str类型,支持模式有:constant,reflect,edge + 【约束】 当mode值为constant时,目前仅支持constant\_value=0 ### 支持的ONNX版本 -Opset v8/v9/v10/v11/v12/v13 +Opset v11

Pow

-- Gitee