Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
209b3557
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
209b3557
编写于
2月 19, 2019
作者:
S
sneaxiy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix many warning
test=develop
上级
5aea2cd2
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
56 addition
and
8 deletion
+56
-8
paddle/fluid/platform/device_context.cc
paddle/fluid/platform/device_context.cc
+1
-1
paddle/fluid/platform/enforce.h
paddle/fluid/platform/enforce.h
+55
-7
未找到文件。
paddle/fluid/platform/device_context.cc
浏览文件 @
209b3557
...
@@ -291,7 +291,7 @@ CUDADeviceContext::CUDADeviceContext(CUDAPlace place)
...
@@ -291,7 +291,7 @@ CUDADeviceContext::CUDADeviceContext(CUDAPlace place)
if
(
dynload
::
HasCUDNN
())
{
if
(
dynload
::
HasCUDNN
())
{
auto
local_cudnn_version
=
cudnn_dso_ver
/
100
;
auto
local_cudnn_version
=
cudnn_dso_ver
/
100
;
auto
compile_cudnn_version
=
CUDNN_VERSION
/
100
;
auto
compile_cudnn_version
=
CUDNN_VERSION
/
100
;
if
(
local_cudnn_version
<
compile_cudnn_version
)
{
if
(
local_cudnn_version
<
static_cast
<
size_t
>
(
compile_cudnn_version
)
)
{
LOG_FIRST_N
(
WARNING
,
1
)
LOG_FIRST_N
(
WARNING
,
1
)
<<
"WARNING: device: "
<<
place_
.
device
<<
"WARNING: device: "
<<
place_
.
device
<<
". The installed Paddle is compiled with CUDNN "
<<
". The installed Paddle is compiled with CUDNN "
...
...
paddle/fluid/platform/enforce.h
浏览文件 @
209b3557
...
@@ -31,6 +31,8 @@ limitations under the License. */
...
@@ -31,6 +31,8 @@ limitations under the License. */
#include <sstream>
#include <sstream>
#include <stdexcept>
#include <stdexcept>
#include <string>
#include <string>
#include <type_traits>
#include <utility>
#include "glog/logging.h"
#include "glog/logging.h"
#include "paddle/fluid/platform/macros.h"
#include "paddle/fluid/platform/macros.h"
...
@@ -280,16 +282,62 @@ inline void throw_on_error(ncclResult_t stat, const std::string& msg) {
...
@@ -280,16 +282,62 @@ inline void throw_on_error(ncclResult_t stat, const std::string& msg) {
} \
} \
} while (0)
} while (0)
#define __PADDLE_BINARY_COMPARE(__VAL0, __VAL1, __CMP, __INV_CMP, ...) \
namespace
details
{
template
<
typename
T
>
inline
constexpr
bool
IsArithmetic
()
{
return
std
::
is_arithmetic
<
T
>::
value
;
}
template
<
typename
T1
,
typename
T2
,
bool
kIsArithmetic
/* = true */
>
struct
TypeConverterImpl
{
using
Type1
=
typename
std
::
common_type
<
T1
,
T2
>::
type
;
using
Type2
=
Type1
;
};
template
<
typename
T1
,
typename
T2
>
struct
TypeConverterImpl
<
T1
,
T2
,
false
>
{
using
Type1
=
T1
;
using
Type2
=
T2
;
};
template
<
typename
T1
,
typename
T2
>
struct
TypeConverter
{
private:
static
constexpr
bool
kIsArithmetic
=
IsArithmetic
<
T1
>
()
&&
IsArithmetic
<
T2
>
();
public:
using
Type1
=
typename
TypeConverterImpl
<
T1
,
T2
,
kIsArithmetic
>::
Type1
;
using
Type2
=
typename
TypeConverterImpl
<
T1
,
T2
,
kIsArithmetic
>::
Type2
;
};
template
<
typename
T1
,
typename
T2
>
using
CommonType1
=
typename
std
::
add_lvalue_reference
<
typename
std
::
add_const
<
typename
TypeConverter
<
T1
,
T2
>::
Type1
>::
type
>::
type
;
template
<
typename
T1
,
typename
T2
>
using
CommonType2
=
typename
std
::
add_lvalue_reference
<
typename
std
::
add_const
<
typename
TypeConverter
<
T1
,
T2
>::
Type2
>::
type
>::
type
;
}
// namespace details
#define __PADDLE_BINARY_COMPARE(__VAL1, __VAL2, __CMP, __INV_CMP, ...) \
do { \
do { \
auto __cond1__ = (__VAL0); \
auto __val1 = (__VAL1); \
auto __cond2__ = (__VAL1); \
auto __val2 = (__VAL2); \
if (UNLIKELY(!((__cond1__)__CMP(__cond2__)))) { \
using __TYPE1__ = decltype(__val1); \
using __TYPE2__ = decltype(__val2); \
using __COMMON_TYPE1__ = \
::paddle::platform::details::CommonType1<__TYPE1__, __TYPE2__>; \
using __COMMON_TYPE2__ = \
::paddle::platform::details::CommonType2<__TYPE1__, __TYPE2__>; \
bool __is_not_error = (static_cast<__COMMON_TYPE1__>(__val1))__CMP( \
static_cast<__COMMON_TYPE2__>(__val2)); \
if (UNLIKELY(!__is_not_error)) { \
PADDLE_THROW("Enforce failed. Expected %s " #__CMP \
PADDLE_THROW("Enforce failed. Expected %s " #__CMP \
" %s, but received %s:%s " #__INV_CMP " %s:%s.\n%s", \
" %s, but received %s:%s " #__INV_CMP " %s:%s.\n%s", \
#__VAL
0, #__VAL1, #__VAL0
, \
#__VAL
1, #__VAL2, #__VAL1
, \
::paddle::string::to_string(__
cond1__), #__VAL1,
\
::paddle::string::to_string(__
val1), #__VAL2,
\
::paddle::string::to_string(__
cond2__),
\
::paddle::string::to_string(__
val2),
\
::paddle::string::Sprintf(__VA_ARGS__)); \
::paddle::string::Sprintf(__VA_ARGS__)); \
} \
} \
} while (0)
} while (0)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录