Hello OptiX People,
currently i am writing my masters thesis using OptiX in a VR context. Unfortunately the performance is way below what it needs to be, to be viable for a VR context.
I tied tracing down what consumes so much time per frame and could find, that the actual tracing takes about 5-10ms. I meassured the time for a launch, but if i delete every line of code inside the entrypoint program it still needs 3ms. What am i doing wrong? 3ms for a basically empty program seems to be too much.
The structure of my program involves many OpenGL interop buffers, only ~5 primitives in implicit representation, an acceleration structure per primitive and an empty one over all primitives. 2 raytypes and entypoints are needed and 3 launches are performed per frame (left eye, right eye, some laser ray tracing).
So my question: What does Optix do when calling launch? How can i lower its startup time?
Here is some report from OptiX:
[2][INFO ] Launch index 1115.
[2][SCENE STAT ] Node graph object summary:
[2][SCENE STAT ] RTprogram : 32
[2][SCENE STAT ] RTbuffer : 24
[2][SCENE STAT ] RTtexturesampler : 2
[2][SCENE STAT ] RTacceleration : 6
[2][SCENE STAT ] RTgroup : 1
[2][SCENE STAT ] RTgeometrygroup : 5
[2][SCENE STAT ] RTtransform : 5
[2][SCENE STAT ] RTselector : 0
[2][SCENE STAT ] RTgeometryinstance: 5
[2][SCENE STAT ] RTgeometry : 3
[2][SCENE STAT ] Total prim: 3
[2][SCENE STAT ] RTmaterial : 6
[2][TIMING ] Acceleration update time: 0.0 ms
[2][MEM USAGE ] Buffer GPU memory usage:
[2][MEM USAGE ] | Category | Count | Total MByte |
[2][MEM USAGE ] | buffer | 15 | 123.9 |
[2][MEM USAGE ] | texture | 2 | 6.0 |
[2][MEM USAGE ] | gfx interop | 3 | 23.2 |
[2][MEM USAGE ] | cuda interop | 0 | 0.0 |
[2][MEM USAGE ] | optix internal | 19 | 0.0 |
[2][MEM USAGE ] Buffer host memory usage: 7.0 Mbytes
[2][MEM USAGE ] Local memory for all threads (CUDA device: 0): 384.4 MBytes
[1][TIMING ] Total launch time: 37.2 ms