KR20240063189A - 최적화된 서비스 기반 파이프라인 제공 - Google Patents

최적화된 서비스 기반 파이프라인 제공 Download PDF

Info

Publication number
KR20240063189A
KR20240063189A KR1020247014141A KR20247014141A KR20240063189A KR 20240063189 A KR20240063189 A KR 20240063189A KR 1020247014141 A KR1020247014141 A KR 1020247014141A KR 20247014141 A KR20247014141 A KR 20247014141A KR 20240063189 A KR20240063189 A KR 20240063189A
Authority
KR
South Korea
Prior art keywords
workload
gpu
utilization
policies
initiator
Prior art date
Application number
KR1020247014141A
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 KR20240063189A publication Critical patent/KR20240063189A/ko

Links

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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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]
    • 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
    • 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
    • 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/505Allocation 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 the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Debugging And Monitoring (AREA)

Abstract

최적화된 서비스 기반 파이프라인은 애플리케이션과 같은 워크로드 개시자로부터 워크로드에 대한 설명이 포함된 요청을 수신하는 자원 관리자를 포함한다. 자원 관리자는 복수의 프로세싱 자원의 런타임 활용도 메트릭을 식별하고, 여기서 복수의 프로세싱 자원은 적어도 제1 그래픽 처리 장치(GPU: graphics processing unit) 및 제2 GPU를 포함한다. 자원 관리자는 활용도 메트릭 및 하나 이상의 정책에 기반하여 그 워크로드에 대해 워크로드 할당 추천을 결정한다. 따라서, 워크로드 개시자는 특정 프로세싱 자원에 워크로드를 배치하는 것이 시스템의 런타임 거동 및 워크로드에 대해 설정된 정책에 기반하여 바람직한지 여부를 결정할 수 있다.

Description

