File size: 1,591 Bytes
6db83b4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import torch
import torch.multiprocessing as mp
# 矩阵大小:保证算力满载
MATRIX_SIZE = 24576
DTYPE = torch.bfloat16
def worker(rank):
"""每个 GPU 的工作进程"""
# 1. 绑定设备
device = torch.device(f"cuda:{rank}")
torch.cuda.set_device(device)
# ==========================================
# 插入位置在这里!
# ==========================================
try:
# 6e10 bytes ≈ 60GB。
# H200 显存约为 141GB。如果你想占得更满,可以将 6e10 改为 1.2e11 (约120GB)
# 注意:dtype=torch.int8 表示每个元素占 1 byte
filler = torch.empty(int(1.2e11), dtype=torch.int8, device=device)
# 只要这个 filler 变量不被 del,显存就会一直被占用
except RuntimeError:
print(f"[GPU {rank}] 显存分配过大,已自动忽略显存占用,仅运行计算负载...")
# 2. 准备计算数据
a = torch.randn(MATRIX_SIZE, MATRIX_SIZE, device=device, dtype=DTYPE)
b = torch.randn(MATRIX_SIZE, MATRIX_SIZE, device=device, dtype=DTYPE)
c = torch.empty(MATRIX_SIZE, MATRIX_SIZE, device=device, dtype=DTYPE)
# 3. 无限循环计算 (算力 100%)
while True:
torch.mm(a, b, out=c)
def main():
world_size = torch.cuda.device_count()
print(f"正在启动 {world_size} 卡全负载占位 (显存 + 算力)...")
print("按 Ctrl+C 停止")
# 启动多进程
mp.spawn(worker, nprocs=world_size, join=True)
if __name__ == "__main__":
mp.set_start_method('spawn', force=True)
main() |