doc22_044.md 13.0 KB
Newer Older
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
1 2
# torch.backends

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
3
> 原文:[`pytorch.org/docs/stable/backends.html`](https://pytorch.org/docs/stable/backends.html)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
4

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
5
torch.backends 控制 PyTorch 支持的各种后端的行为。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

这些后端包括:

+   `torch.backends.cpu`

+   `torch.backends.cuda`

+   `torch.backends.cudnn`

+   `torch.backends.mps`

+   `torch.backends.mkl`

+   `torch.backends.mkldnn`

+   `torch.backends.openmp`

+   `torch.backends.opt_einsum`

+   `torch.backends.xeon`

## torch.backends.cpu

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
30
torch.backends.cpu.get_cpu_capability()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
31 32
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
33
返回 CPU 能力作为字符串值。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
34 35 36 37 38 39 40 41

可能的值:- “DEFAULT” - “VSX” - “Z VECTOR” - “NO AVX” - “AVX2” - “AVX512”

返回类型

[str](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)")  ## torch.backends.cuda

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
42
torch.backends.cuda.is_built()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
43 44
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
45
返回 PyTorch 是否构建有 CUDA 支持。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
46

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
47
请注意,这并不一定意味着 CUDA 可用;只是如果在具有工作 CUDA 驱动程序和设备的机器上运行此 PyTorch 二进制文件,我们将能够使用它。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
48 49

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
50
torch.backends.cuda.matmul.allow_tf32
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
51 52
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
53
一个控制在安培或更新的 GPU 上是否可以使用 TensorFloat-32 张量核心进行矩阵乘法的布尔值。请参阅 Ampere(以及更高版本)设备上的 TensorFloat-32(TF32)。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
54 55

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
56
torch.backends.cuda.matmul.allow_fp16_reduced_precision_reduction
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
57 58
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
59
一个控制是否允许使用减少精度的规约(例如,使用 fp16 累积类型)与 fp16 GEMM 一起使用的布尔值。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
60 61

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
62
torch.backends.cuda.matmul.allow_bf16_reduced_precision_reduction
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
63 64
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
65
一个控制是否允许使用 bf16 GEMM 的减少精度规约的布尔值。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
66 67

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
68
torch.backends.cuda.cufft_plan_cache
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
69 70
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
71
`cufft_plan_cache`包含每个 CUDA 设备的 cuFFT 计划缓存。通过 torch.backends.cuda.cufft_plan_cache[i]查询特定设备 i 的缓存。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
72 73

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
74
torch.backends.cuda.cufft_plan_cache.size
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
75 76
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
77
一个只读[`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)"),显示 cuFFT 计划缓存中当前计划的数量。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
78 79

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
80
torch.backends.cuda.cufft_plan_cache.max_size
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
81 82
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
83
一个[`int`](https://docs.python.org/3/library/functions.html#int "(in Python v3.12)"),控制 cuFFT 计划缓存的容量。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
84 85

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
86
torch.backends.cuda.cufft_plan_cache.clear()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
87 88
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
89
清除 cuFFT 计划缓存。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
90 91

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
92
torch.backends.cuda.preferred_linalg_library(backend=None)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
93 94
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
95
覆盖 PyTorch 用于在 CUDA 线性代数操作中选择 cuSOLVER 和 MAGMA 之间的启发式。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
96 97 98 99 100

警告

此标志是实验性的,可能会更改。

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
101
当 PyTorch 运行 CUDA 线性代数操作时,通常会使用 cuSOLVER 或 MAGMA 库,如果两者都可用,则会根据启发式决定使用哪个。此标志(一个[`str`](https://docs.python.org/3/library/stdtypes.html#str "(in Python v3.12)"))允许覆盖这些启发式。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
102

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
103
+   如果设置为“cusolver”,则将尽可能使用 cuSOLVER。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
104

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
105
+   如果设置为“magma”,则将尽可能使用 MAGMA。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
106

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
107
+   如果设置为“default”(默认),则将使用启发式来在 cuSOLVER 和 MAGMA 之间进行选择(如果两者都可用)。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
108 109 110

+   当没有输入时,此函数返回当前首选库。

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
111
+   用户可以使用环境变量 TORCH_LINALG_PREFER_CUSOLVER=1 全局设置首选库为 cuSOLVER。此标志仅设置首选库的初始值,首选库仍可能在脚本中的后续函数调用中被覆盖。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
112

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
113
注意:当首选库为其他库时,如果首选库未实现所调用的操作,则仍然可以使用其他库。如果 PyTorch 的启发式库选择对您应用程序的输入不正确,则此标志可能会实现更好的性能。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
114

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
115
当前支持的 linalg 运算符:
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
116

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
117
+   `torch.linalg.inv()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
118

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
119
+   `torch.linalg.inv_ex()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
120

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
121
+   `torch.linalg.cholesky()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
122

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
123
+   `torch.linalg.cholesky_ex()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
124

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
125
+   `torch.cholesky_solve()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
126

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
127
+   `torch.cholesky_inverse()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
128

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
129
+   `torch.linalg.lu_factor()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
130

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
131
+   `torch.linalg.lu()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
132

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
133
+   `torch.linalg.lu_solve()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
134

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
135
+   `torch.linalg.qr()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
136

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
137
+   `torch.linalg.eigh()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
138 139 140

+   `torch.linalg.eighvals()`

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
141
+   `torch.linalg.svd()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
142

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
143
+   `torch.linalg.svdvals()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
144 145 146 147 148 149

返回类型

*_LinalgBackend*

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
150
torch.backends.cuda.SDPBackend
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
151 152 153 154 155
```

别名为 `_SDPBackend`

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
156
torch.backends.cuda.SDPAParams
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
157 158 159 160 161
```

别名为 `_SDPAParams`

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
162
torch.backends.cuda.flash_sdp_enabled()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
163 164 165 166 167 168 169 170 171
```

警告

此标志为测试版,可能会更改。

返回 flash 缩放点积注意力是否已启用。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
172
torch.backends.cuda.enable_mem_efficient_sdp(enabled)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
173 174 175 176 177 178 179 180 181
```

警告

此标志为测试版,可能会更改。

启用或禁用内存高效的缩放点积注意力。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
182
torch.backends.cuda.mem_efficient_sdp_enabled()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
183 184 185 186 187 188 189 190 191
```

警告

此标志为测试版,可能会更改。

返回内存高效的缩放点积注意力是否已启用。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
192
torch.backends.cuda.enable_flash_sdp(enabled)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
193 194 195 196 197 198 199 200 201
```

警告

此标志为测试版,可能会更改。

启用或禁用 flash 缩放点积注意力。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
202
torch.backends.cuda.math_sdp_enabled()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
203 204 205 206 207 208 209 210 211
```

警告

此标志为测试版,可能会更改。

返回 math 缩放点积注意力是否已启用。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
212
torch.backends.cuda.enable_math_sdp(enabled)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
213 214 215 216 217 218 219 220 221
```

警告

此标志为测试版,可能会更改。

启用或禁用 math 缩放点积注意力。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
222
torch.backends.cuda.can_use_flash_attention(params, debug=False)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
223 224 225 226 227 228 229 230
```

检查是否可以在 scaled_dot_product_attention 中使用 FlashAttention。

参数

+   **params** (*_SDPAParams*) – 包含查询、键、值张量、可选注意力掩码、丢弃率以及指示注意力是否因果的标志的 SDPAParams 实例。

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
231
+   **debug** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")) – 是否记录警告调试信息,说明为什么无法运行 FlashAttention。默认为 False。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
232 233 234

返回

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
235
如果可以使用给定参数,则为 True;否则为 False。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
236 237 238 239 240 241 242

返回类型

[bool](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")

注意

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
243
此函数依赖于 PyTorch 的 CUDA 版本。在非 CUDA 环境中将返回 False。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
244 245

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
246
torch.backends.cuda.can_use_efficient_attention(params, debug=False)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
247 248 249 250 251 252 253 254
```

检查是否可以在 scaled_dot_product_attention 中使用 efficient_attention。

参数

+   **params** (*_SDPAParams*) – 包含查询、键、值张量、可选注意力掩码、丢弃率以及指示注意力是否因果的标志的 SDPAParams 实例。

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
255
+   **debug** ([*bool*](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")) – 是否记录警告信息,说明为什么无法运行 efficient_attention。默认为 False。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
256 257 258

返回

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
259
如果可以使用给定参数,则为 True;否则为 False。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
260 261 262 263 264 265 266

返回类型

[bool](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")

注意

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
267
此函数依赖于 PyTorch 的 CUDA 版本。在非 CUDA 环境中将返回 False。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
268 269

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
270
torch.backends.cuda.sdp_kernel(enable_flash=True, enable_math=True, enable_mem_efficient=True)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
271 272 273 274 275 276 277 278 279
```

警告

此标志为测试版,可能会更改。

此上下文管理器可用于临时启用或禁用缩放点积注意力的三个后端之一。退出上下文管理器时,将恢复标志的先前状态。## torch.backends.cudnn[](#module-torch.backends.cudnn "Permalink to this heading")

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
280
torch.backends.cudnn.version()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
281 282 283 284 285
```

返回 cuDNN 的版本。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
286
torch.backends.cudnn.is_available()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
287 288 289 290 291
```

返回一个布尔值,指示当前是否可用 CUDNN。

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
292
torch.backends.cudnn.enabled
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
293 294 295 296 297
```

一个控制 cuDNN 是否启用的 [`bool`](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
298
torch.backends.cudnn.allow_tf32
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
299 300
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
301
一个[`bool`](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)"),控制在 Ampere 或更新的 GPU 上 cuDNN 卷积中是否可以使用 TensorFloat-32 张量核心。请参阅 Ampere(以及更高版本)设备上的 TensorFloat-32(TF32)。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
302 303

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
304
torch.backends.cudnn.deterministic
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
305 306
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
307
一个[`bool`](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)"),如果为 True,则导致 cuDNN 仅使用确定性卷积算法。另请参阅`torch.are_deterministic_algorithms_enabled()``torch.use_deterministic_algorithms()`
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
308 309

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
310
torch.backends.cudnn.benchmark
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
311 312
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
313
一个[`bool`](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)"),如果为 True,则导致 cuDNN 对多个卷积算法进行基准测试并选择最快的。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
314 315

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
316
torch.backends.cudnn.benchmark_limit
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
317 318
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
319
一个[`int`](https://docs.python.org/3/library/functions.html#int "(在 Python v3.12 中)"),指定 torch.backends.cudnn.benchmark 为 True 时尝试的 cuDNN 卷积算法的最大数量。将 benchmark_limit 设置为零以尝试每个可用算法。请注意,此设置仅影响通过 cuDNN v8 API 分派的卷积。  ## torch.backends.mps[](#module-torch.backends.mps "跳转到此标题的永久链接")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
320 321

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
322
torch.backends.mps.is_available()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
323 324
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
325
返回一个指示当前是否可用 MPS 的布尔值。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
326 327 328

返回类型

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
329
[bool](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
330 331

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
332
torch.backends.mps.is_built()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
333 334
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
335
返回 PyTorch 是否构建有 MPS 支持。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
336

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
337
请注意,这并不一定意味着 MPS 可用;只是如果在具有工作 MPS 驱动程序和设备的机器上运行此 PyTorch 二进制文件,我们将能够使用它。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
338 339 340

返回类型

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
341
[bool](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")  ## torch.backends.mkl
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
342 343

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
344
torch.backends.mkl.is_available()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
345 346
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
347
返回 PyTorch 是否构建有 MKL 支持。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
348 349

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
350
class torch.backends.mkl.verbose(enable)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
351 352
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
353
按需 oneMKL 详细功能。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
354

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
355
为了更容易调试性能问题,oneMKL 可以转储包含执行信息(如持续时间)的详细消息,同时执行内核。可以通过名为 MKL_VERBOSE 的环境变量调用详细功能。但是,这种方法在所有步骤中转储消息。这些是大量详细消息。此外,通常仅对单个迭代获取详细消息就足够用于调查性能问题。这种按需详细功能使得可以控制详细消息转储的范围。在以下示例中,仅为第二个推理转储详细消息。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
356 357 358 359 360 361 362 363 364 365 366 367 368

```py
import torch
model(data)
with torch.backends.mkl.verbose(torch.backends.mkl.VERBOSE_ON):
    model(data) 
```

参数

**level** – 详细级别 - `VERBOSE_OFF`:禁用详细 - `VERBOSE_ON`:启用详细  ## torch.backends.mkldnn[](#module-torch.backends.mkldnn "跳转到此标题的永久链接")

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
369
torch.backends.mkldnn.is_available()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
370 371
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
372
返回 PyTorch 是否构建有 MKL-DNN 支持。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
373 374

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
375
class torch.backends.mkldnn.verbose(level)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
376 377
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
378
按需 oneDNN(前 MKL-DNN)详细功能。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
379

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
380
为了更容易调试性能问题,oneDNN 可以转储包含内核大小、输入数据大小和执行持续时间等信息的详细消息,同时执行内核。可以通过名为 DNNL_VERBOSE 的环境变量调用详细功能。但是,这种方法在所有步骤中转储消息。这些是大量详细消息。此外,通常仅对单个迭代获取详细消息就足够用于调查性能问题。这种按需详细功能使得可以控制详细消息转储的范围。在以下示例中,仅为第二个推理转储详细消息。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
381 382 383 384 385 386 387 388 389 390

```py
import torch
model(data)
with torch.backends.mkldnn.verbose(torch.backends.mkldnn.VERBOSE_ON):
    model(data) 
```

参数

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
391
**level** – 详细级别 - `VERBOSE_OFF`:禁用详细 - `VERBOSE_ON`:启用详细 - `VERBOSE_ON_CREATION`:启用详细,包括 oneDNN 内核创建  ## torch.backends.openmp[](#module-torch.backends.openmp "跳转到此标题的永久链接")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
392 393

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
394
torch.backends.openmp.is_available()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
395 396
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
397
返回 PyTorch 是否构建有 OpenMP 支持。  ## torch.backends.opt_einsum[](#module-torch.backends.opt_einsum "跳转到此标题")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
398 399

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
400
torch.backends.opt_einsum.is_available()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
401 402
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
403
返回一个指示 opt_einsum 当前是否可用的 bool 值。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
404 405 406

返回类型

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
407
[bool](https://docs.python.org/3/library/functions.html#bool "(在 Python v3.12 中)")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
408 409

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
410
torch.backends.opt_einsum.get_opt_einsum()
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
411 412
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
413
如果当前可用,则返回 opt_einsum 包,否则返回 None。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
414 415 416

返回类型

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
417
[*Any*](https://docs.python.org/3/library/typing.html#typing.Any "(在 Python v3.12 中)")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
418 419

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
420
torch.backends.opt_einsum.enabled
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
421 422
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
423
一个控制是否启用 opt_einsum 的`bool`(默认为`True`)。如果启用,torch.einsum 将使用 opt_einsum([`optimized-einsum.readthedocs.io/en/stable/path_finding.html`](https://optimized-einsum.readthedocs.io/en/stable/path_finding.html))来计算更快性能的最佳收缩路径。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
424

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
425
如果 opt_einsum 不可用,torch.einsum 将退回到默认的从左到右的收缩路径。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
426 427

```py
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
428
torch.backends.opt_einsum.strategy
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
429 430
```

绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
431
一个指定当`torch.backends.opt_einsum.enabled``True`时要尝试哪些策略的`str`。默认情况下,torch.einsum 将尝试“auto”策略,但也支持“greedy”和“optimal”策略。请注意,“optimal”策略在尝试所有可能路径时与输入数量的阶乘成正比。在 opt_einsum 的文档中查看更多细节([`optimized-einsum.readthedocs.io/en/stable/path_finding.html`](https://optimized-einsum.readthedocs.io/en/stable/path_finding.html))。  ## torch.backends.xeon