KR20180038515A - 제공자 네트워크에서의 그래픽 처리 가상화 - Google Patents

제공자 네트워크에서의 그래픽 처리 가상화 Download PDF

Info

Publication number
KR20180038515A
KR20180038515A KR1020187006659A KR20187006659A KR20180038515A KR 20180038515 A KR20180038515 A KR 20180038515A KR 1020187006659 A KR1020187006659 A KR 1020187006659A KR 20187006659 A KR20187006659 A KR 20187006659A KR 20180038515 A KR20180038515 A KR 20180038515A
Authority
KR
South Korea
Prior art keywords
virtual
gpu
compute instance
instance
physical
Prior art date
Application number
KR1020187006659A
Other languages
English (en)
Inventor
니콜라스 패트릭 윌트
아슈토시 탐베
나단 리 번스
나페아 브사라
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20180038515A publication Critical patent/KR20180038515A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects
    • G09G2370/022Centralised management of display operation, e.g. in a server instead of locally

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 방법들, 시스템들, 및 컴퓨터-판독가능한 매체들이 개시된다. 가상 컴퓨트 인스턴스는 제공자 네트워크로부터 프로비저닝된다. 제공자 네트워크는 멀티-테넌시로 복수의 가상 컴퓨트 인스턴스를 구현하도록 구성된 복수의 컴퓨팅 디바이스를 포함한다. 가상 GPU는 가상 컴퓨트 인스턴스에 부속된다. 가상 GPU는 물리적 GPU를 사용하여 구현되고, 물리적 GPU는 네트워크를 통해 가상 컴퓨트 인스턴스에 액세스가능하다. 어플리케이션은 가상 컴퓨트 인스턴스 상에서 가상 GPU를 사용하여 실행된다. 어플리케이션 실행은 클라이언트 디바이스에 제공되는 가상 GPU 출력을 생성한다.

Description

