Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
88215d00
M
mindspore
项目概览
magicwindyyd
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
1
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看板
提交
88215d00
编写于
5月 04, 2020
作者:
M
mindspore-ci-bot
提交者:
Gitee
5月 04, 2020
浏览文件
操作
浏览文件
下载
差异文件
!905 add topk op for aicpu
Merge pull request !905 from yanzhenxiang2020/add_topkop_for_aicpu
上级
2fafd31e
3137ac60
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
45 addition
and
0 deletion
+45
-0
mindspore/ccsrc/kernel/aicpu/aicpu_kernel_mod.cc
mindspore/ccsrc/kernel/aicpu/aicpu_kernel_mod.cc
+6
-0
mindspore/ccsrc/kernel/tbe/tbe_kernel_select.cc
mindspore/ccsrc/kernel/tbe/tbe_kernel_select.cc
+6
-0
mindspore/ops/_op_impl/aicpu/__init__.py
mindspore/ops/_op_impl/aicpu/__init__.py
+1
-0
mindspore/ops/_op_impl/aicpu/topk.py
mindspore/ops/_op_impl/aicpu/topk.py
+32
-0
未找到文件。
mindspore/ccsrc/kernel/aicpu/aicpu_kernel_mod.cc
浏览文件 @
88215d00
...
...
@@ -111,6 +111,9 @@ bool AicpuOpKernelMod::Launch(const std::vector<AddressPtr> &inputs, const std::
CreateCpuKernelInfo
(
inputs
,
outputs
);
auto
*
stream
=
reinterpret_cast
<
rtStream_t
*>
(
stream_ptr
);
if
(
node_name_
==
"TopK"
)
{
node_name_
=
"TopKV2"
;
}
MS_LOG
(
INFO
)
<<
"Aicpu launch, node_so_:"
<<
node_so_
<<
", node name:"
<<
node_name_
<<
", args_size:"
<<
args_
.
length
();
if
(
rtCpuKernelLaunch
(
reinterpret_cast
<
const
void
*>
(
node_so_
.
c_str
()),
...
...
@@ -137,6 +140,9 @@ vector<TaskInfoPtr> AicpuOpKernelMod::GenTask(const std::vector<AddressPtr> &inp
(
void
)
std
::
transform
(
std
::
begin
(
outputs
),
std
::
end
(
outputs
),
std
::
back_inserter
(
output_data_addrs
),
[](
const
AddressPtr
&
output
)
->
void
*
{
return
output
->
addr
;
});
if
(
node_name_
==
"TopK"
)
{
node_name_
=
"TopKV2"
;
}
AicpuTaskInfoPtr
task_info_ptr
=
make_shared
<
ge
::
model_runner
::
AicpuTaskInfo
>
(
stream_id
,
node_so_
,
node_name_
,
node_def_str_
,
input_data_addrs
,
output_data_addrs
);
...
...
mindspore/ccsrc/kernel/tbe/tbe_kernel_select.cc
浏览文件 @
88215d00
...
...
@@ -568,6 +568,12 @@ void TbeMetadataInfo(const CNodePtr &kernel_node, std::vector<std::shared_ptr<Ke
MS_EXCEPTION_IF_NULL
(
kernel_node
);
MS_EXCEPTION_IF_NULL
(
kernel_info_list
);
std
::
vector
<
std
::
shared_ptr
<
kernel
::
KernelBuildInfo
>>
parse_info_list
;
if
(
AnfAlgo
::
GetCNodeName
(
kernel_node
)
==
kTopKOpName
&&
AnfAlgo
::
GetNodeAttr
<
bool
>
(
kernel_node
,
"sorted"
)
==
false
)
{
MS_LOG
(
INFO
)
<<
"will select aicpu topk."
;
return
;
}
std
::
string
op_name
=
AnfAlgo
::
GetCNodeName
(
kernel_node
);
auto
op_info_ptr
=
mindspore
::
kernel
::
OpLib
::
FindOp
(
op_name
,
OpImplyType
::
kTBE
);
if
(
op_info_ptr
==
nullptr
)
{
...
...
mindspore/ops/_op_impl/aicpu/__init__.py
浏览文件 @
88215d00
...
...
@@ -17,3 +17,4 @@ from .init_data_set_queue import _init_data_set_queue_aicpu
from
.dropout_genmask
import
_dropout_genmask_aicpu
from
.get_next
import
_get_next_aicpu
from
.print_tensor
import
_print_aicpu
from
.topk
import
_top_k_aicpu
mindspore/ops/_op_impl/aicpu/topk.py
0 → 100644
浏览文件 @
88215d00
# Copyright 2020 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
"""TopK op"""
from
mindspore.ops.op_info_register
import
op_info_register
,
AiCPURegOp
,
DataType
top_k_op_info
=
AiCPURegOp
(
"TopK"
)
\
.
fusion_type
(
"OPAQUE"
)
\
.
attr
(
"sorted"
,
"bool"
)
\
.
input
(
0
,
"intput"
,
"required"
)
\
.
input
(
1
,
"k"
,
"required"
)
\
.
output
(
0
,
"values"
,
"required"
)
\
.
output
(
1
,
"indices"
,
"required"
)
\
.
dtype_format
(
DataType
.
F16_Default
,
DataType
.
I32_Default
,
DataType
.
F16_Default
,
DataType
.
I32_Default
)
\
.
get_op_info
()
@
op_info_register
(
top_k_op_info
)
def
_top_k_aicpu
():
"""TopK aicpu register"""
return
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录