Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
正统之独孤求败
mindspore
提交
618b734e
M
mindspore
项目概览
正统之独孤求败
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindspore
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
618b734e
编写于
6月 17, 2020
作者:
S
sunsuodong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
applymomentum
上级
ea37dc76
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
36 addition
and
11 deletion
+36
-11
mindspore/ccsrc/device/cpu/kernel_select_cpu.cc
mindspore/ccsrc/device/cpu/kernel_select_cpu.cc
+5
-3
mindspore/ccsrc/kernel/cpu/addn_cpu_kernel.cc
mindspore/ccsrc/kernel/cpu/addn_cpu_kernel.cc
+2
-2
mindspore/ccsrc/kernel/cpu/apply_momentum_cpu_kernel.h
mindspore/ccsrc/kernel/cpu/apply_momentum_cpu_kernel.h
+10
-0
mindspore/ccsrc/kernel/cpu/slice_cpu_kernel.cc
mindspore/ccsrc/kernel/cpu/slice_cpu_kernel.cc
+9
-3
mindspore/ccsrc/kernel/cpu/slice_cpu_kernel.h
mindspore/ccsrc/kernel/cpu/slice_cpu_kernel.h
+1
-0
mindspore/ccsrc/kernel/cpu/slice_grad_cpu_kernel.cc
mindspore/ccsrc/kernel/cpu/slice_grad_cpu_kernel.cc
+8
-3
mindspore/ccsrc/kernel/cpu/slice_grad_cpu_kernel.h
mindspore/ccsrc/kernel/cpu/slice_grad_cpu_kernel.h
+1
-0
未找到文件。
mindspore/ccsrc/device/cpu/kernel_select_cpu.cc
浏览文件 @
618b734e
...
...
@@ -71,9 +71,6 @@ void GetInputFormatsAndDtypes(const CNodePtr &kernel_node, std::vector<std::stri
void
GetOutputFormatsAndDtypes
(
const
CNodePtr
&
kernel_node
,
const
KernelAttr
&
kernel_attr
,
std
::
vector
<
std
::
string
>
*
output_formats
,
std
::
vector
<
TypeId
>
*
output_types
)
{
size_t
output_num
=
AnfAlgo
::
GetOutputTensorNum
(
kernel_node
);
if
(
kernel_attr
.
GetOutputSize
()
!=
output_num
)
{
MS_LOG
(
EXCEPTION
)
<<
"Output num is not equal!"
;
}
for
(
size_t
output_index
=
0
;
output_index
<
output_num
;
++
output_index
)
{
output_formats
->
emplace_back
(
kernel_attr
.
GetOutputAttr
(
output_index
).
second
);
auto
dtype
=
kernel_attr
.
GetOutputAttr
(
output_index
).
first
;
...
...
@@ -145,6 +142,11 @@ void SetKernelInfo(const CNodePtr &kernel_node) {
ExpandKernelAttr
(
kernel_node
,
&
kernel_attr
);
}
if
(
IsInputFormatDtypeMatched
(
kernel_attr
,
input_formats
,
input_types
,
input_not_cnode_indexes
))
{
size_t
output_num
=
AnfAlgo
::
GetOutputTensorNum
(
kernel_node
);
if
(
kernel_attr
.
GetOutputSize
()
!=
output_num
)
{
MS_LOG
(
DEBUG
)
<<
"Output num is not equal!"
;
continue
;
}
MS_LOG
(
INFO
)
<<
"Input format and dtype is matched, index: "
<<
index
;
GetOutputFormatsAndDtypes
(
kernel_node
,
kernel_attr
,
&
output_formats
,
&
output_types
);
UpdatePrevNotCNodeFormatDtype
(
kernel_attr
,
input_not_cnode_indexes
,
kernel_node
);
...
...
mindspore/ccsrc/kernel/cpu/addn_cpu_kernel.cc
浏览文件 @
618b734e
...
...
@@ -32,17 +32,17 @@ bool AddNCPUKernel::Launch(const std::vector<kernel::AddressPtr> &inputs,
const
std
::
vector
<
kernel
::
AddressPtr
>
&
outputs
)
{
auto
output_addr
=
reinterpret_cast
<
float
*>
(
outputs
[
0
]
->
addr
);
size_t
offset
=
0
;
for
(
size_t
i
=
0
;
i
<
output_shape_
[
0
];
++
i
)
{
for
(
size_t
j
=
0
;
j
<
output_shape_
[
1
];
++
j
)
{
for
(
size_t
k
=
0
;
k
<
output_shape_
[
2
];
++
k
)
{
for
(
size_t
m
=
0
;
m
<
output_shape_
[
3
];
++
m
)
{
auto
offset
=
CPUKernelUtils
::
CalcOffset
(
output_shape_
,
i
,
j
,
k
,
m
);
float
sum
=
0
;
for
(
size_t
index
=
0
;
index
<
input_num_
;
++
index
)
{
auto
input_addr
=
reinterpret_cast
<
float
*>
(
inputs
[
index
]
->
addr
);
sum
+=
input_addr
[
offset
];
}
output_addr
[
offset
]
=
sum
;
output_addr
[
offset
++
]
=
sum
;
}
}
}
...
...
mindspore/ccsrc/kernel/cpu/apply_momentum_cpu_kernel.h
浏览文件 @
618b734e
...
...
@@ -42,6 +42,16 @@ MS_REG_CPU_KERNEL(ApplyMomentum,
.
AddInputAttr
(
kNumberTypeFloat32
)
.
AddOutputAttr
(
kNumberTypeFloat32
),
ApplyMomentumCPUKernel
);
MS_REG_CPU_KERNEL
(
ApplyMomentum
,
KernelAttr
()
.
AddInputAttr
(
kNumberTypeFloat32
)
.
AddInputAttr
(
kNumberTypeFloat32
)
.
AddInputAttr
(
kNumberTypeFloat32
)
.
AddInputAttr
(
kNumberTypeFloat32
)
.
AddInputAttr
(
kNumberTypeFloat32
)
.
AddOutputAttr
(
kNumberTypeFloat32
)
.
AddOutputAttr
(
kNumberTypeFloat32
),
ApplyMomentumCPUKernel
);
}
// namespace kernel
}
// namespace mindspore
...
...
mindspore/ccsrc/kernel/cpu/slice_cpu_kernel.cc
浏览文件 @
618b734e
...
...
@@ -23,7 +23,6 @@ void SliceCPUKernel::InitKernel(const CNodePtr &kernel_node) {
CheckParam
(
kernel_node
);
input_shape_
=
AnfAlgo
::
GetPrevNodeOutputInferShape
(
kernel_node
,
0
);
output_shape_
=
AnfAlgo
::
GetOutputInferShape
(
kernel_node
,
0
);
CPUKernelUtils
::
ExpandDimsTo4
(
&
output_shape_
);
begin_
=
AnfAlgo
::
GetNodeAttr
<
std
::
vector
<
int
>>
(
kernel_node
,
BEGIN
);
for
(
size_t
i
=
0
;
i
<
begin_
.
size
();
i
++
)
{
...
...
@@ -61,6 +60,15 @@ void SliceCPUKernel::InitKernel(const CNodePtr &kernel_node) {
end_
.
emplace_back
(
begin_
[
i
]
+
sizes
[
i
]);
}
}
ExpandAllMemberDims
();
CPUKernelUtils
::
GetElementNumEveryDim
(
input_shape_
,
&
input_element_num_
);
CPUKernelUtils
::
GetElementNumEveryDim
(
output_shape_
,
&
output_element_num_
);
}
void
SliceCPUKernel
::
ExpandAllMemberDims
()
{
CPUKernelUtils
::
ExpandDimsTo4
(
&
output_shape_
);
auto
input_len
=
input_shape_
.
size
();
if
(
input_len
<
4
)
{
for
(
size_t
i
=
0
;
i
<
4
-
input_len
;
++
i
)
{
...
...
@@ -70,8 +78,6 @@ void SliceCPUKernel::InitKernel(const CNodePtr &kernel_node) {
end_
.
insert
(
end_
.
begin
(),
1
);
}
}
CPUKernelUtils
::
GetElementNumEveryDim
(
input_shape_
,
&
input_element_num_
);
CPUKernelUtils
::
GetElementNumEveryDim
(
output_shape_
,
&
output_element_num_
);
}
bool
SliceCPUKernel
::
Launch
(
const
std
::
vector
<
kernel
::
AddressPtr
>
&
inputs
,
...
...
mindspore/ccsrc/kernel/cpu/slice_cpu_kernel.h
浏览文件 @
618b734e
...
...
@@ -33,6 +33,7 @@ class SliceCPUKernel : public CPUKernel {
const
std
::
vector
<
AddressPtr
>
&
outputs
)
override
;
private:
void
ExpandAllMemberDims
();
bool
CanCopyMemoryOnAxis
(
size_t
dim
)
const
;
void
CopyDataToOutput
(
const
std
::
vector
<
kernel
::
AddressPtr
>
&
inputs
,
size_t
in_offset
,
const
std
::
vector
<
kernel
::
AddressPtr
>
&
outputs
,
size_t
out_offset
,
size_t
copy_num
)
const
;
...
...
mindspore/ccsrc/kernel/cpu/slice_grad_cpu_kernel.cc
浏览文件 @
618b734e
...
...
@@ -23,7 +23,6 @@ void SliceGradCPUKernel::InitKernel(const CNodePtr &kernel_node) {
CheckParam
(
kernel_node
);
output_shape_
=
AnfAlgo
::
GetOutputInferShape
(
kernel_node
,
0
);
input_shape_
=
AnfAlgo
::
GetPrevNodeOutputInferShape
(
kernel_node
,
0
);
CPUKernelUtils
::
ExpandDimsTo4
(
&
input_shape_
);
begin_
=
AnfAlgo
::
GetNodeAttr
<
std
::
vector
<
int
>>
(
kernel_node
,
BEGIN
);
for
(
size_t
i
=
0
;
i
<
begin_
.
size
();
i
++
)
{
...
...
@@ -63,6 +62,14 @@ void SliceGradCPUKernel::InitKernel(const CNodePtr &kernel_node) {
}
}
ExpandAllMemberDims
();
CPUKernelUtils
::
GetElementNumEveryDim
(
input_shape_
,
&
input_element_num_
);
CPUKernelUtils
::
GetElementNumEveryDim
(
output_shape_
,
&
output_element_num_
);
}
void
SliceGradCPUKernel
::
ExpandAllMemberDims
()
{
CPUKernelUtils
::
ExpandDimsTo4
(
&
input_shape_
);
auto
output_len
=
output_shape_
.
size
();
if
(
output_len
<
4
)
{
for
(
size_t
i
=
0
;
i
<
4
-
output_len
;
++
i
)
{
...
...
@@ -72,8 +79,6 @@ void SliceGradCPUKernel::InitKernel(const CNodePtr &kernel_node) {
end_
.
insert
(
end_
.
begin
(),
1
);
}
}
CPUKernelUtils
::
GetElementNumEveryDim
(
input_shape_
,
&
input_element_num_
);
CPUKernelUtils
::
GetElementNumEveryDim
(
output_shape_
,
&
output_element_num_
);
}
bool
SliceGradCPUKernel
::
Launch
(
const
std
::
vector
<
kernel
::
AddressPtr
>
&
inputs
,
...
...
mindspore/ccsrc/kernel/cpu/slice_grad_cpu_kernel.h
浏览文件 @
618b734e
...
...
@@ -33,6 +33,7 @@ class SliceGradCPUKernel : public CPUKernel {
const
std
::
vector
<
AddressPtr
>
&
outputs
)
override
;
private:
void
ExpandAllMemberDims
();
bool
CanCopyMemoryOnAxis
(
size_t
dim
)
const
;
void
CopyDataToOutput
(
const
std
::
vector
<
kernel
::
AddressPtr
>
&
inputs
,
size_t
in_offset
,
const
std
::
vector
<
kernel
::
AddressPtr
>
&
outputs
,
size_t
out_offset
,
size_t
copy_num
)
const
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录