> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parallaxprotocol.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting Hashwarp on Windows

> Step-by-step guide to fix missing OpenCL issues when running Hashwarp on Windows.

# Troubleshooting Hashwarp on Windows

> Step-by-step guide to fix missing OpenCL issues when running Hashwarp on Windows.

If you're trying to run **Hashwarp** on Windows and see errors like:

```
No OpenCL platforms found
No usable mining devices found
```

it usually means that **Windows cannot locate the NVIDIA or AMD OpenCL runtime** (`nvopencl.dll` or `amdocl.dll`) required for GPU mining. This guide explains both the **automatic** and **manual** ways to fix the issue.

***

## Quick Fix — Automatic Script (Recommended)

Hashwarp includes an **automated OpenCL registry repair script** that fixes the issue for you.

### Script: `fix-opencl-icd.vbs`

This VBScript automatically:

1. Detects your Windows architecture (32-bit or 64-bit)
2. Scans for AMD and NVIDIA OpenCL ICD libraries
3. Backs up existing registry keys
4. Registers missing OpenCL vendor entries for:
   * NVIDIA (`nvopencl.dll`, `nvopencl64.dll`, `nvopencl32.dll`)
   * AMD (`amdocl*.dll`)
5. Confirms success and recommends rebooting

#### How to Use

1. Locate `fix-opencl-icd.vbs` inside your Hashwarp release package.

2. Right-click it and choose **Run** (it will self-elevate if needed).

3. Follow the on-screen prompts:
   * Choose `[N] NVIDIA`, `[A] AMD`, or `[B] Both`.
   * If the script cannot find your OpenCL DLLs, paste the full paths when asked.\
     Example path:

     ```
     C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_xxxxx\nvopencl64.dll
     ```

4. When it confirms successful registration, **reboot your PC**.

5. After reboot, run Hashwarp again — your GPU should now be detected.

#### Example registry entries created by the script

```
[HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors]
"C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_d471cab2f241c3c2\nvopencl64.dll"=dword:00000000
"C:\Windows\System32\DriverStore\FileRepository\amdgpu.inf_amd64_abcdef1234567890\amdocl64.dll"=dword:00000000
```

The script is safe to use — it does not delete files, only repairs registry entries and keeps backups at:

```
%TEMP%\OpenCL_Vendors_64.reg
%TEMP%\OpenCL_Vendors_32.reg
```

If you prefer to fix things manually, continue below.

***

## Manual Fix (Advanced)

### Step 1 — Locate the OpenCL DLLs

Run **PowerShell as Administrator**, then execute:

```powershell theme={null} theme={null}
Get-ChildItem -Path "C:\" -Filter "nvopencl*.dll" -Recurse -ErrorAction SilentlyContinue
```

Expected output (example):

```
C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_xxxxx\nvopencl64.dll
C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_xxxxx\nvopencl32.dll
```

If you find these files, note their exact folder paths — you’ll need them later.

***

### Step 2 — Check if Registry Keys Are Missing

Still in PowerShell, run:

```powershell theme={null} theme={null}
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Khronos\OpenCL\Vendors'
Get-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors'
```

If you see **“The system was unable to find the specified registry key or value”**, you’ll need to register them manually.

***

### Step 3 — Manually Register the NVIDIA OpenCL ICD

Copy and run the following commands in **Administrator PowerShell**, replacing the paths with your actual ones from Step 1:

```powershell theme={null} theme={null}
$icd64 = 'C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_xxxxx\nvopencl64.dll'
$icd32 = 'C:\Windows\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_xxxxx\nvopencl32.dll'

New-Item -Path 'HKLM:\SOFTWARE\Khronos' -Name 'OpenCL' -Force | Out-Null
New-Item -Path 'HKLM:\SOFTWARE\Khronos\OpenCL' -Name 'Vendors' -Force | Out-Null
New-Item -Path 'HKLM:\SOFTWARE\WOW6432Node\Khronos\OpenCL' -Name 'Vendors' -Force | Out-Null

New-ItemProperty -Path 'HKLM:\SOFTWARE\Khronos\OpenCL\Vendors' `
  -Name $icd64 -PropertyType DWord -Value 0 -Force | Out-Null

New-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors' `
  -Name $icd32 -PropertyType DWord -Value 0 -Force | Out-Null
```

Then **reboot your PC**.

***

### Step 4 — Verify After Reboot

After restarting, run the following checks:

```powershell theme={null} theme={null}
reg query "HKLM\SOFTWARE\Khronos\OpenCL\Vendors"
clinfo | Select-String "Device Name"
```

Expected output should include something like:

```
Platform Name: NVIDIA CUDA
Device Name: NVIDIA GeForce RTX 4090
```

If you see this, OpenCL is working — Hashwarp should now detect your GPU correctly.

***

### Step 5 — Optional: Reinstall the Full Game Ready Driver

If the manual fix doesn’t persist after a driver update, or fails to register, reinstall the **Standard Game Ready Driver**:

1. Go to [NVIDIA Driver Downloads](https://www.nvidia.com/Download/index.aspx)
2. Choose **Custom (Advanced)** → **Perform a clean installation**

This reinstalls and registers the OpenCL ICD automatically.

***

### Alternative Option — Install CUDA Toolkit Instead

If you **don’t want to reinstall your NVIDIA drivers**, you can instead install the **[NVIDIA CUDA Toolkit](https://developer.nvidia.com/cuda-downloads)**.

The CUDA Toolkit package includes the required **nvopencl.dll** and registers the OpenCL runtime automatically during setup.

> If after installing CUDA Toolkit the OpenCL runtime is still not registered, re-do steps 1, 3 and 4.

This method is often quicker and safer if your GPU drivers are already up to date and working fine for gaming or other workloads.

***

## Final Check

Now you can run Hashwarp again:

```bash theme={null} theme={null}
hashwarp -P http://127.0.0.1:8545
```

If everything was successful, you should see output like:

```
m  15:42:12|hashwarp  Mining on GPU #0: 32.5MH/s
```

Your GPU is now recognized and mining successfully on Parallax.