제공자 네트워크에서의 그래픽 처리 가상화
많은 회사 및 기타 단체들은 이를테면 같은 장소에 위치되는(예를 들어, 로컬 네트워크의 부분으로서) 또는 대신 다수의 별개의 지리적 장소에 위치되는(예를 들어, 하나 이상의 구내 또는 공중 중간 네트워크를 통해 연결되는) 컴퓨팅 시스템들에 의해, 그들의 작업들을 지원하기 위해 많은 컴퓨팅 시스템을 상호연결하는 컴퓨터 네트워크들을 운용한다. 예를 들어, 상당수의 상호연결된 컴퓨팅 시스템을 수용하는 분산 시스템들이 아주 흔하게 되었다. 그러한 분산 시스템들은 클라이언트들과 상호작용하는 서버들에 백-엔드 서비스들을 제공할 수 있다. 또한 그러한 분산 시스템들은 고객들에 컴퓨팅 자원들을 제공하기 위해 기업들에 의해 운용되는 데이터 센터들을 포함할 수 있다. 몇몇 데이터 센터 운용자는 다양한 고객이 소유하는 하드웨어에 네트워크 액세스, 전력, 및 보안 설치 시설들을 제공하는 한편, 다른 데이터 센터 운용자들은 또한 그들의 고객들이 사용하기 위해 이용가능하게 만들어진 하드웨어 자원들을 포함하는 "풀 서비스" 시설들을 제공한다. 분산 시스템들의 스케일 및 범위가 증가됨에 따라, 자원들을 프로비저닝, 운영, 및 관리하는 작업들이 점점 더 복잡해졌다.
상용 하드웨어에 대한 가상화 기술들의 도래는 다양한 요구에 의해 많은 클라이언트에 대한 대규모 컴퓨팅 자원을 관리하는 것에 대해 이점들을 제공해왔다. 예를 들어, 가상화 기술들은 각 사용자에게 단일 물리적 컴퓨팅 디바이스에 의해 호스팅되는 하나 이상의 가상 머신을 제공함으로써 단일 물리적 컴퓨팅 디바이스가 다수의 사용자 간에 공유될 수 있게 할 수 있다. 각각의 그러한 가상 머신은 사용자들에게 그들이 주어진 하드웨어 컴퓨팅 자원의 유일한 운용자들 및 관리자들이라는 일루전을 제공하는 한편, 또한 다양한 가상 머신 간 어플리케이션 격리 및 보안을 제공하는 상이한 논리적 컴퓨팅 시스템으로서의 역할을 하는 소프트웨어 시뮬레이션일 수 있다. 가상화에 따라, 단일 물리적 컴퓨팅 디바이스는 동적인 방식으로 가상 머신들을 생성, 유지, 또는 삭제할 수 있다.
도 1은 일 실시예에 따라, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 예시적인 시스템 환경을 도시한다.
도 2a는 일 실시예에 따라, 부속 가상 GPU와 가상 컴퓨트 인스턴스에 대한 인스턴스 유형 및 가상 GPU 클래스의 선택을 포함하여, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 예시적인 시스템 환경의 추가 측면들을 도시한다.
도 2b는 일 실시예에 따라, 부속 가상 GPU와 가상 컴퓨트 인스턴스의 프로비저닝을 포함하여, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 예시적인 시스템 환경의 추가 측면들을 도시한다.
도 3은 일 실시예에 따라, 클라이언트 디바이스 상에 디스플레이하기 위한 가상 GPU 출력을 생성하기 위한 가상 GPU와 가상 컴퓨트 인스턴스의 사용을 도시한다.
도 4는 일 실시예에 따라, 가상화된 그래픽 처리를 구현하기 위한 예시적인 하드웨어 아키텍처를 도시한다.
도 5는 일 실시예에 따라, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 방법을 도시하는 흐름도이다.
도 6은 몇몇 실시예에서 사용될 수 있는 예시적인 컴퓨팅 디바이스를 도시한다.
실시예들이 본 명세서에서 몇몇 실시예 및 예시적인 도면에 대한 예로서 설명되지만, 해당 기술분야의 통상의 기술자들은 실시예들이 설명된 실시예들 또는 도면들에 제한되지 않음을 인식할 것이다. 도면들 및 그에 대한 상세한 설명은 개시된 특정 형태로 실시예들을 제한하는 것으로 의도되는 것이 아니라, 오히려 그와는 반대로, 첨부된 청구항들에 의해 정의되는 바와 같은 사상 및 범위 내에 속하는 모든 변형예, 등가예 및 대안예를 망라하도록 의도된다는 것이 이해되어야 한다. 본 명세서에 사용되는 제목들은 단지 조직화를 위함이고 설명 또는 청구항들의 범위를 제한하기 위해 사용된 것으로 여겨지지 않는다. 본 출원 전체에 걸쳐 사용될 때, 단어 "할 수 있다"는 필수적 의미(즉, "해야한다"는 의미)가 아니라, 관용적 의미(즉, "가능성을 가짐"을 의미)로 사용된다. 유사하게, 단어들 "포함하다", "포함하는", 및 "포함한다"는 "포함하지만, 이에 제한되지 않는다"를 의미한다.
제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 방법들, 시스템들, 및 컴퓨터-판독가능한 매체들의 다양한 실시예가 설명된다. 본 명세서에 설명되는 기술들을 사용하여, 가상 컴퓨트 인스턴스는 가속된 그래픽 처리를 제공하기 위해 부속 가상 그래픽 처리 장치(GPU)와 프로비저닝될 수 있다. 가상 GPU는 그래픽 처리에 대한 상이한 성능들을 갖는 가상 GPU들(또는 가상 GPU 클래스들)의 집합으로부터 선택될 수 있다. 또한 가상 컴퓨트 인스턴스는 상이한 컴퓨터 및/또는 메모리 자원들을 갖는 가상 컴퓨트 인스턴스들(또는 인스턴스 유형들)의 집합으로부터 선택될 수 있다. 가상 GPU는 네트워크를 통해 가상 컴퓨트 인스턴스에 연결되는 물리적 GPU를 사용하여 구현될 수 있다. 가상 컴퓨트 인스턴스는 인터페이스 디바이스를 포함하는 물리적 컴퓨트 인스턴스를 사용하여 구현될 수 있다. 인터페이스 디바이스는 GPU를 에뮬레이트하는 사용자 지정 하드웨어 인터페이스 및 네트워크 인터페이스를 포함할 수 있다. 인터페이스 디바이스는 가상 컴퓨트 인스턴스에 가상 GPU로 보일 수 있고, 가상 컴퓨트 인스턴스는 네트워크를 통해 물리적 GPU에 그래픽 처리를 오프로드하기 위해 인터페이스 디바이스를 사용할 수 있다.
도 1은 일 실시예에 따라, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 예시적인 시스템 환경을 도시한다. 제공자 네트워크(100)의 클라이언트들은 제공자 네트워크에 의해 제공되는 탄력적 그래픽 서비스(110) 및 다른 자원들에 액세스하기 위해 컴퓨팅 디바이스들 이를테면 클라이언트 디바이스들(180A-180N)을 사용할 수 있다. 클라이언트 디바이스들(180A-180N)은 하나 이상의 네트워크(190)를 통해 제공자 네트워크(100)에 연결될 수 있다. 제공자 네트워크(100)는 복수의 가상 컴퓨트 인스턴스(141A-141Z)가 복수의 물리적 컴퓨트 인스턴스(142A-142N)를 사용하여 구현될 수 있도록 컴퓨트 가상화(140)를 제공할 수 있다. 가상 컴퓨트 인스턴스들(141A-141Z)은 본 명세서에서 가상 머신들(VM들)로도 지칭될 수 있다. 유사하게, 제공자 네트워크(100)는 복수의 가상 GPU(151A-151Z)가 복수의 물리적 GPU(152A-152N)를 사용하여 구현될 수 있도록 GPU 가상화(150)를 제공할 수 있다. 물리적 GPU들을 사용하여 가상 GPU들을 구현하기 위한 예시적인 하드웨어 아키텍처는 도 5를 참조하여 논의된다. 하지의 물리적 컴퓨트 인스턴스들(142A-142N)은 여러 다른 종류로 이뤄질 수 있고, 하지의 물리적 GPU들(152A-152N)도 또한 여러 다른 종류로 이뤄질 수 있다. 일 실시예에서, 컴퓨트 가상화(140)는 멀티-테넌시가 수에 있어서 물리적 컴퓨트 인스턴스들(142A-142N)을 능가하는 가상 컴퓨트 인스턴스들(141A-141Z)을 프로비저닝하기 위한 기술들을 사용할 수 있다. 일 실시예에서, GPU 가상화(150)는 멀티-테넌시가 수에 있어서 물리적 GPU들(152A-152N)을 능가하는 가상 GPU들(151A-151Z)을 프로비저닝하기 위한 기술들을 사용할 수 있다.
탄력적 그래픽 서비스(100)는 클라이언트들에, 가상화된 부속 GPU들과 가상화된 컴퓨트 인스턴스들의 선택 및 프로비저닝을 제공할 수 있다. 그에 따라, 탄력적 그래픽 서비스(100)는 인스턴스 유형 선택 기능(120) 및 인스턴스 프로비저닝 기능(130)을 포함할 수 있다. 일 실시예에서, 제공자 네트워크(100)는 다양한 컴퓨터 및/또는 메모리 자원을 갖는 가상 컴퓨트 인스턴스들(141A-141Z)을 제공할 수 있다. 일 실시예에서, 가상 컴퓨트 인스턴스들(141A-141Z)의 각각은 몇몇 인스턴스 유형 중 하나에 대응할 수 있다. 인스턴스 유형은 그것의 컴퓨터 자원들(예를 들어, 중앙 처리 장치들[CPU들] 또는 CPU 코어들의 수, 유형, 및 구성), 메모리 자원들(예를 들어, 로컬 메모리의 용량, 유형, 및 구성), 스토리지 자원들(예를 들어, 로컬로 액세스가능한 스토리지의 용량, 유형, 및 구성), 네트워크 자원들(예를 들어, 그것의 네트워크 인터페이스 및/또는 네트워크 성능들의 특성들), 및/또는 다른 적합한 서술적인 특질들에 의해 특징지어질 수 있다. 인스턴스 유형 선택 기능(120)을 사용하여, 인스턴스 유형은 예를 들어, 클라이언트로부터 입력에 (적어도 부분적으로) 기초하여, 클라이언트에 대해 선택될 수 있다. 예를 들어, 클라이언트는 인스턴스 유형들의 미리 정의된 집합으로부터 인스턴스 유형을 선택할 수 있다. 다른 예로서, 클라이언트는 인스턴스 유형의 원하는 자원들을 지정할 수 있고, 인스턴스 유형 선택 기능(120)이 그러한 지정에 기초하여 인스턴스 유형을 선택할 수 있다.
일 실시예에서, 제공자 네트워크(100)는 다양한 그래픽 처리 성능을 갖는 가상 GPU들(151A-151Z)을 제공할 수 있다. 일 실시예에서, 가상 GPU들(151A-151Z)의 각각은 몇몇 가상 GPU 클래스 중 하나에 대응할 수 있다. 가상 GPU 클래스는 그래픽 처리를 위한 그것의 컴퓨터 자원들, 그래픽 처리를 위한 메모리 자원들, 및/또는 다른 적합한 설명적인 특질들에 의해 특징지어질 수 있다. 일 실시예에서, 가상 GPU 클래스들은 물리적 GPU의 그래픽 처리 성능들의 일구분들, 이를테면 풀 GPU, 하프 GPU, 쿼터 GPU 등을 나타낼 수 있다. 인스턴스 유형 선택 기능(120)을 사용하여, 가상 GPU 클래스는 예를 들어, 클라이언트로부의 입력에 (적어도 부분적으로) 기초하여, 클라이언트에 대해 선택될 수 있다. 예를 들어, 클라이언트는 가상 GPU 클래스들의 미리 정의된 집합으로부터 가상 GPU 클래스를 선택할 수 있다. 다른 예로서, 클라이언트는 가상 GPU 클래스의 원하는 자원들을 지정할 수 있고, 인스턴스 유형 선택 기능(120)이 그러한 지정에 기초하여 가상 GPU 클래스를 선택할 수 있다.
그에 따라, 인스턴스 유형 선택 기능(120)을 사용하여, 클라이언트들(예를 들어, 클라이언트 디바이스들(180A-180N)을 사용하는)은 가상 컴퓨트 인스턴스들 및 가상 GPU들에 대한 요건들을 지정할 수 있다. 인스턴스 프로비저닝 기능(130)은 지정된 요건들(임의의 지정된 인스턴스 유형들 및 가상 GPU 클래스들을 포함하는)에 기초하여 부속 가상 GPU들과 가상 컴퓨트 인스턴스들을 프로비저닝할 수 있다. 본 명세서에서 사용될 때.가상 컴퓨트 인스턴스를 프로비저닝하는 것은 일반적으로 하지의 물리적 컴퓨트 인스턴스의 자원들(예를 들어, 컴퓨터 및 메모리 자원들)을 클라이언트를 위해 수신하는 것(예를 들어, 이용가능한 물리적 컴퓨트 인스턴스들 및 다른 자원들의 풀(pool)로부터), 요청된 소프트웨어(예를 들어, 운영 체제)를 설치 또는 런칭하는 것, 그리고 클라이언트에 의해 지정된 작업들을 수행하기 위해 가상 컴퓨트 인스턴스를 클라이언트가 이용가능하게 만드는 것을 포함한다. 특정 클라이언트에 대해, 클라이언트에 의해 또는 그에 대해 선택된 인스턴스 유형의 가상 컴퓨트 인스턴스가 프로비저닝될 수 있고, 가상 컴퓨트 인스턴스는 클라이언트에 의해 또는 그에 대해 선택된 GPU 클래스의 부속 가상 GPU와 프로비저닝될 수 있다. 일 실시예에서, 실질적으로 임의의 가상 GPU 클래스의 가상 GPU는 실질적으로 임의의 인스턴스 유형의 가상 컴퓨트 인스턴스에 부속될 수 있다.
제공자 네트워크(100)는 인터넷 및/또는 다른 네트워크들을 통해 클라이언트 디바이스들(180A-180N)에 액세스가능한 하나 이상의 서비스(이를테면 다양한 유형의 클라우드-기반 컴퓨팅 또는 스토리지)를 제공하기 위해 기업 이를테면 회사 또는 공공 부문 단체에 의해 셋업될 수 있다. 제공자 네트워크(100)는 제공자 네트워크(100)에 의해 제공되는 인프라스트럭처 및 서비스들을 구현 및 분산하기 위해 요구되는 다양한 자원 풀, 이를테면 물리적 및/또는 가상화된 컴퓨터 서버들, 스토리지 디바이스들, 네트워킹 장비 기타 같은 종류의 것(예를 들어, 도 6에 관해 아래에서 설명될 컴퓨팅 시스템(3000)을 사용하여 구현되는)의 집합들을 호스팅하는 많은 데이터 센터를 포함할 수 있다. 몇몇 실시예에서, 제공자 네트워크(100)는 컴퓨팅 자원들, 이를테면 컴퓨트 가상화 서비스(140) 및 GPU 가상화 서비스(150); 스토리지 서비스들, 이를테면 블록-기반 스토리지 서비스, 키-값 기반 데이터 저장소들, 또는 다양한 유형의 데이터베이스 시스템들; 및/또는 임의의 다른 유형의 네트워크-기반 서비스들을 제공할 수 있다. 클라이언트 디바이스들(180A-180N)은 네트워크(들)(190)를 통해 제공자 네트워크(100)에 의해 제공되는 이러한 다양한 서비스에 액세스할 수 있다. 마찬가지로, 네트워크-기반 서비스들은 그것들 자체로 상이한 서비스들을 제공하기 위해 서로 통신 및/또는 이용할 수 있다. 예를 들어, "인스턴스들", 이를테면 가상 또는 물리적 컴퓨트 인스턴스들 또는 스토리지 인스턴스들이라는 유닛들로 클라이언트 디바이스들(180A-180N)에 제공되는 컴퓨팅 자원들은 컴퓨트 인스턴스들에 가상 블록 스토리지를 제공하는, 특정 데이터 볼륨들을 이용할 수 있다. 제공자 네트워크(100)는 다수의 클라이언트(예를 들어, 클라이언트 디바이스들(180A-180N)을 사용하는)가 실질적으로 동시의 방식으로 특정 자원에 액세스 또는 이를 사용할 수 있도록 멀티-테넌트 환경을 구현 또는 제공할 수 있다.
위에서 언급된 바와 같이, 컴퓨트 가상화 서비스(140)는 다양한 가상 컴퓨트 인스턴스들(141A-141Z)을 클라이언트 디바이스들(180A-180N)에 제공할 수 있다. 가상 컴퓨트 인스턴스는 예를 들어, 지정된 컴퓨터 용량(CPU들의 유형 및 수, 메인 메모리 크기 등을 지시함으로써 지정될 수 있는) 및 지정된 소프트웨어 스택(예를 들어, 차례로 하이퍼바이저 위에서 실행될 수 있는, 운영 체제의 특정 버전)을 갖는 하나 이상의 서버를 포함할 수 있다. 다수의 상이한 유형의 컴퓨팅 디바이스들은 범용 또는 전용 컴퓨터 서버들, 스토리지 디바이스들, 네트워크 디바이스들 기타 같은 종류의 것을 포함하여, 상이한 실시예들에서 컴퓨트 가상화 서비스(140)의 컴퓨트 인스턴스들을 구현하기 위해 단독으로 또는 조합하여 사용될 수 있다. 몇몇 실시예에서, 클라이언트 디바이스들(180A-180N) 또는 기타 임의의 다른 사용자는 가상 컴퓨트 인스턴스에 네트워크 트래픽을 보내도록 구성될 수 있다(그리고/또는 권한이 있을 수 있다). 다양한 실시예에서, 가상 컴퓨트 인스턴스들(141A-141Z)은 다양한 작업을 수행하기 위한 영구 스토리지를 획득하기 위해 스토리지 서비스에 의해 제공되는 하나 이상의 데이터 볼륨을 부속 또는 맵핑할 수 있다. 본 명세서에 설명된 기술들을 사용하여, 가상 컴퓨트 인스턴스들에 그래픽 처리를 제공하기 위해 가상 GPU들(151A-151Z)이 가상 컴퓨트 인스턴스들(141A-141Z)에 부속될 수 있다.
가상 컴퓨트 인스턴스들(141A-141Z)은 다양한 상이한 플랫폼, 이를테면 어플리케이션 서버 인스턴스, Java™ 가상 머신(JVM) 또는 다른 가상 머신, 범용 또는 전용 운영 체제, 다양한 해석형 또는 컴파일러형 프로그래밍 언어 이를테면 Ruby, Perl, Python, C, C++ 기타 같은 종류의 것을 지원하는 플랫폼, 또는 예를 들어 클라이언트 디바이스들(180A-180N)에 인스턴스에 액세스할 것을 요구하지 않고, 클라이언트 어플리케이션들을 수행하기에 적합한 고성능 컴퓨팅 플랫폼)을 운영 또는 구현할 수 있다. 몇몇 실시예에서, 가상 컴퓨트 인스턴스들(141A-141Z)은 예상 가동시간율들에 기초하여 상이한 인스턴스 유형들 또는 구성들을 가질 수 있다. 특정 가상 컴퓨트 인스턴스의 가동시간율은 인스턴스가 리저브되는 총 시간에 대해 활성화되는 시간의 비로서 정의될 수 있다. 또한 가동시간율은 몇몇 구현예에서 이용률로도 지칭될 수 있다. 클라이언트가 인스턴스가 리저브되는 상대적으로 적은 비율의 시간 동안 컴퓨트 인스턴스를 사용하기를 기대하는 경우(예를 들어, 연간 리저베이션의 30% 내지 35%), 클라이언트는 인스턴스를 저 가동시간율 인스턴스로 리저브하기로 결정할 수 있고, 클라이언트는 관련 가격 정책에 따라 할인된 시간당 사용료를 지불할 수 있다. 클라이언트가 인스턴스에 대부분 시간 깨어 있을 것을 필요로 하는 정상-상태 작업량을 갖기를 기대하면, 클라이언트는 고 가동시간율 인스턴스를 리저브할 수 있고 가능성 있게 훨씬 더 낮은 시간당 사용료를 지불할 수 있으나, 몇몇 실시예에서 시간당 수수료는 가격 정책에 따라, 실제 사용 시간에 관계 없이, 리저베이션의 전체 기간 동안 부과될 수 있다. 중간 가동시간율 인스턴스들에 대한 옵션은 대응하는 가격 정책에 따라, 몇몇 실시예에서 또한 지원될 수 있으며, 여기서 선불 비용 및 시간당 비용은 대응하는 고 가동시간율 및 저 가동시간율 비용 사이가 된다.
또한 가상 컴퓨트 인스턴스 구성들은 범용 또는 전용의, 이를테면 컴퓨트 집약적 어플리케이션들(예를 들어, 고트래픽 웹 어플리케이션들, 광고 서비스 제공, 일괄 처리, 비디오 인코딩, 분산 분석학, 고에너지 물리학, 게놈 분석, 및 컴퓨터 유체 역학)에 대한 컴퓨터 작업부하들, 그래픽 집약적 작업부하들(예를 들어, 게임 스트리밍, 3D 어플리케이션 스트리밍, 서버-측 그래픽 작업부하들, 렌더링, 금융 모델링, 및 기술 설계), 메모리 집약적 작업부하들(예를 들어, 고성능 데이터베이스들, 분산 메모리 캐시들, 인-메모리 분석학, 게놈 조립 및 분석), 및 스토리지 최적화된 작업부하들(예를 들어, 데이터 웨어하우징 및 클러스터 파일 시스템들)을 갖는 가상 컴퓨트 인스턴스들을 포함할 수 있다. 몇몇 실시예에서, 가상 컴퓨트 인스턴스들에 대한 특정 인스턴스 유형들은 가상 GPU들에 대한 디폴트 클래스들과 연관될 수 있다. 예를 들어, 몇몇 인스턴스 유형은 디폴트 구성으로 가상 GPU 없이 구성될 수 있는 한편, 그래픽 집약적 작업부하들에 지정되는 다른 인스턴스 유형들은 디폴트 구성으로 특정 가상 GPU 클래스들을 갖게 지정될 수 있다. 또한 가상 컴퓨트 인스턴스들의 구성들은 특정 데이터 센터 또는 이용가능한 존에서의 그것들의 위치, 지리적 위치, 및 (리저브드 컴퓨트 인스턴스들의 경우) 리저베이션 기간 길이를 포함할 수 있다.
클라이언트 디바이스들(180A-180N)은 제공자 네트워크(100)의 다양한 클라이언트 또는 사용자, 이를테면 제공자 네트워크에 의해 제공되는 서비스들을 사용하려고 하는 고객들을 나타내거나 그러한 고객들에 대응할 수 있다. 클라이언트들, 사용자, 또는 고객들은 사람들, 사업소들, 다른 단체들, 및/또는 다른 개체들을 나타낼 수 있다. 클라이언트 디바이스들(180A-180N)은 임의의 적합한 장소들 또는 영역들에 걸쳐 분산될 수 있다. 클라이언트 디바이스들(180A-180N)의 각각은 하나 이상의 컴퓨팅 디바이스를 사용하여 구현될 수 있으며, 이들 중 임의의 것은 도 6에 도시된 예시적인 컴퓨팅 디바이스(3000)에 의해 구현될 수 있다.
클라이언트 디바이스들(180A-180N)은 제공자 네트워크(100)에 요청들을 제출하도록 구성가능한 임의의 유형의 클라이언트를 포함할 수 있다. 예를 들어, 소정의 클라이언트 디바이스는 적합한 버전의 웹 브라우저를 포함할 수 있거나, 또는 그것은 웹 브라우저에 의해 제공되는 실행 환경 내에서 또는 그것으로 확장으로 실행하도록 구성되는 플러그-인 모듈 또는 다른 유형의 코드 모듈을 포함할 수 있다. 대안적으로, 클라이언트 디바이스는 어플리케이션 이를테면 데이터베이스 어플리케이션(또는 그것의 사용자 인터페이스), 미디어 어플리케이션, 오피스 어플리케이션, 또는 다양한 작업을 수행하기 위해 제공자 네트워크(100)에서의 가상 컴퓨트 인스턴스들, 스토리지 볼륨들, 또는 다른 네트워크-기반 서비스들을 이용할 수 있는 임의의 다른 어플리케이션을 포함할 수 있다. 몇몇 실시예에서, 그러한 어플리케이션은 반드시 모든 유형의 네트워크-기반 데이터에 대한 풀 브라우저 지원을 구현할 필요는 없이 네트워크-기반 서비스 요청들을 생성 및 처리하기에 충분한 프로토콜 지원(예를 들어, 적합한 버전의 하이퍼텍스트 전송 프로토콜[HTTP]에 대한)을 포함할 수 있다. 몇몇 실시예에서, 클라이언트 디바이스들(180A-180N)은 표현 상태 변경(REST)-유형 네트워크-기반 서비스 아키텍처, 도큐먼트- 또는 메시지-기반 네트워크-기반 서비스 아키텍처, 또는 다른 적합한 네트워크-기반 서비스 아키텍처에 따라 네트워크-기반 서비스 요청들을 생성하도록 구성될 수 있다. 몇몇 실시예에서, 클라이언트 디바이스들(180A-180N)(예를 들어, 컴퓨터 클라이언트)은 가상 컴퓨트 인스턴스에 의해 제공되는 컴퓨터 자원들을 이용하는 클라이언트 디바이스 상에서 구현되는 어플리케이션들이 인식하는 방식으로 가상 컴퓨트 인스턴스에 대한 액세스를 제공하도록 구성될 수 있다. 적어도 몇몇 실시예에서, 클라이언트 디바이스들(180A-180N)은 클라이언트 디바이스들에 구현되는 파일 시스템들에 대한 스토리지 서비스들에 구현되는 스토리지 볼륨들을 프로비저닝, 장착, 및 구성할 수 있다.
클라이언트 디바이스들(180A-180N)은 네트워크-기반 서비스 요청들을 외부 네트워크(들)(190)를 통해 제공자 네트워크(100)에 전달할 수 있다. 다양한 실시예에서, 외부 네트워크(들)(190)는 클라이언트 디바이스들(180A-180N) 및 제공자 네트워크(100) 사이에 네트워크-기반 통신을 수립하는 데 필요한 네트워킹 하드웨어 및 프로토콜들의 임의의 적합한 조합을 포함할 수 있다. 예를 들어, 네트워크(들)(190)는 일반적으로 총괄하여 인터넷을 구현하는 다양한 전기 네트워크 및 서비스 제공자를 포함할 수 있다. 또한 네트워크(들)(190)는 사설 네트워크들 이를테면 근거리 네트워크들(LAN들) 또는 광역 네트워크들(WAN들) 뿐만 아니라 공공 또는 사설 무선 네트워크들을 포함할 수 있다. 예를 들어, 소정의 클라이언트 디바이스 및 제공자 네트워크(100) 양자는 그것들 자체의 내부 네트워크들을 갖는 엔터프라이즈들 내에서 각각 프로비저닝될 수 있다. 그러한 실시예에서, 네트워크(들)(190)는 소정의 클라이언트 디바이스 및 인터넷 뿐만 아니라 인터넷 및 제공자 네트워크(100) 사이에 네트워킹 링크를 수립하는 데 필요한 하드웨어(예를 들어, 모뎀들, 라우터들, 스위치들, 부하 분산기들, 프록시 서버들 등) 및 소프트웨어(예를 들어, 프로토콜 스택들, 회계 소프트웨어, 방화벽/보안 소프트웨어 등)를 포함할 수 있다. 몇몇 실시예에서, 클라이언트 디바이스들(180A-180N)은 공공 인터넷이 아니라 사설 네트워크를 사용하여 제공자 네트워크(100)와 통신할 수 있다는 것이 주의된다.
제공자 네트워크(100)는 복수의 컴퓨팅 디바이스를 포함할 수 있으며, 이들 중 임의의 것은 도 6에 도시된 예시적인 컴퓨팅 디바이스(3000)에 의해 구현될 수 있다. 다양한 실시예에서, 제공자 네트워크(100)의 설명된 기능의 부분들이 동일한 컴퓨팅 디바이스에 의해 또는 임의의 적합한 수의 상이한 컴퓨팅 디바이스에 의해 제공될 수 있다. 제공자 네트워크(100)의 구성요소들 중 임의의 것이 상이한 컴퓨팅 디바이스들에 의해 구현된다면, 구성요소들 및 그것들 각각의 컴퓨팅 디바이스들은 예를 들어, 네트워크를 통해 통신가능하게 연결될 수 있다. 도시된 구성요소들(이를테면 탄력적 그래픽 서비스(110) 및 그것을 구성하는 기능들(120 및 130))의 각각은 그것들 각각의 기능들을 수행하기 위해 사용가능한 소프트웨어 및 하드웨어의 임의의 조합을 나타낼 수 있다.
제공자 네트워크(100)는 도시되지 않은 추가 구성요소들, 도시된 것보다 적은 구성요소, 또는 상이한 조합들, 구성들, 또는 수량들의 도시된 구성요소들을 포함할 수 있다는 것이 고려된다. 예를 들어, 물리적 컴퓨트 인스턴스들(142A 내지 142N)이 예시 및 실례를 위해 도시되지만, 상이한 수량들 및 구성들의 물리적 컴퓨트 인스턴스들이 사용될 수 있다는 것이 고려된다. 유사하게, 물리적 GPU들(152A 내지 152N)이 예시 및 실례를 위해 도시되지만, 상이한 수량들 및 구성들의 물리적 GPU들이 사용될 수 있다는 것이 고려된다. 추가적으로, 세 개의 클라이언트 디바이스(180A, 180B, 및 180N)가 예시 및 실례를 위해 도시되지만, 상이한 수량들 및 구성들의 클라이언트 디바이스들이 사용될 수 있다는 것이 고려된다. 가상화된 그래픽 처리를 제공하기 위해 본 명세서에 설명된 기능의 측면들은 적어도 부분적으로, 제공자 네트워크(100) 외부의 구성요소들에 의해 수행될 수 있다.
도 2a는 일 실시예에 따라, 부속 가상 GPU와 가상 컴퓨트 인스턴스에 대한 인스턴스 유형 및 가상 GPU 클래스의 선택을 포함하여, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 예시적인 시스템 환경의 추가 측면들을 도시한다. 위에서 논의된 바와 같이, 제공자 네트워크(100)는 클라이언트 디바이스(180A)에 가상 컴퓨트 인스턴스들에 대한 복수의 인스턴스 유형(121)을 제공할 수 있다. 실례 및 예시를 위해 도시된 바와 같이, 유형 "B" 내지 유형 "N"의 가상 컴퓨트 인스턴스들(141B 내지 141N)이 제공될 수 있다. 그러나, 임의의 적합한 수 및 구성의 가상 컴퓨트 인스턴스 유형들이 제공자 네트워크(100)에 의해 클라이언트들에 제공될 수 있다는 것이 고려된다. 인스턴스 유형은 그것의 컴퓨터 자원들(예를 들어, 중앙 처리 장치들[CPU들] 또는 CPU 코어들의 수, 유형, 및 구성), 메모리 자원들(로컬 메모리의 용량, 유형, 및 구성), 스토리지 자원들(예를 들어, 로컬로 액세스가능한 스토리지의 용량, 유형, 및 구성), 네트워크 자원들(예를 들어, 그것의 네트워크 인터페이스 및/또는 네트워크 성능들의 특성들), 및/또는 다른 적합한 서술적인 특질들에 의해 특징지어질 수 있다. 인스턴스 유형 선택 기능(120)을 사용하여, 클라이언트 디바이스(180A)는 특정 인스턴스 유형의 지시, 지정, 또는 다른 선택(201)을 제공할 수 있다. 예를 들어, 클라이언트는 입력(201)을 사용하여 인스턴스 유형들의 미리 정의된 집합으로부터 인스턴스 유형 "B"를 선택할 수 있다. 다른 예로서, 클라이언트는 입력(201)을 사용하여 인스턴스 유형의 원하는 자원들을 지정할 수 있고, 인스턴스 유형 선택 기능(120)이 그러한 지정에 기초하여 인스턴스 유형 "B"를 선택할 수 있다. 그에 따라, 가상 컴퓨트 인스턴스 유형은 예를 들어, 인스턴스 유형 선택 기능(120)을 사용하여 클라이언트를 대신하여 또는 클라이언트에 의해 선택될 수 있다.
위에서 논의된 바와 같이, 제공자 네트워크(100)는 클라이언트 디바이스(180A)에 가상 GPU들에 대한 복수의 가상 GPU 클래스(122)를 제공할 수 있다. 실례 및 예시를 위해 도시된 바와 같이, 클래스 "B" 내지 클래스 "N"의 가상 GPU들(151B 내지 151N)이 제공될 수 있다. 그러나, 임의의 적합한 수 및 구성의 가상 GPU 클래스들이 제공자 네트워크(100)에 의해 클라이언트들에 제공될 수 있다는 것이 고려된다. 가상 GPU 클래스는 그래픽 처리를 위한 그것의 컴퓨터 자원들, 그래픽 처리를 위한 메모리 자원들, 및/또는 다른 적합한 설명적인 특질들에 의해 특징지어질 수 있다. 일 실시예에서, 가상 GPU 클래스들은 물리적 GPU의 그래픽 처리 성능들의 일구분들, 이를테면 풀 GPU, 하프 GPU, 쿼터 GPU 등을 나타낼 수 있다. 인스턴스 유형 선택 기능(120)을 사용하여, 클라이언트 디바이스(180A)는 특정 가상 GPU 클래스의 지시, 지정, 또는 다른 선택(202)을 제공할 수 있다. 예를 들어, 클라이언트는 입력(202)을 사용하여 가상 GPU 클래스들의 미리 정의된 집합으로부터 가상 GPU 클래스 "B"를 선택할 수 있다. 다른 예로서, 클라이언트는 입력(202)을 사용하여 가상 GPU 클래스의 원하는 자원들을 지정할 수 있고, 인스턴스 유형 선택 기능(120)이 그러한 지정에 기초하여 가상 GPU 클래스 "B"를 선택할 수 있다. 그에 따라, 가상 GPU 클래스는 예를 들어, 인스턴스 유형 선택 기능(120)을 사용하여 클라이언트를 대신하여 또는 클라이언트에 의해 선택될 수 있다.
도 2b는 일 실시예에 따라, 부속 가상 GPU와 가상 컴퓨트 인스턴스의 프로비저닝을 포함하여, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 예시적인 시스템 환경의 추가 측면들을 도시한다. 인스턴스 프로비저닝 기능(130)은 지정된 인스턴스 유형 "B" 및 지정된 가상 GPU 클래스 "B"에 기초하여 부속 가상 GPU(151B)와 가상 컴퓨트 인스턴스(141B)를 프로비저닝할 수 있다. 프로비저닝된 가상 컴퓨트 인스턴스(141B)는 적합한 물리적 자원들 이를테면 물리적 컴퓨트 인스턴스(142B)를 사용하여 컴퓨트 가상화 기능(140)에 의해 구현될 수 있고, 프로비저닝된 가상 GPU(151B)는 적합한 물리적 자원들 이를테면 물리적 GPU(152B)를 사용하여 GPU 가상화 기능(150)에 의해 구현될 수 있다. 본 명세서에서 사용될 때, 가상 컴퓨트 인스턴스를 프로비저닝하는 것은 일반적으로 하지의 물리적 컴퓨트 인스턴스의 자원들(예를 들어, 컴퓨터 및 메모리 자원들)을 클라이언트를 위해 수신하는 것(예를 들어, 이용가능한 물리적 컴퓨트 인스턴스들 및 다른 자원들의 풀로부터), 요청된 소프트웨어(예를 들어, 운영 체제)를 설치 또는 런칭하는 것, 그리고 클라이언트에 의해 지정된 작업들을 수행하기 위해 가상 컴퓨트 인스턴스를 클라이언트가 이용가능하게 만드는 것을 포함한다. 일 실시예에서, 실질적으로 임의의 가상 GPU 클래스의 가상 GPU는 실질적으로 임의의 인스턴스 유형의 가상 컴퓨트 인스턴스에 부속될 수 있다. 부속 가상 GPU(151B)와 함께 가상 컴퓨트 인스턴스(141B)를 구현하기 위해, 물리적 컴퓨트 인스턴스(142B)는 예를 들어, 네트워크를 통해, 물리적 GPU(152B)와 통신할 수 있다. 물리적 GPU(152B)는 물리적 컴퓨트 인스턴스(142B)와 상이한 컴퓨팅 디바이스에 위치될 수 있다. 그것들이 별개의 하드웨어를 사용하여 구현될 수 있더라도, 가상 GPU(151B)는 가상 컴퓨트 인스턴스(141B)에 부속된다고 할 수 있거나, 또는 가상 컴퓨트 인스턴스가 가상 GPU를 포함한다고 할 수 있다. 가상 GPU(151B)는 물리적 GPU(152B)에 관해 다양한 위치에, 예를 들어, 동일한 랙, 동일한 스위치, 동일한 공간, 및/또는 동일한 네트워크 상의 다른 적한한 위치들에 있을 수 있는 디바이스 상에 구비될 수 있다. 물리적 GPU(152B)의 벤더는 클라이언트 디바이스(180A)에게 표시되지 않을 수 있다.
도 3은 일 실시예에 따라, 클라이언트 디바이스 상에 디스플레이하기 위한 가상 GPU 출력을 생성하기 위한 가상 GPU와 가상 컴퓨트 인스턴스의 사용을 도시한다. 가상 컴퓨트 인스턴스(141B)가 부속 가상 GPU(151B)와 프로비저닝된 후, 클라이언트 디바이스(180A)는 예를 들어, 클라이언트 디바이스로부터의 입력에 기초하여 임의의 적합한 작업들을 수행하기 위해 프로비저닝된 인스턴스 및 가상 GPU를 사용할 수 있다. 가상 컴퓨트 인스턴스(141B)는 특정 어플리케이션(320)을 실행할 수 있다. 어플리케이션(320)은 클라이언트에 의해 선택 또는 제공될 수 있다. 또한 가상 컴퓨트 인스턴스(141B)는 어플리케이션(321)에 대한 지원을 제공하는 특정 운영 체제(322)로 구성될 수 있다. 추가적으로, 가상 컴퓨트 인스턴스(141B)는 특정 그래픽 드라이버(321)로 구성될 수 있다. 그래픽 드라이버(321)는 가속된 2-차원 그래픽 처리 및/또는 가속된 3-차원 그래픽 처리를 포함하여, 어플리케이션(320)에 그래픽 처리를 제공하기 위해 가상 GPU(151B)와 상호작용할 수 있다. 일 실시예에서, 그래픽 드라이버(321)는 그래픽 응용 프로그램 인터페이스(API) 이를테면 Direct3D 또는 OpenGL을 구현할 수 있다. 그래픽 드라이버(321)는 사용자 모드 및/또는 커널 모드에서 실행되는 구성요소들을 나타낼 수 있다. 또한 추가 구성요소들(미도시), 이를테면 그래픽 런타임이 가상 컴퓨트 인스턴스(141B) 상에 가속된 그래픽 처리를 제공하기 위해 사용될 수 있다.
클라이언트 디바이스(180A)는 프록시(310)를 통해 가상 컴퓨트 인스턴스(141B)와 통신할 수 있다. 예를 들어 가상 GPU(151B)로부터 클라이언트 디바이스(180A)로 가상 GPU 출력(302)을 포함하여, 다양한 다른 통신이 프록시(310)를 통해 전송될 수 있다. 프록시(310)의 사용은 클라이언트 디바이스(180A)로부터 가상 컴퓨트 인스턴스 및 임의의 관련 자원들(가상 GPU(151B)를 구현하는 컴퓨팅 디바이스를 포함하는)의 어드레스를 숨길 수 있다. 프록시(310) 및 가상 컴퓨트 인스턴스(141B)는 적합한 원격 프로토콜을 사용하여 통신할 수 있다. 다양한 실시예에서, 프록시(310)는 제공자 네트워크(100)의 부분일 수 있거나 또는 아닐 수 있다. 클라이언트 디바이스(180A)는 어플리케이션 입력(301)을 가상 컴퓨트 인스턴스(141B) 상에서 실행되는 어플리케이션(320)으로 제공할 수 있다. 예를 들어, 어플리케이션 입력(301)은 어플리케이션(320)에 의해 조작될 데이터 및/또는 어플리케이션의 실행을 제어하기 위한 명령들을 포함할 수 있다.
가상 GPU(151B)에 의해 제공되는 그래픽 처리를 사용하면, 어플리케이션의 실행은 가상 GPU 출력(302)을 생성할 수 있다. 가상 GPU 출력(302)은 예를 들어, 가상 GPU(151B) 또는 가상 컴퓨트 인스턴스(141B)로부터 클라이언트 디바이스(180A)에 제공될 수 있다. 일 실시예에서, 가상 GPU 출력(302)은 가상 컴퓨트 인스턴스(141B)의 나머지(예를 들어, 하지의 물리적 컴퓨트 인스턴스(142B))를 우회하면서 가상 GPU(151B)로부터(예를 들어, 가상 GPU를 포함하는 컴퓨팅 디바이스로부터) 클라이언트 디바이스(180A)로 전송될 수 있다. 또한 가상 GPU 출력(302)은 프록시(310)를 통해 클라이언트 디바이스(180A)에 전송될 수 있다. 프록시(310) 및 가상 GPU(151B)는 적합한 원격 프로토콜을 사용하여 통신할 수 있다. 일 실시예에서, 가상 GPU 출력(302)은 가상 컴퓨트 인스턴스(141B)에 리턴될 수 있고, 가상 컴퓨트 인스턴스는 가상 GPU 출력을 클라이언트 디바이스(180A)에 전송할 수 있다. 일 실시예에서, 클라이언트 디바이스(180A)는 가상 GPU 출력(302)을 다른 구성요소로 포워딩할 수 있다.
일 실시예에서, 클라이언트 디바이스(180A)와 연관된 디스플레이 디바이스(181)는 가상 GPU 출력(302)을 디스플레이(330)에 제시할 수 있다. 일 실시예에서에서, 가상 GPU 출력(302)은 픽셀 데이터, 이미지 데이터, 비디오 데이터, 또는 다른 그래픽 데이터를 포함할 수 있다. 일 실시예에서, 가상 GPU 출력(302)은 디스플레이 디바이스(181) 상에 풀-스크린 디스플레이를 구동할 수 있다. 가상 GPU 출력(302)의 부분들은 시간에 따라 클라이언트 디바이스(180A)에 스트리밍될 수 있다. 일 실시예에서, 가상 GPU 출력(302)은 디스플레이(330)를 생성하기 위해 그래픽 데이터의 하나 이상의 다른 소스와 합성될 수 있다. 일 실시예에서, 가상 GPU(151B)는 범용 컴퓨팅(예를 들어, GPGPU 컴퓨팅)을 위해 사용될 수 있고, 가상 GPU 출력(302)은 픽셀 데이터 또는 다른 그래픽 데이터를 포함하지 않을 수 있다. 다양한 실시예에서, 클라이언트 디바이스(180A)는 출력을 디스플레이하기 전에 가상 GPU 출력(302)의 전부 또는 부분을 처리 또는 변환할 수 있다. 예를 들어, CPU, GPU, 또는 클라이언트 디바이스(180A) 상의 코-프로세서가 가상 GPU 출력(302)의 부분들을 변환할 수 있고 디스플레이 디바이스(181) 상에 결과들을 디스플레이할 수 있다.
다양한 실시예에서, 임의의 적합한 기술(들)이 그래픽 처리를 가상 컴퓨트 인스턴스로부터 물리적 GPU로 오프로드하기 위해 사용될 수 있다. 일 실시예에서, API 심(shim)은 그래픽 API로의 호들을 인터셉트하고 호들을 네트워크를 통해 물리적 GPU를 포함하는 외부 컴퓨팅 디바이스로 결집시킬 수 있다. 일 실시예에서, 드라이버 심은 가상 컴퓨트 인스턴스에 독점 드라이버를 표면화시키고, 호들을 인터셉트하며, 호들을 네트워크를 통해 물리적 GPU를 포함하는 외부 컴퓨팅 디바이스로 결집시킬 수 있다. 일 실시예에서, 하드웨어 심은 가상 컴퓨트 인스턴스에 하드웨어 인터페이스를 표면화시키고 인스턴스에 의한 시도들을 물리적 GPU와 상호작용하도록 결집시킬 수 있다.
도 4는 일 실시예에 따라, 가상화된 그래픽 처리를 구현하기 위한 예시적인 하드웨어 아키텍처를 도시한다. 일 실시예에서, 가상 컴퓨트 인스턴스(141B)는 물리적 컴퓨트 인스턴스(142B)를 사용하여 구현될 수 있고, 그러한 인스턴스(141B)에 부속되는 가상 GPU(151B)는 별도의 그리고 별개의 컴퓨팅 디바이스 소위 그래픽 서버(420)를 사용하여 구현될 수 있다. 가상 컴퓨트 인스턴스(141B)는 인터페이스 디바이스(410)와 상호작용하기 위해 가상 인터페이스(400)를 사용할 수 있다. 가상 인터페이스(400)는 가상 컴퓨트 인스턴스(141B)가 네트워크 데이터를 전송 및 수신할 수 있게 할 수 있다. 인터페이스 디바이스(410)는 네트워크 인터페이스 및 사용자 지정 하드웨어 인터페이스를 포함할 수 있다. 사용자 지정 하드웨어 인터페이스를 통해, 인터페이스 디바이스(410)는 GPU 인터페이스를 에뮬레이트하기 위한 실행 코드를 실행할 수 있고 가상 컴퓨트 인스턴스(141B)에 가상 GPU(151B)를 구현 또는 포함하는 것으로 보일 수 있다. 일 실시예에서, 인터페이스 디바이스(410)는 그래픽 API를 가상 컴퓨트 인스턴스(141B)에 제공할 수 있고 그래픽 처리(예를 들어, 가속된 3D 그래픽 처리)를 위한 API 호들을 수신할 수 있다. 네트워크 인터페이스를 통해, 인터페이스 디바이스(410)는 네트워크를 통해 그래픽 서버(420)(그리고 그에 따라 물리적 GPU(152B))와 통신할 수 있다. 인터페이스 디바이스(410)는 임의의 적합한 방식으로, 예를 들어, 확장 카드(이를테면 PCI Express 카드) 또는 물리적 컴퓨트 인스턴스(142B)에 대한 부속 주변 디바이스로서 구현될 수 있다. 인터페이스 디바이스(410)는 가상 컴퓨트 인스턴스(141B)에 하드웨어 가상 기능들을 드러내기 위해 단일 루트 I/O 가상화를 사용할 수 있다. 일 실시예에서, 물리적 컴퓨트 인스턴스(142B)는 각각 그 자체의 가상 인터페이스를 갖는, 복수의 가상 컴퓨트 인스턴스를 구현할 수 있고, 가상 컴퓨트 인스턴스들은 하나 이상의 그래픽 서버 상의 대응하는 가상 GPU들과 상호작용하기 위해 인터페이스 디바이스(410)를 사용할 수 있다. 물리적 컴퓨트 인스턴스(142B)는 예를 들어, 데이터를 클라이언트 디바이스(180A)에 전송하고 클라이언트 디바이스(180A)로부터 데이터를 수신하기 위해, 적합한 원격 프로토콜을 사용하여 프록시(310)와 통신할 수 있다.
인터페이스 디바이스(410)에 의해 수행되는(예를 들어, 인터페이스 디바이스 상에서 사용자 지정 프로그램 코드를 실행함으로써) 그래픽 오프로드는 그래픽 API 명령들을 그래픽 서버(420)에 송신되는 네트워크 트래픽(그래픽 API 명령들을 캡슐화하는)으로 변환할 수 있고, 그래픽 서버(420)는 인터페이스 디바이스를 대신하여 명령들을 실행할 수 있다. 그래픽 서버(420)는 네트워크를 통해 인터페이스 디바이스(410)와(예를 들어, 인터페이스 디바이스의 네트워크 인터페이스와) 통신하는 네트워크 어댑터(440)를 포함할 수 있다. 일 실시예에서, 인터페이스 디바이스(410)는 그래픽 API로의 호들을 수신할 수 있고(사용자 지정 하드웨어 인터페이스를 사용하여) 네트워크 어댑터(440)로 전송될 그래픽 오프로드 트래픽을 생성할 수 있다(네트워크 인터페이스를 사용하여). 그래픽 서버(410)는 그래픽 가상 머신(430)을 구현할 수 있다. 가상화를 위한 임의의 적합한 기술들이 그래픽 가상 머신(430)을 구현하기 위해 사용될 수 있다. 일 실시예에서, 그래픽 가상 머신(430)은 GPU-사용가능한 포괄적인 가상 머신을 나타낼 수 있고 하나 이상의 가상 GPU를 사용하여 가속된 그래픽 처리를 제공하는 것에 전용된다. 그래픽 가상 머신(430)은 가상 인터페이스(401)를 사용하여 네트워크 어댑터(440)에 연결될 수 있다. 가상 인터페이스(401)는 그래픽 가상 머신(430)이 네트워크 데이터를 전송 및 수신할 수 있게 할 수 있다. 그래픽 가상 머신(430)은 물리적 GPU(152B)의 그래픽 처리 성능들을 사용하여 가상 GPU(151B)를 구현할 수 있다. 일 실시예에서, 물리적 GPU(152B)는 그래픽 가상 머신(430)에 의해 직접 액세스될 수 있고, 물리적 GPU(152B)는 그래픽 가상 머신에 의해 관리되는 메모리에 기록 그리고 그로부터 판독하기 위해 직접 메모리 액세스를 사용할 수 있다. 일 실시예에서, 그래픽 서버(420)는 하나 이상의 물리적 GPU(이를테면 물리적 GPU(152B))를 사용하여 복수의 가상 GPU(이를테면 가상 GPU(151B))를 구현할 수 있고, 가상 GPU들은 네트워크를 통해 하나 이상의 물리적 컴퓨트 인스턴스 상의 대응하는 가상 컴퓨트 인스턴스들과 상호작용할 수 있다. 그래픽 서버(420)는 예를 들어, 데이터를 클라이언트 디바이스(180A)에 전송하고 클라이언트 디바이스(180A)로부터 데이터를 수신하기 위해, 적합한 원격 프로토콜을 사용하여 프록시(310)와 통신할 수 있다. 예를 들어, 그래픽 서버(420)는 인터페이스 디바이스(410)로부터 전송되는 명령들에 기초하여 가상 GPU 출력을 생성할 수 있다. 가상 GPU 출력은 예를 들어, 물리적 컴퓨트 인스턴스(142B) 또는 그래픽 서버(420)로부터 프록시(310)를 통해 클라이언트 디바이스(180A)에 제공될 수 있다.
도 5는 일 실시예에 따라, 제공자 네트워크에서의 그래픽 처리를 가상화하기 위한 방법을 도시하는 흐름도이다. 505에 도시된 바와 같이, 가상 컴퓨트 인스턴스가 선택될 수 있다. 가상 컴퓨트 인스턴스는 가상 컴퓨트 인스턴스에 의해 제공되는 컴퓨터 및 메모리 자원들에 (적어도 부분적으로) 기초하여 선택될 수 있다. 예를 들어, 가상 컴퓨트 인스턴스는 사용자에 의한 인스턴스 유형의 선택에 (적어도 부분적으로) 기초하여 선택될 수 있다. 510에 도시된 바와 같이, 가상 GPU가 선택될 수 있다. 가상 GPU는 가상 GPU에 의해 제공되는 그래픽 처리 성능들에 (적어도 부분적으로) 기초하여 선택될 수 있다. 예를 들어, 가상 GPU는 사용자에 의한 가상 GPU 클래스의 선택에 (적어도 부분적으로) 기초하여 선택될 수 있다. 가상 컴퓨트 인스턴스 및 가상 GPU는 또한 그러한 자원들을 관리하는 제공자 네트워크의 자원 풀에서 자원들의 이용가능성에 (적어도 부분적으로) 기초하여 선택될 수 있다. 일 실시예에서, 탄력적 그래픽 서비스는 가상 컴퓨트 인스턴스 및 가상 GPU에 대한 지정들 및/또는 선택들을 수신할 수 있다.
515에 도시된 바와 같이, 선택된 가상 컴퓨트 인스턴스는 선택된 부속 가상 GPU와 프로비저닝될 수 있다. 일 실시예에서, 탄력적 그래픽 서비스는 인스턴스를 가상 GPU와 프로비저닝하기 위해, 제공자 네트워크의 하나 이상의 다른 서비스 또는 기능, 이를테면 컴퓨트 가상화 기능 및/또는 GPU 가상화 기능과 상호작용할 수 있다. 가상 컴퓨트 인스턴스는 물리적 컴퓨트 인스턴스의 중앙 처리 장치(CPU) 자원들 및 메모리 자원들을 사용하여 구현될 수 있다. 가상 GPU는 물리적 GPU를 사용하여 구현될 수 있다. 물리적 GPU는 가상 컴퓨트 인스턴스에 CPU 자원들을 제공하는 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 부속될 수 있다. 물리적 GPU는 네트워크를 통해 물리적 컴퓨트 인스턴스에 액세스가능할 수 있다. 가상 GPU는 가상 컴퓨트 인스턴스에 부속된다고 할 수 있거나, 또는 가상 컴퓨트 인스턴스가 가상 GPU를 포함한다고 할 수 있다. 일 실시예에서, 물리적 GPU는 가상 GPU 및 하나 이상의 추가 가상 GPU 사이에 공유될 수 있고, 추가 가상 GPU들은 추가 가상 컴퓨트 인스턴스들에 부속될 수 있다. 일 실시예에서, 가상 GPU는 네트워크 인터페이스 및 사용자 지정 하드웨어 인터페이스를 포함하는 인터페이스 디바이스를 통해 가상 컴퓨트 인스턴스에 액세스가능할 수 있다. 사용자 지정 하드웨어 인터페이스를 통해, 인터페이스 디바이스는 GPU를 에뮬레이트할 수 있고 가상 컴퓨트 인스턴스에 가상 GPU를 포함하는 것으로 보일 수 있다. 네트워크 인터페이스를 통해, 인터페이스 디바이스는 네트워크를 통해 물리적 GPU와 통신할 수 있다.
520에 도시된 바와 같이, 어플리케이션은 가상 GPU를 사용하여 가상 컴퓨트 인스턴스 상에서 실행될 수 있다. 어플리케이션의 실행은 가상 컴퓨트 인스턴스(예를 들어, 하지의 물리적 컴퓨트 인스턴스 상의) 그리고/또는 가상 GPU(예를 들어, 하지의 물리적 GPU 상의)상에서의 명령들의 실행을 포함할 수 있다. 가상 GPU를 사용하는 어플리케이션의 실행은 가상 GPU 출력, 예를 들어, 가상 GPU 상에서 명령들을 실행하거나 작업들을 다르게 수행함으로써 생성되는 출력을 생성할 수 있다. 525에 도시된 바와 같이, 가상 GPU 출력은 클라이언트 디바이스에 제공될 수 있다. 가상 GPU 출력은 가상 컴퓨트 인스턴스 또는 가상 GPU로부터 클라이언트 디바이스에 제공될 수 있다. 일 실시예에서, 가상 GPU 출력은 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에 디스플레이될 수 있다. 가상 GPU 출력은 픽셀 정보 또는 디스플레이 디바이스 상에 디스플레이되는 다른 그래픽 데이터를 포함할 수 있다. 가상 GPU를 사용하는 어플리케이션의 실행은 그래픽 API를 사용하는 어플리케이션에 대한 그래픽 처리(예를 들어, 3-차원 그래픽 처리의 가속)를 포함할 수 있다.
덧붙여, 본 발명의 실시예들은 다음 절들을 고려해서 설명될 수 있다:
1. 시스템으로서,
가상 컴퓨트 인스턴스로서, 물리적 컴퓨트 인스턴스의 중앙 처리 장치(CPU) 자원들 및 메모리 자원들을 사용하여 구현되고, 멀티-테넌트 환경을 포함하는 제공자 네트워크에 의해 제공되는, 상기 가상 컴퓨트 인스턴스;
네트워크를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능한 물리적 그래픽 처리 장치(GPU);
탄력적 그래픽 서비스를 구현하도록 구성된 하나 이상의 컴퓨팅 디바이스로서, 상기 탄력적 그래픽 서비스는:
상기 가상 컴퓨트 인스턴스에 가상 GPU를 부속하도록 구성되되, 상기 가상 GPU는 컴퓨터 또는 메모리 자원들에 적어도 부분적으로 기초하여 복수의 가상 GPU 클래스로부터 선택되고, 상기 가상 GPU는 상기 물리적 GPU를 사용하여 구현되는, 상기 하나 이상의 컴퓨팅 디바이스를 포함하되,
상기 가상 컴퓨트 인스턴스는:
상기 가상 GPU를 사용하여 어플리케이션을 실행하도록 구성되되, 상기 어플리케이션의 실행은 픽셀 출력을 생성하고, 상기 픽셀 출력은 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에 디스플레이되는, 시스템.
2. 절 1에 있어서, 상기 물리적 GPU는 상기 가상 GPU 및 하나 이상의 추가 가상 GPU 사이에 공유되는, 시스템.
3. 절 1에 있어서,
네트워크 인터페이스 및 하드웨어 인터페이스를 포함하는 디바이스를 더 포함하되, 상기 가상 GPU는 상기 디바이스를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능하고, 상기 디바이스는 상기 가상 컴퓨트 인스턴스에 상기 하드웨어 인터페이스를 통해 상기 가상 GPU를 포함하는 것으로 보이고, 상기 디바이스는 상기 네트워크 인터페이스를 통해 상기 물리적 GPU와 통신하는, 시스템.
4. 절 1에 있어서, 상기 가상 GPU를 사용하여 상기 어플리케이션을 실행 시, 상기 가상 컴퓨트 인스턴스는 그래픽 응용 프로그램 인터페이스(API)를 사용하여 그래픽 처리를 제공하도록 구성되는, 시스템.
5. 컴퓨터-구현 방법으로서,
멀티-테넌트 제공자 네트워크로부터 가상 컴퓨트 인스턴스를 프로비저닝하는 단계로서, 상기 멀티-테넌트 제공자 네트워크는 복수의 가상 컴퓨트 인스턴스를 구현하도록 구성된 복수의 컴퓨팅 디바이스를 포함하는, 상기 가상 컴퓨트 인스턴스를 프로비저닝하는 단계;
상기 가상 컴퓨트 인스턴스에 가상 그래픽 처리 장치(GPU)를 부속하는 단계로서, 상기 가상 GPU는 물리적 GPU를 사용하여 구현되고, 상기 물리적 GPU는 네트워크를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능한, 상기 가상 GPU를 부속하는 단계; 및
상기 가상 컴퓨트 인스턴스 상에서 상기 가상 GPU를 사용하여 어플리케이션을 실행하는 단계로서, 클라이언트 디바이스에 제공되는 가상 GPU 출력을 생성하는, 상기 어플리케이션을 실행하는 단계를 포함하는, 방법.
6. 절 5에 있어서, 상기 가상 GPU 출력은 이미지 정보를 포함하는, 방법.
7. 절 5에 있어서, 상기 가상 GPU 출력은 상기 가상 컴퓨트 인스턴스로부터 또는 상기 가상 GPU로부터 상기 클라이언트 디바이스에 제공되는, 방법.
8. 절 5에 있어서, 상기 물리적 GPU는 상기 가상 GPU 및 하나 이상의 추가 가상 GPU 사이에 공유되는, 방법.
9. 절 5에 있어서,
복수의 가상 GPU 클래스로부터 상기 가상 GPU에 대한 가상 GPU 클래스를 선택하는 단계를 더 포함하되, 상기 가상 GPU 클래스들은 각각의 컴퓨터 자원들 또는 메모리 자원들이 다르고, 상기 가상 GPU 클래스는 상기 가상 GPU 클래스에 의해 제공되는 각각의 상기 컴퓨터 자원들 또는 메모리 자원들에 적어도 부분적으로 기초하여 선택되는, 방법.
10. 절 5에 있어서, 상기 복수의 가상 컴퓨트 인스턴스는 다양한 컴퓨터 자원 또는 메모리 자원을 갖는 복수의 인스턴스 유형을 포함하고, 상기 가상 컴퓨트 인스턴스에 대한 인스턴스 유형은 상기 인스턴스 유형에 의해 제공되는 컴퓨터 자원들 또는 메모리 자원들에 적어도 부분적으로 기초하여 선택되는, 방법.
11. 절 5에 있어서, 상기 가상 GPU는 인터페이스를 포함하는 디바이스를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능하되, 상기 디바이스는 상기 가상 컴퓨트 인스턴스에 상기 인터페이스를 통해 상기 가상 GPU를 포함하는 것으로 보이는, 방법.
12. 절 5에 있어서, 상기 물리적 GPU는 상기 가상 컴퓨트 인스턴스에 CPU 자원들을 제공하는 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 부속되는, 방법.
13. 프로그래밍 명령들을 저장하는 컴퓨터-판독가능한 저장 매체로서, 상기 프로그램 명령들은:
가상 컴퓨트 인스턴스에 의해 제공되는 자원들에 적어도 부분적으로 기초하여 선택되는 상기 가상 컴퓨트 인스턴스를 선택하는 것;
가상 그래픽 처리 장치(GPU)에 의해 제공되는 그래픽 처리 성능들에 적어도 부분적으로 기초하여 선택되는 상기 가상 GPU를 선택하는 것; 그리고
상기 가상 GPU를 포함하여 상기 가상 컴퓨트 인스턴스를 프로비저닝하는 것을 수행하도록 컴퓨터-실행가능하되, 상기 가상 컴퓨트 인스턴스는 물리적 컴퓨트 인스턴스의 자원들을 사용하여 구현되고, 상기 가상 GPU는 물리적 GPU를 사용하여 구현되고, 멀티-테넌트 제공자 네트워크가 상기 물리적 컴퓨트 인스턴스 및 물리적 GPU를 포함하며, 상기 물리적 GPU는 네트워크를 통해 상기 물리적 컴퓨트 인스턴스에 액세스가능한, 컴퓨터-판독가능한 저장 매체.
14. 절 13에 있어서, 어플리케이션은 상기 가상 컴퓨트 인스턴스 상에서 상기 가상 GPU를 사용하여 실행되되, 상기 어플리케이션의 실행은 가상 GPU 출력을 생성하고, 상기 가상 GPU 출력은 클라이언트 디바이스에 제공되는, 컴퓨터-판독가능한 저장 매체.
15. 절 14에 있어서, 상기 가상 GPU 출력은 픽셀 정보를 포함하고, 상기 픽셀 정보는 상기 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에 디스플레이되는, 컴퓨터-판독가능한 저장 매체.
16. 절 14에 있어서, 상기 가상 GPU를 사용하는 상기 어플리케이션의 실행은 그래픽 응용 프로그램 인터페이스(API)를 사용하여 그래픽 처리를 제공하는 것을 포함하는, 컴퓨터-판독가능한 저장 매체.
17. 절 13에 있어서, 상기 물리적 GPU는 상기 가상 GPU 및 하나 이상의 추가 가상 GPU 사이에 공유되는, 컴퓨터-판독가능한 저장 매체.
18. 절 13에 있어서, 상기 가상 GPU는 인터페이스를 포함하는 디바이스를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능하되, 상기 디바이스는 상기 가상 컴퓨트 인스턴스에 상기 인터페이스를 통해 상기 가상 GPU를 포함하는 것으로 보이는, 컴퓨터-판독가능한 저장 매체.
19. 청구항 13에 있어서, 상기 가상 컴퓨트 인스턴스 및 상기 가상 GPU는 상기 멀티-테넌트 제공자 네트워크의 사용자로부터의 사용자 입력에 적어도 부분적으로 기초하여 선택되는, 컴퓨터-판독가능한 저장 매체.
20. 청구항 13에 있어서, 상기 물리적 GPU는 상기 가상 컴퓨트 인스턴스에 CPU 자원들을 제공하는 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 부속되는, 컴퓨터-판독가능한 저장 매체.
예시적인 컴퓨터 시스템
적어도 몇몇 실시예에서, 본 명세서에서 설명된 기술들 중 하나 이상의 부분 또는 전부를 구현하는 컴퓨터 시스템은 하나 이상의 컴퓨터-판독가능한 매체를 포함하거나 그것들에 액세스하도록 구성된 범용 컴퓨터 시스템을 포함할 수 있다. 도 6은 그러한 범용 컴퓨팅 디바이스(3000)를 도시한다. 도시된 실시예에서, 컴퓨팅 시스템(3000)은 입력/출력(I/O) 인터페이스(3030)를 통해 시스템 메모리(3020)에 연결되는 하나 이상의 프로세서(3010)를 포함한다. 또한 컴퓨팅 디바이스(3000)는 I/O 인터페이스(3030)에 연결되는 네트워크 인터페이스(3040)를 더 포함한다.
다양한 실시예에서, 컴퓨팅 디바이스(3000)는 하나의 프로세서를 포함하는 유니프로세서 시스템(3010) 또는 몇몇(예를 들어, 2, 4, 8, 또는 다른 적합한 수) 프로세서를 포함하는 멀티프로세서 시스템(3010)일 수 있다. 프로세서들(3010)은 명령들을 실행할 수 있는 임의의 적합한 프로세서들을 포함할 수 있다. 예를 들어, 다양한 실시예에서, 프로세서들(3010)은 다양한 명령어 집합 아키텍처(ISA), 이를테면 x86, PowerPC, SPARC, 또는 MIPS ISA, 또는 임의의 다른 적합한 ISA 중 임의의 것을 구현하는 범용 또는 내장형 프로세서들일 수 있다. 멀티프로세서 시스템들에서, 프로세서들(3010)의 각각은 반드시는 아니나, 통상적으로 동일한 ISA를 구현할 수 있다.
시스템 메모리(3020)는 프로세서(들)(3010)에 의해 액세스가능한 프로그램 명령들 및 데이터를 저장하도록 구성될 수 있다. 다양한 실시예에서, 시스템 메모리(3020)는 임의의 적합한 메모리 기술, 이를테면 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 RAM(SDRAM), 비휘발성/플래쉬-타입 메모리, 또는 임의의 다른 유형의 메모리를 사용하여 구현될 수 있다. 도시된 실시예에서, 하나 이상의 원하는 기능을 구현하는 프로그램 명령들 및 데이터, 이를테면 위에서 설명된 방법들, 기술들, 및 데이터는 코드(즉, 프로그램 명령들)(3025) 및 데이터(3026)로서 시스템 메모리(3020) 내에 저장되는 것으로 도시된다.
일 실시예에서, I/O 인터페이스(3030)는 네트워크 인터페이스(3040) 또는 다른 주변 인터페이스들을 포함하여, 디바이스에서 프로세서(3010), 시스템 메모리(3020), 및 임의의 주변 디바이스들 간 I/O 트래픽을 조정하도록 구성될 수 있다. 몇몇 실시예에서, I/O 인터페이스(3030)는 하나의 구성요소(예를 들어, 시스템 메모리(3020))로부터의 데이터 신호들을 다른 구성요소(예를 들어, 프로세서(3010))에 의해 사용하기에 적합한 포맷으로 변환하기 위한 임의의 필요 프로토콜, 타이밍 또는 다른 데이터 변환들을 수행할 수 있다. 몇몇 실시예에서, I/O 인터페이스(3030)는 다양한 유형의 주변 버스들, 이를테면 예를 들어, 주변 구성요소 상호접속(PCI) 버스 표준 또는 유니버셜 시리얼 버스(USB) 표준의 변형을 통해 접속된 디바이스들에 대한 지원을 포함할 수 있다. 몇몇 실시예에서, I/O 인터페이스(3030)의 기능은 두 개 이상의 별개의 구성요소, 이를테면 예를 들어, 노스 브리지 및 사우스 브리지로 나눠질 수 있다. 또한, 몇몇 실시예에서, I/O 인터페이스(3030), 이를테면 시스템 메모리(3020)에 대한 인터페이스의 기능의 일부 또는 전부가 프로세서(3010)로 직접 통합될 수 있다.
네트워크 인터페이스(3040)는 데이터가 컴퓨팅 디바이스(3000) 및 네트워크 또는 네트워크들(3050)에 접속된 다른 디바이스들(3060) 간에 교환될 수 있게 하도록 구성될 수 있다. 다양한 실시예에서, 네트워크 인터페이스(3040)는 임의의 적합한 유선 또는 무선의 일반적 데이터 네트워크들, 이를테면 예를 들어, 이더넷 네트워크의 유형들을 통해 통신을 지원할 수 있다. 추가적으로, 네트워크 인터페이스(3040)는 전기/전화 통신 네트워크들 이를테면 아날로그 음성 네트워크들 또는 디지털 파이버 통신 네트워크들을 통해, 스토리지 영역 네트워크들 이를테면 파이버 채널 SAN들을 통해, 또는 임의의 다른 적합한 유형의 네트워크 및/또는 프로토콜을 통해 통신을 지원할 수 있다.
몇몇 실시예에서, 시스템 메모리(3020)는 대응하는 방법들 및 장치의 실시예들을 구현하기 위해 위에서 설명된 바와 같이 프로그램 명령들 및 데이터를 저장하도록 구성된 컴퓨터-판독가능한(즉, 컴퓨터-액세스가능한) 매체의 일 실시예일 수 있다. 그러나, 다른 실시예들에서, 프로그램 명령들 및/또는 데이터가 상이한 유형들의 컴퓨터-판독가능한 매체 상에 수신, 전송 또는 저장될 수 있다. 일반적으로 말하면, 컴퓨터-판독가능한 매체는 I/O 인터페이스(3030)를 통해 컴퓨팅 디바이스(3000)에 연결되는 비-일시적 스토리지 매체 또는 메모리 매체 이를테면 자기 또는 광 매체, 예를 들어, 디스크 또는 DVD/CD를 포함할 수 있다. 또한 비-일시적 컴퓨터-판독가능한 스토리지 매체는 임의의 휘발성 또는 비-휘발성 매체들 이를테면 RAM(예를 들어, SDRAM, DDR SDRAM, RDRAM, SRAM 등), ROM 등을 포함할 수 있으며, 이들은 컴퓨팅 디바이스(3000)의 몇몇 실시예에 시스템 메모리(3020) 또는 다른 유형의 메모리로서 포함될 수 있다. 나아가, 컴퓨터-판독가능한 매체는 송신 매체들 또는 이를테면 네트워크 인터페이스(3040)를 통해 구현될 수 있는, 통신 매체 이를테면 네트워크 및/또는 무선 링크를 통해 전달되는, 신호들 이를테면 전기, 전자기, 또는 디지털 신호들을 포함할 수 있다. 이를테면 도 6에 도시된 다수의 컴퓨팅 디바이스의 부분들 또는 전부는 다양한 실시예에서 설명된 기능을 구현하기 위해 사용될 수 있다; 예를 들어, 다양한 상이한 디바이스 및 서버 상에서 실행되는 소프트웨어 구성요소들이 기능을 제공하기 위해 협력할 수 있다. 몇몇 실시예에서, 설명된 기능의 부분들이 범용 컴퓨터 시스템들을 사용하여 구현되는 것에 더하여 또는 그 대신, 저장 디바이스들, 네트워크 디바이스들, 또는 전용 컴퓨터 시스템들을 사용하여 구현될 수 있다. 용어 "컴퓨팅 디바이스"는 본 명세서에서 사용될 때, 적어도 모든 이러한 유형의 디바이스들을 지칭하고, 이러한 유형들의 디바이스들에 제한되는 것은 아니다.
도면들에 도시되고 본 명세서에 설명된 바와 같은 다양한 방법은 방법들의 실시예들의 예들을 나타낸다. 방법들은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 방법들 중 다양한 것들에서, 단계들의 순서는 변경될 수 있고, 다양한 요소가 추가, 재순서화, 조합, 생략, 변경 등이 될 수 있다. 단계들 중 다양한 것들은 자동으로(예를 들어, 사용자 입력에 의해 직접 유발되지 않고) 그리고/또는 프로그램가능하게(예를 들어, 프로그램 명령들에 따라) 수행될 수 있다.
본 명세서에서 본 발명에 대한 설명에 사용되는 용어는 단지 특정 실시예들을 설명하기 위함이고 본 발명의 제한적인 것으로 의도되지 않는다. 본 발명에 대한 설명 및 첨부된 청구항들에서 사용될 때, 단수 형태들("하나의", "한" 및 "그")은 문맥이 분명히 다르게 표시하지 않는 한, 복수의 형태를 또한 포함하는 것으로 의도된다. 또한 본 명세서에서 사용될 때 용어 "및/또는"은 나열된 관련 항목들 중 하나 이상의 임의의 그리고 모든 가능한 조합을 지칭 및 포함한다는 것이 이해될 것이다. 나아가 본 명세서에서 사용될 때 용어들 "포함한다", "포함하는", "구성된다", 그리고/또는 "구성되는"은 언급된 특징부들, 정수들, 단계들, 동작들, 요소들, 및/또는 구성요소들의 존재를 명시하나, 하나 이상의 다른 특징부, 정수, 단계, 동작, 요소, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하는 것을 아니라는 것이 이해될 것이다.
본 명세서에서 사용될 때, 용어 "~하는 경우"는 문맥에 따라 "~할 때" 또는 "~할 시" 또는 "~을 결정하는 것에 응답하여" 또는 "~을 검출하는 것에 응답하여"를 의미하는 것으로 해석될 수 있다. 유사하게, 절 "~라고 결정되는 경우" 또는 "[언급된 조건 또는 이벤트]가 검출되는 경우"는 문맥에 따라 "~을 결정할 시" 또는 "~을 결정하는 것에 응답하여" 또는 "[언급된 조건 또는 이벤트]를 검출할 시" 또는 "[언급된 조건 또는 이벤트]를 검출하는 것에 응답하여"를 의미하는 것으로 해석될 수 있다
또한 본 명세서에서는 용어들 제1, 제2 등이 다양한 요소를 설명하기 위해 사용될 수 있지만, 이러한 요소들은 이러한 용어들에 의해 제한되지 않아야 한다는 것이 이해될 것이다. 이러한 용어들은 단지 하나의 요소를 다른 요소와 구별하기 위해 사용된다. 예를 들어, 본 발명의 범위에서 벗어나지 않고, 제1 컨택트는 제2 컨택트라고 칭할 수 있고, 유사하게, 제2 컨택트는 제1 컨택트라고 칭할 수 있다. 제1 컨택트 및 제2 컨택트는 양자 모두 접촉부이나, 그것들은 동일한 컨택트는 아니다.
많은 구체적인 세부사항이 본 명세서에서 청구된 주제에 대한 충분한 이해를 제공하기 위해 제시된다. 그러나, 해당 기술분야에서의 통상의 기술자들에 의해 청구된 주제가 이러한 구체적인 세부사항들 없이 실시될 수 있다는 것이 이해될 것이다. 다른 사례들에서, 통상의 기술자에 의해 알게 될 방법들, 장치, 또는 시스템들은 청구된 주제를 모호하게 하지 않기 위해 상세하게 설명되지 않았다. 본 발명의 혜택을 받는 해당 기술분야에서의 통상의 기술자에게 명백할 바와 같이 다양한 변형 및 변경이 이루어질 수 있다. 모든 그러한 변형 및 변경을 포함하는 것으로 의도되고, 그에 따라 상기한 설명은 제한적인 의미가 아니라 예시적인 의미로 여겨져야 한다.

Claims (15)

  1. 시스템으로서,
    가상 컴퓨트 인스턴스(virtual compute instance) - 상기 가상 컴퓨트 인스턴스는, 물리적 컴퓨트 인스턴스의 중앙 처리 장치(CPU) 자원들 및 메모리 자원들을 사용하여 구현되고, 상기 가상 컴퓨트 인스턴스는 멀티-테넌트 환경을 포함하는 제공자 네트워크에 의해 제공됨 -;
    네트워크를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능한 물리적 그래픽 처리 장치(GPU, graphics processing unit);
    탄력적 그래픽 서비스(elastic graphics service)를 구현하도록 구성된 하나 이상의 컴퓨팅 디바이스
    를 포함하며, 상기 탄력적 그래픽 서비스는:
    상기 가상 컴퓨트 인스턴스에 가상 GPU를 부속하도록 구성되며, 상기 가상 GPU는 컴퓨터 또는 메모리 자원들에 적어도 부분적으로 기초하여 복수의 가상 GPU 클래스로부터 선택되고, 상기 가상 GPU는 상기 물리적 GPU를 사용하여 구현되며,
    상기 가상 컴퓨트 인스턴스는:
    상기 가상 GPU를 사용하여 어플리케이션을 실행하도록 구성되며, 상기 어플리케이션의 실행은 픽셀 출력을 생성하고, 상기 픽셀 출력은 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에 디스플레이되는, 시스템.
  2. 청구항 1에 있어서, 상기 물리적 GPU는 상기 가상 GPU 및 하나 이상의 추가 가상 GPU 사이에 공유되는, 시스템.
  3. 청구항 1에 있어서,
    네트워크 인터페이스 및 하드웨어 인터페이스를 포함하는 디바이스를 더 포함하며, 상기 가상 GPU는 상기 디바이스를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능하고, 상기 디바이스는 상기 하드웨어 인터페이스를 통해 상기 가상 GPU를 포함하는 것으로 상기 가상 컴퓨트 인스턴스에 보이고, 상기 디바이스는 상기 네트워크 인터페이스를 통해 상기 물리적 GPU와 통신하는, 시스템.
  4. 청구항 1에 있어서, 상기 가상 GPU를 사용하여 상기 어플리케이션을 실행 시, 상기 가상 컴퓨트 인스턴스는 그래픽 응용 프로그램 인터페이스(API, application programming interface)를 사용하여 그래픽 처리를 제공하도록 구성되는, 시스템.
  5. 컴퓨터-구현 방법으로서,
    멀티-테넌트 제공자 네트워크로부터 가상 컴퓨트 인스턴스를 프로비저닝하는 단계 - 상기 멀티-테넌트 제공자 네트워크는 복수의 가상 컴퓨트 인스턴스를 구현하도록 구성된 복수의 컴퓨팅 디바이스를 포함함 -;
    상기 가상 컴퓨트 인스턴스에 가상 그래픽 처리 장치(GPU)를 부속하는 단계 - 상기 가상 GPU는 물리적 GPU를 사용하여 구현되고, 상기 물리적 GPU는 네트워크를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능함 -; 및
    상기 가상 컴퓨트 인스턴스 상에서 상기 가상 GPU를 사용하여 어플리케이션을 실행하는 단계 - 상기 어플리케이션을 실행하는 단계에서는 클라이언트 디바이스에 제공되는 가상 GPU 출력을 생성함 -
    를 포함하는, 방법.
  6. 청구항 5에 있어서, 상기 가상 GPU 출력은 상기 가상 컴퓨트 인스턴스로부터 또는 상기 가상 GPU로부터 상기 클라이언트 디바이스에 제공되는, 방법.
  7. 청구항 5에 있어서,
    복수의 가상 GPU 클래스로부터 상기 가상 GPU에 대한 가상 GPU 클래스를 선택하는 단계를 더 포함하며, 상기 가상 GPU 클래스들은 각각의 컴퓨터 자원들 또는 메모리 자원들이 다르고, 상기 가상 GPU 클래스는 상기 가상 GPU 클래스에 의해 제공되는 각각의 상기 컴퓨터 자원들 또는 메모리 자원들에 적어도 부분적으로 기초하여 선택되는, 방법.
  8. 청구항 5에 있어서, 상기 복수의 가상 컴퓨트 인스턴스는 다양한 컴퓨터 자원 또는 메모리 자원을 갖는 복수의 인스턴스 유형을 포함하고, 상기 가상 컴퓨트 인스턴스에 대한 인스턴스 유형은 상기 인스턴스 유형에 의해 제공되는 컴퓨터 자원들 또는 메모리 자원들에 적어도 부분적으로 기초하여 선택되는, 방법.
  9. 청구항 5에 있어서, 상기 가상 GPU는 인터페이스를 포함하는 디바이스를 통해 상기 가상 컴퓨트 인스턴스에 액세스가능하며, 상기 디바이스는 상기 인터페이스를 통해 상기 가상 GPU를 포함하는 것으로 상기 가상 컴퓨트 인스턴스에 보이는, 방법.
  10. 프로그램 명령어들을 저장하는 컴퓨터-판독가능한 저장 매체로서, 상기 프로그램 명령어들은:
    가상 컴퓨트 인스턴스를 선택하는 것 - 상기 가상 컴퓨트 인스턴스는 상기 가상 컴퓨트 인스턴스에 의해 제공되는 자원들에 적어도 부분적으로 기초하여 선택됨 -;
    가상 그래픽 처리 장치(GPU)를 선택하는 것 - 상기 가상 GPU는 상기 가상 GPU에 의해 제공되는 그래픽 처리 성능들에 적어도 부분적으로 기초하여 선택됨 -; 그리고
    상기 가상 GPU를 포함하여 상기 가상 컴퓨트 인스턴스를 프로비저닝하는 것
    을 수행하도록 컴퓨터-실행가능하며,
    상기 가상 컴퓨트 인스턴스는 물리적 컴퓨트 인스턴스의 자원들을 사용하여 구현되고, 상기 가상 GPU는 물리적 GPU를 사용하여 구현되고, 멀티-테넌트 제공자 네트워크가 상기 물리적 컴퓨트 인스턴스 및 물리적 GPU를 포함하며, 상기 물리적 GPU는 네트워크를 통해 상기 물리적 컴퓨트 인스턴스에 액세스가능한, 컴퓨터-판독가능한 저장 매체.
  11. 청구항 10에 있어서, 어플리케이션은 상기 가상 컴퓨트 인스턴스 상에서 상기 가상 GPU를 사용하여 실행되며, 상기 어플리케이션의 실행은 가상 GPU 출력을 생성하고, 상기 가상 GPU 출력은 클라이언트 디바이스에 제공되는, 컴퓨터-판독가능한 저장 매체.
  12. 청구항 11에 있어서, 상기 가상 GPU 출력은 픽셀 정보를 포함하고, 상기 픽셀 정보는 상기 클라이언트 디바이스와 연관된 디스플레이 디바이스 상에 디스플레이되는, 컴퓨터-판독가능한 저장 매체.
  13. 청구항 11에 있어서, 상기 가상 GPU를 사용하는 상기 어플리케이션의 실행은 그래픽 응용 프로그램 인터페이스(API)를 사용하여 그래픽 처리를 제공하는 것을 포함하는, 컴퓨터-판독가능한 저장 매체.
  14. 청구항 10에 있어서, 상기 가상 컴퓨트 인스턴스 및 상기 가상 GPU는 상기 멀티-테넌트 제공자 네트워크의 사용자로부터의 사용자 입력에 적어도 부분적으로 기초하여 선택되는, 컴퓨터-판독가능한 저장 매체.
  15. 청구항 10에 있어서, 상기 물리적 GPU는 상기 가상 컴퓨트 인스턴스에 CPU 자원들을 제공하는 컴퓨팅 디바이스와 상이한 컴퓨팅 디바이스에 부속되는, 컴퓨터-판독가능한 저장 매체.
