Compute shader does only run for some inputs


first of here is the minimal example that this is about:

The shader in question is in the resources folder. It takes an SSBO with photons and traces them through a grid. In each grid cell a photon hits it accumulates the intensity the photon has at a specific wavelength.

My problem with this shader is, that it does run perfectly for 100,000 photons, but doesn’t produce a result for 1,000,000 photons.

I tested it on a machine with SUSE Linux Enterprise 12 64 Bit, an NVIDIA Quadro P6000 and an Intel® Xeon® CPU E5-2690 v4. I also have 132 GB of RAM.

Things I tried:

  1. Memory usage:
    Max allowd SSBO size: 2.00 GB
    Actually used SSBO size:
  • Grid 1.50 GB

  • Photons 0.02 GB

    None of my SSBOs are larger than the allowed size. So it isn’t an SSBO memory problem.

    Used UBO size: 8 KB -> lower than the 16 KB minimum and therefore not an UBO issue.

  1. Changing code:
    When removing some logic it works. See lines 113 and 140.
    Why is that? I can’t see any logic error. Also it shouldn’t be a logic error since the number of photons is also relevant for success…

If you need more info please ask. I am really desperate here :(
If you want to compile the program you need GLUT, GLEW and GLM. You may need to adjust the CMAKE file a little bit.

I print the resulting grid to console. With 100’000 photons I get a result with photons starting at around line 255, where as with 1’000’000 photons the grid is empty.

It was an OS timeout issue. For a solution see this SO post: