hashcat 需要哪种 OpenCL 运行时?CPU 与 GPU 驱动怎么选
hashcat 本身不附带 OpenCL 运行时,它通过 OpenCL 调用 CPU、GPU、APU 等设备。因此能否跑起来,取决于你是否按硬件品牌装对了对应的运行时或驱动:AMD GPU 在 Linux 上需要 “AMD Radeon Software for Linux” 加 ROCm,在 Windows 上需要 “AMD Adrenalin Edition” 加 “AMD HIP SDK”;Intel 和 AMD 的 CPU 需要 “Intel CPU Runtime for OpenCL” 或 PoCL;Intel GPU 需要 “Intel Graphics Compute Runtime”(即 NEO);NVIDIA GPU 则走 “NVIDIA CUDA Toolkit”,不依赖 OpenCL 运行时。装好后用 hashcat -I 查看设备是否被识别,再用 -b 做基准测试确认能实际运算。
OpenCL 在 hashcat 里扮演什么角色
hashcat 的定位是“多平台(CPU、GPU、APU 等,一切带 OpenCL 运行时的设备)”。这句话点明了机制:hashcat 把计算任务下发给 OpenCL 运行时,由运行时再去驱动具体硬件。所以:
- OpenCL 运行时是硬件厂商提供的中间层,不是 hashcat 自带的组件;
- 同一台机器上可以同时存在多个运行时,hashcat 会枚举出所有可用设备;
- 如果某个设备没有对应运行时,hashcat 就看不到它,自然也用不上。
这也解释了为什么“装了 hashcat 却提示没有设备”——问题通常出在运行时,而不是 hashcat 本身。
按硬件选运行时
| 硬件 | 需要的组件 | 说明 |
|---|---|---|
| AMD GPU(Linux) | “AMD Radeon Software for Linux” + “ROCm” | 两者都要,缺一不可 |
| AMD GPU(Windows) | “AMD Adrenalin Edition” + “AMD HIP SDK” | 驱动与 SDK 配合 |
| Intel / AMD CPU | “Intel CPU Runtime for OpenCL” 或 PoCL | 二选一即可 |
| Intel GPU | “Intel Graphics Compute Runtime”(NEO) | 面向 Intel 核显/独显 |
| NVIDIA GPU | “NVIDIA CUDA Toolkit” | 走 CUDA 路径,不依赖 OpenCL 运行时 |
几个容易踩的点:
- AMD 平台要装两样东西。只装显卡驱动(Adrenalin 或 Radeon Software)往往不够,还需要 HIP SDK 或 ROCm 提供计算运行时。
- CPU 也能参与运算。Intel 和 AMD 的 CPU 都可以通过 “Intel CPU Runtime for OpenCL” 或 PoCL 被 hashcat 使用,适合没有独显或想混合使用的场景。
- NVIDIA 用户不必纠结 OpenCL。按资料,NVIDIA GPU 的要求是 CUDA Toolkit,走的是 CUDA 路线。
- PoCL 是 CPU 场景的替代选项。当不方便安装厂商运行时,PoCL 可以作为 CPU 侧的 OpenCL 实现。
装好后怎么验证
安装完成后,按下面两步确认设备真的可用:
- 列出设备:运行
hashcat -I。预期结果是列出被识别到的平台和设备(如 CPU、各 GPU 型号)。如果列表为空或缺少某块卡,说明对应运行时没装好或版本不匹配。 - 跑基准测试:运行
hashcat -b。预期结果是输出各算法在当前设备上的速度。能跑出数字,说明运行时链路是通的;报错或直接退出,则回到上一步排查。
-I 解决“有没有被看到”,-b 解决“能不能真的算”。两者都通过,才算环境就绪。
常见卡点
- 只装了驱动,没装计算运行时:AMD 平台最常见,补上 ROCm 或 HIP SDK。
- 多设备混用:hashcat 支持“在同一系统中使用多种设备类型”,但前提是每种设备各自的运行时都装齐。
- 版本不匹配:运行时与驱动版本差异可能导致设备枚举失败,尽量使用厂商推荐的配套版本。
- 误以为 hashcat 自带 OpenCL:它只负责调用,运行时要自己准备。
把运行时按硬件装对,再用 -I 和 -b 验证,hashcat 就能正常识别并使用你的 CPU 或 GPU 了。