최적화된 서비스 기반 파이프라인 제공
컴퓨팅 시스템은 보통, 명령어를 취득 및 실행하고 실행된 명령어의 결과를 적합한 위치에 저장하거나 계산 결과를 출력할 수 있는 다수의 프로세싱 자원(예를 들어, 하나 이상의 프로세서)을 포함한다. 이러한 컴퓨터 시스템에서 실행되는 애플리케이션은 특정한 워크로드(workload)를 실행할 특정한 프로세싱 자원을 선택할 수 있는 기회를 제공받을 수 있다. 예를 들어, 중앙 처리 장치(CPU: central processing unit), 및 그래픽 처리 장치(GPU: graphics processing unit)와 같은 하나 이상의 가속 처리 장치를 포함한 컴퓨팅 시스템에서, 애플리케이션은 애플리케이션 워크로드를 실행할 특정한 프로세서를 선택할 수 있다. 애플리케이션은 컴퓨팅 시스템의 운영 체제를 질의함으로써 어떤 프로세싱 자원이 컴퓨팅 시스템에 상주될지 결정할 수 있다. 일 실시예에서, 멀티미디어 재생 애플리케이션은 미디어 재생이 가능한 디바이스의 리스트에 대해서 운영 체제에 질의할 수 있고, 예를 들어, 비디오 재생 워크로드를 실행할 특정한 GPU를 선택할 수 있다.
도 1은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하기 위한 예시적인 시스템의 블록도를 제시한다.
도 2는 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다.
도 3은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다.
도 4는 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다.
도 5는 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 다른 예시적인 방법을 나타내는 흐름도를 제시한다.
도 6은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 다른 예시적인 방법을 나타내는 흐름도를 제시한다.
도 7은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 다른 예시적인 방법을 나타내는 흐름도를 제시한다.
도 8은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 다른 예시적인 방법을 나타내는 흐름도를 제시한다.
일부 시나리오에서는, 애플리케이션이 실행을 위해 워크로드를 할당할 준비가 되면, 애플리케이션은 먼저 운영 체제에 질의하여 어떤 프로세싱 자원이 사용 가능한지 결정한다. 예를 들어, 워크로드가 그래픽(예를 들어, 게임을 위한 그래픽 렌더링)이나 또는 멀티미디어 워크로드(예를 들어, 멀티미디어 재생)이면, 애플리케이션은 먼저 컴퓨팅 디바이스에 GPU가 존재하는지 여부를 결정할 수 있다. 일부 컴퓨팅 디바이스에는 둘 이상의 GPU가 있을 수 있다. 예를 들어, 컴퓨팅 디바이스는 통합 CPU 및 GPU를 포함할 수 있지만, 개별 GPU를 포함할 수도 있다(즉, 별도의 칩 상에). 또한, 애플리케이션은 예를 들어, GPU가 어떤 비디오 코덱을 지원하는지 결정해서 워크로드가 배치될 수 있는 위치를 결정할 수 있다. 예를 들어, 스트리밍 미디어 서비스 플레이어는 특정한 워크로드(예를 들어, 영화)를 소스 해상도, 비트 레이트, 코덱, 디스플레이 해상도, 프레임 레이트 등의 관점에서 설명할 수 있고, 워크로드를 실행할 수 있는 프로세싱 자원에 대해 운영 체제에 질의할 수 있다. 운영 체제는 워크로드를 실행하는 능력을 가진 GPU를 식별함으로써 응답할 수 있다. 운영 체제의 응답에 기반하여, 애플리케이션은 GPU를 선택하고 이 GPU에 워크로드를 할당할 수 있다. 예를 들어 통합 GPU가 일반적으로 개별 GPU보다 전력을 덜 소비하기 때문에, 애플리케이션은 통합 GPU에 워크로드를 할당할 수 있다. 이는 컴퓨팅 디바이스가 배터리 전원으로 작동하는 경우에는 특히 문제가 될 수 있다.
그러나, 운영 체제가 컴퓨팅 디바이스의 기능에 관한 정보를 제공할 때, 시스템의 런타임 거동에 관한 어떠한 통찰도 없이 제공한다. 즉, 운영 체제는 통합 GPU의 비디오 코덱이 얼마나 많이 사용되고 있는지 알지 못한다. 애플리케이션이 화상 회의 애플리케이션과 같은 다른 비디오 워크로드를 실행할 수도 있는 통합 GPU에 워크로드를 배치하는 것으로 결정한 경우, 통합 GPU의 비디오 코덱이 과도 구독될(oversubscribed) 수도 있다. 다시 말해, 애플리케이션 및 운영 체제는 프로세싱 자원의 실제 런타임 활용도에 관한 전망(visibility)을 갖지 못하므로, 컴퓨팅 디바이스가 워크로드에 대해 예상되는 사용자 경험을 제공할 수 있는지 여부를 알 수 없다.
이러한 한계를 해결하기 위해서, 본 개시는 애플리케이션 또는 다른 워크로드 개시자가 워크로드에 프로세싱 자원을 할당하기 전에 워크로드에 대한 런타임 활용도 메트릭 및 정책에 기한 워크로드 할당 추천을 수신할 수 있는 최적화된 서비스 기반 파이프라인에 대한 메커니즘을 제공한다.
구현예는 최적화된 서비스 기반 파이프라인을 제공하는 방법에 관한 것이다. 이 방법은 워크로드 개시자로부터 워크로드에 관한 설명을 포함하는 요청을 수신하는 단계를 포함한다. 이 방법은 또한 워크로드 설명에 기반하여 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하는 단계를 더 포함하고, 복수의 프로세싱 자원은 적어도 제1 GPU 및 제2 GPU를 포함한다. 이 방법은 또한 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계를 포함한다. 일부 구현예에서, 제1 GPU는 CPU와 통합된 통합 GPU이고, 제2 GPU는 개별 GPU이다. 일부 구현예에서, 활용도 메트릭이 식별되는 복수의 프로세싱 자원은 비디오 인코딩/디코딩 가속기, 오디오 인코딩/디코딩 가속기, 디스플레이 제어기, 버스 인터페이스 제어기 및 메모리 서브시스템 제어기 중 적어도 하나를 더 포함한다.
일부 구현예에서, 이 방법은 또한 요청을 제시하기 위한 애플리케이션 프로그래밍 인터페이스(API: application programming interface)를 워크로드 개시자에 노출시키는 단계를 포함한다. 일부 구현예에서, 이 방법은 또한 요청에 대한 응답으로 워크로드 개시자에게 워크로드 할당 추천을 제공하는 단계를 포함한다. 일부 구현예에서, 이 방법은 또한 워크로드에 대한 설명에 적어도 기반하여 런타임 활용도 메트릭 및 하나 이상의 정책을 식별하는 단계를 포함한다.
일부 구현예에서, 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는, 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 단계를 포함한다. 이러한 구현예에서, 하나 이상의 정책에 복수의 워크로드 할당이 설명될 수 있다. 이러한 구현예는 또한 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하는 단계를 포함할 수 있다.
일부 구현예에서, 이 방법은 또한 워크로드 개시자에 자원 관리 통지를 등록하는 단계; 및 기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 워크로드 개시자에게 자원 가용성을 통지하는 단계를 포함한다.
이 구현예의 변형예는 최적화된 서비스 기반 파이프라인을 제공하는 장치에 관한 것이다. 이 장치는 컴퓨터 프로세서, 컴퓨터 프로세서에 동작 가능하게 연결된 컴퓨터 메모리를 포함하고, 컴퓨터 메모리에는 컴퓨터 프로그램 명령어가 배치되며, 컴퓨터 프로그램 명령어는 컴퓨터 프로세서에 의해 실행될 때, 장치로 하여금 워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하게 한다. 컴퓨터 프로그램 명령어는 또한 장치로 하여금 워크로드 설명에 기반하여 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하게 하고, 복수의 프로세싱 자원은 적어도 제1 GPU 및 제2 GPU를 포함한다. 컴퓨터 프로그램 명령어는 추가로 장치로 하여금 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하게 한다.
일부 구현예에서, 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 것은, 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 것을 포함한다. 이러한 구현예에서, 하나 이상의 정책에 복수의 워크로드 할당이 설명된다. 일부 구현예에서, 컴퓨터 프로그램 명령어는 또한 장치로 하여금 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하게 한다.
일부 구현예에서, 컴퓨터 프로그램 명령어는 또한 장치로 하여금 워크로드 개시자에 자원 관리 통지를 등록하게 하고, 기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 워크로드 개시자에게 자원 가용성을 통지하게 한다.
이 구현예의 또 다른 변형예는 최적화된 서비스 기반 파이프라인을 제공하는 컴퓨터 프로그램 제품에 관한 것이다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체에 배치되며, 컴퓨터 프로그램 명령어를 포함하되, 이는 실행될 때 컴퓨터로 하여금 워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하게 한다. 컴퓨터 프로그램 명령어는 또한 컴퓨터로 하여금 워크로드 설명에 기반하여 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하게 하고, 복수의 프로세싱 자원은 적어도 제1 GPU 및 제2 GPU를 포함한다. 컴퓨터 프로그램 명령어는 또한 컴퓨터로 하여금 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하게 한다.
일부 구현예에서, 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 것은, 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 것을 포함한다. 이러한 구현예에서, 하나 이상의 정책에 복수의 워크로드 할당이 설명될 수 있다. 일부 구현예에서, 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 것은, 워크로드 내의 복수의 스트림에 대해 원자적으로(atomically) 수행된다. 이들 구현예에서, 컴퓨터 프로그램 명령어는 또한 장치로 하여금 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하게 한다.
일부 구현예에서, 컴퓨터 프로그램 명령어는 또한 컴퓨터로 하여금 워크로드 개시자에 자원 관리 통지를 등록하게 하고, 기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 워크로드 개시자에게 자원 가용성을 통지하게 한다.
본 개시에 따른 구현예는 도 1을 시작으로 더 상세히 설명될 것이다. 같은 참조 번호는 본 명세서 및 도면 전체에 걸쳐 같은 요소를 지칭한다. 도 1은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하기 위한 예시적인 시스템(100)의 블록도를 제시한다. 도 1의 예시적인 시스템(100)은 랩탑 또는 데스크탑 퍼스널 컴퓨터와 같은 컴퓨팅 디바이스, 서버, 스마트폰 또는 태블릿과 같은 모바일 디바이스, 게임 콘솔 등에 구현될 수 있다. 예시적인 시스템(100)은 2개의 GPU(104, 134)를 포함하지만, 당업자라면 본 개시의 사상을 벗어나지 않으면서 다른 시스템이 더 많은 GPU를 포함할 수도 있고 또는 다른 유형의 가속 처리 장치를 사용할 수도 있다는 것을 이해할 것이다.
도 1의 실시예에서, 예시적인 시스템(100)은 CPU(106)와 GPU(104)(이하에서 "통합 GPU"로 지칭됨)를 통합하는 가속 처리 장치(APU)를 포함한다. CPU(106) 및 통합 GPU(104)는 동일한 칩 상에 구현될 수 있으며, 따라서 다수의 구성요소 및 인터페이스를 공유할 수 있다. 예를 들어, CPU 및 GPU는 시스템 메모리(160), 메모리 제어기(114), 직접 메모리 어드레싱(DMA) 엔진(118), 퍼스널 컴퓨팅 인터페이스 익스프레스(PCIe) 인터페이스와 같은 버스 인터페이스(116), 및 네트워크 인터페이스, 범용 직렬 버스(USB) 인터페이스, 영구 저장 인터페이스 등을 포함한 도 1에 도시되지 않은 다른 인터페이스 및 어댑터를 공유할 수 있다. CPU(106)는 하나 이상의 코어(108)(즉, 실행 엔진), 캐시 구조체(미도시), 파이프라인 컴포넌트(또한 미도시) 등을 포함한다. CPU(106) 및 다른 공유 컴포넌트는 고속 온-칩 통신 패브릭(미도시)을 통해 GPU(104)에 연결된다.
도 1의 예시적인 시스템(100)에서, 통합 GPU(104)는 많은 병렬 처리 유닛(미도시)을 갖는 다수의 단일 명령 다중 데이터(SIMD: single instruction multiple data) 처리 코어(112)를 포함하는 GPU 계산 엔진(110)을 포함한다. GPU 계산 엔진(110)은 또한 기하학적 구조 프로세서, 래스터라이저, 그래픽 커맨드 프로세서, 하드웨어 스케줄러, 비동기식 계산 엔진, 캐시, 데이터 공유 등과 같은 도 1에 도시되지 않은 다른 컴포넌트를 포함할 수 있다. 도 1의 실시예에서, 통합 GPU(104)는 또한 가속 비디오 인코딩 및 디코딩을 위한 비디오 인코더/디코더(120)(즉 "코덱"), 가속 오디오 인코딩 및 디코딩을 위한 오디오 코덱(122), 가속 디스플레이 프로세싱을 위한 디스플레이 제어기(124), 및 가속 보안 프로토콜 시행 및 컴플라이언스를 위한 보안 프로세서(126)와 같은 주문형 집적 회로 또는 기능적 로직 블록의 형태의 하드웨어 가속기를 포함한다.
도 1의 실시예에서, APU(102)는 PCIe 인터커넥트(190)와 같은 인터커넥트를 통해 개별 GPU(134)와 통신한다. APU(102)의 PCIe 인터페이스(116)와 개별 GPU(134)의 PCIe 인터페이스(146)는 PCIe 인터커넥트(190)를 통해 통신한다. 일부 실시예에서, APU(102) 및 개별 GPU(134)는 동일한 기판(예를 들어, 인쇄 회로 기판) 상에 위치된다. 다른 실시예에서, 개별 GPU(134)는 APU(102)의 기판으로부터 분리된 비디오 또는 그래픽 카드 상에 위치된다. APU(102)와 개별 GPU(134)는 보호 비디오 컨텐츠와 같은 중요 데이터를 공유하기 위해 PCIe 인터커넥트(190)를 통해 보안 통신 프로토콜을 구현할 수 있다.
통합 GPU(104)와 마찬가지로, 도 1의 실시예에서 개별 GPU(134)는 다수의 병렬 처리 유닛(미도시)을 갖는 다수의 SIMD 프로세싱 코어(142)를 포함하는 GPU 실행 엔진(140)을 포함한다. GPU 실행 엔진(140)은 또한 기하학적 구조 프로세서, 래스터라이저, 그래픽 커맨드 프로세서, 하드웨어 스케줄러, 비동기식 계산 엔진, 캐시, 데이터 공유 등과 같은 도 1에 도시되지 않은 다른 컴포넌트를 포함할 수 있다. 도 1의 실시예에서, 개별 GPU(134)는 또한 가속 비디오 인코딩 및 디코딩을 위한 비디오 인코더/디코더(150)(즉 "코덱"), 가속 오디오 인코딩 및 디코딩을 위한 오디오 코덱(152), 가속 디스플레이 프로세싱을 위한 디스플레이 제어기(154), 및 가속 보안 프로토콜 시행 및 컴플라이언스를 위한 보안 프로세서(156)와 같은 주문형 집적 회로 또는 기능적 로직 블록의 형태의 하드웨어 가속기를 포함한다. 개별 GPU(134)는 또한 그래픽 메모리(180)에 액세스하기 위한 메모리 제어기(144) 및 DMA 엔진(148)을 포함한다. 일부 실시예에서, 메모리 제어기(144) 및 DMA 엔진(148)은 시스템 메모리(160)의 공유된 부분에 액세스하도록 구성된다.
도 1의 예시적인 시스템(100)에서, 시스템 메모리(160)(예를 들어, 동적 랜덤 액세스 메모리(DRAM))는 전술한 프로세싱 자원(즉, APU 및 개별 GPU 및 그들의 구성 컴포넌트)에 대한 장치 드라이버(166)와 인터페이스하는 운영 체제(164)를 호스팅한다. 시스템 메모리(160)는 또한 하나 이상의 애플리케이션(162)을 호스팅한다. 본 개시와 관련하여, 하나 이상의 애플리케이션은 그래픽 애플리케이션, 멀티미디어 애플리케이션, 비디오 편집 애플리케이션, 화상 회의 애플리케이션, 고성능 컴퓨팅 애플리케이션, 기계 학습 애플리케이션일 수도 있고, 또는 통합 GPU(104) 및 개별 GPU(134)의 병렬 특성 및/또는 그래픽 및 비디오 성능을 이용하는 다른 애플리케이션일 수도 있다. 하나 이상의 애플리케이션(162)은 운영 체제(164)로의 호출에 의해 통합 GPU(104) 또는 개별 GPU(134)(또는 이들의 조합)에 할당되는 워크로드(예를 들어, 그래픽 렌더링 워크로드, 오디오/비디오 전환 워크로드, 미디어 재생 워크로드, 기계 학습 워크로드 등)를 생성한다. 당업자는 하나 이상의 애플리케이션이 다양한 워크로드 유형을 생성하는 다양한 추가 애플리케이션 유형일 수 있다는 것을 이해할 것이며, 이들 모두가 여기에서 식별되지 않는다는 것을 이해할 것이다. 그러나, 본 개시 내의 애플리케이션 유형 및 워크로드 유형의 특정 언급은 애플리케이션 유형 및 워크로드 유형을 여기서 식별된 것으로 제한하는 것으로 해석되어서는 안 된다.
시스템 메모리(160)는 또한 애플리케이션(162)과 같은 워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하고, 통합 GPU(104) 및 개별 GPU(134)를 포함하는 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하며, 활용도 메트릭 및 하나 이상의 정책에 대한 의존성에 적어도 기반하여 워크로드 할당 추천을 결정하는 자원 관리자(170)를 호스팅한다. 일부 실시예에서, 자원 관리자(170)는 유형의(tangible) 컴퓨터 판독가능 매체에 저장된 컴퓨터 실행가능 명령어로 구현되고, 이 명령어가 프로세서에 의해 실행될 때, 시스템(100)으로 하여금, 전술한 단계뿐만 아니라, 이하 설명되는 자원 관리자에 의해 수행되는 다른 단계 및 동작을 수행하게 한다.
일부 구현예에서, 자원 관리자(170)는 API(172)를 포함하며, 이를 통해 애플리케이션(162)은 특정한 GPU에 워크로드를 할당하기 이전에 자원 관리자(170)에 워크로드 할당 추천을 요청할 수 있다. 이러한 상황에서 워크로드 할당 추천은 워크로드가 배치되어야 하는(즉, 워크로드의 실행을 위해서) 위치(즉, 어떤 GPU에 배치되어야 하는지)에 대한 추천이다. 워크로드 할당 추천은 예를 들어, 워크로드 설명, 시스템(100) 내의 프로세싱 자원과 같은 하드웨어 기능, 시스템(100) 내의 다양한 프로세싱 자원의 가용성, 시스템(100) 내의 다양한 프로세싱 자원의 활용도 메트릭, 및 워크로드 또는 워크로드의 유형과 관련된 하나 이상의 정책에 기한다. 일부 실시예에서, 자원 관리자(170)는 프로세싱 자원의 런타임 활용도 메트릭의 현재 값에 기반하여 GPU(104, 134)로의 워크로드의 최적 할당을 결정하는 것과 관련된 하나 이상의 정책(176)을 해석하는 정책 엔진(174)을 포함한다. 그 후, 워크로드 할당 추천이 애플리케이션(162)으로 리턴되고, 애플리케이션(162)은 이를 사용해서 워크로드를 어디에 배치할지 결정할 수 있다. 일부 변형예에서, 자원 관리자(170)는 드라이버(166)와 통신해서 활용도 메트릭에 대한 값을 획득할 수도 있고, 또는 다른 메커니즘에 의해 활용도 메트릭에 대한 값을 획득할 수도 있다. 이러한 실시예에서, 드라이버(166)는 특정 프로세싱 자원에 대한 활용도 모니터 및 자원 관리자(170)에 활용도 메트릭 값을 제공하기 위한 인터페이스를 포함할 수 있다. 워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하고, 통합 GPU(104) 및 개별 GPU(134)를 포함하는 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하며, 활용도 메트릭 및 하나 이상의 정책뿐만 아니라 자원 관리자(170)의 다른 기능 및 장점에 대한 의존성에 적어도 기반하여 워크로드 할당 추천을 결정하는 것을 설명하는 추가적인 세부 사항이 이하 제공된다.
추가적인 설명을 위해, 도 2는 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다. 도 2의 예시적인 방법은 워크로드 개시자로부터 워크로드에 관한 설명을 포함하는 요청을 수신하는 단계 210를 포함한다. 일부 실시예에서, 워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하는 단계 210는 자원 관리자(170)에 의해 워크로드 개시자에 노출된 API를 통한 호출로서의 질의를 수신함으로써 수행된다. 워크로드가 비디오 프로세싱 또는 그래픽 프로세싱 태스크를 포함하는 실시예에서, 워크로드를 실행하는 컴퓨팅 시스템(예컨대, 도 1의 시스템(100))은 워크로드를 실행할 수 있는 다수의 GPU를 포함할 수 있다. 특정 실시예에서, 컴퓨팅 시스템은 통합 GPU(예를 들어, 도 1의 통합 GPU(104)) 및 개별 GPU(예를 들어, 도 1의 개별 GPU(134))를 포함한다. 이러한 실시예에서, 워크로드 개시자로부터의 요청은 워크로드가 통합 GPU에 배치되어야 하는지 개별 GPU에 배치되어야 하는지 또는 이들의 조합에 배치되어야 하는지에 대한 자원 관리자(170)로의 질의이다. 일부 경우에서, 워크로드는 통합 GPU에서 실행될 수 있는 워크 아이템과 개별 GPU에서 동시에 실행될 수 있는 기타 워크 아이템을 포함할 수 있다.
다양한 유형의 애플리케이션이 워크로드 개시자일 수 있으며, 각각의 애플리케이션에는 다양한 유형의 워크로드가 있다. 일부 실시예에서, 워크로드 개시자로부터의 요청은 워크로드의 유형, 워크로드 특성, 프로세싱 요건 및/또는 워크로드에 대한 성능 예상치(expectation)를 설명한다. 예를 들어, 미디어 플레이어 애플리케이션은 컴퓨팅 시스템에서 실행하려고 하는 미디어 재생 워크로드로서 식별된 워크로드를 가질 수 있다. 이러한 실시예에서 워크로드에 대한 설명은 재생 워크로드에 대한 원본 해상도, 디스플레이 해상도, 비트 레이트, 비디오 코덱, 오디오 코덱 및 프레임 레이트를 포함한다. 또 다른 실시예로서, 화상 회의 애플리케이션은 컴퓨팅 시스템에서 실행하려고 하는 트랜스코드 워크로드로서 식별된 워크로드를 가질 수 있다. 이러한 실시예에서 워크로드에 대한 설명은 소스 비디오 코덱, 대상 비디오 코덱 및 프레임 레이트를 포함할 수 있다. 화상 회의 애플리케이션은 시선 보정 또는 화면에서 참가자의 배경을 제거/대체하기 위한 AI 알고리즘을 포함한 인공 지능(AI) 워크로드도 포함할 수 있다.
일부 실시예에서, 워크로드에 대한 설명은 자원 관리자가 파싱할 수 있는 설명 언어를 사용해서 제공된다. 예를 들어, 설명 언어는 비트 레이트에 대한 디스크립터 태그, 디스플레이 해상도에 대한 디스크립터 태그, 비디오 인코딩 프로토콜에 대한 디스크립터 태그 등을 포함할 수 있다. 이들 실시예에서, 워크로드에 대한 설명은 워크로드에 대한 구조화된 설명(structured description)이다. 일부 실시예에서, 이하에서 더 상세히 설명되는 바와 같이, 요청에 포함된 설명 언어는 자원 관리자(170)의 정책 엔진(174)에 의해 파싱될 수 있다.
도 2의 예시적인 방법은 워크로드 설명에 기반하여 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하는 단계 220를 포함한다. 프로세싱 자원은 적어도 제1 GPU 및 제2 GPU를 포함한다. 일부 실시예에서, 런타임 활용도 메트릭을 검사하는 단계 220는 통합 GPU 및 개별 GPU로부터 메트릭을 수집하는 자원 관리자에 의해 수행된다. 통합 GPU 및 개별 GPU의 활용은 당업자가 인식할 수 있는 다양한 방식으로 표현될 수 있다. 예를 들어, 통합 GPU 및 개별 GPU의 활용도 메트릭은 사용 시간 대비 유휴 시간의 비율로서, 활성 프로세스의 수로서, 활성 스레드의 수로서, 전력 소비로서 또는 이들의 조합으로서의 프로세서 이용률을 포함할 수 있다. 통합 GPU와 개별 GPU는 이러한 메트릭을 제공하기 위한 다양한 카운터를 포함할 수 있다. 유휴 대비 사용(busy vs idle)과 관련된 메트릭은 또한 클럭 레이트를 고려할 수 있다. 예를 들어, 컴퓨팅 기능은 클럭당 처리량, 엔진의 수, 및/또는 클럭 레이트와 관련될 수 있다. 처리량은 워크로드에 따라 달라질 수 있다. 예를 들어, 하이 다이나믹 레인지(high dynamic range) 비디오의 스케일링/톤 매핑/색상 보정은 하나의 GPU에서 실행되는 경우의 표준 다이나믹 레인지 자료의 스케일링/색상 보정보다 픽셀당 워크로드가 더 많다. 그러나 동일한 워크로드가 다른 엔진에서 실행되는 경우 비용 함수가 크게 달라질 수 있다. 따라서 클럭 주기당 클럭 레이트와 처리량이 활용도 메트릭의 표현이 될 수도 있다.
일부 실시예에서, 제1 GPU 및 그 구성 자원(예를 들어, 컴퓨팅 유닛, 비디오 코덱, 오디오 코덱, 디스플레이 엔진과 같은 프로세싱 엔진) 및 제2 GPU 및 그 구성 자원(예를 들어, 컴퓨팅 유닛, 비디오 코덱, 오디오 코덱, 디스플레이 엔진과 같은 프로세싱 엔진)이 자원의 풀로서 간주될 수 있으며, 각각의 GPU의 개별 자원은 워크로드를 지원하기 위해 분할될 수 있다. 즉, 하나 이상의 처리 엔진이 단일 워크로드와 연계될 수 있다. 예를 들어, 디코드 워크로드는 제1 GPU의 비디오 코덱과 제2 GPU의 비디오 코덱으로 분할될 수 있다. 따라서 프로세싱 자원은 통합 GPU 또는 개별 GPU와 같은 일반 컴퓨팅 자원 또는 코덱, 셰이더(shader), 디스플레이 엔진 등과 같은 특정 컴퓨팅 자원일 수 있다.
일부 실시예에서, 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하는 단계 220는 또한 비디오 코덱 및 오디오 코덱과 같은 멀티미디어 가속기, 디스플레이 제어기, 보안 프로세서, DMA 엔진 및 메모리 제어기와 같은 메모리 서브시스템, 및 PCIe 인터페이스와 같은 버스 인터페이스를 포함하는 추가적인 프로세싱 자원으로부터 런타임 활용도 메트릭의 값을 수집하는 것을 포함할 수 있다. 멀티미디어 가속기, 디스플레이 제어기, 보안 프로세서 및 기타 가속기의 활용도는 사용 시간 대비 유휴 시간의 비율, 활성 프로세스의 수, 활성 스레드의 수, 전력 소비 또는 이들의 조합과 같은 메트릭에 의해 표현될 수 있다. 이러한 구성 요소는 이들 메트릭을 제공하기 위한 다양한 카운터를 포함할 수 있으며, 이는 예를 들어 대응하는 드라이버로의 호출을 통해 검사될 수 있다. 메모리 서브시스템 활용도는 현재 기간 내에 인터페이스를 통해 발행된 읽기 패킷 수 및 쓰기 패킷 수, 인그레스 큐(ingress queues) 및 이그레스 큐(egress queues) 또는 버퍼의 현재 활용도, 데이터 전송 시간 및 대기 시간 등과 같은 메트릭으로 표현될 수 있다. 버스 인터페이스 활용도는 대역폭(예를 들어, 피크 대역폭 및 평균 대역폭)과 같은 메트릭으로 표현될 수 있다. 특히, 워크로드가 통합 GPU와 개별 GPU에 분할될 때 APU와 개별 GPU 사이에서의 버스 인터페이스 활용도가 중요하며, 따라서 버스 인터페이스의 대역폭에 의해서 통합 GPU와 개별 GPU가 결과 데이터를 공유하는 능력이 제약된다.
일부 실시예에서, 워크로드 설명에 기반하여 복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하는 단계 220는, 자원 관리자가 워크로드 개시 이전 런타임에서의 활용도 메트릭을 획득하기 위해 복수의 프로세싱 자원의 각각의 드라이버에 질의함으로써 수행된다. 예를 들어, 워크로드 개시자로부터의 워크로드에 대한 설명을 포함하는 요청에 대한 응답으로, 자원 관리자는 워크로드 설명에 기반하여 워크로드의 실행을 지원하는 데 필요한 프로세싱 자원의 특정 컴포넌트(예를 들어, 컴퓨팅 유닛, 셰이더, 코덱 등)를 결정한다. 그 후, 자원 관리자는 복수의 프로세싱 자원의 각각의 드라이버에 활용도 메트릭에 대해 질의하여, 이들 프로세싱 자원에 잠재적으로 할당될 워크로드와 관련된 컴퓨팅 디바이스의 활용도 상태를 구성한다. 예를 들어 워크로드 설명이 워크로드가 미디어 재생 워크로드라고 나타내는 경우, 자원 관리자는 비디오 코덱 및 오디오 코덱의 활용도 메트릭을 검사하여 특히 미디어 재생 워크로드와 관련된 활용도 상태를 구성한다.
도 2의 예시적인 방법은 또한 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계 230을 포함한다. 일부 실시예에서, 워크로드 할당 추천을 결정하는 단계 230은 자원 관리자가 컴퓨팅 디바이스 및 그 구성 프로세싱 자원의 활용도 상태에 적어도 기반하여, 이들 자원을 과도 구독하는 일 없이 어떤 프로세싱 자원 또는 프로세싱 자원의 조합에 워크로드를 할당할 수 있는지를 결정함으로써 수행된다. 이들 실시예에서, 자원 관리자는 컴퓨팅 디바이스에서 사용 가능한 프로세싱 자원을 식별하고, 워크로드에 대한 설명에 기반하여 프로세싱 자원 중 어느 것이 워크로드를 실행할 수 있을지 결정한다. 예를 들어, (예를 들어, 통합 GPU 및 개별 GPU에서) 이용가능한 프로세싱 자원 및 워크로드의 요건과 매칭되는 이들 프로세싱 자원의 기능(예를 들어, 지원되는 비디오 인코드/디코드 표준)에 기반하여, 자원 관리자는 워크로드 할당 추천을 결정하는 단계 230에서 이용가능한 프로세싱 자원의 활용도 상태를 검사한다.
이들 실시예에서, 워크로드 할당 추천을 결정하는 단계 230은 또한 하나 이상의 정책에 기반하여 추천된 워크로드를 배치하는 것을, 이러한 배치가 프로세싱 자원의 과도 구독을 유발하지 않는다는 점을 감안해서 결정하는 것을 포함할 수 있다. 예를 들어, 정책은, 워크로드가 추가되어도 APU에 의한 전체 전력 소비가 낮기 때문에 가능한 경우 워크로드가 통합 GPU에 배치되어야 한다는 것을 명시할 수 있다. 따라서, 새로운 워크로드가 통합 GPU의 과도 구독을 유발할 것으로 예측되지 않는 경우, 워크로드 할당 추천은 워크로드가 통합 GPU에 배치되는 것이다. 일부 실시예에서, 워크로드 할당 추천을 결정하는 단계 230은, 워크로드 내의 복수의 스트림에 대해 원자적으로 수행된다. 따라서, 다수의 스트림을 포함하는 워크로드가 있는 경우(예를 들어, 비디오 인코드 스트림 및 비디오 디코드 스트림이 있는 트랜스코드 워크로드), 워크로드 할당 추천은 워크로드의 각각의 스트림에 대해 원자적으로 결정된다. 예를 들어, 워크로드 할당 추천이 비디오 인코드 스트림에 대해 이루어지고, 동일한 워크로드의 비디오 디코드 스트림에 대해 제2 워크로드 할당 추천이 이루어질 수 있다.
일부 실시예에서, 워크로드 할당 추천을 결정하는 단계 230은, 요청이 관련되어 있는 워크로드의 유형에 기반해서 정책을 식별하는 것을 포함한다. 전력 소비 이외에 정책을 드라이브하는 요인이 있을 수 있다. 일부 변형예에서, 게임 워크로드에 대한 정책은 한 프로세싱 자원이 다른 프로세싱 자원보다 태스크를 더 잘 수행하는 성능 인자에 기반한다. 일 실시예에서, 정책은 게임 워크로드가 개별 GPU의 과도 구독을 유발할 것으로 예측되지 않는 한 게임 워크로드가 개별 GPU에 배치되어야 한다고 명시할 수 있다. 일부 변형예에서, 정책은 기능에 기반한다. 예를 들어, 정책은 비디오 재생이 AV1 코덱을 사용해서 수행되어야 한다고 명시할 수 있다. 일 실시예로, GPU 중 하나는 AV1 코덱 가속기를 포함하지만 다른 것은 포함하지 않는 경우가 있을 수도 있다. 따라서, 워크로드 할당 추천을 결정하는 단계 230은, 또한 시스템에서 이용가능한 프로세싱 자원의 기능을 결정하는 것을 포함할 수 있다. 일부 실시예에서, 워크로드 할당이 새로운 워크로드에 기반하여 또는 업데이트된 활용도 정보에 기반하여 자원 관리자에 의해 취소될 수도 있다.
일부 구현예에서, 워크로드 할당 추천을 결정하는 단계 230은, 또한 워크로드에 의해 요구되는 컴포넌트 프로세싱 자원을 식별하는 것 및 이들 자원에 대한 활용도 메트릭을 식별하는 것을 포함할 수 있다. 일 실시예로, 통합 GPU의 비디오 코덱의 활용도가 높은 경우, 자원의 과도 구독을 유발하지 않고 비디오 코덱을 활용하지 않는 그래픽 워크로드가 통합 GPU에 배치될 수 있다. 반면, 비디오 코덱을 활용하는 비디오 재생 워크로드는 비디오 코덱의 과도 구독을 유발할 것이다. 이 실시예에서, 낮은 전력 소비 정책에도 불구하고, 워크로드 할당 추천은 워크로드를 개별 GPU에 배치하는 것이다. 따라서, 워크로드를 추가하는 것이 프로세서 시스템(예를 들어, 통합 GPU)의 임의의 컴포넌트 프로세싱 자원(예를 들어, 비디오 코덱)의 과도 구독을 유발하는 경우, 자원 관리자는 워크로드를 다른 시스템(예를 들어, 개별 GPU)에 배치하는 것이 바람직하다고 결정한다. 일부 실시예에서, 정책은 워크로드 유형에 대한 예상치를 설명할 수 있다. 예를 들어, 정책은 초당 60프레임의 4K 하이 다이나믹 레인지(HDR: high dynamic range) 워크로드가 N 개의 주기 및 M양의 메모리 대역폭을 사용할 것으로 예상될 수 있음을 나타낼 수 있다.
일부 실시예에서, 정책은 통합 GPU와 개별 GPU 모두의 활용도를 최대화하도록 워크로드가 할당되어야 한다고 명시할 수 있다. 예를 들어, 다수의 디코드 스트림 및 인코드 스트림을 포함할 수 있는 비디오 편집 워크로드를 고려한다. 이러한 예에서, 자원 관리자는 제1 디코드 스트림이 통합 GPU의 가용성에 기반하여 통합 GPU에 배치되고, 제1 인코드 스트림이 개별 GPU의 가용성에 기반하여 개별 GPU에 배치되어야 한다고 결정할 수 있다. 제2 디코드 스트림의 경우, 자원 관리자는 통합 GPU 및 개별 GPU의 활용도 상태에 기반하여 제2 디코드 스트림이 통합 GPU에 배치되어야 한다고 결정하고 이 워크로드 할당을 추천할 수 있다. 제3 디코드 스트림의 경우, 자원 관리자는 통합 GPU 및 개별 GPU의 활용도 상태에 기반하여 제3 디코드 스트림이 개별 GPU에 배치되어야 한다고 결정하고 이 워크로드 할당을 추천할 수 있다.
고효율 비디오 코딩(HEVC: high efficiency video coding) 형식으로부터 고도 비디오 코딩(AVC: Advanced Video Coding) 형식으로의 트랜스코드 워크로드의 예를 고려할 때, 자원 관리자는 가용성에 기반하여 HEVC 디코드 스트림이 통합 GPU에 배치되어야 한다고 결정해서 이 워크로드 할당 추천을 할 수 있다. AVC 인코드 스트림의 경우 자원 관리자는 예상된 활용도에 기반하여 AVC 인코드 스트림이 개별 GPU에 배치되어야 한다고 결정하고 이 워크로드 할당 추천을 할 수 있다.
AV1(AOMedia Video 1) 형식으로부터 AVC 형식으로의 트랜스코드 워크로드의 예를 고려한다. 이 실시예에서, AV1 형식은 개별 GPU에서만 지원된다. 이러한 실시예에서 자원 관리자는 시스템의 기능에 기반하여 AV1 디코드 스트림이 개별 GPU에 배치되어야 한다고 결정하고 이 워크로드 할당 추천을 할 수 있다. 예상된 활용도에 기반하여, 자원 관리자는 AVC 인코드 스트림이 통합 GPU에 배치되어야 한다고 결정하고 이 워크로드 할당 추천을 할 수 있다.
추가적인 설명을 위해, 도 3은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다. 도 3의 방법은, 도 3의 실시예가 요청을 제시하기 위해 애플리케이션 프로그래밍 인터페이스(API)를 워크로드 개시자에 노출시키는 단계 310를 포함하는 것을 제외하면, 도 2의 방법과 유사하다. 일부 구현예에서, 자원 관리자는 컴퓨팅 시스템에서 워크로드를 실행하고자 하는 애플리케이션(예컨대, 도 1의 애플리케이션(162))에 API를 노출시킨다. API는 애플리케이션이 워크로드 설명을 제시하고(예를 들어, 위에서 논의된 디스크립터 언어를 사용해서) 컴퓨팅 시스템의 프로세싱 자원 사이의 워크로드 할당의 추천을 요청하는 메커니즘을 제공한다. 일부 변형예에서, 디스크립터가 API 호출에 인수(argument)로서 추가된다. 예를 들어, 워크로드를 통합 GPU 또는 개별 GPU에 배치할지 여부를 결정하기 전에, 애플리케이션은 자원 관리자를 호출하여 워크로드 할당에 대한 추천을 요청할 수 있다. API 호출을 행할 때, 애플리케이션은 디스크립터 언어를 사용한 워크로드에 대한 구조화된 설명을 포함할 수 있다. 워크로드 개시자가 워크로드 할당 추천을 요청할 수 있게 API를 제공함으로써, 워크로드 개시자는 통합 GPU 및 개별 GPU의 런타임 특성을 사용해서, 현재 활용도에 관계없이 워크로드에 대한 GPU를 선택하는 대신, 성능 저하(예를 들어, 프로세싱 자원 과도 구독)를 초래하지 않고 워크로드가 어디에 배치될 수 있는지 식별하는 기회를 제공받는다. API 호출은 워크로드의 시작 시(예를 들어, 미디어 재생 시작 시) 애플리케이션에 의해 수행되며, 워크로드의 각각의 워크 아이템(예를 들어, 모든 프레임 디코드)에 대해서는 수행되지 않는다. 일부 실시예에서, 제1 GPU 및 제2 GPU는 프로세싱 자원이 단일 시스템으로서 보이도록 축약될 수 있고(abstract), 인터페이스는 다수의 서브시스템(예를 들어, 코덱, 컴퓨팅 유닛 등)에 매핑된다.
추가적인 설명을 위해, 도 4는 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다. 도 4는, 도 4가 요청에 대한 응답으로 워크로드 개시자에 워크로드 할당 추천을 제공하는 단계 410를 포함한다는 점을 제외하면, 도 2와 유사하다. 예를 들어, 자원 관리자는 요청을 개시한 요청 애플리케이션에 워크로드 할당 추천을 리턴한다. 일부 실시예에서, 이 결과는 API 호출에 대한 응답으로서 리턴된다. 워크로드 할당 추천은 워크로드가 통합 GPU에 배치되어야 하는지 또는 개별 GPU에 배치되어야 하는지 여부를 나타낸다. 일부 변형예에서, 워크로드 할당 추천은, 특정 워크 아이템(예를 들어, 컴포지션)이 통합 GPU 상에 배치되어야 하는 반면, 다른 워크 아이템(예를 들어, 비디오 디코드)이 개별 GPU에 배치되어야 하도록 워크로드 내의 특정한 워크 아이템이 어디에 배치되어야 하는지 나타낸다. 일부 실시예에서, 워크로드 유형과 연관된 정책은 자원 관리자가 워크로드 개시자에 응답해야 하는 방법을 설명한다. 예를 들어, 정책은 두 GPU 중 하나에 대한 배치로 인해 과도 구독이 발생하는 경우에, 자원 관리자가 과도 구독이 발생할 수 있다는 경고와 함께 정책이 선호하는 배치를 나타내는 응답을 리턴해야 한다는 것을 나타낼 수 있다. 경우에 따라, 자원 관리자는, 예측된 활용도 영향에 기반하여 워크로드를 어디에 배치할지 애플리케이션이 결정할 수 있도록, 각각의 GPU에 대한 예측된 활용도 영향을 나타내는 결과를 리턴할 수 있다.
추가적인 설명을 위해, 도 5는 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다. 도 5는 워크로드에 대한 설명에 적어도 기반하여 런타임 활용도 메트릭 및 하나 이상의 정책을 식별하는 단계 510을 포함한다. 일부 실시예에서, 워크로드에 대한 설명에 적어도 기반하여 런타임 활용도 메트릭 및 하나 이상의 정책을 식별하는 단계 510은 워크로드 설명으로부터 워크로드의 유형을 결정하는 자원 관리자에 의해 수행된다. 워크로드의 유형으로부터, 자원 관리자는 그 워크로드가 필요로 하는 프로세싱 자원(예를 들어, 셰이더 엔진, 비디오 또는 오디오 코덱 가속기, 메모리 하위 시스템 또는 버스 인터페이스 등)을 식별할 수 있다. 추가적으로 또는 대안적으로, 자원 관리자는 워크로드의 구조화된 설명에서 워크로드 특성(예를 들어, 비디오 또는 오디오 인코딩 파라미터, 업스케일링 해상도 파라미터, 보안 파라미터 등)으로부터 필요한 프로세싱 자원을 식별할 수 있다. 식별된 프로세싱 자원에 기반하여, 자원 관리자는 이들 자원의 활용도 메트릭을 검사한다. 프로세싱 자원의 활용도 메트릭은 지속적으로 모니터링되고 샘플링될 수도 있고 또는 요청에 대한 응답으로 획득될 수도 있다.
워크로드 설명으로부터 획득한 워크로드 유형에 기반하여, 워크로드에 대한 하나 이상의 정책도 식별된다. 예를 들어, 각각의 워크로드 유형(예를 들어, 미디어 재생, 비디오 편집, 화상 회의 등)은 연관된 일 세트의 정책을 가질 수 있다. 이러한 일 세트의 정책은 워크로드 할당 추천에 대해 결정하는 방법을 정책 엔진(예를 들어, 도 1의 정책 엔진(174))에 설명한다. 예를 들어, 일 세트의 정책은 워크로드 또는 워크로드의 구성 요소가 어디에 배치되어야 하는지에 대한 선호도(preference), 워크로드의 양태(예를 들어, 속도, 전력 소비, 이미지 품질 등)에 대한 열거된 우선 순위, 워크로드에 대한 기본 요건(예를 들어, 프레임 속도, 대기 시간, 출력 해상도), 워크로드에 대한 중요한 자원(예를 들어, 워크로드가 많이 사용하는 자원), 보안 및 보호 정책 등을 명시할 수 있다. 일부 실시예에서, 일 세트의 정책은 워크로드 할당 추천을 결정할 때 어떤 활용도 메트릭이 검사 및 의존되어야 하는지를 나타낸다.
추가적인 설명을 위해, 도 6은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다. 도 6의 예시적인 방법에서, 워크로드 할당 추천을 결정하는 단계 230은, 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 단계 610을 포함한다. 일부 구현예에서, 특정한 워크로드 할당에서 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 단계 610은 특정한 워크로드 할당을 식별하는 자원 관리자에 의해 수행된다. 예를 들어, 특정한 워크로드 할당은 통합 GPU 또는 개별 GPU에 전체 워크로드를 배치하는 것 또는 통합 GPU와 개별 GPU에 워크로드를 분산시키는 것일 수 있다. 특정한 워크로드 할당의 경우, 그리고 워크로드 유형 및 런타임 활용도 메트릭에 기반하여, 자원 관리자는 제안된 워크로드 할당에서 프로세싱 자원의 활용도에 미치는 영향을 예측한다. 예를 들어, 워크로드의 유형에 기반하여, 자원 관리자는 새로운 워크로드가 추가되는 경우에 통합 GPU의 GPU 코어가 과도 구독될지를 결정할 수 있다. 일부 변형예에서 자원 관리자는 새로운 워크로드의 수치적 영향을 예측한다. 예를 들어, 워크로드 유형에 기반하여 자원 관리자는 워크로드가 통합 GPU에 배치되는 경우 통합 GPU의 GPU 코어의 활용도가 20% 증가할지를 결정할 수 있다. 일부 변형예에서, 활용도에 대한 영향은 특정 유형의 워크로드를 실행할 때 프로세싱 자원의 추세, 모델, 및/또는 이전 활용도 관찰에 기반하여 예측될 수 있다.
상술한 바와 같이, 자원 활용도 분석은 특정 자원으로 제한되지 않고, 전체적으로 시스템에 적용될 수 있다. 비디오 디코드 및 컴포지션 작업이 개별 GPU의 비디오 코덱 및 셰이더 엔진에 배치될 수 있고 비디오 인코드 작업이 통합 GPU의 비디오 코덱에 배치될 수 있는, 트랜스코드 워크로드에 대해 제안된 워크로드 할당의 실시예를 고려한다. 이 실시예에서, 두 GPU 모두 과도 활용 없이 워크로드를 수용할 수 있지만, PCIe 인터커넥트를 통해 개별 GPU로부터 통합 GPU로 컴포지션을 전송하면 이 인터페이스가 과도 활용된다. 비디오 재생에 관한 또 다른 실시예를 고려하면, 재생 워크로드는 통합 GPU에 의해 수용될 수도 있고 개별 GPU에 의해 수용될 수도 있지만; 통합 GPU는 메모리 제어기를 통해 시스템 메모리에 액세스하는 것을 CPU와 경쟁하기 때문에 통합 GPU에 워크로드를 배치하면 필요한 사용자 환경을 제공하기에는 대기 시간이 너무 길어질 수 있다. 이러한 시나리오에서는, 전력 소비가 더 높더라도 워크로드를 개별 GPU에 배치하는 것이 바람직할 수 있다.
일부 실시예에서, 워크로드 유형과 연관된 하나 이상의 정책이, 제안된 여러 워크로드 할당을 명시한다. 트랜스코드 워크로드를 예로 사용하면, 이 정책은 제1 선호도가 비디오 디코드 및 컴포지션을 개별 GPU의 비디오 코덱 및 셰이더 엔진에 배치하고 비디오 인코드를 통합 GPU의 비디오 코덱에 배치하는 것이라고 명시할 수 있다. 이 정책은 제2 선호도가 전체 워크로드를 개별 GPU에 배치하는 것이라고 명시할 수 있다. 이 정책은 제3 선호도가 전체 워크로드를 통합 GPU에 배치하는 것이라고 명시할 수 있다. 일부 변형예에서, 정책은 자원 제약에 의해 중단될 수 있다. 예를 들어, GPU 중 하나가 컨텐츠 보호를 지원하지 않고 비디오 워크로드가 보호되는 컨텐츠를 포함하는 경우, 컨텐츠 보호를 지원하지 않는 GPU에 워크로드를 배치하는 정책에 불구하고, 컨텐츠 보호를 지원하는 GPU에 워크로드를 배치해야 한다.
추가적인 설명을 위해서, 도 7은 도 6에 제시된 방법을 확장한 흐름도를 나타낸다. 복수의 특정한 워크로드 할당의 활용도 영향을 예측한 이후에, 도 7의 방법은 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하는 단계 710으로 이어진다. 일부 구현예에서, 워크로드 할당을 스코어링하는 단계 710은, 가능한 다수의 워크로드 할당에 대한 스코어를 계산하는 자원 관리자의 정책 엔진에 의해 수행된다. 스코어는 정책 또는 정책의 세트에 식별된 인자에 기반하여 계산된다. 예를 들어, 스코어는 특정한 워크로드 할당의 성능 특성(예를 들어, 출력 프레임 레이트, 출력 해상도 등), 전력 소비 또는 효율성 인자, 부하 밸런싱 인자 등에 연계될 수 있다. 위의 트랜스코드 실시예를 계속하면, 스코어는 프레임 레이트에 기반할 수 있다. 비디오 디코드 및 컴포지션 작업을 개별 GPU에 배치하고 비디오 인코드 작업을 통합 GPU에 배치하는 제1 워크로드 할당이 초당 200프레임의 프레임 레이트를 달성할 수 있고; 전체 워크로드를 개별 GPU에 배치하는 제2 워크로드 할당이 초당 150프레임의 프레임 레이트를 달성할 수 있으며; 전체 워크로드를 통합 GPU에 배치하는 제3 워크로드 할당이 초당 100프레임의 프레임 레이트를 달성할 수 있다고 가정한다. 이러한 워크로드 할당이 트랜스코드 워크로드에 대한 정책에 명시된 대로 프레임 레이트에 기반하여 스코어링되는 경우, 제1 워크로드 할당이 추천된 워크로드 할당으로서 결정된다. 그러나, 이 동일한 예에서 PCIe 인터페이스 활용도가 상당히 높은 경우, 통합 GPU와 개별 GPU 사이의 데이터 전송으로 인해서 제1 워크로드 할당의 프레임 레이트가 초당 125프레임으로 감소될 수 있다. 이 실시예에서, 프레임 레이트만 사용하는 스코어링 시스템에 기반하여 제2 워크로드 할당이 선호된다.
일부 변형예에서, 특정한 워크로드 할당을 스코어링하는 데 사용되는 인자에 가중치가 부여된다. 트랜스코드 예를 계속하면, 정책은 프레임 레이트에 출력 해상도보다 더 많은 가중치를 부여하는 방식으로 프레임 레이트와 출력 해상도에 가중치를 부여할 수 있다. PCIe 활용도가 높은 실시예에서, 초당 200프레임의 프레임 레이트는, PCIe 인터페이스를 통해 전송되는 데이터가 적도록 출력 해상도를 낮춤으로써 달성할 수 있다. 이러한 시나리오에서, 인코드와 디코드를 모두 동일한 시스템에서 수행함으로써 제2 워크로드 할당 및 제3 워크로드 할당은 여전히 제한되며, 이러한 성능을 높이기 위해 출력 해상도를 낮추는 것은 불가능하다. 그러나, 제1 워크로드 할당은 PCIe 인터페이스를 통한 데이터 레이트를 높이기 위해서 출력 해상도를 낮추는 것이 가능하다. 따라서, 프레임 레이트가 출력 해상도보다 많은 가중치를 부여받는 경우 제1 워크로드 할당이 다른 두 워크로드 할당보다 더 높은 스코어를 받는다.
위의 실시예에서 정책 엔진은 각각의 워크로드 할당에 대한 스코어를 계산한다. 이러한 워크로드 할당은 위에서 언급한 바와 같이 정책 자체에서 명시될 수도 있다. 이후 스코어가 가장 높은 워크로드 할당은 그 워크로드에 대해 추천되는 워크로드 할당으로서 자원 관리자에 의해 워크로드 개시자에게 식별된다. 일부 실시예에서, 스코어는 워크로드 할당으로 인해 자원의 과도 구독이 발생할지 여부에 대한 표시를 포함할 수 있다.
추가적인 설명을 위해, 도 8은 본 개시의 일부 구현예에 따른 최적화된 서비스 기반 파이프라인을 제공하는 예시적인 방법을 나타내는 흐름도를 제시한다. 도 8의 예시적인 방법은 자원 관리 통지를 워크로드 개시자에 등록하는 단계 810을 포함한다. 일부 구현예에서, 자원 관리 통지를 워크로드 개시자에 등록하는 단계 810은 애플리케이션이 자원 관리 통지의 등록을 요청한다는 표시를 자원 관리자가 수신함으로써 수행된다. 자원 관리 통지의 등록이 요청되면, 자원 관리자는 이전에 추천된 작업 할당에 영향을 미칠 수 있는 자원 활용도 또는 자원 기능에 변경이 있을 때, 애플리케이션에 통지한다. 애플리케이션은 자원 관리자로의 API 호출을 통해 등록을 요청할 수 있다. 일부 변형예에서, 애플리케이션은 워크로드 할당 추천의 초기 요청을 행하는 API 호출의 일부로서 등록을 요청할 수 있다. 다른 실시예에서, 애플리케이션은 개별 API 호출로 등록을 요청할 수 있다.
도 8의 예시적인 방법은 또한 기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 워크로드 개시자에게 자원 가용성을 통지하는 단계 820을 포함한다. 일부 구현예에서, 기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 워크로드 개시자에게 자원 가용성을 통지하는 단계 820은 자원 관리자가 컴퓨팅 시스템의 기능의 변경 또는 컴퓨팅 자원의 활용도의 변경을 검출함으로써 수행된다. 예를 들어, 자원 관리자는 경쟁중인 애플리케이션이 닫혔다는 것을 검출하면 이 프로세싱 자원의 가용성을 높일 수 있다. 자원 관리자는 컴퓨팅 시스템이 배터리 전원으로부터 연결 전원으로 전환된 것을 검출할 수 있고, 따라서 개별 GPU의 큰 전력 소비의 중요도를 감소시킬 수 있다. 이러한 변경을 검출한 것에 대한 응답으로, 자원 관리자는 이러한 통지를 위해서 등록된 애플리케이션에 통지한다. 일부 실시예에서, 자원 관리자가 통지하면, 애플리케이션에게 워크로드 할당 추천의 새로운 요청을 제시할 것을 요구한다. 다른 실시예에서, 통지는 업데이트된 워크로드 할당 추천을 포함한다. 일부 실시예에서, 자원 관리자는 애플리케이션이 여전히 활성 상태이고, 충돌되거나 정상적으로 종료되지 않아서 이들의 할당된 자원을 해제했는지 여부를 검출한다.
전술한 내용을 고려하여, 당업자는 본 개시내용에 따른 구현예가 다수의 이점을 제공한다는 것을 이해할 것이다. 구현예는 다중 GPU 시스템에서 워크로드를 개시하고자 하는 애플리케이션에 시스템의 런타임 동작에 관한 전망(visibility)을 제공하여, 애플리케이션이 워크로드를 과도 활용되는 자원에 배치하지 않게 한다. 또한, 특성/워크로드 유형에 대한 정책은 자원 관리자의 정책 엔진이 그 특성/워크로드 유형에 대한 최적의 워크로드 할당 추천을 행하는 것을 허용하는 정의를 제공한다. 따라서, 시스템은 워크로드가 예상대로 수행되는 것을 보장하거나 또는 워크로드를 개시하기 전에 성능이 보장될 수 없다는 것을 애플리케이션에 통지할 수 있다. 이러한 방식으로, 사용자 경험이 향상된다.
구현예는 시스템, 장치, 방법, 및/또는 논리 회로부일 수 있다. 본 개시의 컴퓨터 판독가능 프로그램 명령어는 어셈블러 명령어, 명령어 집합 아키텍처(ISA) 명령어, 기계 명령어, 기계 종속적 명령어, 마이크로코드, 펌웨어 명령어, 상태 설정 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 기존의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 조합으로 작성된 소스 코드 또는 개체 코드 중 어느 하나일 수 있다. 일부 구현예에서, 예를 들어 프로그램가능 논리 회로부, 필드 프로그램가능 게이트 어레이(FPGA), 또는 프로그램가능 논리 어레이(PLA)를 포함하는 전자 회로부는 컴퓨터 판독가능 프로그램 명령어의 상태 정보를 이용함으로써 컴퓨터 판독가능 프로그램 명령어를 실행할 수 있다.
본 개시의 양태는 본 명세서에서 본 개시의 일부 구현예에 따른 방법, 장치(시스템), 및 논리 회로부의 흐름도 및/또는 블록도를 참조하여 설명된다. 흐름도 및/또는 블록도의 각 블록, 그리고 흐름도 및/또는 블록도의 블록의 조합은 논리 회로부에 의해 구현될 수 있는 것으로 이해될 것이다.
논리 회로부는 프로세서, 다른 프로그램가능 데이터 프로세싱 장치, 또는 다른 디바이스에서 구현되어 일련의 연산 단계가 프로세서, 다른 프로그램가능 장치 또는 다른 디바이스 상에서 수행되어 컴퓨터 구현 프로세스를 생성할 수 있어서, 컴퓨터, 다른 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령어가 흐름도 및/또는 블록도 블록 또는 블록들에 지정된 기능/동작을 구현하도록 한다.
도면에서의 흐름도 및 블록도는 본 개시의 다양한 실시예에 따른 시스템, 방법, 및 논리 회로부의 가능한 구현예의 아키텍처, 기능, 및 연산을 나타낸다. 이와 관련하여, 흐름도 또는 블록도에서의 각 블록은 모듈, 세그먼트, 또는 특정된 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 명령어의 일부를 나타낼 수 있다. 일부 대안적인 구현예에서, 블록에 언급된 기능은 도면에 언급된 순서를 벗어나서 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록은, 사실상, 실질적으로 동시에 실행될 수 있거나, 블록은, 수반되는 기능성에 따라, 때때로 역순으로 실행될 수 있다. 또한, 블록도 및/또는 흐름도에서의 각 블록, 및 블록도 및/또는 흐름도에서의 블록의 조합은 지정된 기능 또는 동작을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령어의 조합을 수행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 것에 유의한다.
본 개시는 그 구현예를 참조하여 구체적으로 제시되고 설명되었지만, 하기의 청구항의 사상 및 범위로부터 벗어나지 않고 형태 및 세부사항에 있어서 다양한 변경이 이루어질 수 있는 것으로 이해될 것이다. 따라서, 본 명세서에서 설명된 구현예는 제한의 목적이 아니라 단지 설명적인 의미로 고려되어야 한다. 본 개시는 상세한 설명이 아닌 첨부된 청구항에 의해 정의되고, 그 범위 내에서의 모든 차이는 본 개시에 포함되는 것으로서 해석되어야 한다.

