syspeek ---- 系统测试gpu性能工具

SysPeek

跨 GPU 硬件跑分工具:测量 NVIDIA GPU 的实际可达性能指标,而非纸面峰值。

支持独立显卡(如 RTX 4070)与集成式 Jetson 平台(如 Jetson Thor)。]

jetson thor测试数据

在这里插入图片描述

测量项

类别跑分项指标说明
computegemm_flopsTFLOPS / TOPSGEMM 吞吐,覆盖 fp32 / tf32 / fp16 / bf16 / int8 / fp8
memoryhost_device_bwGB/sH2D / D2H 带宽(pinned 与 pageable 两种主存)
memorydevice_mem_bwGB/sGPU 本地显存/统一内存带宽(device copy 读+写、write-only)
latencykernel_launchus单 kernel 启动/调度开销

效率列(Eff.)= 实测 / 理论峰值。理论峰值来源由 --spec-source 控制(见下)。

安装

通用依赖:Python ≥ 3.10PyTorch ≥ 2.0(CUDA 构建)。SysPeek 本体与 PyTorch 的 CUDA 版本需与当前平台一致;桌面独显Jetson 安装 PyTorch 的方式不同,见下表。

平台典型设备架构CUDA / JetPackPyTorch wheel
桌面 Linux + 独显RTX 4070 等x86_64CUDA 12.x(如 12.8)cu128
JetsonJetson Thor 等aarch64CUDA 13(JetPack 7+)cu130

内存与带宽测试说明见 docs/memory.md


桌面独显(如 RTX 4070,x86_64 + cu128)

cd SysPeek

# 可选:一键 venv + 安装 SysPeek(不含 torch)
chmod +x scripts/setup_venv.sh
./scripts/setup_venv.sh
source .venv/bin/activate

# PyTorch(CUDA 12.8 示例,与驱动/CUDA 版本对齐)
pip install torch --index-url https://download.pytorch.org/whl/cu128

# 安装 SysPeek(若未跑 setup_venv.sh)
pip install -e .

# 验证
syspeek info
syspeek run

手动 venv:

python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install torch --index-url https://download.pytorch.org/whl/cu128
pip install -e .

Jetson Thor(aarch64 + CUDA 13 / cu130)

Thor 运行在 JetPack 7+ / CUDA 13 上,请使用 cu130 索引,不要在 Thor 上安装桌面用的 cu128 wheel。

cd SysPeek

chmod +x scripts/setup_venv.sh
./scripts/setup_venv.sh
source .venv/bin/activate

# Jetson Thor:CUDA 13 → cu130
pip install torch --index-url https://download.pytorch.org/whl/cu130

pip install -e .

syspeek info    # platform 应显示 jetson
syspeek run

Jetson 注意:

  • 若 JetPack 已预装系统级 PyTorch,也可在 venv 中单独安装 与 JetPack CUDA 13 匹配cu130 wheel,避免混用 cu128
  • 统一内存:建议减小 buffer,例如
    syspeek run --transfer-mb 128 --device-mem-mb 256 --gemm-size 4096
  • 理论峰值需在 Thor 真机标定后写入 theoretical.py(当前可能只显示实测、无 Eff.)。

方式 B:全局 / 用户目录安装

在对应平台装好 匹配的 PyTorch 后:

cd SysPeek
pip install -e .

方式 C:不安装,临时运行

# 仍需当前 shell 能 import 到 CUDA 版 torch
PYTHONPATH=src python -m syspeek.cli info
PYTHONPATH=src python -m syspeek.cli run

退出 venv:deactivate

用法

# 查看设备/平台信息
syspeek info

# 列出全部跑分项
syspeek list

# 跑全部(默认)
syspeek run

# 只跑某些项 / 某些类别 / 某些 dtype
syspeek run --bench gemm_flops --dtype fp16 --dtype bf16
syspeek run --category memory

# 调整规模与迭代
syspeek run --gemm-size 8192 --transfer-mb 256 --device-mem-mb 1024 --warmup 10 --rep 50

# 导出 JSON(便于跨设备对比)
syspeek run -o result_4070.json
syspeek run --json > result.json

常用选项

选项说明默认
--deviceCUDA 设备号0
--bench指定跑分项(可重复)全部
--category指定类别 compute/memory/latency全部
--dtype限制 compute dtype(可重复)全部
--gemm-size方阵 M=N=K8192
--transfer-mbH2D/D2H 总传输大小256
--transfer-streams并行 CUDA stream 数8
--transfer-modemulti_stream / single / threadedmulti_stream
--device-mem-mbGPU 本地显存测试 buffer 大小1024
--no-flush-l2关闭 L2 flushoff
--spec-source理论峰值来源:auto / fixed / auto-fallbackauto-fallback
-o/--output写 JSON 文件
--json打印 JSON 到 stdoutoff

