CI: Test different driver versions on Windows
After #1242 is merged, we have a nice test matrix for different Windows configurations. However, currently they lock at the same driver version latest:
https://github.com/NVIDIA/cuda-python/blob/c4079ddfb6b6dcdd7c9773b727530f122021fa9e/ci/test-matrix.json#L37-L48
But looking at this more closely, one would find that this DRIVER label is not used on Windows at all. Instead, the version is hard-wired in the installer script:
https://github.com/NVIDIA/cuda-python/blob/c4079ddfb6b6dcdd7c9773b727530f122021fa9e/ci/tools/install_gpu_driver.ps1#L8-L10
The reason we need the DRIVER label on Linux is because the driver is pre-installed in the runner VMs (and maintained by the runner team), and we need to use the label to compute the runner name, whereas on Windows due to technical challenges we need to install the driver ourselves as part of the CI jobs.
But, it gives us a unique opportunity to do something that we cannot do on Linux runners today, which is to select the driver versions that we intend to cover.
I think the DRIVER label on Windows could be repurposed to specify the UMD version, with the test matrix expanded:
| CTK version | UMD version | purpose | |
|---|---|---|---|
| prev major | 12.x | 12.0 | test CUDA minor version compatibility |
| prev major | 12.x | 13.x | test CUDA backward compatibility |
| curr major | 13.0 | 13.0 | |
| curr major | 13.0 | 13.x | test CUDA backward compatibility |
| curr major | 13.x | 13.0 | test CUDA minor version compatibility |
| curr major | 13.x | 13.x |
and we find a way to map the UMD version (ex: 13.0) to KMD version (ex: 581.15). Currently there is no public way to do this mapping and we need to hard-code a small table.
Perhaps this can be added to the nightly runs? #294