none
How to get the integrated GPU accelerator?

    Question

  • Hi

    When I use the tool verifyampdevices.exe, I get this output:

    Found 3 accelerator device(s) that are compatible with C++ AMP:
     1: Intel(R) HD Graphics 4000, has_display=true, is_emulated=false
     2: NVIDIA Quadro K2000M , has_display=false, is_emulated=false
     3: Microsoft Basic Render Driver, has_display=false, is_emulated=true

    If I use the method accelerator::get_all() with this code:

     std::vector<accelerator> accs = accelerator::get_all();

     std::for_each(accs.begin(), accs.end(), [&] (accelerator acc)
     {   
      std::wcout << "New accelerator: " << acc.description << std::endl;   
     });

    If I compile this code, I get this output:

    New accelerator: NVIDIA Quadro K2000M
    New accelerator: NVIDIA Quadro K2000M
    New accelerator: Microsoft Basic Render Driver
    New accelerator: Software Adapter
    New accelerator: CPU accelerator

    Why I don’t see the Intel(R) HD Graphics 4000 with accelerator::get_all() ? 

    Bruno


    Boucard Bruno - http://blogs.msdn.com/b/devpara/

    Sunday, October 27, 2013 5:09 PM

Answers

  • Hi Bruno,

    I would bet that you are running on a laptop with NVIDIA Optimus technology.

    In theory that means that by default "the better" GPU will be automatically chosen for your program by NVIDIA driver running in the system; in practice we have had mixed experiences with it - but things were generally improved in the newer versions as they were released by NVIDIA. You can refer to our archival blog post C++ AMP apps on Optimus notebooks for how to override the automatic selection.

    Furthermore, at least in some driver versions, the accelerator descriptions reported by NVIDIA Optimus were not matching the underlying hardware. If you can, please verify the accelerator::device_path property as well -- Intel devices will always start with "PCI\VEN_8086" and NVIDIA with "PCI\VEN_10DE".

    I hope that helps.

    Sunday, October 27, 2013 7:06 PM

All replies

  • Hi Bruno,

    I would bet that you are running on a laptop with NVIDIA Optimus technology.

    In theory that means that by default "the better" GPU will be automatically chosen for your program by NVIDIA driver running in the system; in practice we have had mixed experiences with it - but things were generally improved in the newer versions as they were released by NVIDIA. You can refer to our archival blog post C++ AMP apps on Optimus notebooks for how to override the automatic selection.

    Furthermore, at least in some driver versions, the accelerator descriptions reported by NVIDIA Optimus were not matching the underlying hardware. If you can, please verify the accelerator::device_path property as well -- Intel devices will always start with "PCI\VEN_8086" and NVIDIA with "PCI\VEN_10DE".

    I hope that helps.

    Sunday, October 27, 2013 7:06 PM
  • Thanks Lukasz,

    Effectively, my Laptop is a Lenovo W530 with a GPU card NVIDIA  K2000M.

    Thanks for your explanations

    Bruno


    Boucard Bruno - http://blogs.msdn.com/b/devpara/

    Sunday, October 27, 2013 9:57 PM