KR1020187006659A 2015-08-10 2016-08-10 제공자 네트워크에서의 그래픽 처리 가상화 KR20180038515A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/822,511 2015-08-10
US14/822,511 US11145271B2 (en) 2015-08-10 2015-08-10 Virtualizing graphics processing in a provider network
PCT/US2016/046339 WO2017027584A1 (en) 2015-08-10 2016-08-10 Virtualizing graphics processing in a provider network

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197029470A Division KR102174221B1 (ko) 2015-08-10 2016-08-10 제공자 네트워크에서의 그래픽 처리 가상화

Publications (1)

Publication Number Publication Date
KR20180038515A true KR20180038515A (ko) 2018-04-16

Family

ID=56740516

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187006659A KR20180038515A (ko) 2015-08-10 2016-08-10 제공자 네트워크에서의 그래픽 처리 가상화
KR1020197029470A KR102174221B1 (ko) 2015-08-10 2016-08-10 제공자 네트워크에서의 그래픽 처리 가상화

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020197029470A KR102174221B1 (ko) 2015-08-10 2016-08-10 제공자 네트워크에서의 그래픽 처리 가상화

Country Status (7)

Country Link
US (2) US11145271B2 (ko)
EP (1) EP3335118A1 (ko)
KR (2) KR20180038515A (ko)
CN (1) CN107924335A (ko)
AU (2) AU2016304864B2 (ko)
CA (1) CA2994701C (ko)
WO (1) WO2017027584A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210013723A (ko) * 2018-06-27 2021-02-05 아마존 테크놀로지스, 인크. 부착된 가속기 기반 추론 서비스
US11960935B2 (en) 2018-06-27 2024-04-16 Amazon Technologies, Inc. Fault-tolerant accelerator based inference service

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445218B2 (en) 2017-06-06 2019-10-15 Microsoft Technology Licensing, Llc Execution of graphic workloads on a simulated hardware environment
CN110389825B (zh) * 2018-04-20 2023-08-04 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、设备和计算机程序产品
CN110764901B (zh) * 2019-09-17 2021-02-19 创新先进技术有限公司 基于gpu资源的数据处理方法、电子设备及系统
CN111913794A (zh) * 2020-08-04 2020-11-10 北京百度网讯科技有限公司 用于共用gpu的方法、装置、电子设备及可读存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194499A1 (en) * 2001-06-15 2002-12-19 Audebert Yves Louis Gabriel Method, system and apparatus for a portable transaction device
US6901555B2 (en) * 2001-07-09 2005-05-31 Inxight Software, Inc. Tree visualization system and method based upon a compressed half-plane model of hyperbolic geometry
US7246346B2 (en) * 2002-09-17 2007-07-17 Microsoft Corporation System and method for persisting dynamically generated code in a directly addressable and executable storage medium
US20070033156A1 (en) 2005-08-04 2007-02-08 Kimberly-Clark Worldwide, Inc. System for managing digital assets
WO2011032114A1 (en) 2009-09-11 2011-03-17 Citrix Systems, Inc. Remote rendering of three-dimensional images using virtual machines
US8387060B2 (en) 2009-10-01 2013-02-26 Dell Products L.P. Virtual machine resource allocation group policy based on workload profile, application utilization and resource utilization
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
GB2477307A (en) 2010-01-28 2011-08-03 Adsensa Ltd Embedding authentication data into an electronic document image
US9733963B2 (en) 2010-09-17 2017-08-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing virtual graphics processing unit utilization
US9069622B2 (en) 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
WO2012079825A1 (en) * 2010-12-15 2012-06-21 International Business Machines Corporation Hardware accelerated graphics for network enabled applications
US9146785B2 (en) 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US9146762B2 (en) 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
US10715817B2 (en) * 2012-12-19 2020-07-14 Nvidia Corporation Apparatus and method for enhancing motion estimation based on user input
US9298490B2 (en) 2012-12-20 2016-03-29 Vmware, Inc. Managing a data structure for allocating graphics processing unit resources to virtual machines
US9142004B2 (en) 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
WO2014100558A1 (en) 2012-12-20 2014-06-26 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
TWI479422B (zh) 2013-01-25 2015-04-01 Wistron Corp 電腦系統及其繪圖處理方法
US10042681B2 (en) 2013-01-30 2018-08-07 Google Technology Holdings LLC Systems and methods for managing navigation among applications
KR101401523B1 (ko) 2013-02-08 2014-06-03 한국과학기술정보연구원 복수의 가상 머신들 간 조립 공유 gpu 스케줄링 방법 및 장치
US20140286390A1 (en) 2013-03-20 2014-09-25 Nvidia Corporation Encoder controller graphics processing unit and method of encoding rendered graphics
US9098323B2 (en) 2013-09-05 2015-08-04 Nvidia Corporation Simultaneous utilization of a first graphics processing unit (GPU) and a second GPU of a computing platform through a virtual machine (VM) in a shared mode and a dedicated mode respectively
US9734546B2 (en) 2013-10-03 2017-08-15 Nvidia Corporation Split driver to control multiple graphics processors in a computer system
US10402930B2 (en) 2013-10-14 2019-09-03 Microsoft Technology Licensing, Llc Management of graphics processing units in a cloud platform
US9412146B2 (en) 2013-10-25 2016-08-09 Futurewei Technologies, Inc. System and method for distributed virtualization of GPUs in desktop cloud
US9910689B2 (en) * 2013-11-26 2018-03-06 Dynavisor, Inc. Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host
WO2015080719A1 (en) * 2013-11-27 2015-06-04 Intel Corporation Apparatus and method for scheduling graphics processing unit workloads from virtual machines
KR102100161B1 (ko) 2014-02-04 2020-04-14 삼성전자주식회사 Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템
US10007543B2 (en) * 2014-06-19 2018-06-26 Vmware, Inc. Caching graphics operation outputs
US9965823B2 (en) 2015-02-25 2018-05-08 Microsoft Technology Licensing, Llc Migration of graphics processing unit (GPU) states
US20170004808A1 (en) 2015-07-02 2017-01-05 Nvidia Corporation Method and system for capturing a frame buffer of a virtual machine in a gpu pass-through environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210013723A (ko) * 2018-06-27 2021-02-05 아마존 테크놀로지스, 인크. 부착된 가속기 기반 추론 서비스
US11960935B2 (en) 2018-06-27 2024-04-16 Amazon Technologies, Inc. Fault-tolerant accelerator based inference service

