后端最佳实践 ¶
x86 CPU¶
现代 x86 CPU 上的编译型工作负载通常通过单指令多数据(SIMD)指令集进行优化。SIMD 是高性能计算(如深度学习模型训练和推理)的典型并行处理技术。应用 SIMD 后,每个计算单元在任何给定时间槽中执行相同的指令,但分配的数据不同。最常用的支持 SIMD 的 x86 指令集架构(ISA)包括 AVX、AVX2、AVX-512 和 AMX。
您可以通过使用 collect_env 脚本来检查您的机器支持的 ISAs。由于该脚本提供了 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 进一步提高工作负载的性能。