Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MegEngine 天元
MegEngine
提交
56c1b626
MegEngine
项目概览
MegEngine 天元
/
MegEngine
大约 1 年 前同步成功
通知
399
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
56c1b626
编写于
8月 19, 2021
作者:
M
Megvii Engine Team
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor(dnn): move arch-dependant code to arch.h
GitOrigin-RevId: 52350144b142ac8d05f915aedfaf02a2acabf789
上级
67575d58
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
29 deletion
+25
-29
dnn/include/megdnn/arch.h
dnn/include/megdnn/arch.h
+10
-0
dnn/src/common/resize.cuh
dnn/src/common/resize.cuh
+1
-9
dnn/src/common/rounding_converter.cuh
dnn/src/common/rounding_converter.cuh
+14
-20
未找到文件。
dnn/include/megdnn/arch.h
浏览文件 @
56c1b626
...
...
@@ -140,6 +140,16 @@
#define MEGDNN_DEVICE
#endif
#if MEGDNN_CC_CUDA
#define MEGDNN_FORCE_INLINE __forceinline__
#else
#if __GNUC__ || __has_attribute(always_inline)
#define MEGDNN_FORCE_INLINE inline __attribute__((always_inline))
#else
#define MEGDNN_FORCE_INLINE inline
#endif
#endif
#if defined(_MSC_VER) || defined(WIN32)
#define ATTR_ALIGNED(v) __declspec(align(v))
#else
...
...
dnn/src/common/resize.cuh
浏览文件 @
56c1b626
...
...
@@ -13,18 +13,10 @@
#include "megdnn/arch.h"
#if MEGDNN_CC_HOST && !defined(__host__)
#if __GNUC__ || __has_attribute(always_inline)
#define __forceinline__ inline __attribute__((always_inline))
#else
#define __forceinline__ inline
#endif
#endif
namespace
megdnn
{
namespace
resize
{
MEGDNN_HOST
MEGDNN_DEVICE
__forceinline__
void
interpolate_cubic
(
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
void
interpolate_cubic
(
float
x
,
float
*
coeffs
)
{
const
float
A
=
-
0.75
f
;
...
...
dnn/src/common/rounding_converter.cuh
浏览文件 @
56c1b626
...
...
@@ -12,17 +12,6 @@
#pragma once
#include "megdnn/dtype.h"
#if MEGDNN_CC_HOST && !defined(__host__)
#define MEGDNN_HOST_DEVICE_SELF_DEFINE
#define __host__
#define __device__
#if __GNUC__ || __has_attribute(always_inline)
#define __forceinline__ inline __attribute__((always_inline))
#else
#define __forceinline__ inline
#endif
#endif
namespace
megdnn
{
namespace
rounding
{
...
...
@@ -31,7 +20,8 @@ struct RoundingConverter;
template
<
>
struct
RoundingConverter
<
float
>
{
__host__
__device__
__forceinline__
float
operator
()(
float
x
)
const
{
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
float
operator
()(
float
x
)
const
{
return
x
;
}
};
...
...
@@ -40,7 +30,7 @@ struct RoundingConverter<float> {
template
<
>
struct
RoundingConverter
<
half_float
::
half
>
{
__host__
__device__
__forceinline__
half_float
::
half
operator
()(
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
half_float
::
half
operator
()(
float
x
)
const
{
return
static_cast
<
half_float
::
half
>
(
x
);
}
...
...
@@ -48,8 +38,8 @@ struct RoundingConverter<half_float::half> {
template
<
>
struct
RoundingConverter
<
half_bfloat16
::
bfloat16
>
{
__host__
__device__
__forceinline__
half_bfloat16
::
bfloat16
operator
()(
float
x
)
const
{
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
half_bfloat16
::
bfloat16
operator
()(
float
x
)
const
{
return
static_cast
<
half_bfloat16
::
bfloat16
>
(
x
);
}
};
...
...
@@ -58,7 +48,8 @@ struct RoundingConverter<half_bfloat16::bfloat16> {
template
<
>
struct
RoundingConverter
<
int8_t
>
{
__host__
__device__
__forceinline__
int8_t
operator
()(
float
x
)
const
{
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
int8_t
operator
()(
float
x
)
const
{
#if MEGDNN_CC_HOST
using
std
::
round
;
#endif
...
...
@@ -68,11 +59,12 @@ struct RoundingConverter<int8_t> {
template
<
>
struct
RoundingConverter
<
uint8_t
>
{
__host__
__device__
__forceinline__
uint8_t
operator
()(
float
x
)
const
{
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
uint8_t
operator
()(
float
x
)
const
{
#if MEGDNN_CC_HOST
using
std
::
round
;
using
std
::
max
;
using
std
::
min
;
using
std
::
round
;
#endif
x
=
min
(
255.0
f
,
max
(
0.0
f
,
x
));
//! FIXME!!! check other places
return
static_cast
<
uint8_t
>
(
round
(
x
));
...
...
@@ -81,7 +73,8 @@ struct RoundingConverter<uint8_t> {
template
<
>
struct
RoundingConverter
<
dt_qint4
>
{
__host__
__device__
__forceinline__
dt_qint4
operator
()(
float
x
)
const
{
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
dt_qint4
operator
()(
float
x
)
const
{
#if MEGDNN_CC_HOST
using
std
::
round
;
#endif
...
...
@@ -91,7 +84,8 @@ struct RoundingConverter<dt_qint4> {
template
<
>
struct
RoundingConverter
<
dt_quint4
>
{
__host__
__device__
__forceinline__
dt_quint4
operator
()(
float
x
)
const
{
MEGDNN_HOST
MEGDNN_DEVICE
MEGDNN_FORCE_INLINE
dt_quint4
operator
()(
float
x
)
const
{
#if MEGDNN_CC_HOST
using
std
::
round
;
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录