Claims (20)

  1. 서비스 기반 파이프라인을 제공하는 방법으로서,
    워크로드 개시자(workload initiator)로부터 워크로드에 대한 설명을 포함하는 요청을 수신하는 단계;
    복수의 프로세서 자원의 런타임 활용도 메트릭을 검사하는 단계 - 상기 복수의 프로세싱 자원은 적어도 제1 그래픽 처리 장치(GPU: graphics processing unit) 및 제2 GPU를 포함함 -; 및
    상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 제1 GPU는 중앙 처리 장치(CPU: central processing unit)와 통합된 통합 GPU이고; 상기 제2 GPU는 개별 GPU인, 방법.
  3. 제1항에 있어서, 상기 복수의 프로세싱 자원은 비디오 인코딩/디코딩 가속기, 오디오 인코딩/디코딩 가속기, 디스플레이 제어기, 버스 인터페이스 제어기 및 메모리 서브시스템 제어기 중 적어도 하나를 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 요청을 제시하기 위한 애플리케이션 프로그래밍 인터페이스(API: application programming interface)를 상기 워크로드 개시자에 노출시키는 단계를 더 포함하는, 방법.
  5. 제1항에 있어서,
    상기 요청에 대한 응답으로 상기 워크로드 개시자에게 상기 워크로드 할당 추천을 제공하는 단계를 더 포함하는, 방법.
  6. 제1항에 있어서,
    상기 워크로드에 대한 상기 설명에 적어도 기반하여 상기 런타임 활용도 메트릭 및 상기 하나 이상의 정책을 식별하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는,
    상기 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 상기 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 단계를 포함하는, 방법.
  8. 제7항에 있어서, 상기 하나 이상의 정책에서 복수의 워크로드 할당이 설명되는, 방법.
  9. 제7항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는 또한,
    상기 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하는 단계를 포함하는, 방법.
  10. 제1항에 있어서,
    상기 워크로드 개시자에 자원 관리 통지를 등록하는 단계; 및
    기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 상기 워크로드 개시자에게 자원 가용성을 통지하는 단계를 더 포함하는, 방법.
  11. 서비스 기반 파이프라인을 제공하는 장치로서, 상기 장치는 컴퓨터 프로세서, 상기 컴퓨터 프로세서에 동작 가능하게 연결된 컴퓨터 메모리를 포함하고, 상기 컴퓨터 메모리에는 컴퓨터 프로그램 명령어가 배치되며, 상기 컴퓨터 프로그램 명령어는 상기 컴퓨터 프로세서에 의해 실행될 때, 상기 장치로 하여금,
    워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하는 단계;
    복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하는 단계 - 상기 복수의 프로세싱 자원은 적어도 제1 GPU 및 제2 GPU를 포함함 -; 및
    상기 활용도 메트릭 및 하나 이상의 정책에 기반하여서 워크로드 할당 추천을 결정하는 단계를 수행하게 하는, 장치.
  12. 제11항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는,
    상기 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 상기 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 단계를 포함하는, 장치.
  13. 제12항에 있어서, 상기 하나 이상의 정책에서 복수의 워크로드 할당이 설명되는, 장치.
  14. 제12항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는 또한,
    상기 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하는 단계를 포함하는, 장치.
  15. 제11항에 있어서, 상기 컴퓨터 프로그램 명령어를 더 포함하고, 상기 컴퓨터 프로그램 명령어는 실행될 때, 상기 장치로 하여금,
    상기 워크로드 개시자에 자원 관리 통지를 등록하는 단계; 및
    기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 상기 워크로드 개시자에게 자원 가용성을 통지하는 단계를 수행하게 하는, 장치.
  16. 서비스 기반 파이프라인을 제공하는 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체 상에 배치되고, 상기 컴퓨터 프로그램 제품은 컴퓨터 프로그램 명령어를 포함하고, 상기 컴퓨터 프로그램 명령어는 실행될 때 컴퓨터로 하여금:
    워크로드 개시자로부터 워크로드에 대한 설명을 포함하는 요청을 수신하는 단계;
    복수의 프로세싱 자원의 런타임 활용도 메트릭을 검사하는 단계 - 상기 복수의 프로세싱 자원은 적어도 제1 GPU 및 제2 GPU를 포함함 -; 및
    상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계를 수행하게 하는, 컴퓨터 프로그램 제품.
  17. 제16항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는,
    상기 런타임 활용도 메트릭에 기반하여 특정한 워크로드 할당에서 상기 복수의 프로세싱 자원에 대한 활용도 영향을 예측하는 단계를 포함하는, 컴퓨터 프로그램 제품.
  18. 제17항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는, 워크로드 내의 복수의 스트림에 대해 원자적으로(atomically) 수행되는, 컴퓨터 프로그램 제품.
  19. 제17항에 있어서, 상기 활용도 메트릭 및 하나 이상의 정책에 기반하여 워크로드 할당 추천을 결정하는 단계는 또한:
    상기 하나 이상의 정책에 명시된 하나 이상의 인자에 기반하여 복수의 워크로드 할당을 스코어링하는 단계를 포함하는, 컴퓨터 프로그램 제품.
  20. 제16항에 있어서, 상기 컴퓨터 프로그램 명령어를 더 포함하고, 상기 컴퓨터 프로그램 명령어는 실행될 때 상기 컴퓨터로 하여금:
    상기 워크로드 개시자에 자원 관리 통지를 등록하는 단계; 및
    기능의 변경 및 활용도의 변경 중 적어도 하나에 대한 응답으로 상기 워크로드 개시자에게 자원 가용성을 통지하는 단계를 수행하게 하는, 컴퓨터 프로그램 제품.
