KR20170120022A - 태스크 스케줄링 방법 및 장치 - Google Patents

태스크 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR20170120022A
KR20170120022A KR1020170029605A KR20170029605A KR20170120022A KR 20170120022 A KR20170120022 A KR 20170120022A KR 1020170029605 A KR1020170029605 A KR 1020170029605A KR 20170029605 A KR20170029605 A KR 20170029605A KR 20170120022 A KR20170120022 A KR 20170120022A
Authority
KR
South Korea
Prior art keywords
task
tasks
processing
cost
determining
Prior art date
Application number
KR1020170029605A
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 KR20170120022A publication Critical patent/KR20170120022A/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)
  • Stored Programmes (AREA)

Abstract

서로 의존 관계를 갖는 복수의 태스크들을 획득하고, 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하고, 특정 레벨에 배열된 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고, 복수의 할당 시나리오 각각에 대한 비용을 결정하고, 비용이 가장 낮은 제 1 할당 시나리오를 선택하고, 선택된 제 1 할당 시나리오에 기초하여 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하고, 각각의 할당 시나리오는 복수의 레벨들에 배열된 적어도 하나의 태스크 각각을 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 태스크 스케줄링 방법이 개시된다.

Description

태스크 스케줄링 방법 및 장치 {METHOD AND APPARATUS FOR SCHEDULING TASK}
본 개시는 태스크 스케줄링 방법 및 장치를 제공한다.
일반적인 이미징 및 비전 어플리케이션을 실행하기 위해서는 실시간 처리를 위한 높은 처리 능력 및 넓은 데이터 대역폭이 요구된다. 요구되는 사항을 충족하기 위해서는 고도로 최적화된 프로그래밍이 필요하며 종종 특수 목적 하드웨어를 활용해야 한다. 특히, 성능 및 전력이 제한되는 모바일 플랫폼에서 위와 같은 요구 사항이 충족되는지 여부는 중요하다. 일반적으로 최적화는 수동으로 수행되고 시간이 오래 걸리며 오류가 발생하기 쉽다. 최적화의 주요 구성 요소는 범용 함수 (general-purpose function) 라이브러리에서 잘 표현할 수 없는 함수 간의 데이터 이동을 최소화하기 위한 것이기 때문에, 표준 "최적화된" 소프트웨어 라이브러리를 사용하는 것의 이점은 제한적이다.
태스크 스케줄링 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 서로 의존 관계를 갖는 복수의 태스크들을 획득하는 단계; 상기 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 상기 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하는 단계; 특정 레벨에 배열된 상기 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하는 단계; 상기 복수의 할당 시나리오 각각에 대한 비용을 결정하는 단계; 비용이 가장 낮은 제 1 할당 시나리오를 선택하는 단계; 및 상기 선택된 제 1 할당 시나리오에 기초하여 상기 적어도 하나의 태스크를 상기 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하는 단계를 포함하며, 상기 각각의 할당 시나리오는 상기 복수의 레벨들에 배열된 상기 적어도 하나의 태스크 각각을 상기 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 태스크 스케줄링 방법을 제공할 수 있다.
또한, 본 개시의 제 2 측면은, 적어도 하나의 메모리; 및 상기 메모리에 저장된 상기 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써, 서로 의존 관계를 갖는 복수의 태스크들을 획득하는고, 상기 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 상기 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하고, 특정 레벨에 배열된 상기 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고, 상기 복수의 할당 시나리오 각각에 대한 비용을 결정하고, 비용이 가장 낮은 제 1 할당 시나리오를 선택하고, 상기 선택된 제 1 할당 시나리오에 기초하여 상기 적어도 하나의 태스크를 상기 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하며, 상기 각각의 할당 시나리오는 상기 복수의 레벨들에 배열된 상기 적어도 하나의 태스크 각각을 상기 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 태스크 스케줄링 디바이스를 제공할 수 있다.
또한, 본 개시의 제 3 측면은, 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써, 서로 의존 관계를 갖는 복수의 태스크들을 획득하는고, 상기 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 상기 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하고, 특정 레벨에 배열된 상기 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고, 상기 복수의 할당 시나리오 각각에 대한 비용을 결정하고, 비용이 가장 낮은 제 1 할당 시나리오를 선택하고, 상기 선택된 제 1 할당 시나리오에 기초하여 상기 적어도 하나의 태스크를 상기 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하며, 상기 각각의 할당 시나리오는 상기 복수의 레벨들에 배열된 상기 적어도 하나의 태스크 각각을 상기 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 컴퓨터로 읽을 수 있는 프로그램 코드를 포함하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
도 1은 일 실시예에 따른 컴퓨팅 시스템의 개요도이다.
도 2는 일 실시예에 따른 서버의 블록도이다.
도 3은 일 실시예에 따른 클라이언트 디바이스의 블록도이다.
도 4는 일 실시예에 따른 태스크들을 스케줄링하기 위한 방법을 설명하는 흐름도이다.
도 5는 일 실시예에 따른 복수의 노드를 갖는 데이터 플로우 그래프의 예시를 설명하는 도면이다.
도 6은 다중 프로세싱 디바이스를 갖는 시스템 온칩의 예시를 설명하는 도면이다.
본 명세서(특히, 특허 청구 범위에서)에서 사용된 “상기” 및 이와 유사한 지시어는 단수 및 복수 모두를 지시하는 것일 수 있다. 또한, 본 개시에 따른 방법을 설명하는 단계들의 순서를 명백하게 지정하는 기재가 없다면, 기재된 단계들은 적당한 순서로 행해질 수 있다. 기재된 단계들의 기재 순서에 따라 본 개시가 한정되는 것은 아니다.
본 명세서에서 다양한 곳에 등장하는 "일부 실시예에서" 또는 "일 실시예에서" 등의 어구는 반드시 모두 동일한 실시예를 가리키는 것은 아니다.
본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단” 및 “구성”등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.
또한, 이하에서 설명하는 다양한 기능들은 하나 이상의 컴퓨터 프로그램에 의해 구현되거나 지원 될 수 있으며, 각각의 컴퓨터 프로그램은 컴퓨터 판독 가능 프로그램 코드로 형성되고 컴퓨터 판독 가능 매체에 구현될 수 있다. "어플리케이션" 및 "프로그램"이라는 용어는 적절한 컴퓨터 판독 가능 프로그램에서 구현하기 위해 적응 된 하나 이상의 컴퓨터 프로그램, 소프트웨어 구성 요소, 명령어 세트, 절차, 기능, 객체, 클래스, 인스턴스, 관련 데이터 또는 그 일부를 나타낼 수 있다. 암호. "컴퓨터 판독 가능 프로그램 코드"라는 문구는 소스 코드, 오브젝트 코드 및 실행 가능 코드를 포함하여 모든 유형의 컴퓨터 코드를 포함할 수 있다. "컴퓨터 판독 가능 매체"라는 문구는 판독 전용 메모리 (ROM), 랜덤 액세스 메모리 (RAM), 하드 디스크 드라이브, 컴팩트 디스크 (CD), 디지털 등의 컴퓨터에 의해 액세스 될 수 있는 임의의 유형의 매체를 포함할 수 있다. 비디오 디스크 (DVD), 또는 임의의 다른 유형의 메모리일 수 있다. "비일시적인(non-transitory)" 컴퓨터 판독 가능 매체는 일시적인 전기 또는 다른 신호를 전송하는 유선, 무선, 광학 또는 다른 통신 링크를 배제할 수 있다. 비 일시적인 컴퓨터 판독 가능 매체는 데이터가 영구적으로 저장 될 수 있는 매체 및 재기록 가능한 광 디스크 또는 소거 가능 메모리 장치와 같이 데이터가 저장되고 나중에 겹쳐 쓰기 될 수 있는 매체를 포함할 수 있다.
이하에서 설명되는 다양한 기능들은 하나 이상의 컴퓨터 프로그램들을 저장하는 컴퓨터 판독 가능 매체에 결합 된 프로세서에 의해 구현되거나 지원될 수 있다. 이와 같이, 프로세서는 하나 이상의 컴퓨터 프로그램에 의해 정의 된 기능을 수행하기 위한 특수 목적 프로세서일 수 있다.
이미지 및 비전 처리와 관련된 데이터 플로우 알고리즘과 같은 복잡한 데이터 집약적인 작업에는, 적절한 결과를 생성하기 위해 올바른 순서로 실행해야 하는 수십, 수백 또는 수천 개의 태스크 또는 명령이 포함될 수 있다. 실행 시스템 또는 하드웨어에 따라, 멀티 코어 프로세서의 개별 프로세싱 요소와 같은 다수의 프로세싱 디바이스가, 하나 이상의 필요한 태스크를 동시에 실행하기 위해 이용될 수 있다. 다중(multiple) 프로세싱 디바이스는 이기종(heterogeneous)일 수 있으며, 이기종이란 상이한 하드웨어를 포함 할 수 있고, 예를 들어, 처리 속도, 처리량 등과 같은 상이한 처리 능력을 가질 수 있음을 의미한다. 복잡한 처리를 위해 여러 작업을 수행 할 수 있는 다중 프로세싱 디바이스가 있는 경우, 태스크 처리를 예약하고 다른 프로세싱 디바이스에 태스크를 할당해야 할 수 있다.
본 명세서에서 설명 되는 하나 이상의 실시예는, 컴퓨터 비전 어플리케이션 또는 컴퓨터 이미징 어플리케이션과 같은 데이터 집약적인 어플리케이션을 이용하여, 데이터 플로우 그래프의 함수를 데이터 이동 및 전력 소비를 최소화하면서 성능을 최대화하는 방식으로 이용 가능한 프로세싱 리소스에 할당하는 실행 계획(이하에서, 스케줄이라 함)을 자동으로 생성하는 장치 및 방법을 제공할 수 있다.
이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 컴퓨팅 시스템의 개요도이다.
도 1에 도시된 컴퓨팅 시스템(100)에는 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
도 1을 참조하면, 시스템(100)은 네트워크(102)를 포함하며, 네트워크(102)는 시스템(100) 내의 다양한 컴포넌트들 간의 통신을 용이하게 한다. 예를 들어, 네트워크(102)는 인터넷 프로토콜 (IP) 패킷, 프레임 릴레이 프레임 (frame relay frames), 비동기 전송 모드 (ATM) 셀 또는 네트워크 주소들 간에 다른 정보를 전달할 수 있다. 네트워크(102)는 하나 이상의 로컬 영역 네트워크 (LANs), 메트로폴리탄 영역 네트워크 (MANs), 광역 네트워크 (WANs), 인터넷과 같은 글로벌 네트워크의 전부 또는 일부, 또는 임의의 다른 통신 시스템 또는 하나 이상의 위치하는 다른 통신 시스템을 포함할 수 있다.
네트워크(102)는 적어도 하나의 서버(104)와 다양한 클라이언트 디바이스 (106-116)간의 통신을 용이하게 할 수 있다. 각 서버(104)는 하나 이상의 클라이언트 디바이스에 컴퓨팅 서비스를 제공 할 수 있는 임의의 적절한 컴퓨팅 디바이스 또는 프로세싱 디바이스를 포함한다. 각각의 서버(104)는 예를 들어, 하나 이상의 프로세싱 디바이스, 명령 및 데이터를 저장하는 하나 이상의 메모리, 및 네트워크(102)를 이용하여 통신을 용이하게 하는 하나 이상의 네트워크 인터페이스를 포함 할 수 있다.
각각의 클라이언트 디바이스(106-116)는 네트워크(102)를 통해 적어도 하나의 서버 또는 다른 컴퓨팅 디바이스(들)와 상호 작용하는 임의의 적합한 컴퓨팅 또는 프로세싱 디바이스를 나타낸다. 일 실시예에서, 클라이언트 디바이스(106-116)는 데스크톱 컴퓨터(106), 이동 전화 또는 스마트 폰(108), PDA(personal digital assistant) (110), 랩탑 컴퓨터(112), 태블릿 컴퓨터(114) 및 UHDTV(116)를 포함 할 수 있다.
일 실시예에서, 일부 클라이언트 디바이스(106-116)는 네트워크(102)와 간접적으로 통신할 수 있다. 예를 들어, 클라이언트 디바이스(108-110)는 휴대전화 기지국 또는 eNodeBs와 같은 하나 이상의 기지국(118)을 통해 통신할 수 있다. 또한, 클라이언트 디바이스들(112-116)은 IEEE 802.11 무선 액세스 포인트들과 같은 하나 이상의 무선 액세스 포인트들(120)을 통해 통신할 수 있다. 각 클라이언트 디바이스는 네트워크(102)와 직접 또는 임의의 적합한 중간 장치 또는 네트워크를 통해 네트워크(102)와 간접적으로 통신 할 수 있으며, 이에 제한되지 않는다. 일 실시예에서, 하나 이상의 클라이언트 디바이스(106-116)는 하나 이상의 위성 시스템을 통해 네트워크(102) 또는 서버(104)와 통신 할 수 있다.
이하에서 보다 상세히 설명되는 바와 같이, 하나 이상의 서버(104) 및 클라이언트 디바이스(106-116)는 이기종 다중 프로세서 시스템에 대한 하나 이상의 데이터 플로우 알고리즘을, 자동적으로 그리고 최적으로 스케줄링 또는 실행하도록 구성될 수 있다.
도 1에 도시된 컴퓨팅 시스템(100)에는 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다. 또한, 도 1은 본 명세서에 개시된 다양한 특징이 사용될 수 있는 하나의 동작 환경을 도시하지만, 이러한 특징은 임의의 다른 적합한 시스템에서도 사용될 수 있다.
도 2 및 도 3은 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
특히, 도 2는 예시적인 서버(200)를 도시하고, 도 3은 예시적인 클라이언트 디바이스(300)를 도시한다. 서버(200)는 도 1의 서버(104)를 나타낼 수 있고, 클라이언트 디바이스 (300)는 도 1의 하나 이상의 클라이언트 디바이스(106-114)를 나타낼 수 있다.
도 2를 참조하면, 서버(200)는 적어도 하나의 프로세싱 디바이스(210), 적어도 하나의 저장 디바이스(215), 적어도 하나의 통신 유닛(220) 및 적어도 하나의 입/출력 (I/O) 유닛(225)을 포함할 수 있다.
프로세싱 디바이스(210)는 메모리(230)에 로딩 될 수 있는 명령을 실행할 수 있다. 프로세싱 디바이스(210)는 임의의 적절한 수 및 종류의 프로세서 또는 다른 디바이스 유형을 포함 할 수 있다. 프로세싱 디바이스(210)의 유형은 마이크로프로세서, 마이크로컨트롤러, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 프로세서(DSP), FPGA(field programmable gate arrays), 특정 용도의 집적 회로, 하드웨어 가속기 및 이산 회로를 포함할 수 있다.
일 실시예에서, 메모리(230) 및 영구 저장소(persistent storage)(235)는, 정보(예를 들어, 데이터, 프로그램 코드 및/또는 일시적 또는 영구적인 다른 적절한 정보)를 저장하고 획득된 정보를 이용할 수 있는 임의의 구조(들)를 의미하는 저장 디바이스(215)를 의미할 수 있다. 메모리(230)는 랜덤 액세스 메모리(random access memory) 또는 임의의 다른 적절한 휘발성 또는 비휘발성 저장 디바이스를 나타낼 수 있다. 영구 저장소(235)는 준비 전용 메모리(ready only memory), 하드 드라이브, 플래시 메모리 또는 광 디스크와 같이 데이터의 장기 저장을 지원하는 하나 이상의 구성 요소 또는 디바이스를 포함 할 수 있다.
통신 유닛(220)은 다른 시스템 또는 디바이스와의 통신을 지원할 수 있다. 예를 들어, 통신 유닛(220)은 네트워크 인터페이스 카드(network interface card) 또는 네트워크(102)를 통한 통신을 용이하게 하는 무선 송수신기를 포함 할 수 있다. 통신 유닛(220)은 임의의 적합한 물리적 또는 무선 통신 링크를 통한 통신을 지원할 수 있다.
I/O 유닛(225)은 데이터의 입출력에 이용될 수 있다. 예를 들어, I/O 유닛(225)은 키보드, 마우스, 키패드, 터치 스크린 또는 다른 적절한 입력 디바이스를 통해 사용자의 입력을 수신할 수 있다. 또한, I/O 유닛(225)은 디스플레이, 프린터 또는 다른 적절한 출력 디바이스에 출력을 전송할 수 있다.
한편, 하나 이상의 클라이언트 디바이스(106-114)도 도 2에 도시된 것과 동일하거나 유사한 구조를 가질 수 있다. 예를 들어, 랩톱 또는 데스크탑 컴퓨터는 도 2에 도시 된 것과 동일한 또는 유사한 구조를 가질 수 있다.
도 3에 도시 된 바와 같이, 클라이언트 디바이스(300)는 안테나(305), 무선 주파수(RF) 송수신기(310), 송신(TX) 처리 회로(315), 마이크로폰(320), 수신(RX) 처리 회로(325) 및 입/출력(I/O) 인터페이스 (IF) (345), 키패드(350), 디스플레이(355) 및 메모리(360)를 포함할 수 있다. 메모리(360)는 기본 운영 시스템(OS) (361) 및 하나 이상의 어플리케이션(362)을 포함할 수 있다.
RF 송수신기(310)는 안테나(305)로부터 시스템의 다른 구성 요소에 의해 송신된 RF 신호를 수신할 수 있다. RF 송수신기(310)는 입력되는 RF 신호를 다운-컨버트(down-convert)하여 중간 주파수(IF) 또는 기저 대역 신호 (baseband signal) 를 생성할 수 있다. IF 또는 기저 대역 신호는, IF 또는 기저 대역 신호를 필터링, 디코딩 및/또는 디지털화함으로써 처리된, 기저 대역 신호를 생성하는 RX 처리 회로(325)로 전송된다. RX 처리 회로(325)는 처리된 기저 대역 신호 (음성 데이터 형태) 를 스피커(330) 또는 추가 처리 (웹 브라우징 데이터 형태로 처리) 를 위해 메인 프로세서(340)로 송신할 수 있다.
TX 처리 회로(315)는 메인 프로세서(340)로부터 마이크로폰(320) 또는 다른 송신 기저대역 데이터 (outgoing databand data) (예를 들어, 웹 데이터, 이메일 또는 대화 형 비디오 게임 데이터) 로부터 아날로그 또는 디지털 음성 데이터를 수신할 수 있다. TX 처리 회로(315)는 처리된 기저 대역 또는 IF 신호를 생성하기 위해 송신 기저대역 데이터를 인코딩, 다중화 및/또는 디지털화 할 수 있다. RF 송수신기(310)는 TX 처리 회로(315)로부터 출력 처리된 기저 대역 또는 IF 신호를 수신하고, 기저 대역 또는 IF 신호를 안테나(305)를 통해 송신되는 RF 신호로 업-컨버트(up-convert) 할 수 있다.
메인 프로세서(340)는 클라이언트 디바이스(300)의 전반적인 동작을 제어하기 위해 하나 이상의 프로세서 또는 다른 프로세싱 디바이스를 포함 할 수 있으며, 메모리(360)에 저장된 기본 OS 프로그램(361)을 실행할 수 있다. 예를 들어, 메인 프로세서(340)는 RF 처리기(310), RX 처리 회로(325) 및 TX 처리 회로(315)에 의한 순방향 채널 신호의 수신 및 역방향 채널 신호의 송신을 제어할 수 있다.
메인 프로세서(340)는 메모리(360)에 저장된 다른 프로세스들 및 프로그램들을 실행할 수 있다. 메인 프로세서(340)는 실행 프로세스에 의해 요구되는 바와 같이, 메모리(360)로 데이터를 이동하거나 메모리(360)로부터 데이터를 이동할 수 있다. 일 실시예에서, 메인 프로세서(340)는 OS 프로그램(361)에 기초하여 또는 외부 디바이스들 또는 연산자(operator)로부터 수신된 신호들에 응답하여 어플리케이션들(362)을 실행하도록 구성될 수 있다. 메인 프로세서(340)는 또한, 랩탑 컴퓨터 및 핸드헬드 컴퓨터(handheld computer)와 같은 다른 디바이스에 접속할 수 있는 클라이언트 디바이스(300)에 제공하는 I/O 인터페이스(345)에 결합될 수 있다. I/O 인터페이스(345)는 랩탑 컴퓨터 및 핸드헬드 컴퓨터 등과 메인 프로세서(340) 간의 통신 경로일 수 있다.
클라이언트 디바이스(300)의 연산자는 키패드(350)를 이용하여 클라이언트 디바이스(300)에 데이터를 입력 할 수 있다. 디스플레이(355)는 키패드(350) 및 디스플레이 유닛(355)에 연결된 액정 디스플레이, 또는 웹 사이트로부터 텍스트 및/또는 제한된 그래픽을 렌더링할 수 있는 다른 디스플레이를 포함 할 수 있다.
메모리(360)의 일부는 랜덤 액세스 메모리(RAM)를 포함 할 수 있고, 메모리(360)의 다른 부분은 플래시 메모리 또는 다른 판독 전용 메모리(ROM)를 포함 할 수 있다.
메인 프로세서(340), TX 처리 회로(315) 및 RX 처리 회로(325)는 임의의 적절한 수 및 유형의 프로세서 또는 다른 프로세싱 디바이스를 포함 할 수 있다. 예를 들어, 메인 프로세서(340), TX 처리 회로(315) 및 RX 처리 회로(325) 각각은 하나 이상의 마이크로프로세서, 마이크로컨트롤러, 중앙 처리 장치(CPUs), 그래픽 처리 장치(GPUs), FPGA(field programmable gate arrays), 특정 용도의 집적 회로, 하드웨어 가속기 및 이산 회로 등을 포함할 수 있다.
한편, 서버(200) 및 클라이언트 디바이스(300)는 각각 다수의 프로세싱 디바이스를 포함 할 수 있다. 프로세싱 디바이스는 이미지 및 비전 처리와 같은 복잡한 작업에 대한 태스크 또는 명령을 실행할 수 있다. 서버(200) 또는 클라이언트 디바이스(300) 내의 다수의 프로세싱 디바이스는 상이한 하드웨어를 포함 할 수 있고, 상이한 처리 능력(예를 들어 처리 속도, 처리량 등)을 갖는 이기종일 수 있다. 일 실시예에서, 서버(200) 또는 클라이언트 디바이스(300) 내의 다수의 프로세싱 디바이스 중 일부는 시스템 온칩(SoC)과 같은 이기종 멀티 코어 프로세서일 수 있다.
도 6은 다중 프로세싱 디바이스를 갖는 SoC의 예시를 설명하는 도면이다. 다중 프로세싱 디바이스가 복잡한 조작에 대해 다른 태스크를 실행하는 경우, 태스크를 스케줄링하고 다른 프로세싱 디바이스에 태스크를 지정해야 할 수 있다. 예를 들어, 서버(200) 및 클라이언트 디바이스(300)는 각각 복잡한 동작을 위해 상이한 작업을 수행하도록 스케줄링 될 수 있는 다수의 이종 프로세싱 디바이스를 포함할 수 있다.
또한, 서버(200), 클라이언트 디바이스(300) 또는 둘 모두는 다수의 이기종 프로세싱 디바이스에서 복잡한 단계를 처리하기 위해 상이한 태스크를 스케줄링하는 스케줄러의 기능을 수행하도록 동작 할 수 있다. 스케줄러는 수행될 각각의 태스크를 알고 있고, 또한 어떤 프로세싱 디바이스(들)가 각 태스크를 완료 할 수 있는지 알 수 있다. 스케줄러는 다양한 프로세싱 장치의 성능 및 각각의 태스크를 실행하기 위한 비용에 기초하여, 특정 프로세싱 디바이스에 각 태스크를 할당할 수 있다. 예를 들어, 일부 처리 장치 (예를 들어, CPU)는 거의 모든 태스크를 완료 할 수 있다. 다른 프로세싱 디바이스들 (예를 들어, GPU 또는 DSP) 은 특정 유형의 태스크들만을 처리 할 수 있다. 일부 프로세싱 디바이스는 다양한 작업을 수행 할 수 있지만 특정 작업에 최적화되어 있을 수 있다.
일 실시예에서, 모든 작업을 가장 빠른 프로세싱 디바이스에 할당함으로써 스케줄을 생성할 수 있다. 그러나 이러한 방법을 사용하면 처리 속도가 빠른 프로세싱 디바이스의 소비 전력 또는 메모리 사용량이 클 수 있으므로 전체 비용은 오히려 높아질 수 있다. 또한, 처리 속도가 느린 프로세싱 디바이스를 충분히 활용하지 못할 수 있다. 어떤 경우에는 처리 속도가 느린 프로세싱 디바이스를 이용하는 것이 작업을 수행하는 전체 시스템을 더 잘 활용하는 것일 수 있다.
예를 들어, 프로세싱 디바이스 1이 프로세싱 디바이스 2보다 빠르며 두 프로세싱 디바이스 모두 태스크 A를 완료 할 수 있는 경우, 보다 복잡한 태스크 B를 동시에 완료하기 위해 보다 빠른 프로세싱 디바이스 1이 필요한 경우, 처리 속도가 느린 프로세싱 디바이스 2가 태스크 A를 완료하는 것이 합리적 일 수 있다. 이하의 실시예들에서 설명된 스케줄러는 이하에서 보다 상세히 설명되는 바와 같이, 태스크, 각 프로세싱 디바이스의 능력, 및 상이한 태스크를 실행하는 상이한 프로세싱 디바이스의 비용을 고려함으로써 스케줄을 생성할 수 있다.
도 2 및 도 3은 컴퓨팅 시스템 내의 디바이스의 예를 도시하며, 도 2 및 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다. 예를 들어, 도 2 및 도 3의 다양한 컴포넌트는 다른 컴포넌트와 결합되거나, 더 세분화되거나 생략 될 수 있고, 특정 요구에 따라 추가 될 수 있다. 또한, 도 3은 휴대전화 또는 스마트 폰으로서의 클라이언트 디바이스(300)를 도시하지만, 클라이언트 디바이스는 다른 유형의 이동형 디바이스 또는 고정형 디바이스 디바이스로서 동작하도록 구성 될 수 있다. 또한, 컴퓨팅 및 통신 네트워크와 마찬가지로, 클라이언트 디바이스 및 서버는 다양한 구성으로 제공 될 수 있으며, 도 2 및 도 3은 임의의 특정 클라이언트 디바이스 또는 서버에 대해 본 개시를 한정하지 않는다.
도 4는 일 실시예에 따른 다수의 이기종 프로세싱 디바이스에 대한 복잡한 데이터 플로우 알고리즘의 태스크들을 스케줄링하기 위한 방법을 설명하는 흐름도이다.
이하에서, 도 4에 개시된 방법은 스케줄러(401)에 의해 수행되는 것으로 설명한다. 그러나, 이에 제한되지 않는다.
도 4를 참조하면, 스케줄러(401)는 알고리즘의 일부로서 수행 될 태스크들의 리스트를 획득하여 스케줄을 출력한다. 본 명세서에서 사용되는 태스크는, 이미지 및 비전 프로세싱과 관련된 알고리즘과 같은 복잡한 데이터 플로우 알고리즘과 관련하여, 하나 이상의 프로세싱 디바이스에 의해 실행될 프로세스, 태스크 또는 명령이다. 이하에서는 편의상 각 프로세스, 태스크 또는 명령을 태스크로 통칭하기로 한다.
일 실시예에서, 스케줄러(401)는 스케줄링에 요구되는 계산을 수행하기 위해 마스터 프로세싱 디바이스(master processing device)를 포함 할 수 있다. 일 실시예에서, 스케줄러(401)는 전체 알고리즘을 수행 할 디바이스 내의 하나 이상의 프로세싱 디바이스를 나타낼 수 있다. 다른 실시예에서, 스케줄러(401)는 전체 알고리즘을 수행 할 디바이스와 분리 된 디바이스 내의 하나 이상의 프로세싱 디바이스를 나타낼 수 있다. 예를 들어, 스케줄러(401)는 서버(104) 또는 도 1의 클라이언트 디바이스 (106-114) 중 하나와 같은 네트워크 디바이스 일 수 있다. 그러나, 이에 제한되지 않는다.
단계 410에서, 스케줄러(401)는 데이터 플로우 알고리즘과 관련된 태스크들의 리스트를 획득한다. 일 실시예에서 스케줄러(401)는 데이터베이스의 데이터 테이블에 질의(querying)하거나, 스케줄러(401)에 전송된 데이터 메시지 내의 태스크들의 리스트를 수신하거나, 임의의 다른 적절한 방법에 의해 태스크들의 리스트를 수신하는 것을 포함 할 수 있다. 또한, 아래에 설명 된 바와 같이, 스케줄러(401)는 리스트 내의 태스크들 사이의 의존성을 수신 및 검토하는 것을 포함 할 수 있다.
단계 415에서, 스케줄러(401)는 알고리즘의 태스크들을 실행할 수 있는 프로세싱 디바이스들의 기술적 세부 사항 (technical details) 을 획득할 수 있다. 일 실시예에서, 시스템 내의 모든 프로세싱 디바이스의 리스트, 각각의 프로세싱 디바이스가 실행할 수 있는 태스크들의 리스트, 및 처리 시간, 전력 소비 및 임의의 다른 관련된 자원 소비 정보 (예를 들어, 메모리 요구 사항) 를 포함하여 각 프로세싱 디바이스에 의해 실행될 때 각 태스크의 성능을 스케줄러(401)가 획득하는 것을 포함 할 수 있다. 기술적 세부 사항에는 각 프로세싱 디바이스에서 이용 가능한 메모리, 메모리의 위치, 메모리의 성능 특성, 및 데이터를 하나의 메모리 영역에서 다른 메모리 영역으로 이동시키는데 필요한 전력, 성능 및 리소스 소비(예를 들어, DMA 채널)와 관련된 비용이 포함될 수 있다. 각각의 프로세싱 디바이스에 대한 성능 및 메모리 정보는 사전에 경험적으로 결정될 수 있고 테이블 또는 라이브러리에 저장되고, 액세스될 수 있다. 예를 들어, API를 통해 액세스될 수 있다.
단계 420에서, 스케줄러(401)는 토폴로지 형태로 정렬된 데이터 플로우 그래프에 태스크를 배열할 수 있다. 데이터 플로우 그래프는 노드와 링크로 구성된 데이터 구조일 수 있다. 또한, 각 노드는 작업을 나타내고 각 링크는 두 노드 간의 데이터 플로우 관계를 나타낼 수 있다.
예를 들어, Node-A가 out-A라는 출력 이미지를 생성하고 Node-B가 out-A를 입력으로 사용하여 out-B를 생성하면 A의 출력과 B의 입력 사이에 직접 링크 (direct link) 가 존재하며, A는 생산자이고 B는 소비자라고 할 수 있다. 또한, 임의의 복잡성을 가진 그래프를 만들기 위해 노드와 링크를 추가 할 수 있다.
도 5는 일 실시예에 따른 복수의 노드를 갖는 데이터 플로우 그래프의 예시를 설명하는 도면이다.
도 5를 참조하면, 각각의 노드(501)는 데이터 플로우 알고리즘과 관련하여 하나 이상의 프로세싱 디바이스에 의해 실행될 작업을 나타낼 수 있다. 또한, 데이터 플로우 그래프(500)의 화살표(502)는, 노드(501) 간의 의존 관계 또는 계층 구조 링크 (hierarchy link) 를 나타낼 수 있다.
예를 들어, 태스크 C는 태스크 A에서 제공하는 데이터를 사용한다. 따라서 태스크 C는 태스크 A에 의존하고 태스크 A는 태스크 C보다 먼저 수행해야 한다. 한편, 태스크 G와 태스크 H는 태스크 D에 의존하며, 태스크 D가 완료되면 태스크 G와 태스크 H를 완료 할 수 있다.
데이터 플로우 그래프(500)는 레벨 0 내지 레벨 5의 6 개의 레벨로 구분될 수 있다. 각 태스크는 하나의 레벨에 할당된다. 의존성이 없는 태스크 (예를 들어, 태스크 A 및 태스크 B) 는 레벨 0에 배열된다. 레벨 0에 배열된 상위 태스크가 완료되면 레벨 1에 배열된 태스크를 수행 할 수 있다. 한편, 동일한 레벨의 태스크는 특별한 순서가 필요하지 않으며 동시에 수행 될 수 있다.
데이터 플로우 그래프(500)가 생성되면, 스케줄러(401)는 레벨 0에서 시작하여 데이터 플로우 그래프(500)의 각 레벨에 대해 다음과 같은 동작들(425 내지 435)을 수행할 수 있다.
도 4를 참조하면, 단계 425에서 스케줄러(401)는, 복수의 레벨들에 배열된 태스크들을 프로세싱 디바이스에 할당하는, 복수의 할당 시나리오를 결정할 수 있으며, 복수의 할당 시나리오는 각 태스크들을 수행할 수 있는 프로세싱 디바이스가 어떤 것인지에 기반하여 결정될 수 있다. 일 실시예에서, 스케줄러(401)는 현재 레벨의 태스크들에 대한 모든 가능한 '프로세싱 디바이스 할당 시나리오들'의 리스트를 결정할 수 있으며, 리스트는 각 태스크를 수행 할 수 있는 프로세싱 디바이스를 기반으로 결정될 수 있다.
예를 들어, 도 5에 도시된 레벨 0에는 태스크 A 및 태스크 B가 배열되고, 단계 415에서 결정된 프로세싱 디바이스가 CPU 및 DSP를 포함할 수 있다. 한편, CPU와 DSP 모두 태스크 A 및 태스크 B를 수행 할 수 있다. 표 1을 참조하면, 레벨 0에 대한 가능한 할당 시나리오가 제시되어 있으며, 표 1에는 태스크 A 및 태스크 B의 처리 시간이 포함된다.
한편, 특정 프로세싱 디바이스가 특정 태스크를 수행 할 능력이 없는 경우, 특정 프로세싱 디바이스와 특정 태스크의 조합은 리스트에 포함되지 않는다. 예를 들어, GPU는 특정 그래픽과 관련되지 않은(non-graphics) 태스크를 수행하지 못할 수 있다.
할당
시나리오
태스크A 태스크 B 태스크 A의 처리시간 태스크 B의 처리시간 순차적 또는 동시 수행
1 CPU CPU 100ms 90ms 순차적 수행
2 CPU DSP 100ms 50ms 동시 수행
3 DSP CPU 75ms 90ms 동시 수행
4 DSP DSP 75ms 50ms 순차적 수행
단계 430에서, 스케줄러(401)는 단계 425에서 결정된 복수의 할당 시나리오들 각각에 대한 비용을 결정할 수 있다. 일 실시예에서, 복수의 할당 시나리오들 각각에 대한 비용은 전체 처리시간에만 기초할 수 있다. 예를 들어, 표 1을 참조하면, 할당 시나리오 1 내지 4 중에서, 할당 시나리오 3의 태스크 A 및 태스크 B의 총 처리시간이 가장 짧으므로 (DSP와 CPU가 태스크 A 및 태스크 B를 동시에 수행 할 수 있기 때문에 총 처리시간은 90ms), 할당 시나리오 3의 비용이 가장 낮다.
다른 실시예에서, 복수의 할당 시나리오들 각각에 대한 비용은 모든 프로세싱 디바이스에 의해 소비되는 전체 처리시간 및 전력에 기초 할 수 있다. 복수의 할당 시나리오들 각각에 대한 비용에는 밀리세컨트(millisecond), 및 밀리볼츠(millivolts) 또는 밀리와트 시간(milliwatt-hours)이 포함될 수 있다. 또 다른 실시 예에서, 복수의 할당 시나리오들 각각에 대한 비용은 메모리 사용 또는 대역폭과 같은 다른 또는 추가적인 특성에 기초 할 수 있다.
복수의 할당 시나리오들 각각에 대한 비용을 계산하는데 다수의 파라미터가 사용되는 실시예에서, 다수의 파라미터는 중요도에 따라 가중되거나 우선 순위가 매겨 질 수 있다 (예를 들어, 실행 시간은 소비 된 전력보다 중요 할 수 있으므로 실행 시간은 전체 비용을 결정할 때 더 큰 가중치가 부여될 수 있다).
또한, 스케줄러(401)는 표 1에 도시 된 바와 같이 태스크 A 및 태스크 B를 수행하는 비용을 결정할 뿐만 아니라, 하나 이상의 휴리스틱 기술(heuristic techniques)을 사용하여 각 할당 시나리오에 대한 총 추정 비용을 결정하기 위해 비용을 신속하게 추정하여 나머지 모든 작업을 완료할 수 있다.
예를 들어 태스크 A 및 태스크 B의 비용이 표 1과 같이 결정되면, 스케줄러(401)는 휴리스틱 기술을 사용하여 C부터 N까지의 태스크를 완료하는데 드는 비용을 신속하게 예측할 수 있고 태스크 A 및 태스크 B의 비용을 합산하여 모든 복잡한 데이터 플로우 알고리즘 (A부터 N까지의 모든 태스크) 에 대한 총 예상 비용을 결정할 수 있다.
한편, 스케줄러(401)는 표 1의 할당 시나리오 각각의 경우, C부터 N까지의 태스크를 완료하는데 드는 예상 비용을 결정할 수 있다. 예를 들어, 할당 시나리오 1에서는 CPU가 태스크 A 및 태스크 B를 모두 수행한다. CPU가 태스크 A 및 태스크 B를 완료한다는 가정을 기반으로, 스케줄러(401)는 C부터 N까지의 태스크를 완료하는데 드는 비용을 추정할 수 있다. 할당 시나리오 2에서는 CPU가 작업 A를 수행하고 DSP가 작업 B를 수행한다. CPU가 태스크 A를 완료하고 DSP가 태스크 B를 완료한다는 가정을 기반으로, 스케줄러(401)는 C에서 N까지의 태스크를 완료하는데 드는 비용을 추정합니다.
한편, 스케줄러(401)는 휴리스틱 기술을 이용하여 가장 빠른 프로세서가 나머지 태스크 C에서 N까지에 모두 사용된다는 가정을 기반으로, C에서 N까지의 태스크를 완료하는데 드는 비용을 추정할 수 있다. 그 결과, 휴리스틱 기술을 이용하여 비용을 추정하게 되면 일반적으로 비용이 과소 평가될 수 있다. 휴리스틱 기술을 이용하여 추정된 비용이 과소 평가 된 경우, A* 알고리즘을 이용하여 최적의 결과를 생성 할 수 있다. 도 4에 개시된 내용은 A* 알고리즘의 요건을 따르므로, 휴리스틱 기술을 이용 추정된 비용이 과소 평가되는 경우에도 최적의 결과를 생성할 수 있다.
단계 435에서, 스케줄러(401)는 가장 낮은 전체 비용을 갖는 할당 시나리오를 선택할 수 있다. 일 실시예에서 스케줄러(401)는 특정 레벨에 배열된 태스크들 (예를 들어, 레벨 0에 배열된 태스크 A 및 태스크 B) 에서의 태스크들을 완료하는데 소모되는 비용 및 나머지 레벨들(태스크 C 내지 N)의 태스크들을 완료하는데 소모되는 추정 비용을 고려하여, 가장 낮은 전체 비용을 갖는 할당 시나리오를 선택할 수 있다. 스케줄러(401)는 다음 레벨에서의 비용 계산을 위해, 선택된 할당 시나리오에서의 각 태스크 별 프로세싱 디바이스 할당을 이용할 수 있다. 예를 들어, 표 1의 정보를 사용하여, 스케줄러(401)는 할당 시나리오 3을 선택하고, 할당 시나리오 3에 따라 태스크 A 및 태스크 B가 할당 될 것으로 가정할 수 있다.
단계 440에서, 스케줄러(401)는 데이터 플로우 그래프에서 검사 할 레벨이 더 있는지 결정할 수 있다. 검사 할 레벨이 더 있다고 판단되면, 스케줄러(401)는 단계 425로 진행할 수 있다.
현재 레벨 이후의 다음 레벨 각각에 대한 단계 425 내지 435에서의 할당 시나리오 및 비용은, 현재 레벨의 태스크 이외에 다른 요소들을 고려하여 결정할 수 있다. 일 실시예에서, 다음 레벨에서의 할당 시나리오 및 비용의 결정은 이전 레벨에서의 할당이 현재 레벨에 미치는 영향을 고려할 수 있다.
예를 들어, 레벨 0에서의 최저 비용 할당 시나리오가 결정되면, 스케줄러(401)는 레벨 1에 배열된 태스크 C 및 태스크 D를 처리할 수 있다. 태스크 C 및 태스크 D에 대한 하나의 할당 시나리오가 태스크 C 및 태스크 D에 대해서는 가장 적은 비용을 가질 수 있으나, 태스크 A 및 태스크 B에 대한 할당 시나리오로 고려할 때 태스크 C 및 태스크 D에 대한 최저 비용을 할당하는 시나리오는, 태스크 A 내지 D 에 대해서 가장 적은 비용이 아닐 수 있다. 예를 들어, 태스크 A에 대해 DSP를 사용함으로써, 태스크 C 및 태스크 D 모두에 DSP의 사용을 부적절하게 만들 수 있다.
레벨 1에 배열된 태스크 C 및 태스크 D에 대한 단계들(단계 425 내지 435)에서의 할당 시나리오들 및 비용들의 결정은, 레벨 0에 배열된 태스크 A 및 태스크 B 에 대한 대체 할당(alternative assignments)을 고려하는 것을 포함 할 수 있다 (예를 들어, 태스크 A에 대한 DSP 사용을 포함하지 않는 할당).
단계 440으로 다시 돌아가서, 검토할 레벨이 더 이상 없는 것으로 결정된 경우, 스케줄러(401)는 단계 445로 이동하여 데이터 플로우 그래프에서 각 태스크에 대해 프로세싱 디바이스를 할당함으로써 스케줄을 생성할 수 있다. 각 태스크에 대해 프로세싱 디바이스를 할당하는 것은, 단계 435에서 결정된 최저 비용 할당 시나리오에 기초할 수 있다. 예를 들어, 데이터 플로우 그래프(500)에서, 스케줄러(401)는 레벨 0 내지 5 각각에 대해 결정된 최저 비용 할당 시나리오에 기초하여, 각 태스크 A 내지 N에 대해 프로세싱 디바이스를 할당할 수 있다.
일반적으로 상위 태스크가 완료되면 각 레벨의 태스크는 동시에 실행될 수 있으므로 각 레벨의 테스크가 함께 고려될 수 있다. 일 실시예에서, 레벨의 특정 태스크는 이전 레벨의 태스크가 완료되기 전에 수행 될 준비가 될 수 있다. 예를 들어, 데이터 플로우 그래프(500)에서, 태스크 A 및 태스크 C는 단순 태스크 일 수 있는 반면, 태스크 B는 많은 계산 단계를 포함하는 복잡한 태스크일 수 있다. 스케줄러(401)가 태스크 A 및 태스크 C가 신속하게 완료 될 수 있는 할당 시나리오를 단계 425 내지 435에서 결정하면, 복잡한 태스크 B가 완료되기 전에 태스크 C가 완료 될 수 있다. 이 경우, 레벨 1에 배열된 태스크 C는 레벨 0에 배열된 태스크 B가 완료되기 전에 실행될 수 있다.
일 실시예에서, 스케줄러(401)는 데이터 플로우 그래프의 레벨을 준수하지 않을 수 있고, 대신 프론티어(frontier)에서 태스크를 고려할 수 있다. 프론티어는 모든 상위 태스크가 완료 됨에 따라 이후에 수행 할 준비가 된 태스크 그룹을 나타낼 수 있다. 예를 들어, 데이터 플로우 그래프(500)에서, 태스크 B가 완료되기 전에 태스크 A 및 C가 완료 될 수 있다면, 프론티어는 태스크 A, B 및 C 이후에 처리되는 태스크 E, F 및 D로 구성될 수 있다. 스케줄러(401)는 각 레벨의 태스크가 아닌, 각 프론티어의 태스크에 대해 단계 425 내지 435를 진행 할 수 있다.
도 4는 복잡한 데이터 플로우 알고리즘의 다수의 작업을 다수의 이종 처리 디바이스로 스케줄링하는 방법(400)의 일 예를 도시하며, 도 4는 다양한 변경이 이루어질 수 있다. 예를 들어, 도 4에 도시 된 단계는 중첩되거나, 병렬로 발생하거나, 다른 순서로 발생하거나, 또는 여러 번 발생할 수 있다. 또한 일부 단계는 결합되거나 제거 될 수 있으며 특정 요구에 따라 단계가 추가 될 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.

Claims (30)

  1. 태스크(tasks) 스케줄링 방법에 있어서,
    서로 의존 관계를 갖는 복수의 태스크들을 획득하는 단계;
    상기 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 상기 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하는 단계;
    특정 레벨의 상기 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하는 단계;
    상기 복수의 할당 시나리오 각각에 대한 비용을 결정하는 단계;
    비용이 가장 낮은 제 1 할당 시나리오를 선택하는 단계; 및
    상기 선택된 제 1 할당 시나리오에 기초하여 상기 적어도 하나의 태스크를 상기 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하는 단계를 포함하며,
    상기 각각의 할당 시나리오는 상기 복수의 레벨들에 배열된 상기 적어도 하나의 태스크 각각을 상기 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 태스크 스케줄링 방법.
  2. 제 1 항에 있어서,
    상기 다수의 프로세싱 디바이스는, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 처리 장치(DSP) 또는 멀티-코어 프로세서 내 코어 프로세서 중 적어도 하나를 포함하는, 태스크 스케줄링 방법.
  3. 제 1 항에 있어서,
    상기 할당 시나리오 각각의 비용을 결정하기 전에, 상기 다수의 프로세싱 디바이스 각각의 기술적 세부 사항(technical details)을 획득하는 단계;
    를 포함하는 방법.
  4. 제 1항에 있어서,
    상기 비용을 결정하는 단계는,
    상기 프로세싱 디바이스가 상기 적어도 하나의 태스크를 처리하는데 필요한 처리 시간을 결정하는 단계;
    상기 적어도 하나의 태스크를 처리하기 위해 상기 프로세싱 디바이스에서 소비되는 소비 전력을 결정하는 단계; 및
    상기 결정된 처리 시간 및 상기 결정된 소비 전력에 기초하여, 상기 복수의 할당 시나리오 각각에 대한 상기 비용을 결정하는 단계;
    를 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 비용을 결정하는 단계는,
    처리 속도가 가장 빠른 프로세서를 사용하여 상기 적어도 하나의 태스크를 처리하는 휴리스틱 기술(heuristic techniques)을 사용하여 상기 비용을 추정하는 단계;
    를 더 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 방법은,
    상위 태스크가 모두 완료된 하나 이상의 프론티어에 상기 복수의 태스크들 중 일부의 태스크를 배열하는 단계;
    상기 하나 이상의 프론티어에 배열된 상기 일부의 태스크를 상기 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하는 단계;
    상기 복수의 할당 시나리오 각각에 대한 비용을 결정하는 단계; 및
    비용이 가장 낮은 제 2 할당 시나리오를 선택하는 단계;
    를 더 포함하고,
    상기 스케줄을 생성하는 단계는,
    상기 제 1 할당 시나리오 및 상기 제 2 할당 시나리오에 기초하여 상기 태스크들의 스케줄을 생성하는 단계;
    를 포함하는, 방법.
  7. 제 1항에 있어서,
    상기 복수의 태스크들은, 이미징(imaging) 어플리케이션 또는 시각(vision) 애플리케이션과 관련된 데이터 플로우 알고리즘(data flow algorithm)과 관련된 것인, 방법.
  8. 제 1 항에 있어서,
    상기 제 1 할당 시나리오를 선택하는 단계는,
    상기 적어도 하나의 태스크 중에서, 상기 다수의 프로세싱 디바이스 각각이 처리할 수 있는 태스크를 결정하는 단계; 및
    상기 프로세싱 디바이스가 특정 태스크를 수행할 능력이 없는 경우, 상기 프로세싱 디바이스와 상기 특정 태스크의 조합을 상기 제 1 할당 시나리오로부터 제외하는 단계;
    를 더 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 비용을 결정하는 단계는,
    상기 복수의 프로세싱 디바이스가 상기 복수의 태스크들을 처리하는 비용을 경험적으로(empirically) 결정하는 단계;
    를 포함하는, 방법.
  10. 제 1 항에 있어서,
    상기 복수의 태스크들은, 데이터 플로우 알고리즘과 연관되고, 상기 복수의 레벨들을 포함하는 데이터 플로우 그래프로 배열되는, 방법.
  11. 태스크 스케줄링 디바이스에 있어서,
    적어도 하나의 메모리; 및
    상기 메모리에 저장된 상기 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고,
    상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    서로 의존 관계를 갖는 복수의 태스크들을 획득하는고,
    상기 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 상기 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하고,
    특정 레벨에 배열된 상기 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고,
    상기 복수의 할당 시나리오 각각에 대한 비용을 결정하고,
    비용이 가장 낮은 제 1 할당 시나리오를 선택하고,
    상기 선택된 제 1 할당 시나리오에 기초하여 상기 적어도 하나의 태스크를 상기 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하며,
    상기 각각의 할당 시나리오는 상기 복수의 레벨들에 배열된 상기 적어도 하나의 태스크 각각을 상기 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 태스크 스케줄링 디바이스.
  12. 제 11항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 다수의 프로세싱 디바이스는, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 처리 장치(DSP) 또는 멀티-코어 프로세서 내 코어 프로세서 중 적어도 하나를 포함하는, 태스크 스케줄링 디바이스.
  13. 제 11항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 할당 시나리오 각각의 비용을 결정하기 전에, 상기 다수의 프로세싱 디바이스 각각의 기술적 세부 사항(technical details)을 획득하는, 태스크 스케줄링 디바이스.
  14. 제 11항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 프로세싱 디바이스가 상기 적어도 하나의 태스크를 처리하는데 필요한 처리 시간을 결정하고,
    상기 적어도 하나의 태스크를 처리하기 위해 상기 프로세싱 디바이스에서 소비되는 소비 전력을 결정하고,
    상기 결정된 처리 시간 및 상기 결정된 소비 전력에 기초하여, 상기 복수의 할당 시나리오 각각에 대한 상기 비용을 결정하는, 태스크 스케줄링 디바이스.
  15. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    처리 속도가 가장 빠른 프로세서를 사용하여 상기 적어도 하나의 태스크를 처리하는 휴리스틱 기술(heuristic techniques)을 사용하여 상기 비용을 추정하는, 태스크 스케줄링 디바이스.
  16. 제 11항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상위 태스크가 모두 완료된 하나 이상의 프론티어에 상기 복수의 태스크들 중 일부의 태스크를 배열하고,
    상기 하나 이상의 프론티어에 배열된 상기 일부의 태스크를 상기 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고,
    상기 복수의 할당 시나리오 각각에 대한 비용을 결정하고,
    비용이 가장 낮은 제 2 할당 시나리오를 선택하고,
    상기 제 1 할당 시나리오 및 상기 제 2 할당 시나리오에 기초하여 상기 태스크들의 스케줄을 생성하는, 태스크 스케줄링 디바이스.
  17. 제 11항에 있어서,
    상기 복수의 태스크들은, 이미징(imaging) 어플리케이션 또는 시각(vision) 애플리케이션과 관련된 데이터 플로우 알고리즘(data flow algorithm)과 관련된 것인, 태스크 스케줄링 디바이스.
  18. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 적어도 하나의 태스크 중에서, 상기 다수의 프로세싱 디바이스 각각이 처리할 수 있는 태스크를 결정하고,
    상기 프로세싱 디바이스가 특정 태스크를 수행할 능력이 없는 경우, 상기 프로세싱 디바이스와 상기 특정 태스크의 조합을 상기 제 1 할당 시나리오로부터 제외하는, 태스크 스케줄링 디바이스.
  19. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 복수의 프로세싱 디바이스가 상기 복수의 태스크들을 처리하는 비용을 경험적으로 결정하는, 태스크 스케줄링 디바이스.
  20. 제 11 항에 있어서,
    상기 복수의 태스크들은, 데이터 플로우 알고리즘과 연관되고, 상기 복수의 레벨들을 포함하는 데이터 플로우 그래프로 배열되는, 태스크 스케줄링 디바이스.
  21. 컴퓨터로 읽을 수 있는 프로그램 코드를 포함하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체로서,
    적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    서로 의존 관계를 갖는 복수의 태스크들을 획득하는고,
    상기 복수의 태스크들 간의 의존 관계(dependency relationships)에 기초하여 상기 복수의 태스크들 각각을, 적어도 하나의 태스크를 갖는 복수의 레벨들에 배열하고,
    특정 레벨에 배열된 상기 적어도 하나의 태스크를 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고,
    상기 복수의 할당 시나리오 각각에 대한 비용을 결정하고,
    비용이 가장 낮은 제 1 할당 시나리오를 선택하고,
    상기 선택된 제 1 할당 시나리오에 기초하여 상기 적어도 하나의 태스크를 상기 다수의 프로세싱 디바이스에 할당함으로써 스케줄을 생성하며,
    상기 각각의 할당 시나리오는 상기 복수의 레벨들에 배열된 상기 적어도 하나의 태스크 각각을 상기 다수의 프로세싱 디바이스 중 하나의 프로세싱 디바이스에 할당하는, 기록매체.
  22. 제 21 항에 있어서,
    상기 다수의 프로세싱 디바이스는, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 디지털 신호 처리 장치(DSP) 또는 멀티-코어 프로세서 내 코어 프로세서 중 적어도 하나를 포함하는, 기록매체.
  23. 제 21 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    상기 할당 시나리오 각각의 비용을 결정하기 전에, 상기 다수의 프로세싱 디바이스 각각의 기술적 세부 사항(technical details)을 획득하는, 기록매체.
  24. 제 21항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    상기 프로세싱 디바이스가 상기 적어도 하나의 태스크를 처리하는데 필요한 처리 시간을 결정하고,
    상기 적어도 하나의 태스크를 처리하기 위해 상기 프로세싱 디바이스에서 소비되는 소비 전력을 결정하고,
    상기 결정된 처리 시간 및 상기 결정된 소비 전력에 기초하여, 상기 복수의 할당 시나리오 각각에 대한 상기 비용을 결정하는, 기록매체.
  25. 제 21 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    처리 속도가 가장 빠른 프로세서를 사용하여 상기 적어도 하나의 태스크를 처리하는 휴리스틱 기술(heuristic techniques)을 사용하여 상기 비용을 추정하는, 기록매체.
  26. 제 21항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    상위 태스크가 모두 완료된 하나 이상의 프론티어에 상기 복수의 태스크들 중 일부의 태스크를 배열하고,
    상기 하나 이상의 프론티어에 배열된 상기 일부의 태스크를 상기 다수의 프로세싱 디바이스에 할당하는 복수의 할당 시나리오를 결정하고,
    상기 복수의 할당 시나리오 각각에 대한 비용을 결정하고,
    비용이 가장 낮은 제 2 할당 시나리오를 선택하고,
    상기 제 1 할당 시나리오 및 상기 제 2 할당 시나리오에 기초하여 상기 태스크들의 스케줄을 생성하는, 기록매체.
  27. 제 21항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    상기 복수의 태스크들은, 이미징(imaging) 어플리케이션 또는 시각(vision) 애플리케이션과 관련된 데이터 플로우 알고리즘(data flow algorithm)과 관련된 것인, 기록매체.
  28. 제 21 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    상기 적어도 하나의 태스크 중에서, 상기 다수의 프로세싱 디바이스 각각이 처리할 수 있는 태스크를 결정하고,
    상기 프로세싱 디바이스가 특정 태스크를 수행할 능력이 없는 경우, 상기 프로세싱 디바이스와 상기 특정 태스크의 조합을 상기 제 1 할당 시나리오로부터 제외하는, 기록매체.
  29. 제 21 항에 있어서,
    상기 적어도 하나의 프로세서는 상기 프로그램 코드를 실행함으로써,
    상기 복수의 프로세싱 디바이스가 상기 복수의 태스크들을 처리하는 비용을 경험적으로(empirically) 결정하는, 기록매체.
  30. 제 21 항에 있어서,
    상기 복수의 태스크들은, 데이터 플로우 알고리즘과 연관되고, 상기 복수의 레벨들을 포함하는 데이터 플로우 그래프로 배열되는, 기록매체.
