Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
e6c14f7e
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e6c14f7e
编写于
6月 29, 2017
作者:
L
liaogang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ENH: Polish cpu info interface
上级
68ab1ef4
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
30 addition
and
69 deletion
+30
-69
paddle/platform/CMakeLists.txt
paddle/platform/CMakeLists.txt
+1
-2
paddle/platform/cpu_info.cc
paddle/platform/cpu_info.cc
+13
-1
paddle/platform/cpu_info.h
paddle/platform/cpu_info.h
+8
-2
paddle/platform/cpu_info_test.cc
paddle/platform/cpu_info_test.cc
+8
-5
paddle/platform/cuda_test.cu
paddle/platform/cuda_test.cu
+0
-59
未找到文件。
paddle/platform/CMakeLists.txt
浏览文件 @
e6c14f7e
cc_library
(
cpu_info SRCS cpu_info.cc
)
cc_test
(
cpu_info_test SRCS cpu_info_test.cc DEPS cpu_info gflags
)
cc_test
(
cpu_info_test SRCS cpu_info_test.cc DEPS cpu_info gflags
glog
)
nv_library
(
gpu_info SRCS gpu_info.cc
)
nv_test
(
cuda_test SRCS cuda_test.cu
)
cc_library
(
place SRCS place.cc
)
cc_test
(
place_test SRCS place_test.cc DEPS place glog gflags
)
paddle/platform/cpu_info.cc
浏览文件 @
e6c14f7e
...
...
@@ -47,9 +47,21 @@ inline size_t CpuTotalPhysicalMemory() {
#endif
}
size_t
CpuTotalMemory
()
{
size_t
CpuMaxAllocSize
()
{
// For distributed systems, it requires configuring and limiting
// the fraction of memory to use.
return
FLAGS_fraction_of_cpu_memory_to_use
*
CpuTotalPhysicalMemory
();
}
size_t
CpuMinChunkSize
()
{
// Allow to allocate the minimum chunk size is 256 bytes.
return
1
<<
8
;
}
size_t
CpuMaxChunkSize
()
{
// Allow to allocate the maximum chunk size is roughly 3% of CPU memory.
return
CpuMaxAllocSize
()
/
32
;
}
}
// namespace platform
}
// namespace paddle
paddle/platform/cpu_info.h
浏览文件 @
e6c14f7e
...
...
@@ -19,8 +19,14 @@ limitations under the License. */
namespace
paddle
{
namespace
platform
{
//! Get the total memory on host machine.
size_t
CpuTotalMemory
();
//! Get the maximum allocation size for a machine.
size_t
CpuMaxAllocSize
();
//! Get the minimum chunk size for buddy allocator.
size_t
CpuMinChunkSize
();
//! Get the maximum chunk size for buddy allocator.
size_t
CpuMaxChunkSize
();
}
// namespace platform
}
// namespace paddle
paddle/platform/cpu_info_test.cc
浏览文件 @
e6c14f7e
#include "paddle/platform/cpu_info.h"
#include "paddle/string/printf.h"
#include <ostream>
#include <sstream>
#include "gflags/gflags.h"
#include "glog/logging.h"
#include "gtest/gtest.h"
DECLARE_double
(
fraction_of_cpu_memory_to_use
);
TEST
(
CpuMemoryUsage
,
Print
)
{
std
::
stringstream
ss
;
size_t
mem_size
=
paddle
::
platform
::
CpuTotalMemory
()
/
1024
/
1024
/
1024
;
ss
<<
std
::
to_string
(
static_cast
<
size_t
>
(
FLAGS_fraction_of_cpu_memory_to_use
*
100
))
<<
"% of CPU Memory Usage: "
<<
mem_size
<<
" GB"
;
std
::
cout
<<
ss
.
str
();
size_t
memory_size
=
paddle
::
platform
::
CpuMaxAllocSize
()
/
1024
/
1024
/
1024
;
float
use_percent
=
FLAGS_fraction_of_cpu_memory_to_use
*
100
;
std
::
cout
<<
paddle
::
string
::
Sprintf
(
"
\n
%.2f %% of CPU Memory Usage: %d GB
\n
"
,
use_percent
,
memory_size
)
<<
std
::
endl
;
}
paddle/platform/cuda_test.cu
已删除
100644 → 0
浏览文件 @
68ab1ef4
#include <cuda_runtime.h>
#include <stdio.h>
#include "gtest/gtest.h"
#define CHECK_ERR(x) \
if (x != cudaSuccess) { \
fprintf(stderr, \
"%s in %s at line %d\n", \
cudaGetErrorString(err), \
__FILE__, \
__LINE__); \
exit(-1); \
}
__global__
void
vecAdd
(
float
*
d_A
,
float
*
d_B
,
float
*
d_C
,
int
n
)
{
int
i
=
blockDim
.
x
*
blockIdx
.
x
+
threadIdx
.
x
;
if
(
i
<
n
)
{
d_C
[
i
]
=
d_A
[
i
]
+
d_B
[
i
];
}
}
TEST
(
Cuda
,
Equality
)
{
int
n
=
10
;
// Memory allocation for h_A, h_B and h_C (in the host)
float
h_A
[
10
]
=
{
1.0
,
2.0
,
3.0
,
4.0
,
5.0
,
6.0
,
7.0
,
8.0
,
9.0
,
0.0
};
float
h_B
[
10
]
=
{
0.0
,
9.0
,
8.0
,
7.0
,
6.0
,
5.0
,
4.0
,
3.0
,
2.0
,
1.0
};
float
h_C
[
10
];
float
*
d_A
,
*
d_B
,
*
d_C
;
cudaError_t
err
;
// Memory allocation for d_A, d_B and d_C (in the device)
err
=
cudaMalloc
((
void
**
)
&
d_A
,
sizeof
(
float
)
*
n
);
CHECK_ERR
(
err
);
err
=
cudaMalloc
((
void
**
)
&
d_B
,
sizeof
(
float
)
*
n
);
CHECK_ERR
(
err
);
err
=
cudaMalloc
((
void
**
)
&
d_C
,
sizeof
(
float
)
*
n
);
CHECK_ERR
(
err
);
// Copying memory to device
err
=
cudaMemcpy
(
d_A
,
h_A
,
sizeof
(
float
)
*
n
,
cudaMemcpyHostToDevice
);
CHECK_ERR
(
err
);
err
=
cudaMemcpy
(
d_B
,
h_B
,
sizeof
(
float
)
*
n
,
cudaMemcpyHostToDevice
);
CHECK_ERR
(
err
);
// Calling the kernel
vecAdd
<<<
ceil
(
n
/
256.0
),
256
>>>
(
d_A
,
d_B
,
d_C
,
n
);
// Copying results back to host
err
=
cudaMemcpy
(
h_C
,
d_C
,
sizeof
(
float
)
*
n
,
cudaMemcpyDeviceToHost
);
CHECK_ERR
(
err
);
EXPECT_EQ
(
h_C
[
0
],
1.0
);
for
(
int
i
=
1
;
i
<
n
-
1
;
++
i
)
{
EXPECT_EQ
(
h_C
[
i
],
11.0
);
}
EXPECT_EQ
(
h_C
[
9
],
1.0
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录