架构

分层设计,跑分项与平台解耦、可插拔注册:

SysPeek/
├── pyproject.toml
└── src/syspeek/
    ├── cli.py                 # CLI 入口(click)
    ├── reporting.py           # rich 表格 / JSON 渲染
    ├── theoretical.py         # 各设备理论峰值表(用于算效率,可编辑)
    ├── core/
    │   ├── device.py          # 设备检测(含 Jetson 判定)+ DeviceInfo
    │   ├── timing.py          # CudaTimer:CUDA event 计时 + warmup/rep + L2 flush
    │   ├── result.py          # BenchmarkResult / RunContext / TimingStats
    │   └── registry.py        # 跑分项注册表(按 name/category 过滤)
    ├── benchmarks/
    │   ├── base.py            # Benchmark 抽象基类
    │   ├── compute_flops.py   # GEMM FLOPS(多 dtype,OOM 自适应缩小)
    │   ├── memory_transfer.py # H2D / D2H(pinned / pageable)
    │   ├── memory_device.py   # GPU 本地显存 copy / write 带宽(GDDR/LPDDR)
    │   └── latency.py         # kernel 启动延迟
    └── platforms/
        ├── base.py            # Platform 抽象
        ├── desktop.py         # 独显(nvidia-smi 遥测,PCIe 链路标注)
        └── jetson.py          # Jetson(统一内存语义、INA3221 功耗读取)

设计要点:

  • 跑分项自注册:每个 Benchmark 声明 name/category,import syspeek.benchmarks 即注册;CLI 通过注册表发现与过滤,新增跑分项无需改 CLI。
  • 平台抽象:跑分逻辑设备无关;平台层只负责差异化标注(H2D 链路名称、理论峰值来源、功耗遥测)与告警 note。
  • 计时:统一 CudaTimer(CUDA event + warmup/rep + 可选 L2 flush),与 hpc_bench 风格一致;带宽类跑分关闭 L2 flush 避免干扰。
  • 效率:理论峰值由 --spec-source 决定来源;结果中 Spec src 列与 JSON 的 theoretical_source / theoretical_detail 标明每条指标的具体来源。

理论峰值来源(--spec-source

模式行为
auto运行时推导:SM 数 × cores/SM × nvidia-smi 最大 SM 时钟 → FP32;fp16/bf16 按 cuBLAS FP32 累加路径乘系数;显存带宽 = 位宽(smi 或型号 hint)× 内存时钟
fixed仅使用 theoretical.py 中手工录入的 _TABLE(如 RTX 4070,通常基于厂商 Boost Clock 规格)
auto-fallback(默认)auto,该指标推导失败则回退 fixed

JSON 每条结果含 theoretical_sourceauto / fixed)与 theoretical_detail(推导公式或表项 key)。

平台说明

  • RTX 4070(独显):H2D/D2H 走 PCIe;device_mem_bw 测 GDDR6X 显存带宽。
    • H2D/D2H 理论值:按 GPU 的 PCIe 规格(4070 为 Gen4 x8 ≈ 15.75 GB/s/方向)显示;你测到 ~18 GB/s(pinned)说明已接近或达到链路上限,再开多 stream 提升空间有限。
    • pageable 传输 CPU 会参与页锁定/拷贝,CPU 占用高是正常现象;默认 multi_stream 可略提高 pageable 带宽,但仍低于 pinned。
    • 可选 --transfer-mode threaded 用多 CPU 线程提交 copy,主要改善 pageable 场景。
    • 注意:gemm_flops 的 fp16/bf16 走 cuBLAS 默认 FP32 累加路径,消费级 Ada 上该路径峰值约为 FP16/FP16-累加峰值的一半,理论值已按此校准。
  • Jetson Thor(集成 GPU):GPU 与 CPU 共享 LPDDR,H2D/D2H 不经 PCIe,反映的是内存子系统带宽(工具会在 note 中提示);显存从系统内存划分,注意 buffer 大小留余量。理论峰值待在真机上标定后填入 theoretical.py

扩展

  • 新增跑分项:在 benchmarks/ 继承 Benchmark,实现 run(),在 benchmarks/__init__.py 注册。
  • 新增设备理论值:在 theoretical.py_TABLE 增加一条(key 为设备名/型号子串)。
  • 新增平台:在 platforms/ 继承 Platform,在 get_platform() 加入判定。

License

MIT