KR1020170029605A 2016-04-20 2017-03-08 태스크 스케줄링 방법 및 장치 KR20170120022A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/134,287 2016-04-20
US15/134,287 US10877816B2 (en) 2016-04-20 2016-04-20 Optimal task scheduler

Publications (1)

Publication Number Publication Date
KR20170120022A true KR20170120022A (ko) 2017-10-30

Family

ID=60089021

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170029605A KR20170120022A (ko) 2016-04-20 2017-03-08 태스크 스케줄링 방법 및 장치

Country Status (2)

Country Link
US (1) US10877816B2 (ko)
KR (1) KR20170120022A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190061241A (ko) * 2017-11-27 2019-06-05 주식회사 비디 리소스 통합관리를 위한 메소스 처리 장치 및 방법
KR20200075883A (ko) * 2017-12-11 2020-06-26 아피니티 유럽 테크놀로지즈 리미티드 태스크 할당 시스템에서의 행동 페어링을 위한 기술들
KR20200122364A (ko) * 2018-10-11 2020-10-27 후아웨이 테크놀러지 컴퍼니 리미티드 자원 스케줄링 방법 및 단말 장치
KR20210066887A (ko) * 2018-09-28 2021-06-07 아피니티, 엘티디. 태스크 할당 시스템에서 런타임 조건들에 행동 페어링을 적응시키기 위한 기술들
KR20210103928A (ko) * 2020-02-14 2021-08-24 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체
KR20220157026A (ko) * 2021-05-20 2022-11-29 한국전자통신연구원 클라우드 인프라 서비스 제공 장치 및 이를 이용한 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10761900B1 (en) 2015-04-30 2020-09-01 V2Com S.A. System and method for secure distributed processing across networks of heterogeneous processing nodes
US10656964B2 (en) * 2017-05-16 2020-05-19 Oracle International Corporation Dynamic parallelization of a calculation process
US11188434B2 (en) 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
WO2019169035A1 (en) * 2018-03-01 2019-09-06 V2COM, Inc. System and method for secure distributed processing across networks of heterogeneous processing nodes
WO2020086109A1 (en) * 2018-10-26 2020-04-30 Siemens Aktiengesellschaft Receding horizon planning for logistics
CN109684062B (zh) * 2018-12-25 2020-10-20 人和未来生物科技(长沙)有限公司 基于成本的跨云平台任务调度方法和系统
US11074106B2 (en) * 2019-07-01 2021-07-27 Sap Se Sorting tasks with dependencies and resource sharing
CN110502589B (zh) * 2019-08-20 2023-12-01 创新先进技术有限公司 一种节点血缘关系确定方法、装置以及电子设备
CN111782580B (zh) * 2020-06-30 2024-03-01 北京百度网讯科技有限公司 复杂计算装置、方法、人工智能芯片和电子设备
US11675631B2 (en) * 2020-09-29 2023-06-13 Kyndryl, Inc. Balancing mainframe and distributed workloads based on performance and costs
CA3209125A1 (en) 2021-01-31 2022-08-04 Ab Initio Technology Llc Data processing system with manipulation of logical dataset groups
WO2023249558A1 (en) * 2022-06-22 2023-12-28 Gp Network Asia Pte. Ltd. Method and system for adaptively executing a plurality of tasks

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392430A (en) * 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
US5768594A (en) * 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
US7735086B2 (en) * 2004-02-27 2010-06-08 International Business Machines Corporation Methods and arrangements for planning and scheduling change management requests in computing systems
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US8185422B2 (en) * 2006-07-31 2012-05-22 Accenture Global Services Limited Work allocation model
US8984520B2 (en) * 2007-06-14 2015-03-17 Microsoft Technology Licensing, Llc Resource modeling and scheduling for extensible computing platforms
US8458710B2 (en) * 2009-09-03 2013-06-04 Hewlett-Packard Development Company, L. P. Scheduling jobs for execution on a computer system
US20130007088A1 (en) * 2011-06-28 2013-01-03 Nokia Corporation Method and apparatus for computational flow execution
CN105940378B (zh) * 2014-02-27 2019-08-13 英特尔公司 用于分配可配置计算资源的技术

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190061241A (ko) * 2017-11-27 2019-06-05 주식회사 비디 리소스 통합관리를 위한 메소스 처리 장치 및 방법
KR20200075883A (ko) * 2017-12-11 2020-06-26 아피니티 유럽 테크놀로지즈 리미티드 태스크 할당 시스템에서의 행동 페어링을 위한 기술들
KR20210040185A (ko) * 2017-12-11 2021-04-12 아피니티 유럽 테크놀로지즈 리미티드 태스크 할당 시스템에서의 행동 페어링을 위한 기술들
KR20210066887A (ko) * 2018-09-28 2021-06-07 아피니티, 엘티디. 태스크 할당 시스템에서 런타임 조건들에 행동 페어링을 적응시키기 위한 기술들
KR20200122364A (ko) * 2018-10-11 2020-10-27 후아웨이 테크놀러지 컴퍼니 리미티드 자원 스케줄링 방법 및 단말 장치
US11765754B2 (en) 2018-10-11 2023-09-19 Huawei Technologies Co., Ltd. Resource scheduling method and terminal device
KR20210103928A (ko) * 2020-02-14 2021-08-24 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체
US11954522B2 (en) 2020-02-14 2024-04-09 Beijing Baidu Netcom Science And Technology Co., Ltd. Method for processing tasks in parallel, device and storage medium
KR20220157026A (ko) * 2021-05-20 2022-11-29 한국전자통신연구원 클라우드 인프라 서비스 제공 장치 및 이를 이용한 방법

