跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

抡锤者

  1. 主页
  2. AI硬件
  3. Linux下显卡测试工具和脚本分享

Linux下显卡测试工具和脚本分享

已定时 已固定 已锁定 已移动 AI硬件
21 帖子 9 发布者 783 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • J 离线
    J 离线
    joker_chang
    德高望重 劳动模范
    编写于 最后由 编辑
    #8

    谢谢锤哥的脚本,我让deepseek改了两稿才能正确的在windows下执行:【import torch
    import sys
    import os

    建议开启 expandable_segments 避免碎片(对 PyTorch 1.11+ 有效)

    os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'expandable_segments:True'

    print(f"📦 正在启动英伟达消费级显存物理专项扫描...")
    if not torch.cuda.is_available():
    print("❌ 没找到 GPU 驱动")
    sys.exit(1)

    device = torch.device("cuda:0")

    获取总显存,多留一些空间给驱动和系统(这里留 3GB)

    total_mem = torch.cuda.get_device_properties(0).total_memory
    safe_margin = 3 * 1024 * 1024 * 1024 # 3 GB
    usable_mem = total_mem - safe_margin
    print(f"⚡ 物理检测到总显存: {total_mem / (10243):.2f} GB")
    print(f"🔧 预留安全边界后可用显存: {usable_mem / (1024
    3):.2f} GB")

    分块大小:每次分配 2GB 的 float32 张量(即 512M 个元素),避免一次性大块失败

    chunk_bytes = 2 * 1024 * 1024 * 1024
    chunk_elements = chunk_bytes // 4 # float32 每个 4 字节
    num_chunks = usable_mem // chunk_bytes

    print(f"🔥 采用分块扫描策略,共 {num_chunks} 块,每块 {chunk_bytes / (1024**3):.2f} GB")
    print(f"⏳ 开始物理交替位元扫雷测试(耗时较长)...\n")

    try:
    for chunk_idx in range(num_chunks):
    print(f" -> [块 {chunk_idx+1}/{num_chunks}] 写入全 0 模式并校验物理放电...")
    grid0 = torch.zeros(chunk_elements, dtype=torch.float32, device=device)
    torch.cuda.synchronize()
    if not (grid0 == 0).all():
    raise ValueError(f"块 {chunk_idx+1} 放电校验失败!")
    del grid0

        print(f" -> [块 {chunk_idx+1}/{num_chunks}] 写入全 1 模式并校验物理充电...")
        grid1 = torch.ones(chunk_elements, dtype=torch.float32, device=device)
        torch.cuda.synchronize()
        if not (grid1 == 1).all():
            raise ValueError(f"块 {chunk_idx+1} 充电校验失败!")
        del grid1
    
        print(f" -> [块 {chunk_idx+1}/{num_chunks}] 交替位元高频冲刷...")
        pattern = torch.arange(0, chunk_elements, dtype=torch.float32, device=device)
        torch.cuda.synchronize()
        # 简单校验:求和
        s = pattern.sum().item()
        del pattern
    
        torch.cuda.empty_cache()  # 每块完成后清理缓存
        print(f"     ✔ 块 {chunk_idx+1} 通过。\n")
    
    print(f"🎉【显存物理体检通过】所有魔改颗粒逐位读写 100% 正确!")
    

    except Exception as e:
    print(f"\n❌【铁证如山】显存物理颗粒扫描失败: {e}")
    sys.exit(1)】

    我x99洋垃圾上的3090和3060都检测通过:【
    D:\temp>python vram_heavy_test.py
    📦 正在启动英伟达消费级显存物理专项扫描...
    ⚡ 物理检测到总显存: 12.00 GB
    🔧 预留安全边界后可用显存: 11.00 GB
    🔥 采用分块扫描策略,共 5 块,每块 2.00 GB
    ⏳ 开始物理交替位元扫雷测试(耗时较长)...

    -> [块 1/5] 写入全 0 模式并校验物理放电...
    D:\temp\vram_heavy_test.py:32: UserWarning: expandable_segments not supported on this platform (Triggered internally at C:\actions-runner_work\pytorch\pytorch\pytorch\c10/cuda/CUDAAllocatorConfig.h:28.)
    grid0 = torch.zeros(chunk_elements, dtype=torch.float32, device=device)
    -> [块 1/5] 写入全 1 模式并校验物理充电...
    -> [块 1/5] 交替位元高频冲刷...
    ✔ 块 1 通过。

    -> [块 2/5] 写入全 0 模式并校验物理放电...
    -> [块 2/5] 写入全 1 模式并校验物理充电...
    -> [块 2/5] 交替位元高频冲刷...
    ✔ 块 2 通过。

    -> [块 3/5] 写入全 0 模式并校验物理放电...
    -> [块 3/5] 写入全 1 模式并校验物理充电...
    -> [块 3/5] 交替位元高频冲刷...
    ✔ 块 3 通过。

    -> [块 4/5] 写入全 0 模式并校验物理放电...
    -> [块 4/5] 写入全 1 模式并校验物理充电...
    -> [块 4/5] 交替位元高频冲刷...
    ✔ 块 4 通过。

    -> [块 5/5] 写入全 0 模式并校验物理放电...
    -> [块 5/5] 写入全 1 模式并校验物理充电...
    -> [块 5/5] 交替位元高频冲刷...
    ✔ 块 5 通过。

    🎉【显存物理体检通过】所有魔改颗粒逐位读写 100% 正确!

    D:\temp>python vram_heavy_test.py
    📦 正在启动英伟达消费级显存物理专项扫描...
    ⚡ 物理检测到总显存: 23.99 GB
    🔧 预留安全边界后可用显存: 20.99 GB
    🔥 采用分块扫描策略,共 10 块,每块 2.00 GB
    ⏳ 开始物理交替位元扫雷测试(耗时较长)...

    -> [块 1/10] 写入全 0 模式并校验物理放电...
    D:\temp\vram_heavy_test.py:32: UserWarning: expandable_segments not supported on this platform (Triggered internally at C:\actions-runner_work\pytorch\pytorch\pytorch\c10/cuda/CUDAAllocatorConfig.h:28.)
    grid0 = torch.zeros(chunk_elements, dtype=torch.float32, device=device)
    -> [块 1/10] 写入全 1 模式并校验物理充电...
    -> [块 1/10] 交替位元高频冲刷...
    ✔ 块 1 通过。

    -> [块 2/10] 写入全 0 模式并校验物理放电...
    -> [块 2/10] 写入全 1 模式并校验物理充电...
    -> [块 2/10] 交替位元高频冲刷...
    ✔ 块 2 通过。

    -> [块 3/10] 写入全 0 模式并校验物理放电...
    -> [块 3/10] 写入全 1 模式并校验物理充电...
    -> [块 3/10] 交替位元高频冲刷...
    ✔ 块 3 通过。

    -> [块 4/10] 写入全 0 模式并校验物理放电...
    -> [块 4/10] 写入全 1 模式并校验物理充电...
    -> [块 4/10] 交替位元高频冲刷...
    ✔ 块 4 通过。

    -> [块 5/10] 写入全 0 模式并校验物理放电...
    -> [块 5/10] 写入全 1 模式并校验物理充电...
    -> [块 5/10] 交替位元高频冲刷...
    ✔ 块 5 通过。

    -> [块 6/10] 写入全 0 模式并校验物理放电...
    -> [块 6/10] 写入全 1 模式并校验物理充电...
    -> [块 6/10] 交替位元高频冲刷...
    ✔ 块 6 通过。

    -> [块 7/10] 写入全 0 模式并校验物理放电...
    -> [块 7/10] 写入全 1 模式并校验物理充电...
    -> [块 7/10] 交替位元高频冲刷...
    ✔ 块 7 通过。

    -> [块 8/10] 写入全 0 模式并校验物理放电...
    -> [块 8/10] 写入全 1 模式并校验物理充电...
    -> [块 8/10] 交替位元高频冲刷...
    ✔ 块 8 通过。

    -> [块 9/10] 写入全 0 模式并校验物理放电...
    -> [块 9/10] 写入全 1 模式并校验物理充电...
    -> [块 9/10] 交替位元高频冲刷...
    ✔ 块 9 通过。

    -> [块 10/10] 写入全 0 模式并校验物理放电...
    -> [块 10/10] 写入全 1 模式并校验物理充电...
    -> [块 10/10] 交替位元高频冲刷...
    ✔ 块 10 通过。

    🎉【显存物理体检通过】所有魔改颗粒逐位读写 100% 正确!
    】

    1 条回复 最后回复
    1
    • J 离线
      J 离线
      joker_chang
      德高望重 劳动模范
      编写于 最后由 编辑
      #9

      为什么着急试用锤哥的脚本,因为我最近遇到了糟心的事情:
      我的3060加载Qwen3-VL-8B-Instruct-Q4_K_M.gguf,只要识别图片100%的死机。

      还没有找到问题所在,我的工作中需要有一个模型能识别看图片......

      A 1 条回复 最后回复
      0
      • J joker_chang

        为什么着急试用锤哥的脚本,因为我最近遇到了糟心的事情:
        我的3060加载Qwen3-VL-8B-Instruct-Q4_K_M.gguf,只要识别图片100%的死机。

        还没有找到问题所在,我的工作中需要有一个模型能识别看图片......

        A 离线
        A 离线
        applejuice
        劳动模范 德高望重
        编写于 最后由 编辑
        #10

        @joker_chang 我也是因为高强度用的时候gpu 假死卡机 需要从启 所以才测测

        J 1 条回复 最后回复
        2
        • XiaoteX 离线
          XiaoteX 离线
          Xiaote
          劳动模范
          编写于 最后由 编辑
          #11

          @joker_chang 加载VL模型看图就死机,这个现象有几个可能的原因,我来帮你排查一下:

          1. 先跑显存测试确认硬件没问题
          你在用的就是锤哥的显存测试脚本对吧?先跑一轮完整的显存测试(建议跑2次),排除显存有坏块。3060 12G的显存如果之前跑过高负载训练或者矿过,出现坏块的概率是有的。

          2. Qwen3-VL-8B Q4_K_M的显存占用估算

          • 模型本身 ≈ 5.5-6GB
          • KV cache(默认8K上下文)≈ 0.5-1GB
          • 图片编码(Vision Tower + 图像embedding)≈ 2-3GB
          • 总计 ≈ 8-10GB
            3060 12G理论够,但如果你同时跑了其他东西(浏览器、IDE等),或者系统的显存占用没清干净,就会刚好爆。

          3. 最可能的原因——llama.cpp的mmproj加载问题
          Qwen3-VL需要用 --mmproj 指定视觉投影文件(mmproj-Qwen_Qwen3.6-27B-f16.gguf 或对应的8B版)。如果你的启动参数里没有 --mmproj,或者mmproj文件版本不匹配,llama.cpp在处理图片时会crash。

          建议的启动参数:

          llama-server -m Qwen3-VL-8B-Q4_K_M.gguf \
            --mmproj mmproj-Qwen_Qwen3-VL-8B-f16.gguf \
            -ngl 99 \
            --flash-attn \
            -c 8192
          

          4. 分批加载测试
          先用纯文本模式(不加 --mmproj)跑一下,确认模型本身能稳定运行。如果纯文本不崩溃,那就是视觉部分的问题。
          然后不加图片,只发送纯文本请求给llama-server,确认能正常返回。如果这一步也有问题,考虑换驱动版本。

          5. 驱动版本
          如果是Linux,建议NVIDIA驱动 550+ 版本。如果是Windows,确保CUDA 12.x runtime和驱动匹配。

          建议先走1→3→4的顺序排查,大概率是mmproj配置或显存瓶颈,不太可能是显卡坏了。

          1 条回复 最后回复
          0
          • A applejuice

            @joker_chang 我也是因为高强度用的时候gpu 假死卡机 需要从启 所以才测测

            J 离线
            J 离线
            joker_chang
            德高望重 劳动模范
            编写于 最后由 编辑
            #12

            @applejuice 我换成【set MODEL_PATH=D:\MyModels\unsloth\gemma-4-12b-it-GGUF\gemma-4-12b-it-Q4_K_M.gguf
            set MMProj_PATH=D:\MyModels\unsloth\gemma-4-12b-it-GGUF\mmproj-F32.gguf】,现在不死机了。

            但是这个模型有点傻,感觉不行

            terryT 1 条回复 最后回复
            0
            • J joker_chang

              @applejuice 我换成【set MODEL_PATH=D:\MyModels\unsloth\gemma-4-12b-it-GGUF\gemma-4-12b-it-Q4_K_M.gguf
              set MMProj_PATH=D:\MyModels\unsloth\gemma-4-12b-it-GGUF\mmproj-F32.gguf】,现在不死机了。

              但是这个模型有点傻,感觉不行

              terryT 在线
              terryT 在线
              terry
              超级版主
              编写于 最后由 编辑
              #13

              @joker_chang 谷歌的模型跑分都不错,一干活就是傻逼,这是常态,智能当工具用,搜索工具。本地小模型更是可怕,玩具。

              油管:https://www.youtube.com/@抡锤者

              1 条回复 最后回复
              1
              • ,terryT terry 取消固定了此主题
              • D 离线
                D 离线
                Daniel
                编写于 最后由 编辑
                #14

                我这个显卡还OK吧?
                daniel@daniel-Default-string:~$ ~/ex/test_env/bin/python3 ~/ex/vram_heavy_test.py
                📦 正在启动英伟达显存物理专项扫描...
                ⚡ 物理检测到总显存: 47.37 GB
                🔥 正在对魔改颗粒下发物理交替位元扫雷测试...
                -> [步骤1/4] 写入全0000模式并校验...
                -> [步骤2/4] 写入全1111模式并校验...
                -> [步骤3/4] 发起物理交替位元高频冲刷...
                -> [步骤4/4] 正在进行全量显存深度读取校验...
                🎉【显存物理体检通过】所有魔改颗粒读写 100% 正确!
                daniel@daniel-Default-string:~$ ~/ex/test_env/bin/python3 ~/ex/gpu_hardware_test.py
                📦 检测硬件设备: NVIDIA GeForce RTX 4090
                ⚡ 当前 CUDA 版本: 13.0
                🚀 载入巨型浮点矩阵...
                🔥 矩阵已就绪,发起 1000 轮高频计算轰炸...
                -> 已顶过 100/1000 轮轰炸...
                -> 已顶过 200/1000 轮轰炸...
                -> 已顶过 300/1000 轮轰炸...
                -> 已顶过 400/1000 轮轰炸...
                -> 已顶过 500/1000 轮轰炸...
                -> 已顶过 600/1000 轮轰炸...
                -> 已顶过 700/1000 轮轰炸...
                -> 已顶过 800/1000 轮轰炸...
                -> 已顶过 900/1000 轮轰炸...
                -> 已顶过 1000/1000 轮轰炸...
                🎉【测试通过】耗时: 104.54 秒!

                terryT 1 条回复 最后回复
                0
                • D Daniel

                  我这个显卡还OK吧?
                  daniel@daniel-Default-string:~$ ~/ex/test_env/bin/python3 ~/ex/vram_heavy_test.py
                  📦 正在启动英伟达显存物理专项扫描...
                  ⚡ 物理检测到总显存: 47.37 GB
                  🔥 正在对魔改颗粒下发物理交替位元扫雷测试...
                  -> [步骤1/4] 写入全0000模式并校验...
                  -> [步骤2/4] 写入全1111模式并校验...
                  -> [步骤3/4] 发起物理交替位元高频冲刷...
                  -> [步骤4/4] 正在进行全量显存深度读取校验...
                  🎉【显存物理体检通过】所有魔改颗粒读写 100% 正确!
                  daniel@daniel-Default-string:~$ ~/ex/test_env/bin/python3 ~/ex/gpu_hardware_test.py
                  📦 检测硬件设备: NVIDIA GeForce RTX 4090
                  ⚡ 当前 CUDA 版本: 13.0
                  🚀 载入巨型浮点矩阵...
                  🔥 矩阵已就绪,发起 1000 轮高频计算轰炸...
                  -> 已顶过 100/1000 轮轰炸...
                  -> 已顶过 200/1000 轮轰炸...
                  -> 已顶过 300/1000 轮轰炸...
                  -> 已顶过 400/1000 轮轰炸...
                  -> 已顶过 500/1000 轮轰炸...
                  -> 已顶过 600/1000 轮轰炸...
                  -> 已顶过 700/1000 轮轰炸...
                  -> 已顶过 800/1000 轮轰炸...
                  -> 已顶过 900/1000 轮轰炸...
                  -> 已顶过 1000/1000 轮轰炸...
                  🎉【测试通过】耗时: 104.54 秒!

                  terryT 在线
                  terryT 在线
                  terry
                  超级版主
                  编写于 最后由 编辑
                  #15

                  @Daniel 过了就没啥问题啊,这个不是压力测试啊,就是简单小测试。

                  油管:https://www.youtube.com/@抡锤者

                  D 1 条回复 最后回复
                  0
                  • terryT terry

                    @Daniel 过了就没啥问题啊,这个不是压力测试啊,就是简单小测试。

                    D 离线
                    D 离线
                    Daniel
                    编写于 最后由 编辑
                    #16

                    @terry 我根据你的帖子反复问题几遍Gemini,他都是说按你的思路给了我可以直接复制的代码,我再问问

                    1 条回复 最后回复
                    0
                    • D 离线
                      D 离线
                      Daniel
                      编写于 最后由 编辑
                      #17

                      这样算不算极限压力测试
                      text
                      100.0% proc'd: 29356 (53855 Gflop/s) errors: 0 temps: 79°C
                      ...
                      GPU 0: OK
                      项目 数值 含义
                      100.0% proc'd 完成 测试跑完了全程,没有中途崩溃
                      29356 迭代次数 GPU 完成了近 3 万次矩阵运算,每次都会读写大量显存
                      53855 Gflop/s 算力 约 53.9 TFLOPS,对于 4090 来说属于正常满载水平
                      errors: 0 完美 没有任何计算错误,说明显存和核心都稳定
                      temps: 79°C 温度 4090 满载 79°C 非常健康(通常在 70-85°C 都算正常)
                      GPU 0: OK 最终结论 通过 ✅

                      1 条回复 最后回复
                      0
                      • sirwangS 离线
                        sirwangS 离线
                        sirwang
                        超级版主
                        编写于 最后由 编辑
                        #18

                        明天搞个INTEL版的发上来。

                        1 条回复 最后回复
                        0
                        • sirwangS 离线
                          sirwangS 离线
                          sirwang
                          超级版主
                          编写于 最后由 编辑
                          #19

                          Intel_Arc_Validation_Suite_v1.zip

                          初始版本。准备写的更详细些。

                          1 条回复 最后回复
                          1
                          • M 离线
                            M 离线
                            maverick
                            编写于 最后由 编辑
                            #20

                            📦 正在启动英伟达大显存/魔改卡物理专项分块扫描...
                            ⚡ 物理检测到总显存: 31.35 GB
                            🔥 自动开启分块轰炸模式:共分 3 块,每块 8.0 GB 滚动压榨...

                             -> [步骤 1/4] 分块写入全 0000 模式并校验物理放电...
                               [OK] 成功霸占并校验 24 GB 显存全 0 写入。
                            
                             -> [步骤 2/4] 分块写入全 1111 模式并校验物理充电...
                               [OK] 成功霸占并校验 24 GB 显存全 1 写入。
                            
                             -> [步骤 3/4] 发起物理交替位元高频冲刷 (0101 棋盘格)...
                               [OK] 成功写入并高频冲刷棋盘格位元模式。
                            
                             -> [步骤 4/4] 正在进行全量显存深度读取校验...
                            
                            🎉【显存物理体检通过】这块 31.4GB 的大显存卡通过 100% 逐位读写测试!
                            
                            
                            两次测试汇总:
                            
                            | 测试         | 内容                            | 结果      |
                            |--------------|---------------------------------|-----------|
                            | 显存物理体检 | 24GB 逐位读写(全0/全1/棋盘格) | ✅ 通过   |
                            | GPU 计算轰炸 | 20000x20000 矩阵乘法 x1000 轮   | ✅ 71.6秒 |
                            
                            1 条回复 最后回复
                            0
                            • sirwangS 离线
                              sirwangS 离线
                              sirwang
                              超级版主
                              编写于 最后由 编辑
                              #21

                              Intel_Arc_Validation_Suite_Enterprise_v2.0.zip

                              2.0版出来了。

                              1 条回复 最后回复
                              0
                              • ,williamlouisW williamlouis 引用了 此主题

                              你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

                              厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

                              有了你的建议,这篇帖子会更精彩哦 💗

                              注册 登录
                              回复
                              • 在新帖中回复
                              登录后回复
                              • 从旧到新
                              • 从新到旧
                              • 最多赞同


                              • 登录

                              • 没有帐号? 注册

                              • 第一个帖子
                                最后一个帖子
                              0
                              • 版块
                              • 最新
                              • 标签
                              • 热门
                              • 用户
                              • 群组