You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
#1267 makes agc_driver_flat_loads*, agc_driver_global_loads* and agc_driver_pixel_interlock fail on NVIDIA (Windows) #3087
Since #1267, seven execution tests fail on this machine, both under parallel ctest and alone with -j1. Still failing on main262c0316. Windows CI skips them (no Vulkan device), so it does not see this.
Failures
agc_driver_flat_loads, agc_driver_flat_loads_x2_x3, agc_driver_flat_loads_x4, agc_driver_global_loads, agc_driver_global_loads_x2_x3, agc_driver_global_loads_x4 each abort after ~65 s (they pass in ~0.4 s before #1267):
terminate called after throwing an instance of 'std::runtime_error'
what(): guest allocation 0x1d31b890000+0x10000 is still pinned by GPU work or an import (waited 60000 ms for the lease (APS5_PIN_WAIT_MS))
FATAL: abort() (SIGABRT) on thread 15828
agc_driver_pixel_interlock fails after ~5 s:
vkDeviceWaitIdle: Vulkan result -4
Bisect
git bisect --first-parent over 54f28f2d..b69270dd, testing agc_driver_flat_loads and agc_driver_pixel_interlock at each step; both changed state at the same commit every time.
The commit fails on its own base, so it is not an interaction with other merges.
On main262c0316, APS5_BDA_BYTE_READS=1 makes all three of agc_driver_flat_loads, agc_driver_global_loads and agc_driver_pixel_interlock pass (0.4-0.6 s). That path skips the probe and the read_bda_span* functions, which points at the shared span read rather than the rest of the BDA path.
Not established
What in read_bda_span* the NVIDIA driver mishandles (the GPU appears to hang: the pin wait never ends, and pixel_interlock reports device lost).
Other NVIDIA GPUs or drivers, AMD/Intel, and Linux on this GPU.
#2259 (device-scope atomic loads for coherent BDA reads, same read sites) does not fix this: with 8d6f765b merged into 262c0316, all seven still fail with the same errors. Its new CrossWorkgroupFlag.cpp does not compile on 262c0316 (no matching function for call to 'GuestAllocations::Mutation::Add(uint8_t*&, const std::size_t&, bool, bool)'), so it was left out of that run.
A data point that may narrow this down: I can't reproduce it on a newer NVIDIA driver.
Windows 11 Home (26200), WinLibs GCC 15.2.0 r7, Release, maindc105f8a (which includes #1267). RTX 5060 Laptop GPU (Blackwell), driver 617.42 (32.0.16.1742), selected with ANYPS5_GPU=NVIDIA. All seven tests (agc_driver_flat_loads, _x2_x3, _x4, the three global_loads and pixel_interlock) pass:
alone with -j1: 0.34 to 0.44 s each
-j6 --repeat until-fail:5: 5 of 5 rounds pass
every cache cold (ANYPS5_NO_SHADER_CACHE=1 APS5_NO_PIPELINE_CACHE=1 __GL_SHADER_DISK_CACHE=0): pass
the same seven on the Intel iGPU in this laptop (Arrow Lake, 32.0.101.8991): pass
So the shared read_bda_span* functions run fine on this driver, which makes a bug in the older driver's compiler (591.86) look likely, or something specific to Ada. If you can, it would be worth trying the current NVIDIA driver on the 4080 SUPER. If it passes there, the question becomes whether the project wants a workaround for older drivers (for example forcing the byte-read path, as APS5_BDA_BYTE_READS=1 does, below some driver version). If it still fails, it's Ada-specific, and someone with a 30- or 40-series card on a current driver would be the next data point.
AI-assisted (Claude Code); I ran everything above on my machine.
Updated the driver on the RTX 4080 SUPER from 591.86 to 610.62 (newest I can install on this machine) and reran the same binaries (main262c0316, not rebuilt). All seven pass:
alone with -j1, every cache cold (ANYPS5_NO_SHADER_CACHE=1 APS5_NO_PIPELINE_CACHE=1 __GL_SHADER_DISK_CACHE=0): 0.4 to 1.1 s each
alone with -j1, default caches: pass
-j6 --repeat until-fail:5: 5 of 5 rounds pass
So this is the 591.86 driver, not Ada in general. I have not narrowed down which driver between 591.86 and 610.62 fixes it.
Whether to work around it for older drivers (e.g. force the byte-read path below some version) is up to the maintainers. If not, this can be closed.
AI-assisted (Claude Code); I ran everything above on my machine.
Another data point from the Ada side: all seven pass here.
Windows 11, MinGW-w64 GCC 15.2.0 (WinLibs r7), Release, main ecafb64 plus two sysmodule commits that do not touch AGC. RTX 4050 Laptop GPU, driver 546.18, ANYPS5_GPU=NVIDIA.
First run: 7/7 pass in 21.04 s (flat_loads, flat_loads_x2_x3, flat_loads_x4, global_loads, global_loads_x2_x3, global_loads_x4, pixel_interlock). Repeat until-fail:3: all three rounds pass.
It passes on 546.18 and on 617.42 but fails on 591.86, so the regression looks like the 59x driver series rather than anything Ada-specific. The 4050 is Ada too.
Activity
Silverash-i8 commentedon Oct 10, 2026
A data point that may narrow this down: I can't reproduce it on a newer NVIDIA driver.
Windows 11 Home (26200), WinLibs GCC 15.2.0 r7, Release,
maindc105f8a(which includes #1267). RTX 5060 Laptop GPU (Blackwell), driver 617.42 (32.0.16.1742), selected withANYPS5_GPU=NVIDIA. All seven tests (agc_driver_flat_loads,_x2_x3,_x4, the threeglobal_loadsandpixel_interlock) pass:-j1: 0.34 to 0.44 s each-j6 --repeat until-fail:5: 5 of 5 rounds passANYPS5_NO_SHADER_CACHE=1 APS5_NO_PIPELINE_CACHE=1 __GL_SHADER_DISK_CACHE=0): passSo the shared
read_bda_span*functions run fine on this driver, which makes a bug in the older driver's compiler (591.86) look likely, or something specific to Ada. If you can, it would be worth trying the current NVIDIA driver on the 4080 SUPER. If it passes there, the question becomes whether the project wants a workaround for older drivers (for example forcing the byte-read path, asAPS5_BDA_BYTE_READS=1does, below some driver version). If it still fails, it's Ada-specific, and someone with a 30- or 40-series card on a current driver would be the next data point.AI-assisted (Claude Code); I ran everything above on my machine.
TheTerr4 commentedon Oct 10, 2026
Updated the driver on the RTX 4080 SUPER from 591.86 to 610.62 (newest I can install on this machine) and reran the same binaries (
main262c0316, not rebuilt). All seven pass:-j1, every cache cold (ANYPS5_NO_SHADER_CACHE=1 APS5_NO_PIPELINE_CACHE=1 __GL_SHADER_DISK_CACHE=0): 0.4 to 1.1 s each-j1, default caches: pass-j6 --repeat until-fail:5: 5 of 5 rounds passSo this is the 591.86 driver, not Ada in general. I have not narrowed down which driver between 591.86 and 610.62 fixes it.
Whether to work around it for older drivers (e.g. force the byte-read path below some version) is up to the maintainers. If not, this can be closed.
AI-assisted (Claude Code); I ran everything above on my machine.
danzaio commentedon Oct 11, 2026
Another data point from the Ada side: all seven pass here.
Windows 11, MinGW-w64 GCC 15.2.0 (WinLibs r7), Release, main ecafb64 plus two sysmodule commits that do not touch AGC. RTX 4050 Laptop GPU, driver 546.18, ANYPS5_GPU=NVIDIA.
First run: 7/7 pass in 21.04 s (flat_loads, flat_loads_x2_x3, flat_loads_x4, global_loads, global_loads_x2_x3, global_loads_x4, pixel_interlock). Repeat until-fail:3: all three rounds pass.
It passes on 546.18 and on 617.42 but fails on 591.86, so the regression looks like the 59x driver series rather than anything Ada-specific. The 4050 is Ada too.
AI-assisted: yes.
oneandonlydean commentedon Oct 11, 2026
Closing: only the 591.86 driver fails; 546.18, 610.62 and 617.42 pass. Updating the driver fixes it.