Also Published As

Publication number Publication date
US20170308411A1 (en) 2017-10-26
US10877816B2 (en) 2020-12-29

Similar Documents

Publication Publication Date Title
KR20170120022A (ko) 태스크 스케줄링 방법 및 장치
US9667749B2 (en) Client-initiated leader election in distributed client-server systems
US20170353397A1 (en) Offloading Execution of an Application by a Network Connected Device
US11016673B2 (en) Optimizing serverless computing using a distributed computing framework
US9083608B2 (en) Automatically selecting appropriate platform to run application in cloud computing environment
EP4080362A2 (en) Method and apparatus for creating a container
US9906589B2 (en) Shared management service
CN110389816B (zh) 用于资源调度的方法、装置以及计算机可读介质
US20130247061A1 (en) Method and apparatus for the scheduling of computing tasks
CN109284184A (zh) 一种基于容器化技术的分布式机器学习平台的搭建方法
JP2022511613A (ja) 量子コンピューティング・ジョブの共同スケジューリング
US9063918B2 (en) Determining a virtual interrupt source number from a physical interrupt source number
KR20200076700A (ko) 성능 기반 패킷 스케줄러를 제공하기 위한 장치 및 방법
CN114157701A (zh) 一种任务测试方法、装置、设备以及存储介质
Shiraz et al. A lightweight distributed framework for computational offloading in mobile cloud computing
WO2015042904A1 (zh) 一种多核系统中资源池的调度方法、装置和系统
Justino et al. Outsourcing resource-intensive tasks from mobile apps to clouds: Android and aneka integration
US9501303B1 (en) Systems and methods for managing computing resources
KR102123750B1 (ko) 네트워크 서비스 요청
US11704119B2 (en) Migrating infrastructure as code between different cloud providers
Kim et al. Cooperative scheduling schemes for explainable DNN acceleration in satellite image analysis and retraining
CN115168040A (zh) 一种作业抢占调度方法、装置、设备和存储介质
Tesfatsion et al. Power and performance optimization in FPGA‐accelerated clouds
CN114490000A (zh) 任务处理方法、装置、设备及存储介质
US9613000B2 (en) Techniques to refine solutions to linear optimization problems using symmetries