Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wzpei9
Paddle
提交
6fb28796
P
Paddle
项目概览
wzpei9
/
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
6fb28796
编写于
9月 03, 2018
作者:
D
dzhwinter
提交者:
GitHub
9月 03, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
memory (#13143)
上级
e722f683
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
126 addition
and
69 deletion
+126
-69
paddle/fluid/operators/save_combine_op.cc
paddle/fluid/operators/save_combine_op.cc
+1
-31
paddle/fluid/operators/save_op.cc
paddle/fluid/operators/save_op.cc
+1
-31
paddle/fluid/platform/port.h
paddle/fluid/platform/port.h
+124
-7
未找到文件。
paddle/fluid/operators/save_combine_op.cc
浏览文件 @
6fb28796
...
...
@@ -13,7 +13,6 @@ See the License for the specific language governing permissions and
limitations under the License. */
#include <stdint.h>
#include <sys/stat.h>
#include <fstream>
#include <numeric>
#include <sstream>
...
...
@@ -23,40 +22,11 @@ limitations under the License. */
#include "paddle/fluid/framework/lod_tensor.h"
#include "paddle/fluid/framework/op_registry.h"
#include "paddle/fluid/platform/device_context.h"
#include "paddle/fluid/platform/port.h"
namespace
paddle
{
namespace
operators
{
// TODO(sidgoyal78): These function are needed by other files (save_op), move
// them to paddle::filesystem namespace. (as noted by yuyang18 in save_op).
constexpr
char
kSEP
=
'/'
;
static
bool
FileExists
(
const
std
::
string
&
filepath
)
{
struct
stat
buffer
;
return
(
stat
(
filepath
.
c_str
(),
&
buffer
)
==
0
);
}
static
std
::
string
DirName
(
const
std
::
string
&
filepath
)
{
auto
pos
=
filepath
.
rfind
(
kSEP
);
if
(
pos
==
std
::
string
::
npos
)
{
return
""
;
}
return
filepath
.
substr
(
0
,
pos
);
}
static
void
MkDir
(
const
char
*
path
)
{
if
(
mkdir
(
path
,
0755
))
{
PADDLE_ENFORCE_EQ
(
errno
,
EEXIST
,
"%s mkdir failed!"
,
path
);
}
}
static
void
MkDirRecursively
(
const
char
*
fullpath
)
{
if
(
*
fullpath
==
'\0'
)
return
;
// empty string
if
(
FileExists
(
fullpath
))
return
;
MkDirRecursively
(
DirName
(
fullpath
).
c_str
());
MkDir
(
fullpath
);
}
class
SaveCombineOp
:
public
framework
::
OperatorBase
{
public:
SaveCombineOp
(
const
std
::
string
&
type
,
...
...
paddle/fluid/operators/save_op.cc
浏览文件 @
6fb28796
...
...
@@ -13,7 +13,6 @@ See the License for the specific language governing permissions and
limitations under the License. */
#include <stdint.h>
#include <sys/stat.h>
#include <fstream>
#include <numeric>
...
...
@@ -25,6 +24,7 @@ limitations under the License. */
#include "paddle/fluid/framework/selected_rows.h"
#include "paddle/fluid/framework/variable.h"
#include "paddle/fluid/platform/device_context.h"
#include "paddle/fluid/platform/port.h"
namespace
paddle
{
namespace
operators
{
...
...
@@ -33,36 +33,6 @@ namespace operators {
// to directory specified.
constexpr
char
LOOKUP_TABLE_PATH
[]
=
"kLookupTablePath"
;
// TODO(yuyang18): If the functions below are needed by other files, move them
// to paddle::filesystem namespace.
constexpr
char
kSEP
=
'/'
;
static
bool
FileExists
(
const
std
::
string
&
filepath
)
{
struct
stat
buffer
;
return
(
stat
(
filepath
.
c_str
(),
&
buffer
)
==
0
);
}
static
std
::
string
DirName
(
const
std
::
string
&
filepath
)
{
auto
pos
=
filepath
.
rfind
(
kSEP
);
if
(
pos
==
std
::
string
::
npos
)
{
return
""
;
}
return
filepath
.
substr
(
0
,
pos
);
}
static
void
MkDir
(
const
char
*
path
)
{
if
(
mkdir
(
path
,
0755
))
{
PADDLE_ENFORCE_EQ
(
errno
,
EEXIST
,
"%s mkdir failed!"
,
path
);
}
}
static
void
MkDirRecursively
(
const
char
*
fullpath
)
{
if
(
*
fullpath
==
'\0'
)
return
;
// empty string
if
(
FileExists
(
fullpath
))
return
;
MkDirRecursively
(
DirName
(
fullpath
).
c_str
());
MkDir
(
fullpath
);
}
class
SaveOp
:
public
framework
::
OperatorBase
{
public:
SaveOp
(
const
std
::
string
&
type
,
const
framework
::
VariableNameMap
&
inputs
,
...
...
paddle/fluid/platform/port.h
浏览文件 @
6fb28796
...
...
@@ -14,24 +14,141 @@
#pragma once
#include <cstdio>
#include <stdexcept>
#include <memory>
#include <string>
#define GLOG_NO_ABBREVIATED_SEVERITIES // msvc conflict logging with windows.h
#include "glog/logging.h"
#if !defined(_WIN32)
#include <dlfcn.h> // for dladdr
#include <execinfo.h> // for backtrace
#define UNUSED __attribute__((unused))
#include <dlfcn.h> // dladdr
#include <execinfo.h> // backtrace
#include <sys/stat.h>
#include <algorithm> // std::accumulate
#else
#include <Shlwapi.h>
#include <Windows.h>
#include <io.h> // _popen, _pclose
#include <windows.h>
#if defined(_WIN32)
#include <numeric> // std::accumulate in msvc
#endif
// windows version of __attribute__((unused))
#define UNUSED __pragma(warning(suppress : 4100))
static
void
*
dlsym
(
void
*
handle
,
const
char
*
symbol_name
)
{
#ifndef S_ISDIR // windows port for sys/stat.h
#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
#endif // S_ISDIR
static
void
*
dlsym
(
void
*
handle
,
const
char
*
symbol_name
)
{
FARPROC
found_symbol
;
found_symbol
=
GetProcAddress
((
HMODULE
)
handle
,
symbol_name
);
if
(
found_symbol
==
NULL
)
{
throw
std
::
runtime_error
(
std
::
string
(
symbol_name
)
+
" not found."
);
}
return
reinterpret_cast
<
void
*>
(
found_symbol
);
return
reinterpret_cast
<
void
*>
(
found_symbol
);
}
#endif
static
void
*
dlopen
(
const
char
*
filename
,
int
flag
)
{
std
::
string
file_name
(
filename
);
file_name
.
replace
(
0
,
file_name
.
size
()
-
1
,
'/'
,
'\\'
);
HMODULE
hModule
=
LoadLibrary
(
file_name
.
c_str
());
if
(
!
hModule
)
{
throw
std
::
runtime_error
(
file_name
+
" not found."
);
}
return
reinterpret_cast
<
void
*>
(
hModule
);
}
#endif // !_WIN32
static
void
ExecShellCommand
(
const
std
::
string
&
cmd
,
std
::
string
*
message
)
{
char
buffer
[
128
];
#if !defined(_WIN32)
std
::
shared_ptr
<
FILE
>
pipe
(
popen
(
cmd
.
c_str
(),
"r"
),
pclose
);
#else
std
::
shared_ptr
<
FILE
>
pipe
(
_popen
(
cmd
.
c_str
(),
"r"
),
_pclose
);
#endif // _WIN32
if
(
!
pipe
)
{
LOG
(
ERROR
)
<<
"error running command: "
<<
cmd
;
return
;
}
while
(
!
feof
(
pipe
.
get
()))
{
if
(
fgets
(
buffer
,
128
,
pipe
.
get
())
!=
nullptr
)
{
*
message
+=
buffer
;
}
}
}
static
bool
PathExists
(
const
std
::
string
&
path
)
{
#if !defined(_WIN32)
struct
stat
statbuf
;
if
(
stat
(
path
.
c_str
(),
&
statbuf
)
!=
-
1
)
{
if
(
S_ISDIR
(
statbuf
.
st_mode
))
{
return
true
;
}
}
#else
struct
_stat
statbuf
;
if
(
_stat
(
path
.
c_str
(),
&
statbuf
)
!=
-
1
)
{
if
(
S_ISDIR
(
statbuf
.
st_mode
))
{
return
true
;
}
}
#endif // !_WIN32
return
false
;
}
// TODO(yuyang18): If the functions below are needed by other files, move them
// to paddle::filesystem namespace.
#if !defined(_WIN32)
constexpr
char
kSEP
=
'/'
;
#else
constexpr
char
kSEP
=
'\\'
;
#endif // _WIN32
static
bool
FileExists
(
const
std
::
string
&
filepath
)
{
#if !defined(_WIN32)
struct
stat
buffer
;
return
(
stat
(
filepath
.
c_str
(),
&
buffer
)
==
0
);
#else
struct
_stat
buffer
;
return
(
_stat
(
filepath
.
c_str
(),
&
buffer
)
==
0
);
#endif // !_WIN32
}
static
std
::
string
DirName
(
const
std
::
string
&
filepath
)
{
auto
pos
=
filepath
.
rfind
(
kSEP
);
if
(
pos
==
std
::
string
::
npos
)
{
return
""
;
}
return
filepath
.
substr
(
0
,
pos
);
}
static
void
MkDir
(
const
char
*
path
)
{
std
::
string
path_error
(
path
);
path_error
+=
" mkdir failed!"
;
#if !defined(_WIN32)
if
(
mkdir
(
path
,
0755
))
{
if
(
errno
!=
EEXIST
)
{
throw
std
::
runtime_error
(
path_error
);
}
}
#else
CreateDirectory
(
path
,
NULL
);
auto
errorno
=
GetLastError
();
if
(
errorno
!=
ERROR_ALREADY_EXISTS
)
{
throw
std
::
runtime_error
(
path_error
);
}
#endif // !_WIN32
}
static
void
MkDirRecursively
(
const
char
*
fullpath
)
{
if
(
*
fullpath
==
'\0'
)
return
;
// empty string
if
(
FileExists
(
fullpath
))
return
;
MkDirRecursively
(
DirName
(
fullpath
).
c_str
());
MkDir
(
fullpath
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录