Bend 报 CUDA not available 错误怎么排查【免费下载链接】BendA massively parallel, high-level programming language项目地址: https://gitcode.com/GitHub_Trending/be/Bend在 Bend 上用bend run-cu file.bend启动 CUDA 解释器时即使机器上已经装好 NVIDIA 驱动和 CUDA也可能看到CUDA not available!报错。Bend 由 HVM2 运行时驱动CUDA 支持是 HVM 在安装阶段检测并启用的——这意味着装好 CUDA并不等于Bend 已经能用 CUDA。本文基于 README.md、GUIDE.md 与 FAQ.md 给出的信息说明这个报错的成因、重装修复步骤和验证方式。报错的直接原因FAQ.md 对CUDA not available!的解释只有一条但它是排查的关键CUDA support is enable only during installation. If you first installed HVM and then installed CUDA andnvcc, please try to install HVM again.也就是说HVM 只在安装那一刻检查 CUDA 工具链含nvcc。如果你的安装顺序是先cargo install hvm后装 CUDA toolkit 和nvccHVM 安装时找不到 CUDA编译出来的 HVM 二进制就没有启用 CUDA 支持之后补装 CUDA 也不会生效。此时唯一的修复方式是重新安装 HVM让它在安装阶段重新检测到 CUDA。前置条件CUDA 运行时依赖修复前先确认环境满足文档要求README.md 与 GUIDE.md 的 Install 一节操作系统Linux 是 CUDA 运行时的目标平台。Windows 上目前需要用 WSL2FAQ 中 Windows 原生支持仍标注为进行中。CUDA 版本CUDA toolkit for Linux 需要 12.x 版本。GPU仅支持 NVIDIA GPU。FAQ 给出的经验判断标准是每 SM 的 L1 cache 96KB 的 GPUshouldwork已实测的只有 RTX 4090桌面/移动版 30 系列、40 系列其余型号均未测试。AMD/Intel/Apple GPU 不支持官方表示等 CUDA 版本稳定后再扩展。工具链Rust 工具链已安装Bend 和 HVM 都通过cargo install安装。修复步骤重装 HVM确认上面条件成立后按 README.md 的安装顺序重跑 HVM 安装cargo install会覆盖安装同版本包这里的目标是让 HVM 重新走一遍构建期的 CUDA 检测# 重新安装 HVM2Bend 的运行时 cargo install hvm # 确认 HVM 可访问 hvm --versionBend 本身不需要重装它调用的是 HVM 运行时。如果 HVM 之前就没装过先执行上面的命令再安装 Bendcargo install bend-lang bend --version另外两个 FAQ 列出的安装期错误可以顺便核对避免重装时踩坑如果错误发生在编译 CUDA runtime 阶段、或信息中包含ccbinFAQ 指向 HVM 项目的 issue #291。如果错误提示libc缺失FAQ 指向 HVM 项目的 issue #355。这两类是 HVM 安装失败与CUDA not available!现象不同但都属于CUDA 环境没被 HVM 正确识别这一大类排查顺序上应先确保 HVM 能干净地重装完成。验证 CUDA 是否可用用仓库自带的并行示例 examples/parallel_sum.bend 做一次最小验证它生成一棵树并在树上并行求和文档注释说明其结果是sum of [1 .. 2^16)截断到 24 位bend run-cu examples/parallel_sum.bend -s-s标志会额外输出交互次数、运行时间和 MIPSREADME 中说明该标志用于查看 Reductions、耗时和 interaction per second。判断标准不再出现CUDA not available!程序正常打印出求和结果说明 CUDA 支持已生效对照运行bend run-c examples/parallel_sum.bend -sC 解释器走 CPU 多线程两条命令都应能出结果只是性能不同。能启动 CUDA 但跑不动区分相邻错误如果CUDA not available!已解决、run-cu能启动却报别的错注意不要和本文的排查路径混在一起Failed to launch kernels (error code invalid argument)!FAQ 说明当前版本的hvm.cu是面向 RTX 4090 写的旧 GPU 的 shared memory 只有新卡的一半左右会在启动 kernel 时失败官方表示正在支持旧 GPU。这是硬件代际限制不是安装问题重装 HVM 无效。编译期报Definition is too large for hvmdocs/compiler-options.md 说明这是 CUDA 运行时的内存限制——-Ocheck-net-size默认启用对应check_net_sizes选项会检查每个函数编译后不超过 64 个 HVM 节点。如果你实际不跑*-cu可以禁用该检查要跑 CUDA 则只能缩减函数规模。限制CUDA 运行时目前只覆盖 NVIDIA 平台且旧 GPU 支持尚在推进中文档未给出各代 GPU 的支持时间表。Bend 的数字是 24 位u24示例程序的输出会按mod 16777216截断GUIDE.md 说明验证结果时不要期待 64 位精度。【免费下载链接】BendA massively parallel, high-level programming language项目地址: https://gitcode.com/GitHub_Trending/be/Bend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
