GPU selection problem when using Capture SDK on AWS

Hi,

I tried to use Capture SDK via official sample codes but I have a problem. I follow the starting guide of SDK. When I tried to enable NVFBC with following commands;

NvFBCEnable.exe -enable

That command return following response:

Failed to enable. Insufficient privilage

Also, it writes following debug logs into the file:

2019-08-20 11:59:39.908|NVFBC|pid: 3100|-|DllMain: Driver version 426.00 ## DLL_PROCESS_ATTACH
2019-08-20 11:59:39.924|NVFBC|pid: 3100|-|NvFBC_GetStatusEx: Entry
2019-08-20 11:59:39.924|NVFBC|pid: 3100|-|isPluginAvailable: Entry
2019-08-20 11:59:39.924|NVFBC|pid: 3100|-|GetProgramFilesPath: Entry
2019-08-20 11:59:39.939|NVFBC|pid: 3100|-|GetProgramFilesPath: Exit
2019-08-20 11:59:39.939|NVFBC|pid: 3100|-|isPluginAvailable: Exit
2019-08-20 11:59:39.939|NVFBC|pid: 3100|-|IsConcurrentCaptureEnabled: Plugin is available.
2019-08-20 11:59:39.939|NVFBC|pid: 3100|-|
                     NvFBCStatusEx::dwVersion: 0x70020180
                     NvFBCStatusEx::dwAdapterIdx: 0
2019-08-20 11:59:39.939|NVFBC|pid: 3100|0|NvFBC_GetStatusEx: Error (NVFBC_ERROR_INVALID_TARGET)  System has no displays driven by NV GPU.
2019-08-20 11:59:39.939|NVFBC|pid: 3100|-|CNvFBCObjectTracker::Clear: Found 0 NVFBC session objects not released
2019-08-20 11:59:39.939|NVFBC|pid: 3100|-|DllMain: DLL_PROCESS_DETACH

I try with TeamViewer and Microsoft RDP client but it doesn’t return a different response to me. I also check NVFBC status and it seems enabled but I can’t use it with official sample codes. When I try to run samples, the system return following error:

NvFBC not supported on this device + driver.
Failed to create an instance of NvFBCToDx9Vid.  Please check
1) A driver R355 or newer with capable Tesla/Quadro/GRID capable product
2) Run "NvFBCEnable -enable" after a new driver installation

My question:

I guess the system can’t attach Nvidia GPU as the main graphic processor, but I don’t know how can I change this? What’s the trick for this point? I can’t select processor on resolution change page of Windows.

My system specs:

  • AWS g3s.xlarge instance
  • TESLA M60 GPU (with Nvidia 426.0 driver)
  • Windows Server 2012
  • Cuda 10.1
  • Directx SDK (June 2010)
  • Visual Studio 2013
  • PS: I used default Administrator user for all operation.

    The Tesla M60 cannot be used as a display device unless you are using vGPU software.

    On windows baremetal, the Tesla M60 is not a WDDM device, therefore no DirectX graphics stack can be built on it.

    What you are attempting to do won’t work. The M60 is primarily intended for use as a vGPU/GRID device. If you set up a proper environment for that, then you may be able to use the capture SDK on a GRID/vGPU instance, on the M60.

    If you have questions about that, I suggest asking them on the gridforums

    [url]https://gridforums.nvidia.com/[/url]

    Thanks for the reply Robert, I’ve additional question for here.

    Can I use video codec sdk (specifically NVENC) without vGPU software with Tesla M60?

    Yes, on linux. On windows you would have to be sure that you weren’t making use of any directX features. It might be possible.

    My target platform is Windows Server. Basically, I try to do this:

    CAPTURE DESKTOP FRAMES with using DESKTOP DUPLICATION API –>> ENCODE FRAMES with using NVENC

    NVIDIA already has the same sample for this flow:

    But I couldn’t run. Already I see NV Encoder was initialized with DirectX display mode ([url]video-sdk-samples/main.cpp at master · NVIDIA/video-sdk-samples · GitHub). I checked encoder documentation and I guess we can use CUDA or OpenGL alternatives instead of DirectX.

    Am I wrong? Can I use Desktop Duplication API with CUDA based NVENC? Or do you have any suggestion for this point?

    Could you give more information on this topic (about DirectX and Encoder SDK relations, conflicts, etc.)?

    I want to know what I can do without vGPU software. If you have a document, would you share?

    thanks for the help :)