Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OAID
Tengine
提交
1a54989a
T
Tengine
项目概览
OAID
/
Tengine
11 个月 前同步成功
通知
53
Star
4429
Fork
1032
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Tengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
1a54989a
编写于
5月 24, 2021
作者:
B
BUG1989
提交者:
GitHub
5月 24, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add the omp for sigmod ref op (#685)
上级
4e28167b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
15 deletion
+38
-15
source/device/cpu/cpu_dump.c
source/device/cpu/cpu_dump.c
+1
-1
source/device/cpu/op/sigmoid/sigmoid_ref.c
source/device/cpu/op/sigmoid/sigmoid_ref.c
+37
-14
未找到文件。
source/device/cpu/cpu_dump.c
浏览文件 @
1a54989a
...
@@ -622,7 +622,7 @@ void extract_node_executed_time(struct subgraph* subgraph, int node_id)
...
@@ -622,7 +622,7 @@ void extract_node_executed_time(struct subgraph* subgraph, int node_id)
sum_of_min_time
+=
timer
[
j
];
sum_of_min_time
+=
timer
[
j
];
}
}
fprintf
(
stdout
,
"%
2d [%5.2f%% : %4.1f ms] %13s idx: %2
d "
,
i
,
timer
[
i
]
/
sum_of_min_time
*
100
,
fprintf
(
stdout
,
"%
4d [%5.2f%% : %6.1f ms] %13s idx: %4
d "
,
i
,
timer
[
i
]
/
sum_of_min_time
*
100
,
timer
[
i
],
get_op_name_from_type
(
node
->
ir_node
->
op
.
type
),
node
->
ir_node
->
index
);
timer
[
i
],
get_op_name_from_type
(
node
->
ir_node
->
op
.
type
),
node
->
ir_node
->
index
);
struct
tensor
*
input_tensor
=
get_ir_graph_tensor
(
subgraph
->
graph
,
node
->
ir_node
->
input_tensors
[
0
]);
struct
tensor
*
input_tensor
=
get_ir_graph_tensor
(
subgraph
->
graph
,
node
->
ir_node
->
input_tensors
[
0
]);
...
...
source/device/cpu/op/sigmoid/sigmoid_ref.c
浏览文件 @
1a54989a
...
@@ -40,17 +40,43 @@
...
@@ -40,17 +40,43 @@
int
ref_sigmoid_fp32
(
struct
tensor
*
input_tensor
,
struct
tensor
*
output_tensor
,
int
num_thread
)
int
ref_sigmoid_fp32
(
struct
tensor
*
input_tensor
,
struct
tensor
*
output_tensor
,
int
num_thread
)
{
{
int
dim_num
=
input_tensor
->
dim_num
;
uint32_t
elem_num
=
input_tensor
->
elem_num
;
if
(
dim_num
==
4
)
float
*
input_data
=
input_tensor
->
data
;
float
*
output_data
=
output_tensor
->
data
;
for
(
int
i
=
0
;
i
<
elem_num
;
i
++
)
{
{
output_data
[
i
]
=
SIGMOID_MIN
(
input_data
[
i
],
30
.
0
f
);
int
batch
=
input_tensor
->
dims
[
0
];
output_data
[
i
]
=
SIGMOID_MAX
(
input_data
[
i
],
-
30
.
0
f
);
int
channel
=
input_tensor
->
dims
[
1
];
int
cstep
=
input_tensor
->
dims
[
2
]
*
input_tensor
->
dims
[
3
];
output_data
[
i
]
=
1
/
(
1
+
exp
(
-
output_data
[
i
]));
int
bstep
=
channel
*
cstep
;
for
(
int
n
=
0
;
n
<
batch
;
n
++
)
{
#pragma omp parallel for num_threads(num_thread)
for
(
int
c
=
0
;
c
<
channel
;
c
++
)
{
float
*
input_data
=
(
float
*
)
input_tensor
->
data
+
n
*
bstep
+
c
*
cstep
;
float
*
output_data
=
(
float
*
)
output_tensor
->
data
+
n
*
bstep
+
c
*
cstep
;
for
(
int
i
=
0
;
i
<
cstep
;
i
++
)
{
output_data
[
i
]
=
SIGMOID_MIN
(
input_data
[
i
],
30
.
0
f
);
output_data
[
i
]
=
SIGMOID_MAX
(
input_data
[
i
],
-
30
.
0
f
);
output_data
[
i
]
=
1
.
f
/
(
1
+
expf
(
-
output_data
[
i
]));
}
}
}
}
else
{
uint32_t
elem_num
=
input_tensor
->
elem_num
;
float
*
input_data
=
input_tensor
->
data
;
float
*
output_data
=
output_tensor
->
data
;
for
(
int
i
=
0
;
i
<
elem_num
;
i
++
)
{
output_data
[
i
]
=
SIGMOID_MIN
(
input_data
[
i
],
30
.
0
f
);
output_data
[
i
]
=
SIGMOID_MAX
(
input_data
[
i
],
-
30
.
0
f
);
output_data
[
i
]
=
1
.
f
/
(
1
+
expf
(
-
output_data
[
i
]));
}
}
}
return
0
;
return
0
;
...
@@ -139,11 +165,8 @@ static int run(struct node_ops* node_ops, struct exec_node* exec_node, struct ex
...
@@ -139,11 +165,8 @@ static int run(struct node_ops* node_ops, struct exec_node* exec_node, struct ex
{
{
struct
node
*
ir_node
=
exec_node
->
ir_node
;
struct
node
*
ir_node
=
exec_node
->
ir_node
;
struct
graph
*
ir_graph
=
ir_node
->
graph
;
struct
graph
*
ir_graph
=
ir_node
->
graph
;
struct
tensor
*
input_tensor
;
struct
tensor
*
input_tensor
=
get_ir_graph_tensor
(
ir_graph
,
ir_node
->
input_tensors
[
0
]);
struct
tensor
*
output_tensor
;
struct
tensor
*
output_tensor
=
get_ir_graph_tensor
(
ir_graph
,
ir_node
->
output_tensors
[
0
]);
input_tensor
=
get_ir_graph_tensor
(
ir_graph
,
ir_node
->
input_tensors
[
0
]);
output_tensor
=
get_ir_graph_tensor
(
ir_graph
,
ir_node
->
output_tensors
[
0
]);
int
ret
=
-
1
;
int
ret
=
-
1
;
if
(
input_tensor
->
data_type
==
TENGINE_DT_FP32
)
if
(
input_tensor
->
data_type
==
TENGINE_DT_FP32
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录