Skip to content

Commit 619c1a8

Browse files
YqGe585Echo-Nie
andauthored
[API Compatibility] Add paddle.cuda apis (#7470)
* add apis * add paddle.device * fix COPY-FROM * fix code example * fix codestyle * fix py:function --------- Co-authored-by: Echo-Nie <[email protected]>
1 parent c1bccf2 commit 619c1a8

17 files changed

+355
-0
lines changed

docs/api/paddle/cuda/Overview_cn.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,9 @@ PyTorch 兼容函数
1818
" :ref:`cudart <cn_api_paddle_cuda_cudart>` ", "以模块的形式返回 CUDA Runtime 对象"
1919
" :ref:`is_initialized <cn_api_paddle_cuda_is_initialized>` ", "判断 CUDA 是否已经初始化"
2020
" :ref:`mem_get_info <cn_api_paddle_cuda_mem_get_info>` ", "获取指定设备上的全局空闲显存和显存总量"
21+
" :ref:`current_device <cn_api_paddle_cuda_current_device>` ", "返回当前设备的索引"
22+
" :ref:`device_count <cn_api_paddle_cuda_device_count>` ", "返回可用的 CUDA 设备数量"
23+
" :ref:`empty_cache <cn_api_paddle_cuda_empty_cache>` ", "释放当前设备上所有未占用的缓存内存"
24+
" :ref:`memory_allocated <cn_api_paddle_cuda_memory_allocated>` ", "返回当前设备上分配的内存总量"
25+
" :ref:`memory_reserved <cn_api_paddle_cuda_memory_reserved>` ", "返回当前设备上由缓存分配器管理的内存总量"
26+
" :ref:`set_device <cn_api_paddle_cuda_set_device>` ", "设置当前设备"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.. _cn_api_paddle_cuda_current_device:
2+
3+
current_device
4+
--------------
5+
6+
.. py:function:: paddle.cuda.current_device()
7+
8+
返回当前设备的索引。
9+
10+
返回
11+
::::::::::::
12+
13+
int, 当前设备的索引。
14+
15+
代码示例
16+
::::::::::::
17+
COPY-FROM: paddle.cuda.current_device
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.. _cn_api_paddle_cuda_device_count:
2+
3+
device_count
4+
------------
5+
6+
.. py:function:: paddle.cuda.device_count()
7+
8+
返回可用的计算卡设备数量。
9+
10+
返回
11+
::::::::::::
12+
13+
int, 可用的计算卡设备数量。
14+
15+
代码示例
16+
::::::::::::
17+
COPY-FROM: paddle.cuda.device_count
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
.. _cn_api_paddle_cuda_empty_cache:
2+
3+
empty_cache
4+
-----------
5+
6+
.. py:function:: paddle.cuda.empty_cache()
7+
8+
该函数用于释放显存分配器中空闲的显存,这样其他的 GPU 应用程序就可以使用释放出来的显存,并在 nvidia-smi 中可见。大多数情况下您不需要使用该函数,当您删除 GPU 上的 Tensor 时,Paddle 框架并不会将显存释放,而是将显存保留起来,以便在下一次申明显存时可以更快的完成分配。
9+
10+
代码示例
11+
::::::::::::
12+
COPY-FROM: paddle.cuda.empty_cache
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.. _cn_api_paddle_cuda_memory_allocated:
2+
3+
memory_allocated
4+
---------------
5+
6+
.. py:function:: paddle.cuda.memory_allocated(device=None)
7+
8+
返回给定设备上当前分配给 Tensor 的显存大小。
9+
10+
参数
11+
::::::::::::
12+
13+
- **device** (DeviceLike) - 指定要查询的设备,可以是 "int" 用来表示设备 id,可以是形如 "gpu:0" 之类的设备描述字符串,也可以是 `paddle.CUDAPlace(0)` 之类的设备实例。如果为 None(默认值)或未指定设备索引,则返回由 ``paddle.device.get_device()`` 给出的当前设备的统计信息。
14+
15+
返回
16+
::::::::::::
17+
18+
int, 当前设备上分配的内存总量(字节)。
19+
20+
代码示例
21+
::::::::::::
22+
COPY-FROM: paddle.cuda.memory_allocated
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.. _cn_api_paddle_cuda_memory_reserved:
2+
3+
memory_reserved
4+
---------------
5+
6+
.. py:function:: paddle.cuda.memory_reserved(device=None)
7+
8+
返回当前设备上由缓存分配器管理的内存总量。
9+
10+
参数
11+
::::::::::::
12+
13+
- **device** (DeviceLike) - 指定要查询的设备,可以是 "int" 用来表示设备 id,可以是形如 "gpu:0" 之类的设备描述字符串,也可以是 `paddle.CUDAPlace(0)` 之类的设备实例。如果为 None(默认值)或未指定设备索引,则返回由 ``paddle.device.get_device()`` 给出的当前设备的统计信息。
14+
15+
返回
16+
::::::::::::
17+
18+
int, 当前设备上由缓存分配器管理的内存总量(字节)。
19+
20+
代码示例
21+
::::::::::::
22+
COPY-FROM: paddle.cuda.memory_reserved
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.. _cn_api_paddle_cuda_set_device:
2+
3+
set_device
4+
----------
5+
6+
.. py:function:: paddle.cuda.set_device(device)
7+
8+
设置当前设备。
9+
10+
参数
11+
::::::::::::
12+
13+
- **device** (DeviceLike) - 要设置的设备,可以是 "int" 用来表示设备 id,可以是形如 "gpu:0" 之类的设备描述字符串,也可以是 `paddle.CUDAPlace(0)` 之类的设备实例。
14+
15+
代码示例
16+
::::::::::::
17+
COPY-FROM: paddle.cuda.set_device

docs/api/paddle/device/Overview_cn.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,20 @@ paddle.device 目录下包含 cuda 目录和 xpu 目录, cuda 目录中存放
2525
:header: "API 名称", "API 功能"
2626
:widths: 10, 30
2727

28+
" :ref:`device_count <cn_api_paddle_device_device_count>` ", "返回指定设备类型的可用设备数量"
29+
" :ref:`empty_cache <cn_api_paddle_device_empty_cache>` ", "释放当前设备上所有未占用的缓存内存"
2830
" :ref:`get_all_custom_device_type <cn_api_paddle_device_get_all_custom_device_type>` ", "获得所有可用的自定义设备类型"
2931
" :ref:`get_all_device_type <cn_api_paddle_device_get_all_device_type>` ", "获得所有可用的设备类型"
3032
" :ref:`get_available_custom_device <cn_api_paddle_device_get_available_custom_device>` ", "获得所有可用的自定义设备"
3133
" :ref:`get_available_device <cn_api_paddle_device_get_available_device>` ", "获得所有可用的设备"
3234
" :ref:`get_cudnn_version <cn_api_paddle_device_get_cudnn_version>` ", "获得 cudnn 的版本"
35+
" :ref:`get_device_properties <cn_api_paddle_device_get_device_properties>` ", "返回指定设备的属性"
36+
" :ref:`max_memory_allocated <cn_api_paddle_device_max_memory_allocated>` ", "返回给定设备上分配给 Tensor 的内存峰值统计"
37+
" :ref:`max_memory_reserved <cn_api_paddle_device_max_memory_reserved>` ", "返回给定设备上由内存分配器管理的内存峰值统计"
38+
" :ref:`memory_allocated <cn_api_paddle_device_memory_allocated>` ", "返回给定设备上当前分配给 Tensor 的内存大小"
39+
" :ref:`memory_reserved <cn_api_paddle_device_memory_reserved>` ", "返回给定设备上当前由内存分配器管理的内存大小"
40+
" :ref:`reset_max_memory_allocated <cn_api_paddle_device_reset_max_memory_allocated>` ", "重置给定设备上分配给 Tensor 的内存峰值统计"
41+
" :ref:`reset_max_memory_reserved <cn_api_paddle_device_reset_max_memory_reserved>` ", "重置给定设备上由内存分配器管理的内存峰值统计"
3342
" :ref:`set_device <cn_api_paddle_device_set_device>` ", "指定 OP 运行的全局设备"
3443
" :ref:`get_device <cn_api_paddle_device_get_device>` ", "获得 OP 运行的全局设备"
3544

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.. _cn_api_paddle_device_device_count:
2+
3+
device_count
4+
------------
5+
6+
.. py:function:: paddle.device.device_count(device=None)
7+
8+
返回指定设备类型的可用设备数量。
9+
10+
参数
11+
::::::::::::
12+
13+
- **device** (paddle.CUDAPlace|paddle.CustomPlace|paddle.XPUPlace|str|int,可选) - 设备、设备 ID 或形如 ``gpu:x``、``xpu:x`` 或自定义设备名称的设备字符串。如果为 None,则返回当前设备类型的可用设备数量。默认值为 None。
14+
15+
返回
16+
::::::::::::
17+
18+
int,指定设备类型的可用设备数量。
19+
20+
代码示例
21+
::::::::::::
22+
COPY-FROM: paddle.device.device_count
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
.. _cn_api_paddle_device_empty_cache:
2+
3+
empty_cache
4+
-----------
5+
6+
.. py:function:: paddle.device.empty_cache()
7+
8+
释放当前设备上所有未占用的缓存内存。
9+
10+
代码示例
11+
::::::::::::
12+
.. code-block:: python
13+
14+
import paddle
15+
16+
x = paddle.randn([1000, 1000])
17+
del x
18+
paddle.device.empty_cache()

0 commit comments

Comments
 (0)