本文档介绍几种可以提升deepx性能的编译方法.
make -j8 SIMD=1
SIMD=1将添加以下编译参数, 用AVX/FMA/AVX2指令集生成向量化代码.
CFLAGS += -ftree-vectorize -ffast-math -mavx -mfma -mavx2
CXXFLAGS += -ftree-vectorize -ffast-math -mavx -mfma -mavx2
# 在项目根目录执行
git clone https://git.code.oa.com/mmrecommend/sage2.git
cd sage2 && make -j8 && cd ..
make -j8 SAGE2=1
若干单精度数学函数将使用sage2.
# 在项目根目录执行
git clone https://git.code.oa.com/mmrecommend/sage2.git
cd sage2 && make -j8 && cd ..
make -j8 SAGE2_SGEMM=1
单精度矩阵乘法(sgemm)将使用sage2_sgemm.
# 在项目根目录执行
git clone https://git.code.oa.com/mmrecommend/sage2.git
cd sage2 && make -j8 && cd ..
make -j8 SAGE2_SGEMM_JIT=1
若干op内的单精度矩阵乘法(sgemm)将使用sage2_sgemm_jit系列函数.
在Intel CPU上, MKL可以加速sage2_sgemm和sage2_sgemm_jit.
请从prebuilt(腾讯内部)获取"libmkl_sage2.so"并和deepx程序一起发布.
deepx程序启动时, 将尝试动态加载"libmkl_sage2.so".
如果加载失败, 将看到以下日志.
sage2_sgemm is using default kernel.
请检查.
- "libmkl_sage2.so"是否可以被加载到.
- 是否是Intel CPU.
如果加载成功, 将看到以下日志.
sage2_sgemm is using MKL kernel.
# 在项目根目录执行
git clone https://git.code.oa.com/mmrecommend/sage2.git
cd sage2 && make -j8 && cd ..
make -j8 SIMD=1 SAGE2=1 SAGE2_SGEMM=1 SAGE2_SGEMM_JIT=1
参考"使用MKL".