Also Published As

Publication number Publication date
US20220028351A1 (en) 2022-01-27
KR102174221B1 (ko) 2020-11-04
CA2994701A1 (en) 2017-02-16
CN107924335A (zh) 2018-04-17
US11145271B2 (en) 2021-10-12
EP3335118A1 (en) 2018-06-20
WO2017027584A1 (en) 2017-02-16
US20170047041A1 (en) 2017-02-16
AU2020201660A1 (en) 2020-03-26
AU2016304864B2 (en) 2019-12-05
CA2994701C (en) 2021-04-13
AU2020201660B2 (en) 2021-06-24
AU2016304864A1 (en) 2018-03-01
KR20190117801A (ko) 2019-10-16

Similar Documents

Publication Publication Date Title
US11210759B2 (en) Placement optimization for virtualized graphics processing
CN110062924B (zh) 用于虚拟化图形处理的容量预留
EP3571586B1 (en) Dynamic and application-specific virtualized graphics processing
US10628908B2 (en) Application-specific virtualized graphics processing
US9904975B2 (en) Scaling for virtualized graphics processing
US20220028351A1 (en) Virtualizing graphics processing in a provider network
US10423463B1 (en) Computational task offloading for virtualized graphics
AU2019222810B2 (en) Scaling for virtualized graphics processing
US10963984B2 (en) Interaction monitoring for virtualized graphics processing
US10169841B1 (en) Dynamic interface synchronization for virtualized graphics processing
US9886737B2 (en) Local-to-remote migration for virtualized graphics processing
US10430911B1 (en) Graphics overlays with virtualized graphics processing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
A107 Divisional application of patent