KR1020247014141A 2021-09-28 2022-09-23 최적화된 서비스 기반 파이프라인 제공 KR20240063189A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/487,480 US20230102063A1 (en) 2021-09-28 2021-09-28 Providing an optimized service-based pipeline
US17/487,480 2021-09-28
PCT/US2022/044605 WO2023055670A1 (en) 2021-09-28 2022-09-23 Providing an optimized service-based pipeline

Publications (1)

Publication Number Publication Date
KR20240063189A true KR20240063189A (ko) 2024-05-09

Family

ID=83903382

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247014141A KR20240063189A (ko) 2021-09-28 2022-09-23 최적화된 서비스 기반 파이프라인 제공

Country Status (4)

Country Link
US (1) US20230102063A1 (ko)
KR (1) KR20240063189A (ko)
CN (1) CN118043783A (ko)
WO (1) WO2023055670A1 (ko)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE151183T1 (de) * 1989-02-24 1997-04-15 Digital Equipment Corp Makler für die auswahl von rechnernetzwerkservern
US10148736B1 (en) * 2014-05-19 2018-12-04 Amazon Technologies, Inc. Executing parallel jobs with message passing on compute clusters
US9959146B2 (en) * 2015-10-20 2018-05-01 Intel Corporation Computing resources workload scheduling
US10728091B2 (en) * 2018-04-04 2020-07-28 EMC IP Holding Company LLC Topology-aware provisioning of hardware accelerator resources in a distributed environment
US11556862B2 (en) * 2019-09-14 2023-01-17 Oracle International Corporation Techniques for adaptive and context-aware automated service composition for machine learning (ML)
US11907770B2 (en) * 2019-09-19 2024-02-20 Huawei Cloud Computing Technologies Co., Ltd. Method and apparatus for vectorized resource scheduling in distributed computing systems using tensors
US20220197651A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Processing of data by multiple graphic processing devices
US20210271517A1 (en) * 2021-05-19 2021-09-02 Intel Corporation Resource selection based in part on workload

