Performance issue with high end Quadro cards

My problem:

I work developing a CAD application that display massive engineering models. The application works pretty well on GeForce cards but we have various problems with Quadro cards.

The application performance is very poor even in high end Quadro cards, like the Quadro K6000. Playing with NVIDIA Control Panel under panel Manage 3D Settings I changed the Global Presets from Base Profile to 3D App - Game Development and the performance of my application, like magic, gets a lot better.

The question: How can I make a profile in the Program Settings tab to have the same configuration as one of those Global Presets?

Another question is how to create a profile programatically so when my application is installed in a client machine it is already configured for performance?

Ps.: I also played a lot with every setting to see which one causes the performance loss but no sucess.

Please try if the profile “Workstation - Dynamic Streaming” behaves similarly well.

Shameless plug: For modern OpenGL workstation rendering performance you might want to take a look at our research rendering pipeline. It’s able to handle CAD style data with a pretty optimal GPU load and since we’re developing on Quadro boards it will run very well there.
https://devtalk.nvidia.com/default/topic/777618/scenix/announcing-nvpro-pipeline-a-research-rendering-pipeline/

Hi Detlef,

Very interesting link but, unfortunatelly we use the MinGW compiler on windows. Also we have an in house graphics engine capable of out-of-core rendering since our models can have from 5GB to 1TB of data.

I tried the “Workstation - Dynamic Streaming” and it works as expected, but my question remains, do I have to tell my client to manually change the profile or there is a way to specify this programatically. If there is any documentation of the subject I would appreciate a direction, I can’t anything on NVIDIA site by myself.

Thanks for the reply.

If one of the general profiles in there works fine for your application, you could of course recommend that to your customers.

The first thing which comes to mind to access control panel functionality is the NVAPI.
Please have a look at the following site: https://developer.nvidia.com/nvapi

On the documentation link there is also a specific link to a NVIDIA Driver Settings Programming Guide.
If there is a way to switch the profiles programmatically then with that NVAPI. It can do a lot more, but that’s not my expertise.

Could you recomend a place to post my question where someone might have an in depth knowledge of Quadro Profiles?

I could point our Control Panel team to this thread.

With an out-of-core rendering system the “Workstation - Dynamic Streaming” profile should be exactly matching your use case.
The NVAPI should allow to enumerate and select driver profiles. Have you looked into it?

I just made the download of the NVAPI SDK but it comes with .lib files only. As I said, we use the MinGW compiler. I’ll try to use it anyway, but can you confirm that it works with MinGW?

The documentation just mention that it is for Windows platform but I’m assuming that it works with Visual Studio only.

I tried to use MinGW, and had some success fixing compiler errors, but in the end, the precompiled library file provided by nVidia (either nvapi.lib or nvapi64.lib) is NOT compatible with MinGW, so you’re forced to use MS Visual Studio. I used MSVS 2017 Community edition and it worked perfectly.

More info: https://stackoverflow.com/questions/43502348/include-of-nvidias-nvapi-h-causes-compilation-errors/51980847#51980847