Atualmente, boa parte dos laptops vem com 2 GPUs - uma de alto desempenho e outra de economia de energia (menos potente). A maioria dos aplicativos que uso no meu laptop é executada com minha GPU integrada (de economia de energia), mas algumas delas estão definidas para abrir com o cartão de alto desempenho. Estou tentando configurar o aplicativo que estou criando para executar na GPU de alto desempenho por padrão, mas não consigo encontrar nenhuma informação sobre o tópico em nenhum lugar. Espero que alguém possa esclarecer um pouco isso. Distribuirei meu aplicativo com um instalador do NSIS e acho que terei que adicionar o caminho do meu aplicativo a uma lista de aplicativos para placas NVidia / ATI. O aplicativo está programado em C #. Além disso, alguém sabe como as coisas estão nos PCs de mesa? O que acontece se um PC tiver 2 GPUs e eu tiver que escolher o mais poderoso?
Milcho
NvOptimusEnablement
truque da Optimus , mas deveria. Parece algo recente (driver 302.x +) Obrigado.Em geral, você não pode.
O driver de GPU dupla oculta as duas GPUs por trás de uma única interface; portanto, soluções como a de Nathan Reed normalmente não funcionam nas configurações mais comuns de GPU dupla de alta velocidade / baixa potência.
A seleção da GPU deve ser tratada pelo driver de alguma forma. Com o NVIDIA Optimus, você geralmente atualiza os perfis Optimus para adicionar o aplicativo à lista de aplicativos que usam a GPU discreta, geralmente clicando com o botão direito do mouse no EXE e clicando em Propriedades. Você também pode usar algumas chamadas muito específicas da Optimus. conforme resposta do mh01. Com as configurações da AMD, isso é totalmente diferente.
Em outros sistemas, existe um comutador de hardware ou um sinalizador do SO para decidir qual GPU está ativo. Novamente, o aplicativo não tem controle sobre qual GPU é usada.
Isso é algo que realmente espero que seja "corrigido" em uma futura atualização do DirectX. Idealmente, ambas as GPUs seriam enumeradas como sugerido por Nathan e, em seguida, haveria dicas para indicar qual delas se destina a alta velocidade ou baixa potência, para que um aplicativo possa escolher de maneira inteligente a correta ou até alternar qual dispositivo usa com base em qualquer fatores (digamos, deixar um navegador da Web escolher dependendo da carga do WebGL).
fonte
Você deve poder enumerar as GPUs no sistema e escolher qual delas usar quando o aplicativo iniciar. Você não mencionou qual API está usando, mas, por exemplo, no D3D11, você usaria o IDXGIFactory :: EnumAdapters para obter a lista de GPUs e passar a que você deseja D3D11CreateDevice .
O DXGI pode fornecer algumas informações limitadas sobre a GPU, como uma sequência de descrição, ID do fornecedor e ID do dispositivo. Suponho que você possa usar essas informações para dizer qual GPU é de alto desempenho, mas você precisaria criar algum tipo de banco de dados de GPUs ou tentar usar algumas heurísticas para adivinhar. Ou você pode deixar o usuário escolher qual GPU usar na inicialização.
fonte