Performance issue on Quadro cards with Java3D

Hello everyone,

Best wishes for this new year.

I am currently working on a vizualisation application where we extract points from points cloud (which can totalize several millions of points). Then we compute a reduced number of points to display no more than 2 millions, and we display it through PointArray in a Java3D context (thus, the development is in Java).

On Quadro cards (the problem appeared on different models), the application switch between freeze for minutes, work for several seconds, freeze again, then works normal for a second…
This “state” can last for more than 10 minutes before finishing the display correctly.

On Geforce cards, the extraction and display take few seconds.

However, if I change the profile of the card in the NVIDIA configuration panel from “basic profile” to “Advanced profile - Dynamic Streaming”, the application is more or less “back to normal” (in fact, it seems a bit slower than on GTX cards, but it remains usable, which is not the case on basic profiles).

Thus, here are 2 questions I didn’t manage to find answers:

  • What’s going on? is there a specific way of programming for NVIDIA’s Quadro cards that would fix this problem?

  • If not, the alternate solution would be to programmatically switch from “basic profile” to “dynamic streaming” when launching the application.
    Even there, what’s going on on the card when doing so, because looking at the detailled options in the configuration panel, it does not show differences between both profiles?

I’ve already contacted the NVIDIA client support, but they answered that it was too technical for their services and so they told me to come here to ask the question.

Hoping for help,

Sincerely yours,

Nicolas.

Both global profiles “Basic profile” and “Workstation App - Dynamic Streaming” don’t show any difference in the GUI, but there are 5 altered settings listed in the latter profile when inspecting them with NVAPI:

Setting Name: Optimus flags for enabled applications (SHIM_MCCOMPAT_STRING)
Setting ID: 10F9DC80
Predefined? : 0
Setting Value: 1
Setting Name: Enable application for Optimus (SHIM_RENDERING_MODE_STRING)
Setting ID: 10F9DC81
Predefined? : 1
Setting Value: 1
Setting Name: ???
Setting ID: 205F7E3B
Predefined? : 1
Setting Value: 0
Setting Name: ???
Setting ID: 209E7944
Predefined? : 1
Setting Value: 1
Setting Name: ???
Setting ID: 20A6EEBC
Predefined? : 1
Setting Value: 1

The last 3 don’t show up in my “NvApiDriverSettings.h” nor can I copy the last 3 settings into a new profile, (only the first 2 will copy). Those last 3 might be reserved for nVidia developers only, but the new profile with only the first 2 settings doesn’t fix the Quadro’s performance issues. Seems the only solution for now is to enable the “Workstation App - Dynamic Streaming” global setting and hope it doesn’t interfere with other applications.