애플리케이션이 기본적으로 고성능 GPU에서 실행되도록 설정하려면 어떻게해야합니까?


12

오늘날 많은 노트북에는 고성능 GPU와 절전형 (더 강력하지 않은) GPU 2 개가 함께 제공됩니다. 랩톱에서 사용하는 대부분의 응용 프로그램은 통합 (절전) GPU로 실행되지만 여전히 일부는 고성능 카드로 열리도록 설정되어 있습니다. 기본적으로 고성능 GPU에서 실행되도록 빌드하는 앱을 구성하려고하는데 어디서나 주제에 대한 정보를 찾을 수 없습니다. 누군가가 이것에 약간의 빛을 비출 수 있기를 바랍니다. 응용 프로그램을 NSIS 설치 관리자와 함께 배포 할 예정이며 NVidia / ATI 카드 용 응용 프로그램 목록에 응용 프로그램 경로를 추가해야한다고 생각합니다. 응용 프로그램은 C #으로 프로그래밍됩니다. 또한 데스크탑 PC와 어떻게 작동하는지 아는 사람이 있습니까? PC에 2 개의 GPU가 있고 더 강력한 GPU를 선택해야하는 경우 어떻게됩니까?

밀초

답변:


7

: NVIDIA는 당신을 위해 도움이 될 수있는 몇 가지 전략을 요약 여기에 문서가 http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf 불행하게도, 나는 다른 제안 하나 - - NvOptimusEnablement을 내보내기-C ++에 대해서만 문서화됩니다. C # 으로이 작업을 수행 할 수도 있지만 실제로 알고있는 사람은 정보와 함께 차임해야합니다.

AMD와 비슷한 것을 알지 못합니다.

불행히도 벤더에 독립적 으로이 작업을 수행하는 방법이없는 것처럼 보입니다 (디스플레이 장치를 열거하더라도 사용자가 드라이버 제어판을 통해 설정을 강제하는 사용자의 자비에 맡길 수 있습니다. 완전히 구성 가능한 그래픽 설정이 제공되지 않는 게임). 그러한 것들이 없으면 readme에 의존하고 사람들이 실제로 그것을 읽기를 바랍니다.


+1 :이 옵티머스 NvOptimusEnablement트릭을 몰랐지만 그래야합니다. 최근의 것 같습니다 (드라이버 302.x +) 감사합니다.
Sean Middleditch

1
stackoverflow.com/questions/17458803/… AMD 동급 제품에 대해 궁금한 사람이 있다면 게임 관련이 아니므로 SO에 문의하십시오.
Sean Middleditch

1
최후의 수단으로 p / invoke를 사용하여 C #에서 C ++ 함수를 호출 할 수 있습니다.
BlueRaja-대니 Pflughoeft

@ BlueRaja-DannyPflughoeft-C ++ 함수가 아닙니다. 내 보낸 전역 변수입니다.
Maximus Minimus

5

일반적으로 할 수 없습니다.

듀얼 GPU 드라이버는 단일 인터페이스 뒤에 2 개의 GPU를 숨기므로 Nathan Reed와 같은 솔루션은 일반적으로 가장 일반적인 고속 / 저전력 듀얼 GPU 설정에서 작동하지 않습니다.

GPU 선택은 어떤 방식 으로든 드라이버에 의해 처리되어야합니다. NVIDIA Optimus를 사용하면 일반적으로 Optimus 프로파일을 업데이트하여 일반적으로 EXE를 마우스 오른쪽 단추로 클릭하고 속성을 클릭하여 개별 GPU를 사용하는 응용 프로그램 목록에 응용 프로그램을 추가합니다. 매우 구체적인 옵티머스 통화를 사용할 수도 있습니다. mh01의 답변에 따라. AMD 설정에서는 완전히 다릅니다.

다른 시스템에는 활성화 된 GPU를 결정하기위한 하드웨어 스위치 또는 OS 플래그가 있습니다. 다시 말하지만 응용 프로그램은 어떤 GPU가 사용되는지 제어 할 수 없습니다.

이것은 앞으로 DirectX 업데이트에서 "고정"되기를 바라고 있습니다. 이상적으로 두 GPU 모두 Nathan이 제안한대로 열거되고 그 중 고속 또는 저전력을 나타내는 GPU를 나타내는 힌트가 있으므로 응용 프로그램에서 지능적으로 올바른 것을 선택하거나 어떤 장치를 사용하여 어떤 장치를 사용하는지 전환 할 수 있습니다 요소 (예 : 웹 브라우저가 WebGL로드에 따라 선택하도록 허용)


아, 흥미 롭습니다. 이 듀얼 GPU 시스템 중 하나를 사용하지 않았으므로 드라이버가 동일한 척하는 것을 몰랐습니다. 드라이버가 주어진 앱의 GPU 사용 수준을 모니터링하고 필요한 경우 성능이 높은 것으로 전환 할 수 있다고 생각합니다.
Nathan Reed

1
할 수 없습니다. 하드웨어에는 다른 기능이 있습니다. 최대 텍스처 크기가 2048 인 GPU에서 최대 1024의 GPU 또는 기타 다른 특성으로 전환했다고 가정하면 전체 앱이 중단 될 수 있습니다. 어쨌든 더 유능한 GPU로 가려면 버퍼에 마이그레이션 (시간이 걸리고 원치 않는 프레임 히치가 발생)이 필요하고 셰이더를 다시 컴파일해야합니다. 앱은이 프로세스를 담당하고 스위치를 옵트 인하거나 옵트 아웃해야합니다. 안타깝게도 API는 아직 아직 완성되지 않았습니다.
Sean Middleditch

1
사용자가 종종 노트북의 GPU 전환을 무시하고 배터리를 절약하기를 원하기 때문에 복잡합니다. 이것이 랩톱의 전원 상태를 알고 있기 때문에 GPU 전환을 OS에 위임하는 것을 선호하는 한 가지 이유입니다.
가짜 이름

4

시스템의 GPU를 열거하고 응용 프로그램을 시작할 때 사용할 GPU를 선택할 수 있어야합니다. 사용중인 API는 언급하지 않았지만 D3D11에서는 IDXGIFactory :: EnumAdapters 를 사용 하여 GPU 목록을 가져 와서 원하는 것을 D3D11CreateDevice에 전달합니다 .

DXGI는 설명 문자열, 공급 업체 ID 및 장치 ID와 같은 GPU에 대한 제한된 정보를 제공 할 수 있습니다. 이 정보를 사용하여 어떤 GPU가 고성능 GPU인지 알 수 있지만 일종의 GPU 데이터베이스를 구축하거나 추론을 사용하여 추측해야합니다. 또는 시작시 사용할 GPU를 사용자가 선택하도록 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.