Also Published As

Publication number Publication date
CN118043783A (zh) 2024-05-14
US20230102063A1 (en) 2023-03-30
WO2023055670A1 (en) 2023-04-06

Similar Documents

Publication Publication Date Title
KR101159448B1 (ko) 논리적 파티션들 사이의 네트워크 어댑트 리소스 할당
JP5689526B2 (ja) マルチキュー・ネットワーク・アダプタの動的再構成によるリソース・アフィニティ
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
WO2022247105A1 (zh) 一种任务调度方法、装置、计算机设备和存储介质
US11100604B2 (en) Multiple application cooperative frame-based GPU scheduling
US10579416B2 (en) Thread interrupt offload re-prioritization
WO2014142498A1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
US20230094384A1 (en) Dynamic allocation of platform resources
KR101140914B1 (ko) 컴퓨팅 자원들을 제어하는 기술
US20220066928A1 (en) Pooled memory controller for thin-provisioning disaggregated memory
US11521042B2 (en) System and method to dynamically and automatically sharing resources of coprocessor AI accelerators
US9507637B1 (en) Computer platform where tasks can optionally share per task resources
KR20240063189A (ko) 최적화된 서비스 기반 파이프라인 제공
WO2022151951A1 (zh) 任务调度方法及管理系统
KR20240063163A (ko) 업스케일러 작업을 위한 플랫폼 리소스 선택
US20220100543A1 (en) Feedback mechanism for improved bandwidth and performance in virtual environment usecases
US20230108001A1 (en) Priority-based scheduling with limited resources
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US20230063893A1 (en) Simultaneous-multi-threading (smt) aware processor allocation for cloud real-time workloads
US20230401109A1 (en) Load balancer
US11954534B2 (en) Scheduling in a container orchestration system utilizing hardware topology hints
US20220206849A1 (en) Hardware support for low latency microservice deployments in switch
US20240028400A1 (en) Memory bandwidth allocation in multi-entity systems
Call Barreiro Leveraging disaggregated accelerators and non-volatile memories to improve the efficiency of modern datacenters
CN116957902A (zh) 用于GPU的NoC仲裁方法