-
Notifications
You must be signed in to change notification settings - Fork 552
Description
We are trying to run ArrayFire (v3.8.3; CUDA 11.8; Windows) on a machine with older Nvidia drivers (v474.4). According to the Nvidia documentation, drivers >= v452.39 should work, yet ArrayFire does not accept our drivers.
Description
Error message:
In function arrayfire::cuda::DeviceManager::checkCudaVsDriverVersion
In file src\backend\cuda\device_manager.cpp:540
ArrayFire was built with CUDA 11.8.0 which requires GPU driver version 452.39 or later. Please download and install the latest drivers from https://www.nvidia.com/drivers for your GPU. Alternatively, you could rebuild ArrayFire with CUDA Toolkit version 11.4.0 to use the current drivers.
The error message is confusing, because the drivers are already >= 452.39, yet they apparently advertise support for CUDA 11.4 at most. This is inconsistent.
The code in ArrayFire apparently compares the result of cudaRuntimeGetVersion() (which returns the version of the installed CUDA runtime, i.e., the DLLs being used by the application) and cudaDriverGetVersion() (which returns the latest version of CUDA supported by the driver). This sounds correct, however I think it is ignoring the CUDA minor version compatibility introduced in CUDA 11 and later, whereby an application built for CUDA 11.x should work with any driver supporting CUDA 11 (any minor version). My suspicion is that the drivers we use (v474.4) were issued before CUDA 11.8 was released, therefore they couldn't advertise it as a supported version. But in theory, because of the minor version compatibility, they should work.
A more correct check would use the actual driver version (e.g., as reported using NVML) and compare it against the drivers versions stored in your CudaToDriverVersion table.
If this is not an option (e.g. because adding a dependency on NVML is not acceptable), then it would be good to be able to bypass this check and let ArrayFire run anyway.
NB: The drivers are selected by our customer and upgrading drivers may not be an option.
Reproducible Code and/or Steps
N/A
System Information
- ArrayFire version: 3.8.3
- Devices installed on the system: Nvidia RTX A2000 (driver 474.4)
- (optional) Output from the af::info() function if applicable.
- Output from the following scripts:
nvidia-smi:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 474.04 Driver Version: 474.04 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA RTX A200... WDDM | 00000000:01:00.0 Off | Off |
| 30% 31C P8 5W / 70W | 485MiB / 12282MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
Checklist
- Using the latest available ArrayFire release
- GPU drivers are up to date