内容概要:本文档围绕“经济学期刊论文复现:数字化转型能否促进企业的高质量发展”这一核心命题,系统整合了MATLAB与Python编程实现的大量科研案例,聚焦于数字化转型对企业全要素生产率(TFP)及高质量发展影响的实证研究。文档不仅复现了高水平经济学期刊论文中的计量经济模型,如基于中国上市公司数据的数字化转型与生产率关系分析,还深度融合了工程领域的建模技术,涵盖微电网优化、负荷预测、风电光伏不确定性建模、电力系统故障仿真等。同时,提供了智能优化算法(如遗传算法、粒子群优化)、机器学习(LSTM、CNN-BiGRU-Attention)、信号处理、路径规划等多学科交叉的技术资源,构建了一个从理论推导到代码实现的完整科研支持体系,旨在帮助研究者系统掌握论文复现与实证分析的核心方法。; 适合人群:具备一定MATLAB或Python编程基础,从事经济学、管理学、能源系统、智能制造及相关交叉学科研究的研究生、科研人员及高校教师。; 使用场景及目标:①复现经济学顶刊中关于数字化转型与企业高质量发展的实证模型;②学习如何量化数字化转型并构建其对企业绩效的影响评估框架;③掌握基于真实数据的计量经济建模、场景生成与优化调度仿真技术,全面提升科研论文写作与实证研究能力。; 阅读建议:建议读者结合文中提供的代码与数据资源,重点研读“论文复现”与“创新未发表”模块,按照技术路径循序渐进地实现模型复现与拓展。推荐关注“荔枝科研社”公众号及百度网盘链接获取完整资料,系统性地开展学习与科研实践。
下载代码方式:https://pan.quark.cn/s/9de6a9d0b3d8 依据所提供的文件内容,能够推导出此段程序的核心任务在于对一个任意的三位数进行拆解,并且分别呈现该数值的百位、十位及个位部分。随后,我们将对该知识点进行进一步的深入研究。 ### 一、程序功能说明 #### 1. 接收任意一个三位数输入 程序起始阶段运用`scanf`函数来获取用户输入的一个整数。为确保输入内容确实为一个三位数,在实际应用场景中通常需要嵌入验证机制来保障输入的有效性。然而,在本示例情形下,该环节被简化处理,预设用户总会准确输入一个三位数。 #### 2. 实施数字的拆分并提取各位置数值 程序借助一系列数学计算来对三位数进行拆分,将其转化为百位、十位和个位三个独立的构成部分。具体而言,通过除法和取模运算完成了这一过程。 #### 3. 展示各位置上的数值 程序运用`printf`函数来输出原始数值以及各个位上的数值。需要留意的是,代码中的输出部分似乎存在一些混淆,存在语法上的错误,例如多余的`printf`语句和乱码字符等问题。 ### 二、核心代码分析 #### 1. 数字拆分逻辑 ```c a[0] = n / 1000; // 提取千位数,但鉴于题目要求是三位数,此处应为百位数 a[1] = n % 1000 / 100; // 提取百位数 a[2] = n % 1000 % 100 / 10; // 提取十位数 a[3] = n % 1000 % 100 % 10; // 提取个位数 ``` 这段代码通过一连串的除法和取模运算,成功地将输入的数字n拆分为百位、十位和个位三个独立的构成部分,...
内容概要:本文提出了一种基于CNN-BiGRU-Attention混合神经网络模型的风电功率预测方法,采用多变量输入实现单步预测,并通过Matlab进行代码实现与验证。该模型融合卷积神经网络(CNN)以提取输入数据的局部时空特征,利用双向门控循环单元(BiGRU)充分捕捉风速、温度、湿度等多源气象与运行变量的时间序列前后依赖关系,并引入注意力机制(Attention)动态加权关键时间步的特征信息,有效提升模型对风电功率波动性和不确定性的建模能力,显著增强了预测的准确性与鲁棒性。; 适合人群:具备一定机器学习与深度学习理论基础,熟悉Matlab编程环境,从事新能源发电预测、电力系统调度、智能电网优化等相关领域的科研人员、工程技术人员及高校研究生。; 使用场景及目标:①应用于实际风电场功率预测系统,为电网调度、电力市场交易与可再生能源消纳提供高精度数据支撑;②作为深度学习在能源时序预测领域的典型案例,用于科研项目开发、学术论文复现与技术创新;③深入理解多变量时间序列预测中特征融合、序列建模与注意力权重分配的协同机制,掌握先进神经网络架构的设计与优化方法。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点剖析数据预处理流程、模型网络结构搭建、训练参数调优及注意力权重可视化等关键环节,鼓励尝试替换不同特征输入、调整网络深度或引入其他优化算法(如贝叶斯优化、粒子群优化等)以进一步提升模型性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

self-motivation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值