mi50 opencl修复
修复mi50安装显卡驱动以后,opencl没有驱动的BUG。

把下面的代码保存为opencl.bat
  1 @echo off
  2 cls
  3 echo OpenCL Driver (ICD) Fix for AMD GPU's
  4 echo By Patrick Trumpis (https://github.com/ptrumpis/OpenCL-AMD-GPU)
  5 echo Inspired by https://stackoverflow.com/a/28407851
  6 echo repair (https://chat.deepseek.com/)
  7 echo:
  8 echo:
  9 
 10 >nul 2>&1 "%SYSTEMROOT%\System32\cacls.exe" "%SYSTEMROOT%\System32\config\system" && (
 11     goto :run
 12 ) || (
 13     echo Execution stopped
 14     echo =================
 15     echo This script requires administrator rights.
 16     echo Please run it again as administrator.
 17     echo You can right click the file and select 'Run as administrator'
 18 
 19     echo:
 20     pause
 21     exit /b 1
 22 )
 23 
 24 :run
 25 SETLOCAL EnableDelayedExpansion
 26 
 27 SET ROOTKEY64=HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors
 28 SET ROOTKEY32=HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors
 29 
 30 echo Currently installed OpenCL Client Driver's - 64bit
 31 echo ==================================================
 32 for /f "tokens=1,*" %%A in ('reg query %ROOTKEY64%') do (
 33     echo %%A - %%B
 34 )
 35 echo:
 36 
 37 echo Currently installed OpenCL Client Driver's - 32bit
 38 echo ==================================================
 39 for /f "tokens=1,*" %%A in ('reg query %ROOTKEY32%') do (
 40     echo %%A - %%B
 41 )
 42 echo:
 43 
 44 echo:
 45 echo This script will now attempt to find and install unregistered OpenCL AMD drivers from Windows (Fast Scan).
 46 
 47 :askUserFastScan
 48 set "INPUT="
 49 set /P "INPUT=Do you want to continue? (Y/N): "
 50 if /I "!INPUT!" == "Y" (
 51     echo:
 52     echo:
 53     goto :scanFilesFast
 54 ) else if /I "!INPUT!" == "N" (
 55     goto :exit
 56 ) else (
 57     goto :askUserFastScan
 58 )
 59 
 60 :scanFilesFast
 61 echo Running AMD OpenCL Driver Auto Detection
 62 echo ========================================
 63 echo:
 64 
 65 echo Scanning '%SYSTEMROOT%\system32' for 'amdocl*.dll' files, please wait...
 66 echo:
 67 
 68 cd /d %SYSTEMROOT%\system32
 69 call :registerMissingClientDriver
 70 
 71 echo:
 72 echo Fast Scan complete.
 73 echo:
 74 
 75 echo:
 76 echo This script will now attempt to find and install any unregistered OpenCL AMD drivers found on your computer (Full Scan).
 77 
 78 :askUserFullScan
 79 set "INPUT="
 80 set /P "INPUT=Do you want to continue? (Y/N): "
 81 if /I "!INPUT!" == "Y" (
 82     echo:
 83     echo:
 84     goto :scanFilesFull
 85 ) else if /I "!INPUT!" == "N" (
 86     goto :complete
 87 ) else (
 88     goto :askUserFullScan
 89 )
 90 
 91 
 92 :scanFilesFull
 93 echo Now scanning your PATH for 'amdocl*.dll' files, please wait...
 94 echo:
 95 
 96 for %%A in ("%path:;=";"%") do (
 97     if "%%~A" neq "" (
 98         cd /d %%A
 99         call :registerMissingClientDriver
100     )
101 )
102 
103 echo:
104 echo Full Scan complete.
105 echo:
106 
107 :complete
108 echo:
109 echo Done.
110 echo:
111 pause
112 
113 :exit
114 exit /b 0
115 
116 :registerMissingClientDriver
117 for /r %%f in (amdocl*dll) do (
118     set FILE="%%~dpnxf"
119     set FILENAME=%%~nxf
120 
121     for %%A in (amdocl.dll amdocl12cl.dll amdocl12cl64.dll amdocl32.dll amdocl64.dll) do (
122         if "!FILENAME!"=="%%A" (
123             echo Found: !FILE!
124 
125             rem Improved logic to determine if 32-bit or 64-bit DLL
126             if "!FILENAME!"=="amdocl32.dll" (
127                 set "ROOTKEY=!ROOTKEY32!"
128             ) else if "!FILENAME!"=="amdocl64.dll" (
129                 set "ROOTKEY=!ROOTKEY64!"
130             ) else if "!FILENAME!"=="amdocl12cl64.dll" (
131                 set "ROOTKEY=!ROOTKEY64!"
132             ) else (
133                 rem For other filenames, check if they're in SysWOW64 (32-bit) or System32 (64-bit)
134                 echo !FILE! | find /i "SysWOW64" >nul
135                 if !ERRORLEVEL! == 0 (
136                     set "ROOTKEY=!ROOTKEY32!"
137                 ) else (
138                     set "ROOTKEY=!ROOTKEY64!"
139                 )
140             )
141 
142             reg query !ROOTKEY! >nul 2>&1
143             if !ERRORLEVEL! neq 0 (
144                 reg add !ROOTKEY! /f
145                 echo Added Key: !ROOTKEY!
146             )
147 
148             reg query !ROOTKEY! /v !FILE! >nul 2>&1
149 
150             if !ERRORLEVEL! neq 0 (
151                 reg add !ROOTKEY! /v !FILE! /t REG_DWORD /d 0 /f >nul 2>&1
152 
153                 if !ERRORLEVEL! == 0 (
154                     echo Installed: !FILE! to !ROOTKEY!
155                 )
156             )
157         )
158     )
159 )
160 goto :eof