后端最佳实践¶
x86 CPU¶
现代 x86 CPU 上的编译工作负载通常由单指令多数据 (SIMD) 指令集进行优化。 SIMD 是一种典型的并行处理技术,用于高性能计算,例如深度学习模型训练和推理。 应用 SIMD 后,每个计算单元在任何给定时间段内使用分配的不同数据执行相同的指令。 启用 SIMD 的最常用的 x86 指令集体系结构 (ISA) 包括 AVX、AVX2、AVX-512 和 AMX。
您可以使用 collect_env 脚本 检查您的机器支持的 ISA。 由于该脚本提供了 PyTorch 的完整环境信息,我们可以使用 grep
提取包含 ISA 信息的行
python collect_env.py | grep "a[(v|m)]x"
通常,如果支持 AVX-512,则应该观察到以“avx512”开头的指令(例如 avx512f
、avx512bw
、avx512_vnni
)。 如果支持 AMX,则应该观察到以“amx”开头的指令(例如 amx_tile
、amx_bf16
、amx_int8
)。
具体来说,对于启用了 AMX 指令的服务器,工作负载性能可以通过 利用 AMX 进一步提升。