Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
40e79e9d
MegEngine
项目概览
MegEngine 天元
/
MegEngine
1 年多 前同步成功
通知
403
Star
4705
Fork
582
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MegEngine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
40e79e9d
编写于
8月 20, 2020
作者:
M
Megvii Engine Team
提交者:
Xinran Xu
8月 25, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(dnn/x86): fix x86 matrix usable ignore format
GitOrigin-RevId: 40fe508aca366efaa8b9ef1a799740a760e11531
上级
eab7ab05
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
10 deletion
+20
-10
dnn/src/x86/matrix_mul/algos.cpp
dnn/src/x86/matrix_mul/algos.cpp
+20
-10
未找到文件。
dnn/src/x86/matrix_mul/algos.cpp
浏览文件 @
40e79e9d
...
@@ -10,13 +10,13 @@
...
@@ -10,13 +10,13 @@
* implied.
* implied.
*/
*/
#include "src/x86/matrix_mul/algos.h"
#include "midout.h"
#include "src/common/utils.h"
#include "src/common/utils.h"
#include "src/fallback/matrix_mul/gemm_impl.h"
#include "src/fallback/matrix_mul/gemm_impl.h"
#include "src/x86/matrix_mul/algos.h"
#include "src/x86/matrix_mul/f32/strategy.h"
#include "src/x86/matrix_mul/int8/strategy.h"
#include "src/x86/matrix_mul/int8/strategy.h"
#include "
src/x86/matrix_mul/f32/strategy
.h"
#include "
midout
.h"
MIDOUT_DECL
(
megdnn_x86_matmul_kern
)
MIDOUT_DECL
(
megdnn_x86_matmul_kern
)
MIDOUT_DECL
(
megdnn_x86_matmul_kern_mk8_8x8
)
MIDOUT_DECL
(
megdnn_x86_matmul_kern_mk8_8x8
)
...
@@ -170,6 +170,7 @@ bool MatrixMulImpl::AlgoInt8x8x32Vnni::usable(
...
@@ -170,6 +170,7 @@ bool MatrixMulImpl::AlgoInt8x8x32Vnni::usable(
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
preferred
(
kern_size_param
)
&&
is_supported
(
SIMDType
::
VNNI
);
preferred
(
kern_size_param
)
&&
is_supported
(
SIMDType
::
VNNI
);
}
}
...
@@ -230,6 +231,7 @@ bool MatrixMulImpl::AlgoInt8x8x32Mkldnn::usable(
...
@@ -230,6 +231,7 @@ bool MatrixMulImpl::AlgoInt8x8x32Mkldnn::usable(
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
is_supported
(
SIMDType
::
VNNI
)
&&
preferred
(
kern_size_param
);
is_supported
(
SIMDType
::
VNNI
)
&&
preferred
(
kern_size_param
);
}
}
...
@@ -365,8 +367,10 @@ bool MatrixMulImpl::AlgoInt8x8x16AVX2::usable(
...
@@ -365,8 +367,10 @@ bool MatrixMulImpl::AlgoInt8x8x16AVX2::usable(
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS16
));
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS16
));
bool
is_mode_ok
=
bool
is_mode_ok
=
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
is_supported
(
SIMDType
::
AVX2
);
is_supported
(
SIMDType
::
AVX2
);
bool
is_param_ok
=
is_ab_same
&&
is_type_ok
&&
is_mode_ok
;
bool
is_param_ok
=
is_ab_same
&&
is_type_ok
&&
is_mode_ok
;
return
is_param_ok
;
return
is_param_ok
;
}
}
bool
MatrixMulImpl
::
AlgoInt8x8x16AVX2
::
preferred
(
const
KernSizeParam
&
)
const
{
bool
MatrixMulImpl
::
AlgoInt8x8x16AVX2
::
preferred
(
const
KernSizeParam
&
)
const
{
...
@@ -440,6 +444,7 @@ bool MatrixMulImpl::AlgoInt8x8x16SSE::usable(
...
@@ -440,6 +444,7 @@ bool MatrixMulImpl::AlgoInt8x8x16SSE::usable(
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS16
));
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS16
));
bool
is_mode_ok
=
bool
is_mode_ok
=
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
is_supported
(
SIMDType
::
SSE4_1
);
is_supported
(
SIMDType
::
SSE4_1
);
bool
is_param_ok
=
is_ab_same
&&
is_type_ok
&&
is_mode_ok
;
bool
is_param_ok
=
is_ab_same
&&
is_type_ok
&&
is_mode_ok
;
return
is_param_ok
;
return
is_param_ok
;
...
@@ -478,13 +483,16 @@ MatrixMulImpl::kern_t MatrixMulImpl::AlgoInt8x8x32AVX2M4N16K2::get_kern(
...
@@ -478,13 +483,16 @@ MatrixMulImpl::kern_t MatrixMulImpl::AlgoInt8x8x32AVX2M4N16K2::get_kern(
}
}
bool
MatrixMulImpl
::
AlgoInt8x8x32AVX2M4N16K2
::
usable
(
bool
MatrixMulImpl
::
AlgoInt8x8x32AVX2M4N16K2
::
usable
(
const
KernSizeParam
&
kern_size_param
)
const
{
const
KernSizeParam
&
kern_size_param
)
const
{
return
kern_size_param
.
A_type
.
enumv
()
==
kern_size_param
.
B_type
.
enumv
()
&&
bool
is_param_ok
=
((
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
Int8
&&
kern_size_param
.
A_type
.
enumv
()
==
kern_size_param
.
B_type
.
enumv
()
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
Int32
)
||
((
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
Int8
&&
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
Int32
)
||
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
is_supported
(
SIMDType
::
AVX2
);
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
is_supported
(
SIMDType
::
AVX2
);
return
is_param_ok
;
}
}
size_t
MatrixMulImpl
::
AlgoInt8x8x32AVX2M4N16K2
::
get_workspace
(
size_t
MatrixMulImpl
::
AlgoInt8x8x32AVX2M4N16K2
::
get_workspace
(
const
KernSizeParam
&
kern_param
)
const
{
const
KernSizeParam
&
kern_param
)
const
{
...
@@ -522,6 +530,7 @@ bool MatrixMulImpl::AlgoInt8x8x32AVX2M2N4K16::usable(
...
@@ -522,6 +530,7 @@ bool MatrixMulImpl::AlgoInt8x8x32AVX2M2N4K16::usable(
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
is_supported
(
SIMDType
::
AVX2
);
is_supported
(
SIMDType
::
AVX2
);
}
}
size_t
MatrixMulImpl
::
AlgoInt8x8x32AVX2M2N4K16
::
get_workspace
(
size_t
MatrixMulImpl
::
AlgoInt8x8x32AVX2M2N4K16
::
get_workspace
(
...
@@ -562,6 +571,7 @@ bool MatrixMulImpl::AlgoInt8x8x32SSEM4N8K2::usable(
...
@@ -562,6 +571,7 @@ bool MatrixMulImpl::AlgoInt8x8x32SSEM4N8K2::usable(
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
(
kern_size_param
.
A_type
.
enumv
()
==
DTypeEnum
::
QuantizedS8
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
C_type
.
enumv
()
==
DTypeEnum
::
QuantizedS32
))
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
compute_mode
==
Param
::
ComputeMode
::
DEFAULT
&&
kern_size_param
.
format
==
Param
::
Format
::
DEFAULT
&&
is_supported
(
SIMDType
::
SSE4_1
);
is_supported
(
SIMDType
::
SSE4_1
);
}
}
size_t
MatrixMulImpl
::
AlgoInt8x8x32SSEM4N8K2
::
get_workspace
(
size_t
MatrixMulImpl
::
AlgoInt8x8x32SSEM4N8K2
::
get_workspace
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录