gpu-burn 2.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gpu_burn-2.2.1/LICENSE +22 -0
- gpu_burn-2.2.1/MANIFEST.in +1 -0
- gpu_burn-2.2.1/PKG-INFO +193 -0
- gpu_burn-2.2.1/README.md +168 -0
- gpu_burn-2.2.1/pyproject.toml +46 -0
- gpu_burn-2.2.1/setup.cfg +4 -0
- gpu_burn-2.2.1/src/gpu_burn/__init__.py +3 -0
- gpu_burn-2.2.1/src/gpu_burn/__main__.py +8 -0
- gpu_burn-2.2.1/src/gpu_burn/cli.py +998 -0
- gpu_burn-2.2.1/src/gpu_burn.egg-info/PKG-INFO +193 -0
- gpu_burn-2.2.1/src/gpu_burn.egg-info/SOURCES.txt +15 -0
- gpu_burn-2.2.1/src/gpu_burn.egg-info/dependency_links.txt +1 -0
- gpu_burn-2.2.1/src/gpu_burn.egg-info/entry_points.txt +2 -0
- gpu_burn-2.2.1/src/gpu_burn.egg-info/requires.txt +1 -0
- gpu_burn-2.2.1/src/gpu_burn.egg-info/top_level.txt +1 -0
- gpu_burn-2.2.1/tests/real_gpu_dynamic.py +108 -0
- gpu_burn-2.2.1/tests/test_cli.py +284 -0
gpu_burn-2.2.1/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 gpu-burn contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
include tests/real_gpu_dynamic.py
|
gpu_burn-2.2.1/PKG-INFO
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: gpu-burn
|
|
3
|
+
Version: 2.2.1
|
|
4
|
+
Summary: Control GPU compute utilization with a managed PaddlePaddle workload
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Source, https://github.com/cangtianhuang/gpu-burn
|
|
7
|
+
Project-URL: Issues, https://github.com/cangtianhuang/gpu-burn/issues
|
|
8
|
+
Project-URL: PaddlePaddle, https://www.paddlepaddle.org.cn/
|
|
9
|
+
Keywords: gpu,paddlepaddle,cuda,stress-test,utilization
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: System Administrators
|
|
14
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: System :: Hardware
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: paddlepaddle-gpu<4.0.0,>=2.6.2
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
# gpu-burn
|
|
27
|
+
|
|
28
|
+
`gpu-burn` runs a configurable matrix-multiplication workload on one or more
|
|
29
|
+
NVIDIA GPUs using PaddlePaddle. It dynamically yields each GPU when another
|
|
30
|
+
process starts using a configured percentage of device memory, then resumes after
|
|
31
|
+
that GPU has remained idle for the configured period.
|
|
32
|
+
|
|
33
|
+
This project is not related to the CUDA/C++ project
|
|
34
|
+
[`wilicc/gpu-burn`](https://github.com/wilicc/gpu-burn). It does not validate
|
|
35
|
+
calculation results and should not be used as a hardware fault or ECC diagnostic.
|
|
36
|
+
|
|
37
|
+
## Requirements
|
|
38
|
+
|
|
39
|
+
- Linux and Python 3.10 or newer
|
|
40
|
+
- NVIDIA GPU and a compatible CUDA driver
|
|
41
|
+
- **PaddlePaddle with CUDA support**
|
|
42
|
+
|
|
43
|
+
The PyPI package explicitly depends on `paddlepaddle-gpu>=2.6.2,<4.0.0`.
|
|
44
|
+
PaddlePaddle publishes different packages and indexes for some CUDA versions, so
|
|
45
|
+
install the build recommended by the
|
|
46
|
+
[official PaddlePaddle installation guide](https://www.paddlepaddle.org.cn/install/quick)
|
|
47
|
+
when the default PyPI build does not match your CUDA environment.
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
Install from PyPI:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python -m pip install gpu-burn
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
For a CUDA-specific PaddlePaddle build, install PaddlePaddle first and then avoid
|
|
58
|
+
letting pip replace it:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Install the appropriate paddlepaddle-gpu build from the official Paddle index.
|
|
62
|
+
python -m pip install --no-deps gpu-burn
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Install from a source checkout:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
python -m pip install .
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Usage
|
|
72
|
+
|
|
73
|
+
Run on all detected GPUs in the foreground at full utilization:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
gpu-burn run
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Select devices and target an approximate compute duty cycle:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
gpu-burn run --devs 0,2-3 --util 60
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Configure adaptive yielding with hysteresis. This pauses only the affected GPU
|
|
86
|
+
when external compute processes use at least 5% of its total memory. Its worker
|
|
87
|
+
restarts after usage remains at or below 2% for 5 continuous minutes:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
gpu-burn run -d 0,2-3 -u 60 -P 5 -R 2 -i 5 -p 1
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Run as a per-user background process:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
gpu-burn start --gpus 2 --util 80
|
|
97
|
+
gpu-burn status
|
|
98
|
+
gpu-burn logs -f
|
|
99
|
+
gpu-burn stop
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
With no options, `gpu-burn start` selects every Paddle-visible GPU and uses:
|
|
103
|
+
|
|
104
|
+
- `16384x16384` float16 matrix multiplication
|
|
105
|
+
- 100% compute duty-cycle target
|
|
106
|
+
- pause at 5% external memory, resume at or below 2%
|
|
107
|
+
- 5 continuous idle minutes before restart
|
|
108
|
+
- 1-second monitoring interval
|
|
109
|
+
|
|
110
|
+
After the supervisor becomes ready, startup output includes the resolved GPU
|
|
111
|
+
count, each device's running or paused state, worker PIDs, workload, adaptive
|
|
112
|
+
policy, supervisor PID, and log path:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
✓ gpu-burn is ready
|
|
116
|
+
|
|
117
|
+
gpu-burn 2.2.1 started
|
|
118
|
+
supervisor : pid 42000
|
|
119
|
+
devices : 2 selected, 2 running, 0 paused
|
|
120
|
+
gpu:0 : running (pid 42010)
|
|
121
|
+
gpu:1 : running (pid 42011)
|
|
122
|
+
workload : 16384x16384 float16, util 100%
|
|
123
|
+
adaptive : pause >= 5%, resume <= 2%, idle 5 min, poll 1s
|
|
124
|
+
log : /tmp/gpu-burn-1000/gpu-burn.log
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
On an interactive terminal, the first line is an animated spinner while Paddle
|
|
128
|
+
and NVIDIA devices are checked. Redirected output automatically uses plain text.
|
|
129
|
+
Set `GPU_BURN_NO_SPINNER=1` to disable animation explicitly.
|
|
130
|
+
|
|
131
|
+
The main workload options are:
|
|
132
|
+
|
|
133
|
+
| Option | Meaning | Default |
|
|
134
|
+
| --- | --- | --- |
|
|
135
|
+
| `-g`, `--gpus N` | Use the first `N` visible GPUs | all |
|
|
136
|
+
| `-d`, `--devs LIST` | Device IDs/ranges such as `0,2-3` | all |
|
|
137
|
+
| `-u`, `--util PERCENT` | Approximate compute duty cycle in `(0, 100]` | `100` |
|
|
138
|
+
| `-m`, `--size N` | Square matrix dimension | `16384` |
|
|
139
|
+
| `-t`, `--type TYPE` | `float16` or `float32` | `float16` |
|
|
140
|
+
| `-l`, `--log-int SECONDS` | Worker progress log interval | `30` |
|
|
141
|
+
| `-P`, `--pause PERCENT` | Pause at this external memory percentage | `5` |
|
|
142
|
+
| `-R`, `--resume PERCENT` | Start the idle timer at or below this percentage | `2` |
|
|
143
|
+
| `-i`, `--idle MINUTES` | Continuous idle minutes before restart | `5` |
|
|
144
|
+
| `-p`, `--poll SECONDS` | Memory polling interval | `1` |
|
|
145
|
+
|
|
146
|
+
`--gpus` and `--devs` are mutually exclusive. Lower utilization is
|
|
147
|
+
implemented by alternating synchronized matrix multiplication with idle time, so
|
|
148
|
+
the value observed by monitoring tools can vary with sampling intervals and GPU
|
|
149
|
+
power-management behavior.
|
|
150
|
+
|
|
151
|
+
The supervisor queries `nvidia-smi` compute applications and excludes its own
|
|
152
|
+
worker PIDs. Memory from other compute processes is summed per selected GPU and
|
|
153
|
+
divided by that GPU's total physical memory. At `--pause`, only that GPU's
|
|
154
|
+
worker is stopped, which releases its PaddlePaddle tensors and GPU memory. Once
|
|
155
|
+
usage reaches `--resume` or lower, it must remain there for `--idle` minutes
|
|
156
|
+
before a new worker starts. `--resume` must be lower than `--pause`; this
|
|
157
|
+
hysteresis prevents repeated stop/start cycles near one threshold. Display-only
|
|
158
|
+
contexts absent from NVIDIA's compute-app list are not considered.
|
|
159
|
+
Numeric and UUID-based `CUDA_VISIBLE_DEVICES` remapping is honored, so CLI device
|
|
160
|
+
IDs remain the same logical IDs that PaddlePaddle exposes.
|
|
161
|
+
|
|
162
|
+
## State and cleanup
|
|
163
|
+
|
|
164
|
+
Only one managed instance is allowed per user. Runtime state and logs are stored
|
|
165
|
+
under `$GPU_BURN_STATE_DIR`, `$XDG_RUNTIME_DIR/gpu-burn`, or
|
|
166
|
+
`/tmp/gpu-burn-$UID`, in that order. `gpu-burn stop --force` sends `SIGKILL` if a
|
|
167
|
+
worker does not stop before the configured timeout.
|
|
168
|
+
|
|
169
|
+
## Development
|
|
170
|
+
|
|
171
|
+
The PEP 517 build requirement uses a compatible lower bound
|
|
172
|
+
(`setuptools>=77`) instead of pinning one exact backend release. An exact pin
|
|
173
|
+
makes builds byte-for-byte easier to reproduce, but also forces every source
|
|
174
|
+
installer to download that precise release and can unnecessarily break offline
|
|
175
|
+
or constrained environments. This pure-Python project does not need `wheel` in
|
|
176
|
+
`build-system.requires`; setuptools implements the wheel build hook itself.
|
|
177
|
+
Release CI pins the user-facing `build` and `twine` tools separately.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
python -m pip install --no-deps -e .
|
|
181
|
+
python -m pytest
|
|
182
|
+
python -m build
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Run the opt-in adaptive lifecycle test on a real GPU:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
GPU_BURN_TEST_DEVICE=0 python tests/real_gpu_dynamic.py
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## License
|
|
192
|
+
|
|
193
|
+
MIT
|
gpu_burn-2.2.1/README.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# gpu-burn
|
|
2
|
+
|
|
3
|
+
`gpu-burn` runs a configurable matrix-multiplication workload on one or more
|
|
4
|
+
NVIDIA GPUs using PaddlePaddle. It dynamically yields each GPU when another
|
|
5
|
+
process starts using a configured percentage of device memory, then resumes after
|
|
6
|
+
that GPU has remained idle for the configured period.
|
|
7
|
+
|
|
8
|
+
This project is not related to the CUDA/C++ project
|
|
9
|
+
[`wilicc/gpu-burn`](https://github.com/wilicc/gpu-burn). It does not validate
|
|
10
|
+
calculation results and should not be used as a hardware fault or ECC diagnostic.
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
- Linux and Python 3.10 or newer
|
|
15
|
+
- NVIDIA GPU and a compatible CUDA driver
|
|
16
|
+
- **PaddlePaddle with CUDA support**
|
|
17
|
+
|
|
18
|
+
The PyPI package explicitly depends on `paddlepaddle-gpu>=2.6.2,<4.0.0`.
|
|
19
|
+
PaddlePaddle publishes different packages and indexes for some CUDA versions, so
|
|
20
|
+
install the build recommended by the
|
|
21
|
+
[official PaddlePaddle installation guide](https://www.paddlepaddle.org.cn/install/quick)
|
|
22
|
+
when the default PyPI build does not match your CUDA environment.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
Install from PyPI:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
python -m pip install gpu-burn
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For a CUDA-specific PaddlePaddle build, install PaddlePaddle first and then avoid
|
|
33
|
+
letting pip replace it:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Install the appropriate paddlepaddle-gpu build from the official Paddle index.
|
|
37
|
+
python -m pip install --no-deps gpu-burn
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Install from a source checkout:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
python -m pip install .
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Usage
|
|
47
|
+
|
|
48
|
+
Run on all detected GPUs in the foreground at full utilization:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
gpu-burn run
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Select devices and target an approximate compute duty cycle:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
gpu-burn run --devs 0,2-3 --util 60
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Configure adaptive yielding with hysteresis. This pauses only the affected GPU
|
|
61
|
+
when external compute processes use at least 5% of its total memory. Its worker
|
|
62
|
+
restarts after usage remains at or below 2% for 5 continuous minutes:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
gpu-burn run -d 0,2-3 -u 60 -P 5 -R 2 -i 5 -p 1
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Run as a per-user background process:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
gpu-burn start --gpus 2 --util 80
|
|
72
|
+
gpu-burn status
|
|
73
|
+
gpu-burn logs -f
|
|
74
|
+
gpu-burn stop
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
With no options, `gpu-burn start` selects every Paddle-visible GPU and uses:
|
|
78
|
+
|
|
79
|
+
- `16384x16384` float16 matrix multiplication
|
|
80
|
+
- 100% compute duty-cycle target
|
|
81
|
+
- pause at 5% external memory, resume at or below 2%
|
|
82
|
+
- 5 continuous idle minutes before restart
|
|
83
|
+
- 1-second monitoring interval
|
|
84
|
+
|
|
85
|
+
After the supervisor becomes ready, startup output includes the resolved GPU
|
|
86
|
+
count, each device's running or paused state, worker PIDs, workload, adaptive
|
|
87
|
+
policy, supervisor PID, and log path:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
✓ gpu-burn is ready
|
|
91
|
+
|
|
92
|
+
gpu-burn 2.2.1 started
|
|
93
|
+
supervisor : pid 42000
|
|
94
|
+
devices : 2 selected, 2 running, 0 paused
|
|
95
|
+
gpu:0 : running (pid 42010)
|
|
96
|
+
gpu:1 : running (pid 42011)
|
|
97
|
+
workload : 16384x16384 float16, util 100%
|
|
98
|
+
adaptive : pause >= 5%, resume <= 2%, idle 5 min, poll 1s
|
|
99
|
+
log : /tmp/gpu-burn-1000/gpu-burn.log
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
On an interactive terminal, the first line is an animated spinner while Paddle
|
|
103
|
+
and NVIDIA devices are checked. Redirected output automatically uses plain text.
|
|
104
|
+
Set `GPU_BURN_NO_SPINNER=1` to disable animation explicitly.
|
|
105
|
+
|
|
106
|
+
The main workload options are:
|
|
107
|
+
|
|
108
|
+
| Option | Meaning | Default |
|
|
109
|
+
| --- | --- | --- |
|
|
110
|
+
| `-g`, `--gpus N` | Use the first `N` visible GPUs | all |
|
|
111
|
+
| `-d`, `--devs LIST` | Device IDs/ranges such as `0,2-3` | all |
|
|
112
|
+
| `-u`, `--util PERCENT` | Approximate compute duty cycle in `(0, 100]` | `100` |
|
|
113
|
+
| `-m`, `--size N` | Square matrix dimension | `16384` |
|
|
114
|
+
| `-t`, `--type TYPE` | `float16` or `float32` | `float16` |
|
|
115
|
+
| `-l`, `--log-int SECONDS` | Worker progress log interval | `30` |
|
|
116
|
+
| `-P`, `--pause PERCENT` | Pause at this external memory percentage | `5` |
|
|
117
|
+
| `-R`, `--resume PERCENT` | Start the idle timer at or below this percentage | `2` |
|
|
118
|
+
| `-i`, `--idle MINUTES` | Continuous idle minutes before restart | `5` |
|
|
119
|
+
| `-p`, `--poll SECONDS` | Memory polling interval | `1` |
|
|
120
|
+
|
|
121
|
+
`--gpus` and `--devs` are mutually exclusive. Lower utilization is
|
|
122
|
+
implemented by alternating synchronized matrix multiplication with idle time, so
|
|
123
|
+
the value observed by monitoring tools can vary with sampling intervals and GPU
|
|
124
|
+
power-management behavior.
|
|
125
|
+
|
|
126
|
+
The supervisor queries `nvidia-smi` compute applications and excludes its own
|
|
127
|
+
worker PIDs. Memory from other compute processes is summed per selected GPU and
|
|
128
|
+
divided by that GPU's total physical memory. At `--pause`, only that GPU's
|
|
129
|
+
worker is stopped, which releases its PaddlePaddle tensors and GPU memory. Once
|
|
130
|
+
usage reaches `--resume` or lower, it must remain there for `--idle` minutes
|
|
131
|
+
before a new worker starts. `--resume` must be lower than `--pause`; this
|
|
132
|
+
hysteresis prevents repeated stop/start cycles near one threshold. Display-only
|
|
133
|
+
contexts absent from NVIDIA's compute-app list are not considered.
|
|
134
|
+
Numeric and UUID-based `CUDA_VISIBLE_DEVICES` remapping is honored, so CLI device
|
|
135
|
+
IDs remain the same logical IDs that PaddlePaddle exposes.
|
|
136
|
+
|
|
137
|
+
## State and cleanup
|
|
138
|
+
|
|
139
|
+
Only one managed instance is allowed per user. Runtime state and logs are stored
|
|
140
|
+
under `$GPU_BURN_STATE_DIR`, `$XDG_RUNTIME_DIR/gpu-burn`, or
|
|
141
|
+
`/tmp/gpu-burn-$UID`, in that order. `gpu-burn stop --force` sends `SIGKILL` if a
|
|
142
|
+
worker does not stop before the configured timeout.
|
|
143
|
+
|
|
144
|
+
## Development
|
|
145
|
+
|
|
146
|
+
The PEP 517 build requirement uses a compatible lower bound
|
|
147
|
+
(`setuptools>=77`) instead of pinning one exact backend release. An exact pin
|
|
148
|
+
makes builds byte-for-byte easier to reproduce, but also forces every source
|
|
149
|
+
installer to download that precise release and can unnecessarily break offline
|
|
150
|
+
or constrained environments. This pure-Python project does not need `wheel` in
|
|
151
|
+
`build-system.requires`; setuptools implements the wheel build hook itself.
|
|
152
|
+
Release CI pins the user-facing `build` and `twine` tools separately.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
python -m pip install --no-deps -e .
|
|
156
|
+
python -m pytest
|
|
157
|
+
python -m build
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Run the opt-in adaptive lifecycle test on a real GPU:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
GPU_BURN_TEST_DEVICE=0 python tests/real_gpu_dynamic.py
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## License
|
|
167
|
+
|
|
168
|
+
MIT
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "gpu-burn"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Control GPU compute utilization with a managed PaddlePaddle workload"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
keywords = ["gpu", "paddlepaddle", "cuda", "stress-test", "utilization"]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 4 - Beta",
|
|
15
|
+
"Environment :: Console",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Intended Audience :: System Administrators",
|
|
18
|
+
"Operating System :: POSIX :: Linux",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Topic :: System :: Hardware",
|
|
24
|
+
]
|
|
25
|
+
dependencies = [
|
|
26
|
+
"paddlepaddle-gpu>=2.6.2,<4.0.0",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.urls]
|
|
30
|
+
Source = "https://github.com/cangtianhuang/gpu-burn"
|
|
31
|
+
Issues = "https://github.com/cangtianhuang/gpu-burn/issues"
|
|
32
|
+
PaddlePaddle = "https://www.paddlepaddle.org.cn/"
|
|
33
|
+
|
|
34
|
+
[project.scripts]
|
|
35
|
+
gpu-burn = "gpu_burn.cli:main"
|
|
36
|
+
|
|
37
|
+
[tool.setuptools.packages.find]
|
|
38
|
+
where = ["src"]
|
|
39
|
+
|
|
40
|
+
[tool.setuptools.dynamic]
|
|
41
|
+
version = {attr = "gpu_burn.__version__"}
|
|
42
|
+
|
|
43
|
+
[tool.pytest.ini_options]
|
|
44
|
+
addopts = "-ra"
|
|
45
|
+
pythonpath = ["src"]
|
|
46
|
+
testpaths = ["tests"]
|
gpu_burn-2.2.1/setup.cfg
ADDED