Closed shadeops closed 3 years ago
Windows + GPU is a total mess at this point (as evidenced by many open bugs on this front.) My sincere apologies about this, but it's been a combination of being busy with other things (writing the book text) and not having easy access to a Windows + GPU system that has prevented me from being very effective at chasing it down.
That said, having help figuring it out would be very much appreciated!
Interestingly, that IsNaN() assertion hitting is new to me (and I don't think has been reported before).
PR #71 (which I will merge tomorrow) improves GPU debug builds, which may be helpful.
I am pretty sure that Windows worked well in general at commit 9be5258cb4a56464f7e2450bb6d7ad5fac5c8b69. Reverting back to there and trying might be an interesting experiment. That at least would give a sense if things broke due to driver/compiler updates or due to changes in pbrt. (And then if that one does work, bisecting to figure out where things broke would be interesting.)
Thanks @mmp that's exactly what was I looking for!
I just tried 9be5258 and while it didn't crash it rendered both pbrt-book and killeroos completely black. So I went back a few commits to 41a70da and using the very simple test scene from https://github.com/mmp/pbrt-v4/issues/59#issue-717819792 I got my first successful (and very fast) GPU render.
Now that I got something working, I can start to investigate and debug with confidence.
That's already a useful data point. It wasn't clear to me if it was something that had changed in the system or something in more recent versions of the driver/CUDA/OptiX. It's good to know that it should be fixable in pbrt, though given that top of tree pbrt+GPU does work fine under Linux, I imagine it's going to be something subtle...
(And as you probably now understand, that speed is addictive!)
On Sun, Jan 3, 2021 at 11:37 PM Jim Price notifications@github.com wrote:
Thanks @mmp https://github.com/mmp that's exactly what was I looking for!
I just tried 9be5258 https://github.com/mmp/pbrt-v4/commit/9be5258cb4a56464f7e2450bb6d7ad5fac5c8b69 and while it didn't crash it rendered both pbrt-book and killeroos completely black. So I went back a few commits to 41a70da https://github.com/mmp/pbrt-v4/commit/41a70da92b7104ec986ba4fe66e5819470552969 and using the very simple test scene from #59 (comment) https://github.com/mmp/pbrt-v4/issues/59#issue-717819792 I got my first successful (and very fast) GPU render.
Now that I got something working, I can start to investigate and debug with confidence.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mmp/pbrt-v4/issues/96#issuecomment-753810853, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAZBJ4GMICXQ7R4TTZLCD3SYFV2DANCNFSM4VSH7SEA .
With the latest fix, those scenes (and many others) now render successfully on Windows for me, so marking this closed (yaay!).
Nice!
Background
I have temporary access to a Windows box with a RTX 3080 so I wanted to give pbrt-v4 GPU rendering a try. Unfortunately I have not been able to get a successful render. I'm lacking in CUDA and Windows development experience so it's possible there is an issue on my end. (CPU rendering has been fine.)
I mainly looking for a baseline configuration known to work so I can focus my debugging efforts appropriately. (Is it a platform issue, is it a pbrt-v4 bug, is it an issue with the build, etc.)
Platform
Windows 10 GeForce RTX 3080 Nvidia Drivers 457.51 (DCH) Nvidia CUDA 11.2 Nvidia Optix 7.1 (I also tried 7.2) Visual Studio 2019 pbrt-v4 head as of Jan 3rd; https://github.com/mmp/pbrt-v4/tree/c91fa3b2b66e25b6781a78b46a4526b2fcf27edb
Building
The build process seems to go ok, and CMake detects CUDA.
Test scenes
https://github.com/mmp/pbrt-v4-scenes/blob/9bc3810f66acc7875c2c36c817d3b091fc71141d/pbrt-book/book.pbrt https://github.com/mmp/pbrt-v4-scenes/blob/9bc3810f66acc7875c2c36c817d3b091fc71141d/killeroos/killeroo-simple.pbrt
With a Debug Build and CUDA_LAUNCH_BLOCKING set to 1 I get the following output:
Output
(This is from killeroo-simple.pbrt)