KR20200136468A - 작업 스케줄링 - Google Patents
작업 스케줄링 Download PDFInfo
- Publication number
- KR20200136468A KR20200136468A KR1020207030753A KR20207030753A KR20200136468A KR 20200136468 A KR20200136468 A KR 20200136468A KR 1020207030753 A KR1020207030753 A KR 1020207030753A KR 20207030753 A KR20207030753 A KR 20207030753A KR 20200136468 A KR20200136468 A KR 20200136468A
- Authority
- KR
- South Korea
- Prior art keywords
- manipulation
- job
- jobs
- scheduling
- queue
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 작업 스케줄링 방법 및 장치를 제공한다. 여기서, 상기 작업 스케줄링 방법은 조작 작업 대기열 중 복수 개의 조작 작업에 각각 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계; 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계를 포함한다.
Description
본 발명은 딥 러닝 분야에 관한 것으로, 특히 작업 스케줄링 방법 및 장치, 저장 매체에 관한 것이다.
딥 러닝 모델의 훈련은 딥 러닝에서의 핵심 절차이다. 훈련 과정은 엄청 복잡하고, 사용된 하드웨어 자원도 엄청 다양하다.
현재 각 오픈 소스 프레임워크는 모두 한 세트의 자신만의 스케줄링 방법으로 딥 러닝 모델의 훈련 과정을 관리하지만, 대다수는 방향성 비순환 그래프(Directed Acyclic Graph)를 통해 조작 작업 사이의 의존 관계를 설명하여, 훈련 과정이 정확한 흐름대로 수행되도록 하지만, 이러한 훈련 플랫폼의 작업 스케줄링 방법의 효율은 높지 않다.
본 발명은 작업 스케줄링 방법 및 장치 및 컴퓨터 저장 매체를 제공한다.
본 발명의 실시예의 제1 측면에 따르면, 작업 스케줄링 방법을 제공하고, 상기 방법은,
조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계; 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계를 포함한다.
선택적으로, 상기 조작 작업에 대응되는 오퍼랜드는 읽기 오퍼랜드 및 쓰기 오퍼랜드 중 적어도 하나를 포함한다.
선택적으로, 상기 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계는, 제2 조작 작업이 제1 조작 작업의 쓰기 오퍼랜드에 대한 읽기 조작을 포함하거나, 상기 제2 조작 작업이 상기 제1 조작 작업의 오퍼랜드에 대한 쓰기 조작을 포함하면, 상기 제2 조작 작업이 상기 제1 조작 작업에 의존하는 것으로 결정하는 단계 - 상기 제1 조작 작업 및 상기 제2 조작 작업은 상기 조작 작업 대기열에서의 상이한 조작 작업임 - 를 포함한다.
선택적으로, 상기 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계는, 제2 조작 작업이 제1 조작 작업의 읽기 오퍼랜드에 대한 읽기 조작을 포함하면, 상기 제1 조작 작업과 상기 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정하는 단계를 더 포함한다.
선택적으로, 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는, 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 복수 개의 조작 작업의 스케줄링 순서를 결정하는 단계; 상기 조작 작업 대기열에서의 현재 조작 작업을 위해 메모리를 할당하는 단계; 상기 메모리를 할당 완료한 후, 상기 현재 조작 작업을 상기 현재 조작 작업에 대응되는 컨텍스트에 스케줄링하여 실행하는 단계; 및 상기 스케줄링 순서에 따라 상기 다음 조작 작업의 메모리 할당을 수행하는 단계를 포함한다.
선택적으로, 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 복수 개의 조작 작업의 스케줄링 순서를 결정하는 단계는, 상기 복수 개의 조작 작업에서의 제1 조작 작업과 상기 복수 개의 조작 작업에서의 제2 조작 작업 사이에 의존성이 존재하지 않으면, 상기 제1 조작 작업과 상기 제2 조작 작업을 병행으로 호출하는 것으로 결정하는 단계; 및 상기 제2 조작 작업이 상기 제1 조작 작업에 의존하면, 상기 제1 조작 작업 이후에 상기 제2 조작 작업을 스케줄링하는 것으로 결정하는 단계 중 적어도 하나를 포함한다.
선택적으로, 상기 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계는, 상기 복수 개의 조작 작업에 포함된 M 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업을 얻는 단계 - 각 병합 통신 조작 작업은 상기 M 개의 통신 조작 작업에서의 적어도 하나의 통신 조작 작업을 포함하고, M은 1보다 크거나 같은 정수임 - ; 및 상기 적어도 하나의 병합 통신 조작 작업에 대응되는 오퍼랜드 및 상기 복수 개의 조작 작업중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계를 포함한다.
선택적으로, 상기 병합 통신 조작 작업에 대응되는 오퍼랜드는, 상기 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 읽기 오퍼랜드의 세트, 및 상기 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 쓰기 오퍼랜드의 세트 중 적어도 하나를 포함한다.
선택적으로, 상기 조작 작업 대기열은 제1 조작 작업 대기열 및 제2 조작 작업 대기열을 포함하고, 여기서, 상기 제1 조작 작업 대기열은 상기 복수 개의 조작 작업에서의 통신 조작 작업을 포함하며, 상기 제2 조작 작업 대기열은 상기 복수 개의 조작 작업에서의 비 통신 조작 작업을 포함하며; 여기서, 상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에 포함된 조작 작업은 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여 결정된 스케줄링 순서에 따라 배열된 것이다.
선택적으로, 상기 방법은, 상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보를 기록하는 단계 - 상기 제1 조작 작업 대기열에서의 조작 작업이 상기 제2 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하거나, 상기 제2 조작 작업 대기열에서의 조작 작업이 상기 제1 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하면, 상기 의존 정보는 상기 적어도 하나의 조작 작업에서의 마지막 조작 작업의 정보를 포함함 - 를 더 포함하고; 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는, 상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보에 기반하여, 상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에서의 조작 작업을 스케줄링하는 단계를 포함한다.
선택적으로, 상기 방법은, 메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하는 단계 - 상기 제2 조작 작업 대기열은 상기 조작 작업 대기열 중 상기 메모리 복구 조작 작업 이외의 상기 비 통신 조작 작업을 포함함 - 를 더 포함한다.
선택적으로, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하기 전, 상기 방법은, 상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트를 결정하는 단계 - 상기 조작 작업에 대응되는 컨텍스트는 추상 자원 및 정보 스트림을 포함함 - 를 더 포함하고; 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는, 상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 상기 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계를 포함한다.
선택적으로, 상기 정보 스트림은 통합 컴퓨팅 기기 아키텍처(Compute Unified Device Architecture, CUDA) 정보 스트림 및 호스트 정보 스트림 중 적어도 하나를 포함한다.
선택적으로, 상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는, 상기 복수 개의 조작 작업에서의 적어도 두 개의 조작 작업 사이에 의존성이 없고 상기 적어도 두 개의 조작 작업이 상이한 추상 자원에 대응되면, 상기 적어도 두 개의 조작 작업을 병행으로 스케줄링하는 단계를 포함한다.
선택적으로, 상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 상기 제3 조작 작업 및 제4 조작 작업에 대응되는 정보 스트림이 CUDA 정보 스트림이면, 제1 동기화 인터페이스를 호출하여 상기 제3 조작 작업 및 상기 제4 조작 작업을 동기화하는 단계를 포함한다.
선택적으로, 상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는, 상기 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 상기 제3 조작 작업 및 상기 제4 조작 작업에서의 적어도 하나의 조작 작업에 대응되는 정보 스트림이가 호스트 정보 스트림이면, 제2 동기화 인터페이스를 호출하여 상기 제3 조작 작업 및 상기 제4 조작 작업을 동기화하는 단계를 포함한다.
본 발명의 실시예의 제2 측면에 따르면, 작업 스케줄링 장치를 제공하고, 상기 장치는,
조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하도록 구성된 의존 관계 결정 모듈; 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하도록 구성된 스케줄링 모듈을 포함한다.
본 발명의 실시예의 제3 측면에 따르면, 컴퓨터 프로그램이 저장되어 있는 비휘발성 컴퓨터 판독 가능한 저장 매체를 제공하고, 상기 컴퓨터 프로그램은 상기 제1 측면의 임의의 가능한 구현 방식에서의 작업 스케줄링 방법을 실행하기 위한 것이다.
본 발명의 실시예의 제4 측면에 따르면, 작업 스케줄링 장치를 제공하고, 상기 장치는,
프로세서; 및 프로세서 실행 가능한 명령어를 저장하기 위한 메모리를 포함하고; 여기서, 상기 프로세서는, 상기 메모리에 저장된 실행 가능한 명령어를 호출하여, 상기 제1 측면의 임의의 가능한 구현 방식에서의 작업 스케줄링 방법을 구현한다.
본 발명의 실시예의 제5 측면에 따르면, 컴퓨터 프로그램을 제공하고, 상기 컴퓨터 프로그램은 제1 측면의 임의의 가능한 구현 방식에서의 방법을 구현하기 위한 명령어를 포함한다.
본 발명의 실시예는 조작 작업 대기열 중 복수 개의 조작 작업 각각에 대응되는 오퍼랜드에 따라, 복수 개의 조작 작업 사이의 의존 관계를 결정하고, 의존 관계에 기반하여, 복수 개의 조작 작업을 스케줄링함으로써, 조작 작업 사이의 의존성을 최소화하고, 조작 작업의 효율적인 스케줄링을 구현한다.
이해해야 할 것은, 이상의 일반적인 설명 및 하기의 상세한 설명은 예시적이고 설명적인 것이며 본 발명을 한정하지 않는다.
아래의 도면은 본 명세서의 일부분으로서 명세서 전체를 구성하며, 본 발명에 맞는 실시예를 예시하여, 명세서와 함께 본 발명의 원리를 해석하기 위한것이다.
도 1은 본 발명이 일시적 실시예에 따라 도시한 스케줄링 방법 흐름도이다.
도 2는 본 발명이 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 3은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 4는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 5는 본 발명이 예시적 실시예에 따라 도시한 통신 중첩 시나리오 예시도이다.
도 6은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 7은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 8은 본 발명이 예시적 실시예에 따라 도시한 하드웨어 자원 컨텍스트 예시도이다.
도 9는 본 발명이 예시적 실시예에 따라 도시한 조작 작업 분할 예시도이다.
도 10은 본 발명이 예시적 실시예에 따라 도시한 컨텍스트 세트와 스케줄링 시스템 사이의 인터페이스 예시도이다.
도 11은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 12는 본 발명이 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 13은 본 발명이 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 14는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 15는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 16은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 17는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 18은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 19는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 20은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 21은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 22는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 23은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 24는 본 발명이 예시적 실시예에 따라 도시한 작업 스케줄링 장치를 위한 일 구조 예시도이다.
도 1은 본 발명이 일시적 실시예에 따라 도시한 스케줄링 방법 흐름도이다.
도 2는 본 발명이 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 3은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 4는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 5는 본 발명이 예시적 실시예에 따라 도시한 통신 중첩 시나리오 예시도이다.
도 6은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 7은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 8은 본 발명이 예시적 실시예에 따라 도시한 하드웨어 자원 컨텍스트 예시도이다.
도 9는 본 발명이 예시적 실시예에 따라 도시한 조작 작업 분할 예시도이다.
도 10은 본 발명이 예시적 실시예에 따라 도시한 컨텍스트 세트와 스케줄링 시스템 사이의 인터페이스 예시도이다.
도 11은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 방법 흐름도이다.
도 12는 본 발명이 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 13은 본 발명이 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 14는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 15는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 16은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 17는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 18은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 19는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 20은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 21은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 22는 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 23은 본 발명이 또 다른 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이다.
도 24는 본 발명이 예시적 실시예에 따라 도시한 작업 스케줄링 장치를 위한 일 구조 예시도이다.
아래에 예시적 실시예에 대해 상세히 설명하며, 그 예는 도면에 도시된다. 아래의 설명에서 도면을 참조할 때, 다른 표시가 없는 한, 상이한 도면에서의 동일한 숫자는 동일하거나 유사한 요소를 나타낸다. 아래의 예시적 실시예에서 설명된 실시형태는 본 발명과 일치하는 모든 실시형태를 나타내는 것은 아니다. 이와 반대로, 이들은 다만 청구 범위에 자세히 설명된 바와 같이 본 발명의 일부 측면과 일치하는 장치 및 방법의 예일 뿐이다.
본 발명에 사용된 용어는 다만 특정된 실시예를 설명하기 위한 것이며, 본 발명을 한정하려는 것은 아니다. 본 발명의 명세서와 청구 범위에 작동된 단수 형태인 “한 가지” 및 "상기”는 본문이 다른 의미를 명확하게 나타내지 않는 한, 복수 형태를 포함한다. 또한 이해해야 할 것은, 본문에 작동된 용어 “및/또는”은 하나 또는 복수 개의 관련되어 열거된 항목의 임의의 조합 또는 모든 가능한 조합을 의미하고 포함한다.
이해해야 할 것은, 본 발명에서 "제1", "제2", "제3" 등과 같은 용어를 사용해 각종 정보를 설명하더라도 이러한 정보들은 이러한 용어에 제한되어서는 안된다. 이러한 용어는 동일한 타입의 정보를 서로 구별하기 위해서만 사용된다. 예를 들어 본 발명의 범위를 벗어나지 않는 한, 제1 정보는 제2 정보로 지칭될 수 있고, 마찬가지로 제2 정보도 제1 정보로 지칭될 수 있다. 이는 단어 사용 상황에 따라 결정되고, 예를 들어 여기서 작동된 단어 "…면"은 "…때" 또는 "…할 경우" 또는 "결정에 응답하여"의 뜻으로 해석될 수 있다.
본 발명의 실시예는 딥 러닝 훈련 플랫폼에 사용될 수 있는 작업 스케줄링 방법을 제공하고, 예를 들어 신경 네트워크의 훈련 플랫폼, 또는 하드웨어 자원 스케줄링에 언급되고 스케줄링 효율이 향상되어야 하는 다른 장치 또는 플랫폼이다. 아래에 딥 러닝 훈련 플랫폼을 예로 들어 설명한다.
도 1에 도시된 바와 같이, 도 1은 예시적 실시예에 따라 도시한 작업 스케줄링 방법이고, 아래와 같은 단계를 포함한다.
단계 101에 있어서, 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드(operand)에 따라, 복수 개의 조작 작업 사이의 의존 관계를 결정한다.
단계 102에 있어서, 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 조작 작업 대기열에서의 복수 개의 조작 작업을 스케줄링한다.
상기 실시예는 오퍼랜드에 기반하여 조작 작업 사이의 의존 관계를 결정하여, 조작 작업 사이의 의존성을 최소화하고, 세밀하고 효과적인 스케줄링의 목적을 구현한다.
본 발명의 실시예에 있어서, 조작 작업에 포함된 세밀화 작업의 오퍼랜드에 기반하여, 복수 개의 조작 작업 사이의 의존 관계를 결정한다. 여기서, 오퍼랜드는 조작 작업의 데이터 대상이다.
일부 실시예에 있어서, 조작 작업에 포함된 읽기 조작 및 쓰기 조작 중 적어도 하나의 오퍼랜드에 기반하여, 두 개의 조작 작업 사이에 의존성이 존재하는지 여부를 결정한다. 이에 상응하게, 오퍼랜드는 읽기 조작에 대응되는 읽기 오퍼랜드 및 쓰기 조작 중 적어도 하나에 대응되는 쓰기 오퍼랜드를 포함한다.
선택적으로, 조작 작업은 0 개, 하나 또는 복수 개의 읽기 조작을 포함할 수 있고, 0 개, 하나 또는 복수 개의 쓰기 조작을 포함할 수도 있으며, 이에 상응하게, 조작 작업은 하나 또는 복수 개의 오퍼랜드에 대응될 수 있다.
단계 101에 있어서, 선택적으로, 두 개의 조작 작업의 오퍼랜드가 동일한지 여부에 기반하여 두 개의 조작 작업 사이에 의존성이 존재하는지 여부를 결정할 수 있고, 예를 들어, 두 개의 조작 작업의 오퍼랜드에 교집합이 존재하지 않으면, 두 개의 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정한다. 일부 실시예에 있어서, 아래와 같은 방식을 사용하여 오퍼랜드에 기반하여, 복수 개의 조작 작업 사이의 의존 관계를 결정할 수 있다.
첫 번째 경우에 있어서, 두 개의 조작 작업 사이에 의존성이 존재한다.
여기서, 조작 작업 대기열에서의 제2 조작 작업이 제1 조작 작업의 쓰기 오퍼랜드에 대한 읽기 조작을 포함하거나, 제2 조작 작업이 제1 조작 작업의 오퍼랜드에 대한 쓰기 조작을 포함하면, 훈련 플랫폼은 제2 조작 작업이 제1 조작 작업에 의존하는 것으로 결정할 수 있다.
예를 들어, 조작 작업 대기열에서의 조작 작업 B가 조작 작업 A의 쓰기 오퍼랜드를 판독 액세스해야 하면, 조작 작업 B가 조작 작업 A에 의존하는 것으로 결정할 수 있다. 또 예를 들어, 조작 작업 대기열에서의 조작 작업 B가 조작 작업 A의 쓰기 오퍼랜드 및 읽기 오퍼랜드 중 적어도 하나를 입력해야 하면, 조작 작업 B가 조작 작업 A에 의존하는 것으로 결정할 수 있다.
두 번째 경우에 있어서, 두 개의 조작 작업 사이에 의존성이 존재하지 않는다.
여기서, 제2 조작 작업이 제1 조작 작업의 읽기 오퍼랜드에 대한 읽기 조작을 포함하면, 훈련 플랫폼은 제1 조작 작업과 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정할 수 있다. 예를 들어, 조작 작업 대기열에서의 조작 작업 B가 조작 작업 A의 읽기 오퍼랜드를 판독 액세스해야 하면, 조작 작업 A와 조작 작업 B 사이에 의존성이 존재하지 않는 것으로 결정할 수 있다.
제1 조작 작업과 제2 조작 작업 각각에 대응되는 오퍼랜드 사이에 교집합이 존재하지 않으면, 훈련 플랫폼은 제1 조작 작업과 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정할 수 있다. 예를 들어, 조작 작업 A의 오퍼랜드가 a 및 b이고, 조작 작업 B의 오퍼랜드가 c이면, 조작 작업 A는 조작 작업 B의 오퍼랜드에 대해 임의의 조작을 수행할 필요가 없고, 조작 작업 B도 조작 작업 A의 오퍼랜드에 대해 임의의 조작을 수행할 필요가 없으므로, 조작 작업 A와 조작 작업 B 사이에 의존성이 존재하지 않는 것으로 결정할 수 있다.
도 2에 도시된 바와 같이, 단계 102는 아래와 같은 단계를 포함할 수 있다.
단계 102-1에 있어서, 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 복수 개의 조작 작업의 스케줄링 순서를 결정한다.
상기 단계 101의 방식에 따라 복수 개의 조작 작업에서의 제1 조작 작업과 복수 개의 조작 작업에서의 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정하면, 훈련 플랫폼은 의존성이 존재하지 않는 제1 조작 작업 및 제2 조작 작업을 병행으로 호출할 수 있거나, 훈련 플랫폼은 임의의 순서로 제1 조작 작업 및 제2 조작 작업을 스케줄링할 수 있다. 예를 들어, 조작 작업 A 및 조작 작업 B 사이에 의존성이 존재하지 않으면, 훈련 플랫폼은 병행으로 또는 임의의 선후 순서로 조작 작업 A 및 조작 작업 B를 스케줄링할 수 있다.
상기 단계 101의 방식에 따라 제2 조작 작업이 제1 조작 작업에 의존하는 것으로 결정하면, 훈련 플랫폼은 제1 조작 작업을 스케줄링한 후, 제2 조작 작업을 스케줄링한다. 예를 들어, 조작 작업 B가 조작 작업 A에 의존하면, 훈련 플랫폼릉 조작 작업 A를 먼저 스케줄링한 다음, 조작 작업 B를 스케줄링한다.
단계 102-2에 있어서, 조작 작업 대기열에서의 현재 조작 작업을 위해 메모리를 할당한다.
훈련 플랫폼은 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 복수 개의 조작 작업의 스케줄링 순서를 결정한 후, 상기 스케줄링 순서에 따라 조작 작업 대기열에서의 복수 개의 조작 작업을 스케줄링할 수 있다. 여기서, 조작 작업 대기열에서의 특정한 조작 작업에 대한 스케줄링은, 상기 조작 작업에 필요한 메모리 공간을 할당하는 단계 및 상기 조작 작업의 연산자(operator)를 대응되는 컨텍스트(context)에 스케줄링하여 실행하는 단계를 포함한다.
단계 102-3에 있어서, 메모리를 할당 완료한 후, 현재 조작 작업을 현재 조작 작업에 대응되는 컨텍스트에 스케줄링하여 실행하고, 스케줄링 순서에 따라 다음 조작 작업의 메모리 할당을 수행한다.
일부 실시예에 있어서, 훈련 플랫폼은 현재 조작 작업을 위해 메모리를 할당 완료한 후, 현재 조작 작업에 대응되는 컨텍스트에 현재 조작 작업의 조작 실행 요청을 송신할 수 있다. 이때 현재 조작 작업이 실행 완료될 때까지 기다릴 필요가 없이, 훈련 플랫폼은 스케줄링 순서에 따라 다음 조작 작업의 메모리 할당을 수행할 수 있다. 다시 말해, 현재 조작 작업의 메모리를 할당 완료한 후, 현재 조작 작업의 실행 및 다음 조작 작업의 스케줄링을 병행으로 수행할 수 있다. 다음 조작 작업의 스케줄링은 현재 조작 작업의 메모리 할당이 완료될 때까지 기다려야 하지만, 현재 조작 작업의 실행이 완료될 때까지 기다릴 필요는 없다. 일부 실시예에 있어서, 특정한 조작 작업을 위해 메모리를 할당할 경우, 메모리 공간이 부족하면, 스케줄링 순서에 따라 상기 조작 작업 이전의 적어도 하나의 조작 작업이 실행이 완료될 때까지 기다렸다가, 충분한 메모리 공간이 릴리즈되면, 현재 조작 작업을 위한 메모리 준비를 계속 수행할 수 있다.
상기 실시예에서, 의존성이 존재하지 않는 조작 작업의 경우, 작업의 동시성을 충분히 탐색할 수 있다. 의존성이 존재하는 조작 작업의 경우, 먼저 현재 조작 작업을 위해 메모리를 할당할 수 있고, 현재 조작 작업의 조작 실행 요청을 송신한 후, 현재 조작 작업의 실행이 완료될 때까지 기다릴 필요가 없이, 다음 조작 작업의 메모리 할당을 실행하기 시작할 수 있다. 상기 과정을 통해, 세밀하고 효과적인 스케줄링의 목적을 구현한다.
일부 실시예에 있어서, 훈련 플랫폼의 실제 응용에서, 상이한 컴퓨팅 노드 사이의 통신 효율의 향상은 훈련 효율을 향상시키는 핵심이기도 하고, 통신 메시지는 훈련 플랫폼의 확장 가능성에 영향을 준다. 훈련 플랫폼을 훈련할 경우, 일반적으로 그래픽 처리 장치(Graphics Processing Unit, GPU)를 사용하여 컴퓨팅한다. Nvidia(엔비디아) GPU 클러스터 환경에서 일반적으로 엔비디아 컬렉티브 멀티 GPU 통신 라이브러리(Nvidia Collective multi-GPU Communication Library, NCCL)를 사용하여 통신한다.
NCCL의 구현 메커니즘은 모든 통신 노드의 머리와 끝을 연결하여 단일 방향 링을 형성하고, 데이터는 파이프 라인으로 전송되며, 이상적인 상황에서 통신 시간은 노드수의 추가로 추가되는 것이 아니라, 데이터 총 양 및 대역폭과 관련되지만, 데이터양이 노드수보다 엄청 많아야 성립된다. 이러한 특성은 데이터양이 비교적 적을 경우의 NCCL의 효율이 엄청 낮도록 한다. 비교적 큰 통신 데이터양을 획득하기 위해, 통신 조작 작업에 대한 조작 융합을 도입하였다. 통신 작업은 복수 개의 컴퓨팅 노드 사이에서 수행되는 작업이고, 비 통신 작업은 단일 컴퓨팅 노드에서 수행되는 작업을 가리킨다.
선택적으로, 도 3에 도시된 바와 같이, 단계 101은 아래와 같은 단계를 포함할 수 있다.
단계 101-1에 있어서, 복수 개의 조작 작업에 포함된 M 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업을 얻도록, 각 병합 통신 조작 작업은 M 개의 통신 조작 작업에서의 적어도 하나의 통신 조작 작업을 포함한다.
본 단계에 있어서, M은 1보다 크거나 같은 정수일 수 있다. 훈련 플랫폼은 복수 개의 통신 조작 작업을 융합할 수 있음으로써, 하나 또는 복수 개의 병합 통신 조작 작업을 얻는다. 각 병합 통신 조작 작업에 포함된 통신 조작 작업의 개수는 하나 또는 복수 개일 수 있다.
단계 101-2에 있어서, 적어도 하나의 병합 통신 조작 작업에 대응되는 오퍼랜드 및 복수 개의 조작 작업 중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 복수 개의 조작 작업 사이의 의존 관계를 결정한다.
본 단계에 있어서, 훈련 플랫폼은 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 읽기 오퍼랜드 및 쓰기 오퍼랜드 중 적어도 하나를 각각 융합하여, 융합된 읽기 오퍼랜드의 세트 및 쓰기 오퍼랜드의 세트 중 적어도 하나를 얻을 수 있음으로써, 읽기 오퍼랜드의 세트를 병합 통신 작업에 대응되는 읽기 오퍼랜드로 사용하고, 쓰기 오퍼랜드의 세트를 병합 통신 작업에 대응되는 쓰기 오퍼랜드로 사용한다. 예를 들어, 각 조작 작업은 자신만의 읽기 오퍼랜드 및 쓰기 오퍼랜드가 존재하고, 적어도 하나의 통신 조작 작업을 융합하는 것을 통해, 복수 개의 조작 작업의 읽기 오퍼랜드 및 쓰기 오퍼랜드 중 적어도 하나에 대해 병합 세트를 각각 취할 수 있다.
더 나아가, 훈련 플랫폼은 병합 통신 조작 작업에 대응되는 오퍼랜드에 따라, 상이한 병합 통신 조작 작업 사이의 의존 관계를 결정할 수 있고, 병합 통신 조작 작업에 대응되는 오퍼랜드 및 복수 개의 조작 작업 중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 병합 통신 조작 작업과 적어도 하나의 비 통신 조작 작업 사이의 의존 관계를 결정할 수 있다.
의존 관계를 결정하는 방식은 상기 실시예에서 적어도 두 개의 조작 작업 사이의 의존 관계를 결정하는 방식과 동일하고, 여기서 더이상 반복하여 설명하지 않는다.
상기 실시예에서, 훈련 플랫폼은 복수 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업으로 병합된 후, 적어도 하나의 병합 조작 작업에 대응되는 오퍼랜드 및 복수 개의 조작 작업 중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 통신 조작 작업 사이의 의존 관계, 및 적어도 하나의 병합 통신 조작 작업과 적어도 하나의 비 통신 조작 작업 사이의 의존 관계 중 적어도 하나를 병합하는 것으로 결정할 수 있음으로써, 더 많은 통신 데이터양을 획득하여, 훈련 플랫폼이 더욱 효과적인 통신 효율을 구비하도록 한다.
일부 실시예에 있어서, 조작 작업 대기열을 제1 조작 작업 대기열 및 제2 조작 작업 대기열로 분할할 수 있고, 여기서, 제1 조작 작업은 복수 개의 조작 작업에서의 통신 조작 작업을 포함하며, 선택적으로, 제1 조작 작업 대기열은 원격 통신 대기열이다. 제2 조작 작업 대기열은 복수 개의 조작 작업에서의 비 통신 조작 작업을 포함하고, 선택적으로, 제2 조작 작업 대기열은 로컬 대기열이다.
여기서, 원격 통신 대기열은 현재 컴퓨팅 노드 및 다른 컴퓨팅 노드를 데이터 교환하는 조작 작업을 포함한다. 로컬 대기열은 현재 컴퓨팅 노드에서 수행되는 작업을 포함하고, 예를 들어, 중앙처리장치(Central Processing Unit, CPU) 컴퓨팅, GPU 컴퓨팅, CPU부터 GPU의 데이터 전송, GPU부터 CPU의 데이터 전송 등 조작 작업이다.
상기 두 개의 대기열에 각각 포함된 조작 작업이 각각의 조작 작업 대기열에서의 복수 개의 조작 작업 사이의 의존 관계에 기반하여 결정된 스케줄링 순서에 따라 배열된 것이므로, 동일한 대기열에서의 조작 작업은 의존하는 조작 작업의 정보를 기록할 필요가 없고, 대기열의 선입선출 메커니즘에 따라 보장될 수 있다.
예를 들어, 조작 작업 B가 조작 작업 A에 의존하고, 스케줄링 순서가 조작 작업 A를 먼저 스케줄링한 다음, 조작 작업 B를 스케줄링하며, 조작 작업 A 및 조작 작업 B가 통신 조작 작업이면, 제1 조작 작업 대기열에서 조작 작업 A를 조작 작업 B 전으로 배열하고, 대기열의 선입선출 메커니즘에 기반하여, 조작 작업 A를 먼저 스케줄링한 다음, 조작 작업 B를 스케줄링하므로, 조작 작업 B는 의존하는 조작 작업 A의 정보를 기록할 필요가 없다.
마찬가지로, 조작 작업 A 및 조작 작업 B가 모두 비 통신 조작 작업이면, 제2 조작 작업 대기열에서도 마찬가지로 조작 작업 A가 조작 작업 B 전에 배열되므로, 조작 작업 B가 조작 작업 A의 정보를 기록할 필요가 없다.
상기 과정을 통해, 통신 조작 작업이 더욱 빠르게 실행할 수 있도록 하고, 예를 들어, 조작 작업 E가 조작 작업 A에 의존하고, 조작 작업 A 및 조작 작업 E가 모두 통신 조작 작업이며, 조작 작업 대기열에서 조작 작업 A, 조작 작업 B, 조작 작업 C 및 조작 작업 D를 순서에 따라 스케줄링해야, 조작 작업 E를 스케줄링할 수 있다. 조작 작업 대기열을 제1 조작 작업 대기열 및 제2 조작 작업 대기열로 분할하면, 제1 조작 작업 대기열에 조작 작업 A 및 조작 작업 E가 포함되고, 제2 조작 작업 대기열에 조작 작업 B, 조작 작업 C 및 조작 작업 D가 포함된다. 제1 조작 작업 대기열에서, 조작 작업 B, 조작 작업 C 및 조작 작업 D가 실행 완료될 때까지 기다릴 필요가 없이, 조작 작업 A가 실행 완료되면 조작 작업 E를 실행하기 시작할 수 있다.
상기 실시예에서, 통신 조작 작업 및 비 통신 조작 작업을 제1 조작 작업 대기열 및 제2 조작 작업 대기열에 각각 저장하는 것을 통해, 효과적인 통신 작업의 중첩을 구현하고, 시스템 병행 효율을 향상시킨다.
일부 실시예에 있어서, 도 4에 도시된 예에 있어서, 상기 작업 스케줄링 방법은 또한 아래와 같은 단계를 포함할 수 있다.
단계 103에 있어서, 제1 조작 작업 대기열과 제2 조작 작업 대기열 사이의 의존 정보를 기록하고, 여기서, 제1 조작 작업 대기열에서의 조작 작업이 제2 조작 작업 대기열에서의 하나 또는 복수 개의 조작 작업에 의존하면, 의존 정보가 하나 또는 복수 개의 조작 작업에서의 마지막 조작 작업의 정보를 포함하는 것, 및 제2 조작 작업 대기열에서의 조작 작업이 제1 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하면, 의존 정보가 적어도 하나의 조작 작업 중 마지막 조작 작업의 정보를 포함하는 것 중 적어도 하나이다.
본 단계에 있어서, 상이한 조작 작업 대기열에서의 조작 작업에 의존 관계가 존재하면, 훈련 플랫폼은 두 개의 조작 작업 대기열이 의존하는 마지막 조작 작업의 정보를 기록할 수 있고, 예를 들어 도 5에 도시된 바와 같다. 예를 들어, 제1 조작 작업 대기열에서의 조작 작업 A가 제2 조작 작업 대기열에서의 조작 작업 B 및 조작 작업 C에 의존하면, 조작 작업 C가 조작 작업 B에 의존하므로, 조작 작업 A가 조작 작업 C에 대한 의존성만 기록하면 된다.
더 나아가, 단계 102는, 제1 조작 작업 대기열과 제2 조작 작업 대기열 사이의 의존 정보에 기반하여, 제1 조작 작업 대기열 및 제2 조작 작업 대기열에서의 조작 작업을 스케줄링하는 단계를 포함할 수 있다.
상기 실시예에서, 두 개의 조작 작업 대기열이 서로 의존하는 마지막 조작 작업의 정보를 기록하는 것을 통해, 비 통신 조작 작업이 전부 완료될 때까지 기다릴 필요가 없이, 제1 조작 작업 대기열에서의 통신 조작 작업이 더욱 빠르게 실행될 수 있도록 하여, 효과적인 통신 작업의 중첩 목적을 구현한다.
일부 실시예에 있어서, 동적 스케줄링 방안에서, 메모리 관리는 복잡하고 핵심적인 문제이고, 메모리 복구를 정확하고 제때에 수행하지 못하면, 타겟 조작 작업이 가능한 한 빨리 스케줄링할 수 없거나, 컴퓨팅 가능한 샘플 수를 감소시키는 것과 동일하다. 이 문제를 해결하기 위해, 본 발명의 실시예는 메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하는 방법을 제안한다.
도 6에 도시된 바와 같이, 도 6은 전술한 도 4에 도시된 실시예의 기초 상에서 도시한 다른 작업 스케줄링 방법이고, 상기 작업 스케줄링 방법은 또한 아래와 같은 단계를 포함할 수 있다.
단계 104에 있어서, 메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하고, 여기서, 제2 조작 작업 대기열은 조작 작업 대기열 중 메모리 복구 조작 작업 이외의 비 통신 조작 작업을 포함한다.
본 단계에 있어서, 특정한 조작 작업이 상응하는 컨텍스트에 스케줄링된 후, 훈련 플랫폼은 상기 조작 작업을 위치하는 작업 대기열로부터 삭제할 수 있는 것 외에, 또한 이에 대응되는 메모리 복구 조작 세트를 삭제할 수 있다. 즉 특정한 타겟 조작 작업을 상응하는 컨텍스트에 스케줄링한 후, 훈련 플랫폼은 상기 타겟 조작 작업이 차지하는 메모리를 복구하는 조작을 미리 설정할 수 있음으로써, 타겟 조작 작업이 완료된 후, 차지하는 메모리를 빠르게 복구한다.
본 단계에 따른 메모리 복구 조작은 논리적인 조작이고, 이 메모리 블록을 재차 할당 가능한 것으로 표시하며, 실행 완료되지 않은 조작 작업은 여전히 이 메모리 블록을 계속 사용할 수 있다. 본 발명의 실시예에서, 재차 할당된 메모리에서 수행된 조작 작업이 반드시 복구되기 전의 조작 작업 이후에 배열되므로, 스트림(stream)에서의 컴퓨팅 순서는 두 개의 조작 작업이 충돌되지 않도록 보장한다.
본 발명의 실시예에 있어서, 선택적으로, 메모리 복구 조작은 다른 타겟 조작 작업과 같이 제1 조작 작업 대기열 또는 제2 조작 작업 대기열에 저장되는 것이 아닌, 다른 맵핑(map) 데이터 구조에 저장된다. 상기 데이터 구조에서, 키 워드(key)는 의존된 비 복구 메모리 조작이고, 즉 의존된 것이 상응하는 타겟 조작 작업이며, 상기 복구 메모리 조작은 값(value)이 가리키는 벡터(vector)에 저장된다.
상기 실시예에 있어서, 메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하고, 메모리 복구 조작을 독립적으로 저장하며, 메모리 자원이 제때에 정리되도록 보장하여, 훈련 플랫폼의 메모리 복구가 더욱 효과적이 되도록 한다.
일부 실시예에 있어서, 도 7에 도시된 예에서, 상기 작업 스케줄링 방법은 또한 아래와 같은 단계를 포함할 수 있다.
단계 100에 있어서, 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트를 결정하고, 여기서, 조작 작업에 대응되는 컨텍스트는 추상 자원 및 정보 스트림을 포함한다.
본 발명의 일부 실시예에 있어서, 훈련 플랫폼은 시스템에서의 하드웨어 자원을 추상화할 수 있고, 각 하드웨어 자원에게 통일화된 논리적 관리 및 인터페이스를 제공함으로써, GPU 컴퓨팅 자원, 주변 컴포넌트 상호 접속 익스프레스(Peripheral Component Interconnect Express, PCIE) 업링크 전송 자원, PCIE 다운 링크 전송 자원, 인피니밴드(InfiniBand, IB) 네트워크 자원 및 CPU 컴퓨팅 자원 등과 같은 추상 자원을 얻을 수 있다.
상기 추상 자원을 얻은 기초 상에서, 각 추상 자원의 조작 작업 대기열을 추가로 패키징할 수 있다. 여기서, GPU 컴퓨팅 자원, PCIE 업링크 전송 자원, PCIE 다운 링크 전송 자원 및 IB 네트워크 자원에 대응되는 조작 작업이 기본적으로 비동기화된 정보 스트림(CUDA Stream)에 대한 패키징이므로, GPU 컴퓨팅 자원, PCIE 업링크 전송 자원, PCIE 다운 링크 전송 자원 및 IB 네트워크 자원에 대응되는 정보 스트림은 통합 컴퓨팅 기기 아키텍처(Compute Unified Device Architecture, CUDA) 정보 스트림일 수 있다. CPU 컴퓨팅 자원에 대응되는 정보 스트림은 호스트(Host) Stream일 수 있다.
조작 작업의 컨텍스트는 추상 자원 및 상응하는 정보 스트림을 포함하고, 예를 들어 도 8에 도시된 바와 같다.
훈련 플랫폼은 각 하드웨어 자원에 대응되는 컨텍스트에 따라, 조작 작업 대기열에서의 복수 개의 조작 작업을 각 추상 자원에 일대일 대응되는 조작 작업으로 분할할 수 있다.
도 9에 도시된 바와 같이, 복수 개의 조작 작업을 조작 작업 라이브러리(900)로 사용할 수 있고, 이는 내장 조작 작업 및 확장 가능한 조작 작업으로 분할할 수 있다. 여기서, 내장 조작 작업(910)은 업링크 전송(912), 다운 링크 전송(913), 메모리 복구(911) 등과 같은 시스템 내장 기능을 구현할 수 있다. 확장 가능한 조작 작업은 필요에 따라 훈련 플랫폼의 사용자에 의해 추가될 수 있고, 선택적으로, 더 나아가 컴퓨팅 조작 작업(920) 및 통신 조작 작업(930)으로 분할될 수 있다. 컴퓨팅 조작 작업(920)은 또한 더 나아가 CPU 컴퓨팅 조작 작업(921) 및 GPU 컴퓨팅 조작 작업(922)으로 분할될 수 있다.
분할된 각 조작 작업은 상응하는 컨텍스트에 대응된다. 이에 상응하게, 상기 단계 102는, 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 조작 작업 대기열에서의 복수 개의 조작 작업을 스케줄링한다.
즉 훈련 플랫폼은 각 조작 작업에 대응되는 컨텍스트 및 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 복수 개의 조작 작업을 스케줄링할 수 있다. 구체적인 구현 과정은 아래와 같다.
첫 번째 경우에 있어서, 두 개의 조작 작업 사이에 의존성이 존재하지 않는다.
훈련 플랫폼은 복수 개의 조작 작업에서의 두 개의 조작 작업 사이에 의존성이 존재하지 않고 이 두 개의 조작 작업이 상이한 추상 자원에 대응될 경우, 이 두 개의 조작 작업을 병행으로 스케줄링할 수 있다.
두 번째 경우에 있어서, 두 개의 조작 작업 사이에 의존성이 존재한다.
제4 조작 작업이 제3 조작 작업에 의존하는 것으로 가정하면, 훈련 플랫폼은 제3 조작 작업 및 제4 조작 작업 각각에 대응되는 정보 스트림을 결정해야 하고, 제3 조작 작업 및 제4 조작 작업 각각에 대응되는 정보 스트림에 기반하여, 제3 조작 작업 및 제4 조작 작업의 동기화 인터페이스를 결정한다.
일부 실시예에 있어서, 제3 조작 작업 및 제4 조작 작업에 대응되는 정보 스트림이 CUDA 정보 스트림이면, 훈련 플랫폼은 제1 동기화 인터페이스를 호출하여 제3 조작 작업 및 제4 조작 작업을 동기화할 수 있다. 선택적으로, 제1 동기화 인터페이스는 cuda Stream Wait Event() 인터페이스일 수 있다.
본 발명의 실시예에 있어서, CUDA 이벤트(Event)를 통해 조작 작업 대기열에서의 조작 작업에 대해 상태 검색, 완료 대기 등 조작을 수행할 수 있다. CUDA Event에 기반하여 세밀하고, 가벼운 암시적 동기화 방식을 제공한다. 훈련 플랫폼이 상기 임의의 두 개의 조작 작업에 의존성이 존재하는 것으로 검출하고, 대응되는 정보 스트림이 CUDA Stream이면, 훈련 플랫폼은 제1 동기화 인터페이스를 호출할 수 있다.
예를 들어, 제3 조작 작업에 대한 스케줄링을 수행하였는지 여부와 같이 제1 동기화 인터페이스를 호출하여 제3 조작 작업의 현재 상태를 결정하여, 제3 조작 작업 및 제4 조작 작업을 동기화한다.
여기서 동기화는 의존 관계가 존재하는 두 개의 조작 작업의 컴퓨팅 결과의 정확성을 보장하기 위한 것이다. 예를 들어, 제4 조작 작업이 제3 조작 작업에 의존하는 것으로 가정하면, 제3 조작 작업 및 제4 조작 작업을 동기화하는 목적은 제4 조작 작업이 제3 조작 작업이 실행 완료된 것을 기다린 후 가동되도록 하는 것이다.
일부 실시예에 있어서, 제3 조작 작업 및 제4 조작 작업에서의 적어도 하나의 조작 작업에 대응되는 정보 스트림이 호스트 정보 스트림이면, 제2 동기화 인터페이스를 호출하여 제3 조작 작업 및 제4 조작 작업을 동기화할 수 있다. 선택적으로, 제2 동기화 인터페이스는 cuda Stream Synchronize() 인터페이스일 수 있다.
일부 실시예에 있어서, 제3 조작 작업 및 제4 조작 작업에 대응되는 정보 스트림이 호스트 정보 스트림이 아니면, 제1 동기화 인터페이스를 호출하여 제3 조작 작업 및 제4 조작 작업을 동기화할 수 있다.
상기 실시예에 있어서, 훈련 플랫폼은 제1 동기화 인터페이스를 호출할 경우 생성되는 지연 및 오버헤드는 제2 동기화 인터페이스를 호출할 경우 생성되는 지연 및 오버헤드보다 작음으로써, 더욱 효과적인 하드웨어 시스템 이용률을 구현할 수 있다.
일부 실시예에 있어서, 하드웨어 자원 컨텍스트와 훈련 플랫폼의 스케줄링 시스템 사이에는 제1 인터페이스 및 제2 인터페이스가 존재할 수 있고, 도 10에 도시된 바와 같다. 제1 인터페이스는 스케줄링 시스템에 의해 지정된 컨텍스트에 스케줄링해야 하는 조작 작업을 게시하기 위한 것이고, 선택적으로, 제1 인터페이스는 schedule() 인터페이스이다. 제2 인터페이스는 스케줄링 시스템이 어느 한 컨텍스트를 동기화하는데 사용되고, 선택적으로, 제2 인터페이스는 synchronize() 인터페이스일 수 있다.
상기 실시예에 있어서, 하드웨어 자원 컨텍스트와 스케줄링 시스템 사이에서 상이한 인터페이스를 제공하여, 하드웨어 자원의 이용률을 추가로 향상시킨다.
일부 실시예에 있어서, 도 11에 도시된 바와 같은 예에서, 작업 스케줄링 방법은 아래와 같은 단계를 포함할 수 있다.
단계 201에 있어서, 조작 작업 대기열에서의 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트를 획득한다.
단계 202에 있어서, 복수 개의 조작 작업에 포함된 복수 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업을 얻는다.
단계 203에 있어서, 적어도 하나의 병합 통신 조작 작업에 대응되는 오퍼랜드 및 복수 개의 조작 작업 중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 복수 개의 조작 작업 사이의 의존 관계를 결정한다.
복수 개의 조작 작업에서의 제2 조작 작업이 제1 조작 작업의 쓰기 오퍼랜드에 대한 읽기 조작을 포함하거나, 제2 조작 작업이 제1 조작 작업의 오퍼랜드에 대한 쓰기 조작을 포함하면, 제2 조작 작업이 제1 조작 작업에 의존하는 것으로 결정한다.
제2 조작 작업이 제1 조작 작업의 읽기 오퍼랜드에 대한 읽기 조작을 포함하면, 제1 조작 작업과 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정한다.
단계 204에 있어서, 상기 적어도 하나의 병합 통신 조작 작업을 제1 조작 작업 대기열로 사용하고, 복수 개의 조작 작업 중 비 통신 조작 작업을 제2 조작 작업 대기열로 사용한다.
조작 작업 대기열은 제1 조작 작업 대기열 및 제2 조작 작업 대기열을 포함할 수 있고, 여기서, 제1 조작 작업 대기열은 복수 개의 조작 작업에서의 병합 통신 조작 작업을 포함하며, 제2 조작 작업 대기열은 복수 개의 조작 작업에서의 비 통신 조작 작업을 포함한다. 여기서, 제1 조작 작업 대기열 및 제2 조작 작업 대기열에 포함된 조작 작업은 복수 개의 조작 작업 사이의 의존 관계에 기반하여 결정된 스케줄링 순서에 따라 배열된 것이다.
단계 205에 있어서, 제1 조작 작업 대기열과 제2 조작 작업 대기열 사이의 의존 정보를 기록한다.
단계 206에 있어서, 제1 조작 작업 대기열과 제2 조작 작업 대기열 사이의 의존 정보에 기반하여, 제1 조작 작업 대기열 및 제2 조작 작업 대기열에서의 조작 작업을 스케줄링한다.
단계 207에 있어서, 메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정한다.
여기서, 상기 제2 조작 작업 대기열은 조작 작업 대기열 중 메모리 복구 조작 작업 이외의 비 통신 조작 작업을 포함한다.
단계 207은 의존하는 조작 작업을 상응하는 컨텍스트에 스케줄링한 후 실행될 수 있다. 상기 모든 단계의 실행 과정은 이전 실시예에서 제공한 실행 과정과 일치하고, 여기서 더이상 반복하여 설명하지 않는다.
상기 실시예에 있어서, 각 타입의 하드웨어 자원에 대해 추상화와 패키징을 수행한다. 이의 기초 상에서, 각 자원에게 비동기화 작업 대기열을 설계하고, 대기열 간의 유연하고 효율적인 암시적 동기화 전략을 제안한다.
또한, 복수 개의 조작 작업에 대응되는 오퍼랜드에 기반하여, 복수 개의 조작 작업 사이의 의존 관계를 결정하고, 조작 사이의 의존성을 최소화하며, 효과적인 의존성 분석 및 스케줄링 전략을 구현한다. 독립적인 조작 사이의 작업 동시성을 충분히 활용하여, 하드웨어 자원 이용률을 향상시킨다. 암시적 동기화를 통해 의존성이 존재하는 조작 사이의 의존성 지연을 감소시킨다. 본 발명의 실시예는 효과적인 통신 융합과 중첩 방안을 더 제공한다. 통신 융합을 통해 통신 조작 자체의 효율을 향상시키고, 통신 중첩을 통해 훈련 과정의 전반적인 효율을 향상시키며, 융합과 중첩 과정에서 도입된 의존 관계 융합, 멀티 작업 대기열이 상호 의존하는 등 문제를 해결한다. 메모리 복구 조작은 최고 우선 순위 조작으로 정의되어, 메모리 자원의 제때 처리를 확보하고, 효과적인 메모리 복구의 목적을 구현한다.
전술한 방법 실시예와 대응되게, 본 발명은 장치의 실시예를 더 제공한다.
도 12에 도시된 바와 같이, 도 12는 본 발명이 예시적 실시예에 따라 도시한 작업 스케줄링 장치 블록도이고, 장치는 의존 관계 결정 모듈(310) 및 스케줄링 모듈(320)을 포함한다.
의존 관계 결정 모듈(310)은, 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 복수 개의 조작 작업 사이의 의존 관계를 결정하도록 구성된다.
스케줄링 모듈(320)은, 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 조작 작업 대기열에서의 복수 개의 조작 작업을 스케줄링하도록 구성된다.
선택적으로, 조작 작업에 대응되는 조작수는 읽기 조작수 및 쓰기 조작수 중 적어도 하나를 포함한다.
도 13에 도시된 바와 같이, 도 13은 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 12의 실시예의 기초 상에서, 의존 관계 결정 모듈(310)은, 제2 조작 작업이 제1 조작 작업의 쓰기 오퍼랜드에 대한 읽기 조작을 포함하거나, 제2 조작 작업이 제1 조작 작업의 오퍼랜드에 대한 쓰기 조작을 포함하면, 제2 조작 작업이 제1 조작 작업에 의존하는 것으로 결정하도록 구성된 제1 결정 서브 모듈(311) - 제1 조작 작업 및 제2 조작 작업은 조작 작업 대기열에서의 상이한 조작 작업임 - 을 포함한다.
도 14에 도시된 바와 같이, 도 14는 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 13의 실시예의 기초 상에서, 의존 관계 결정 모듈(310)은 제1 조작 작업이 제2 조작 작업의 읽기 오퍼랜드에 대한 읽기 조작을 포함하면, 제1 조작 작업과 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정하도록 구성된 제2 결정서브 모듈(312)을 더 포함한다.
도 15에 도시된 바와 같이, 도 15는 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 12의 실시예의 기초 상에서, 스케줄링 모듈(320)은, 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 복수 개의 조작 작업의 스케줄링 순서를 결정하도록 구성된 스케줄링 순서 결정 서브 모듈(321); 조작 작업 대기열에서의 현재 조작 작업을 위해 메모리를 할당하도록 구성된 제1 실행 서브 모듈(322); 및 메모리가 할당 완료된 후, 현재 조작 작업을 현재 조작 작업에 대응되는 컨텍스트에 스케줄링하여 실행하고, 스케줄링 순서에 따라 다음 조작 작업의 메모리를 할당하도록 구성된 제2 실행 서브 모듈(323)을 포함한다.
도 16에 도시된 바와 같이, 도 16은 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 15의 실시예의 기초 상에서, 스케줄링 순서 결정서브 모듈(321)은, 복수 개의 조작 작업에서의 제1 조작 작업과 복수 개의 조작 작업에서의 제2 조작 작업 사이에 의존성이 존재하지 않으면, 제1 조작 작업과 제2 조작 작업을 병행으로 호출하는 것으로 결정하도록 구성된 제1 결정 유닛(3211); 및 제2 조작 작업이 제1 조작 작업에 의존하면, 제1 조작 작업 후에 제2 조작 작업을 스케줄링하는 것으로 결정하도록 구성된 제2 결정 유닛(3212) 중 적어도 하나를 포함한다.
도 17에 도시된 바와 같이, 도 17은 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 12의 실시예의 기초 상에서, 의존 관계 결정 모듈(310)은, 복수 개의 조작 작업에 포함된 M 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업을 얻도록 구성된 융합 서브 모듈(313) - 각 병합 통신 조작 작업은 M 개의 통신 조작 작업에서의 적어도 하나의 통신 조작 작업을 포함하고, 여기서, M은 1보다 크거나 같은 정수임 - ; 및 적어도 하나의 병합 통신 조작 작업에 대응되는 오퍼랜드 및 복수 개의 조작 작업 중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 복수 개의 조작 작업 사이의 의존 관계를 결정하도록 구성된 제3 결정 서브 모듈(314)을 포함한다.
선택적으로, 병합 통신 조작 작업에 대응되는 오퍼랜드는 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 읽기 오퍼랜드의 세트, 및 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 쓰기 오퍼랜드의 세트 중 적어도 하나를 포함한다.
선택적으로, 조작 작업 대기열은 제1 조작 작업 대기열 및 제2 조작 작업 대기열을 포함하고, 여기서, 제1 조작 작업 대기열은 복수 개의 조작 작업에서의 통신 조작 작업을 포함하며, 제2 조작 작업 대기열은 복수 개의 조작 작업에서의 비 통신 조작 작업을 포함하며; 여기서, 제1 조작 작업 대기열 및 제2 조작 작업 대기열에 포함된 조작 작업은 각각의 조작 작업 대기열에서의 복수 개의 조작 작업 사이의 의존 관계에 기반하여 결정된 스케줄링 순서에 따라 배열된 것이다.
도 18에 도시된 바와 같이, 도 18은 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 12의 실시예의 기초 상에서, 장치는 상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보를 기록하도록 구성된 기록 모듈(330)을 더 포함하고, 여기서, 상기 제1 조작 작업 대기열에서의 조작 작업이 상기 제2 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하거나, 상기 제2 조작 작업 대기열에서의 조작 작업이 상기 제1 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하면, 상기 의존 정보는 상기 적어도 하나의 조작 작업에서의 마지막 조작 작업의 정보를 포함한다.
스케줄링 모듈(320)은 상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보에 기반하여, 상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에서의 조작 작업을 스케줄링하도록 구성된 제1 스케줄링 서브 모듈(324)을 포함한다.
도 19에 도시된 바와 같이, 도 19는 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 18의 실시예의 기초 상에서, 장치는, 메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하도록 구성된 우선 순위 설정 모듈(340)을 더 포함하고, 여기서, 제2 조작 작업 대기열은 조작 작업 대기열 중 메모리 복구 조작 작업 이외의 비 통신 조작 작업을 포함한다.
도 20에 도시된 바와 같이, 도 20은 본 발명이 예시적 실시예에 따라 도시한 다른 작업 스케줄링 장치 블록도이, 상기 실시예는 전술한 도 19의 실시예의 기초 상에서, 장치는 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트를 결정하도록 구성된 컨텍스트 결정 모듈(350)을 포함하고, 여기서, 조작 작업에 대응되는 컨텍스트는 추상 자원 및 정보 스트림을 포함한다.
스케줄링 모듈(320)은 복수 개의 조작 작업에서 각 조작 작업에 대응되는 컨텍스트 및 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 조작 작업 대기열에서의 복수 개의 조작 작업을 스케줄링하도록 구성된 제2 스케줄링서브 모듈(325)을 포함한다.
선택적으로, 정보 스트림은 통합 컴퓨팅 기기 아키텍처(CUDA) 정보 스트림 및 호스트 정보 스트림 중 적어도 하나를 포함한다.
도 21에 도시된 바와 같이, 도 21은 본 발명이 예시적 실시예에 따라 도시한 다른 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 20의 실시예의 기초 상에서, 제2 스케줄링 서브 모듈(325)은, 복수 개의 조작 작업에서의 적어도 두 개의 조작 작업 사이에 의존성이 존재하지 않고 상기 적어도 두 개의 조작 작업이 상이한 추상 자원에 대응되면, 적어도 두 개의 조작 작업을 병행으로 스케줄링하도록 구성된 제1 스케줄링 유닛(3251)을 포함한다.
도 22에 도시된 바와 같이, 도 22는 본 발명이 예시적 실시예에 따라 도시한 다른 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 20의 실시예의 기초 상에서, 제2 스케줄링 서브 모듈(325)은, 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 제3 조작 작업 및 제4 조작 작업에 대응되는 정보 스트림이 CUDA 정보 스트림이면, 제1 동기화 인터페이스를 호출하여 제3 조작 작업 및 제4 조작 작업을 동기화하도록 구성된 제2 스케줄링 유닛(3252)을 포함한다.
도 23에 도시된 바와 같이, 도 23은 본 발명이 예시적 실시예에 따라 도시한 다른 스케줄링 장치 블록도이고, 상기 실시예는 전술한 도 20의 실시예의 기초 상에서, 스케줄링 서브 모듈(325)은, 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 제3 조작 작업 및 제4 조작 작업에서의 적어도 하나의 조작 작업에 대응되는 정보 스트림이 호스트 정보 스트림이면, 제2 동기화 인터페이스를 호출하여 제3 조작 작업 및 제4 조작 작업을 동기화하도록 구성된 제3 스케줄링 유닛(3253)을 포함한다.
장치 실시예는 방법 실시예에 거의 대응되므로, 관련 부분에 대해서는 방법 실시예의 부분적인 설명을 참조하면 된다. 이상 설명된 장치 실시예는 예시적일 뿐이고, 여기서 상기 분리 부재로서 설명된 유닛은, 물리적으로 분리된 것이거나 아닐 수 있고, 유닛으로서 나타낸 부재는 물리적 유닛이거나 아닐 수 있고, 즉 한 곳에 위치할 수 있거나, 복수 개의 네트워크 유닛에 분포될 수도 있다. 실제 필요에 따라 그 중의 일부 또는 전부 모듈을 선택하여 본 발명의 방안의 목적을 구현할 수 있다. 본 분야의 기술자라면 발명적 작업이 이루어지지 않은 경우에도 이해 및 실시를 할 수 있다.
본 발명의 실시예는 컴퓨터 프로그램이 저장되어 있는 비휘발성 컴퓨터 판독 가능한 저장 매체를 더 제공하고, 컴퓨터 프로그램은 상기 어느 한 작업 스케줄링 방법을 실행하기 위한 것이다.
본 발명의 실시예는 작업 스케줄링 장치를 더 제공하고, 장치는 프로세서; 및 프로세서 실행 가능한 명령어를 저장하기 위한 메모리를 포함하며; 여기서, 프로세서는 상기 메모리에 저장된 실행 가능한 명령어를 호출하여, 상기 어느 한 작업 스케줄링 방법을 실행하도록 구성된다.
도 24에 도시된 바와 같이, 도 24는 예시적 실시예에 따라 도시한 작업 스케줄링 장치(2400)의 구조 예시도이다. 예를 들어, 장치(2400)는 하나의 작업 스케줄링 장치로 제공될 수 있다. 도 24을 참조하면, 장치(2400)는 처리 컴포넌트(2422)를 포함하고, 또한 하나 또는 복수 개의 프로세서 및 메모리(2432)로 대표되는 메모리 자원을 포함하고, 처리 컴포넌트(2422), 예를 들어 애플리케이션 프로그램에 의해 실행될 수 있는 명령어를 저장하기 위한 것이다. 메모리(2432)에 저장된 애플리케이션 프로그램은 하나 또는 하나 이상의 각 명령어 세트에 대응되는 모듈을 포함할 수 있다. 또한, 처리 컴포넌트(2422)는 명령어를 실행하여, 상기 어느 한 작업 스케줄링 방법을 실행하도록 구성된다.
장치(2400)는 장치(2400)의 전원 관리를 실행하도록 구성된 하나의 전원 컴포넌트(2426), 장치(2400)를 네트워크에 연결하도록 구성된 하나의 유선 또는 무선 네트워크 인터페이스(2450) 및 하나의 입력/출력(Input/Output) 인터페이스(2458)를 더 포함할 수 있다. 장치(2400)는 예를 들어 Windows ServerTM, Mac OS XTM, UnixTM, LinuxTM,FreeB SDTM 또는 유사한 것 등과 같은 메모리(2432)에 저장된 것에 기반한 운영 시스템을 조작할 수 있다.
본 발명의 실시예는 컴퓨터 프로그램을 더 제공하고, 상기 컴퓨터 프로그램은 상기 임의의 가능한 구현 방식에서의 방법을 구현하기 위한 명령어를 포함한다.
본 기술분야의 기술자는 명세서를 고려하고 본문에 개시된 발명을 실천한 후, 본 발명의 다른 실시방안을 용이하게 생각해낼 수 있을 것이다. 본 발명은 본 발명의 임의의 변형, 용도 또는 적응성 변화를 포함하도록 의도되며, 이러한 변형, 용도 또는 적응성 변화는 본 개시의 일반적인 원리에 따르며, 본 발명에서 개시되지 않은 본 기술분야의 공지된 상식이나 통상적인 기술수단을 포함한다. 명세서 및 실시예는 다만 예시적인 것으로 간주되며, 본 발명의 진정한 범위 및 사상은 아래의 요청범위에 의해 지적된다.
이상의 내용은 본 발명의 바람직한 실시예일 뿐, 본 발명을 한정하기 위한 것이 아니며, 본 발명의 사상 및 원칙 내에서 이루어진 임의의 수정, 동등한 교체, 개선 등은, 본 발명의 보호 범위에 포함되어야 한다.
Claims (34)
- 작업 스케줄링 방법으로서,
조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계; 및
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항에 있어서,
상기 조작 작업에 대응되는 오퍼랜드는 읽기 오퍼랜드 및 쓰기 오퍼랜드 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항 또는 제2항에 있어서,
상기 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계는,
제2 조작 작업이 제1 조작 작업의 쓰기 오퍼랜드에 대한 읽기 조작을 포함하거나, 상기 제2 조작 작업이 상기 제1 조작 작업의 오퍼랜드에 대한 쓰기 조작을 포함하면, 상기 제2 조작 작업이 상기 제1 조작 작업에 의존하는 것으로 결정하는 단계 - 상기 제1 조작 작업 및 상기 제2 조작 작업은 상기 조작 작업 대기열에서의 상이한 조작 작업임 - 를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계는,
제2 조작 작업이 제1 조작 작업의 읽기 오퍼랜드에 대한 읽기 조작을 포함하면, 상기 제1 조작 작업과 상기 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 복수 개의 조작 작업의 스케줄링 순서를 결정하는 단계;
상기 조작 작업 대기열에서의 현재 조작 작업을 위해 메모리를 할당하는 단계;
상기 메모리를 할당 완료한 후, 상기 현재 조작 작업을 상기 현재 조작 작업에 대응되는 컨텍스트에 스케줄링하여 실행하는 단계; 및
상기 스케줄링 순서에 따라 상기 다음 조작 작업의 메모리 할당을 수행하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제5항에 있어서,
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 복수 개의 조작 작업의 스케줄링 순서를 결정하는 단계는,
상기 복수 개의 조작 작업에서의 제1 조작 작업과 상기 복수 개의 조작 작업에서의 제2 조작 작업 사이에 의존성이 존재하지 않으면, 상기 제1 조작 작업과 상기 제2 조작 작업을 병행으로 호출하는 것으로 결정하는 단계; 및
상기 제2 조작 작업이 상기 제1 조작 작업에 의존하면, 상기 제1 조작 작업 이후에 상기 제2 조작 작업을 스케줄링하는 것으로 결정하는 단계 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계는,
상기 복수 개의 조작 작업에 포함된 M 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업을 얻는 단계 - 각 병합 통신 조작 작업은 상기 M 개의 통신 조작 작업에서의 적어도 하나의 통신 조작 작업을 포함하고, M은 1보다 크거나 같은 정수임 - ; 및
상기 적어도 하나의 병합 통신 조작 작업에 대응되는 오퍼랜드 및 상기 복수 개의 조작 작업중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제7항에 있어서,
상기 병합 통신 조작 작업에 대응되는 오퍼랜드는,
상기 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 읽기 오퍼랜드의 세트, 및 상기 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 쓰기 오퍼랜드의 세트 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항 내지 제8항 중 어느 한 항에 있어서,
상기 조작 작업 대기열은 제1 조작 작업 대기열 및 제2 조작 작업 대기열을 포함하고, 여기서, 상기 제1 조작 작업 대기열은 상기 복수 개의 조작 작업에서의 통신 조작 작업을 포함하며, 상기 제2 조작 작업 대기열은 상기 복수 개의 조작 작업에서의 비 통신 조작 작업을 포함하며;
상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에 포함된 조작 작업은 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여 결정된 스케줄링 순서에 따라 배열된 것을 특징으로 하는 작업 스케줄링 방법. - 제9항에 있어서,
상기 작업 스케줄링 방법은,
상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보를 기록하는 단계 - 상기 제1 조작 작업 대기열에서의 조작 작업이 상기 제2 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하거나, 상기 제2 조작 작업 대기열에서의 조작 작업이 상기 제1 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하면, 상기 의존 정보는 상기 적어도 하나의 조작 작업에서의 마지막 조작 작업의 정보를 포함함 - 를 더 포함하고;
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보에 기반하여, 상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에서의 조작 작업을 스케줄링하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제9항 또는 제10항에 있어서,
상기 작업 스케줄링 방법은,
메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하는 단계 - 상기 제2 조작 작업 대기열은 상기 조작 작업 대기열 중 상기 메모리 복구 조작 작업 이외의 상기 비 통신 조작 작업을 포함함 - 를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제1항 내지 제11항 중 어느 한 항에 있어서,
상기 복수 개의 조작 작업 사이의 의존 관계를 결정하기 전, 상기 작업 스케줄링 방법은,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트를 결정하는 단계 - 상기 조작 작업에 대응되는 컨텍스트는 추상 자원 및 정보 스트림을 포함함 - 를 더 포함하고;
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 상기 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제12항에 있어서,
상기 정보 스트림은 통합 컴퓨팅 기기 아키텍처(CUDA) 정보 스트림 및 호스트 정보 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제12항 또는 제13항에 있어서,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 복수 개의 조작 작업에서의 적어도 두 개의 조작 작업 사이에 의존성이 존재하지 않고 상기 적어도 두 개의 조작 작업이 상이한 추상 자원에 대응되면, 상기 적어도 두 개의 조작 작업을 병행으로 스케줄링하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제12항 내지 제14항 중 어느 한 항에 있어서,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 상기 제3 조작 작업 및 제4 조작 작업에 대응되는 정보 스트림이 CUDA 정보 스트림이면, 제1 동기화 인터페이스를 호출하여 상기 제3 조작 작업 및 상기 제4 조작 작업을 동기화하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 제12항 내지 제15항 중 어느 한 항에 있어서,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하는 단계는,
상기 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 상기 제3 조작 작업 및 상기 제4 조작 작업에서의 적어도 하나의 조작 작업에 대응되는 정보 스트림이 호스트 정보 스트림이면, 제2 동기화 인터페이스를 호출하여 상기 제3 조작 작업 및 상기 제4 조작 작업을 동기화하는 단계를 포함하는 것을 특징으로 하는 작업 스케줄링 방법. - 작업 스케줄링 장치로서,
조작 작업 대기열 중 복수 개의 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하도록 구성된 의존 관계 결정 모듈; 및
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하도록 구성된 스케줄링 모듈을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제17항에 있어서,
상기 조작 작업에 대응되는 오퍼랜드는 읽기 오퍼랜드 및 쓰기 오퍼랜드 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제17항 또는 제18항에 있어서,
상기 의존 관계 결정 모듈은,
제2 조작 작업이 제1 조작 작업의 쓰기 오퍼랜드에 대한 읽기 조작을 포함하거나, 상기 제2 조작 작업이 상기 제1 조작 작업의 오퍼랜드에 대한 쓰기 조작을 포함하면, 상기 제2 조작 작업이 상기 제1 조작 작업에 의존하는 것으로 결정하도록 구성된 제1 결정 서브 모듈 - 상기 제1 조작 작업 및 상기 제2 조작 작업은 상기 조작 작업 대기열에서의 상이한 조작 작업임 - 을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제17항 내지 제19항 중 어느 한 항에 있어서,
상기 의존 관계 결정 모듈은,
제2 조작 작업이 제1 조작 작업의 읽기 오퍼랜드에 대한 읽기 조작을 포함하면, 상기 제1 조작 작업과 상기 제2 조작 작업 사이에 의존성이 존재하지 않는 것으로 결정하도록 구성된 제2 결정 서브 모듈을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제18항 내지 제20항 중 어느 한 항에 있어서,
상기 스케줄링 모듈은,
상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 복수 개의 조작 작업의 스케줄링 순서를 결정하도록 구성된 스케줄링 순서 결정 서브 모듈;
상기 조작 작업 대기열에서의 현재 조작 작업을 위해 메모리를 할당하도록 구성된 제1 실행 서브 모듈; 및
상기 메모리를 할당 완료한 후, 상기 현재 조작 작업을 상기 현재 조작 작업에 대응되는 컨텍스트에 스케줄링하여 실행하고, 상기 스케줄링 순서에 따라 상기 다음 조작 작업의 메모리 할당을 수행하도록 구성된 제2 실행 서브 모듈을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제21항에 있어서,
상기 스케줄링 순서 결정 서브 모듈은,
상기 복수 개의 조작 작업에서의 제1 조작 작업과 상기 복수 개의 조작 작업에서의 제2 조작 작업 사이에 의존성이 존재하지 않으면, 상기 제1 조작 작업과 상기 제2 조작 작업을 병행으로 호출하는 것으로 결정하도록 구성된 제1 결정 유닛; 및
상기 제2 조작 작업이 상기 제1 조작 작업에 의존하면, 상기 제1 조작 작업 이후에 상기 제2 조작 작업을 스케줄링하는 것으로 결정하도록 구성된 제2 결정 유닛을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제17항 내지 제22항 중 어느 한 항에 있어서,
상기 의존 관계 결정 모듈은,
상기 복수 개의 조작 작업에 포함된 M 개의 통신 조작 작업에 대해 융합 처리를 수행하여, 적어도 하나의 병합 통신 조작 작업을 얻도록 구성된 융합 서브 모듈 - 각 병합 통신 조작 작업은 상기 M 개의 통신 조작 작업에서의 적어도 하나의 통신 조작 작업을 포함하고, M은 1보다 크거나 같은 정수임 - ; 및
상기 적어도 하나의 병합 통신 조작 작업에 대응되는 오퍼랜드 및 상기 복수 개의 조작 작업중 적어도 하나의 비 통신 조작 작업에 대응되는 오퍼랜드에 따라, 상기 복수 개의 조작 작업 사이의 의존 관계를 결정하도록 구성된 제3 결정 서브 모듈을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제23항에 있어서,
상기 병합 통신 조작 작업에 대응되는 오퍼랜드는,
상기 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 읽기 오퍼랜드의 세트, 및 상기 병합 통신 조작 작업에 포함된 적어도 하나의 통신 조작 작업에 대응되는 쓰기 오퍼랜드의 세트 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제17항 내지 제24항 중 어느 한 항에 있어서,
상기 조작 작업 대기열은 제1 조작 작업 대기열 및 제2 조작 작업 대기열을 포함하고, 상기 제1 조작 작업 대기열은 상기 복수 개의 조작 작업에서의 통신 조작 작업을 포함하며, 상기 제2 조작 작업 대기열은 상기 복수 개의 조작 작업에서의 비 통신 조작 작업을 포함하며;
상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에 포함된 조작 작업은 각각의 조작 작업 대기열에서의 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여 결정된 스케줄링 순서에 따라 배열된 것을 특징으로 하는 작업 스케줄링 장치. - 제25항에 있어서,
상기 작업 스케줄링 장치는,
상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보를 기록하도록 구성된 기록 모듈 - 상기 제1 조작 작업 대기열에서의 조작 작업이 상기 제2 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하거나, 상기 제2 조작 작업 대기열에서의 조작 작업이 상기 제1 조작 작업 대기열에서의 적어도 하나의 조작 작업에 의존하면, 상기 의존 정보는 상기 적어도 하나의 조작 작업에서의 마지막 조작 작업의 정보를 포함함 - 을 더 포함하고;
상기 스케줄링 모듈은,
상기 제1 조작 작업 대기열과 상기 제2 조작 작업 대기열 사이의 의존 정보에 기반하여, 상기 제1 조작 작업 대기열 및 상기 제2 조작 작업 대기열에서의 조작 작업을 스케줄링하도록 구성된 제1 스케줄링 서브 모듈을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제25항 또는 제26항에 있어서,
상기 작업 스케줄링 장치는,
메모리 복구 조작 작업에 대응되는 우선 순위를 가장 높게 설정하도록 구성된 우선 순위 설정 모듈 - 상기 제2 조작 작업 대기열은 상기 조작 작업 대기열 중 상기 메모리 복구 조작 작업 이외의 상기 비 통신 조작 작업을 포함함 - 을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제17항 내지 제27항 중 어느 한 항에 있어서,
상기 작업 스케줄링 장치는,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 컨텍스트를 결정하도록 구성된 컨텍스트 결정 모듈 - 상기 조작 작업에 대응되는 컨텍스트는 추상 자원 및 정보 스트림을 포함함 - 을 더 포함하고;
상기 스케줄링 모듈은,
상기 복수 개의 조작 작업 중 각 조작 작업에 대응되는 상기 컨텍스트 및 상기 복수 개의 조작 작업 사이의 의존 관계에 기반하여, 상기 조작 작업 대기열에서의 상기 복수 개의 조작 작업을 스케줄링하도록 구성된 제2 스케줄링 서브 모듈을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제28항에 있어서,
상기 정보 스트림는 통합 컴퓨팅 기기 아키텍처(CUDA) 정보 스트림 및 호스트 정보 스트림 중 적어도 하나를 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제28항 또는 제29항에 있어서,
상기 제2 스케줄링서브 모듈은,
상기 복수 개의 조작 작업에서의 적어도 두 개의 조작 작업 사이에 의존성이 없고 상기 적어도 두 개의 조작 작업이 상이한 추상 자원에 대응되면, 상기 적어도 두 개의 조작 작업을 병행으로 스케줄링하도록 구성된 제1 스케줄링 유닛을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제28항 내지 제30항 중 어느 한 항에 있어서,
상기 제2 스케줄링 서브 모듈은,
상기 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 상기 제3 조작 작업 및 제4 조작 작업에 대응되는 정보 스트림이 CUDA 정보 스트림이면, 제1 동기화 인터페이스를 호출하여 상기 제3 조작 작업 및 상기 제4 조작 작업을 동기화하도록 구성된 제2 스케줄링 유닛을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 제28항 내지 제31항 중 어느 한 항에 있어서,
상기 제2 스케줄링 서브 모듈은,
상기 복수 개의 조작 작업에서의 제3 조작 작업 및 제4 조작 작업 사이에 의존성이 존재하고, 상기 제3 조작 작업 및 상기 제4 조작 작업에서의 적어도 하나의 조작 작업에 대응되는 정보 스트림이 호스트 정보 스트림이면, 제2 동기화 인터페이스를 호출하여 상기 제3 조작 작업 및 상기 제4 조작 작업을 동기화하도록 구성된 제3 스케줄링 유닛을 포함하는 것을 특징으로 하는 작업 스케줄링 장치. - 비 휘발성 컴퓨터 판독 가능한 저장 매체로서,
상기 저장 매체에는 컴퓨터 프로그램이 저장되어 있고, 상기 컴퓨터 프로그램은 제1항 내지 제16항 중 어느 한 항에 따른 작업 스케줄링 방법을 실행하기 위한 것임을 특징으로 하는 비 휘발성 컴퓨터 판독 가능한 저장 매체. - 작업 스케줄링 장치로서,
프로세서; 및
프로세서 실행 가능한 명령어를 저장하기 위한 메모리를 포함하고;
상기 프로세서는 상기 메모리에 저장된 상기 실행 가능한 명령어를 호출하여, 제1항 내지 제16항 중 어느 한 항에 따른 작업 스케줄링 방법을 구현하도록 구성된 것을 특징으로 하는 작업 스케줄링 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910200097.3A CN111694675B (zh) | 2019-03-15 | 2019-03-15 | 任务调度方法及装置、存储介质 |
CN201910200097.3 | 2019-03-15 | ||
PCT/CN2019/124494 WO2020186836A1 (zh) | 2019-03-15 | 2019-12-11 | 任务调度 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200136468A true KR20200136468A (ko) | 2020-12-07 |
Family
ID=72475505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207030753A KR20200136468A (ko) | 2019-03-15 | 2019-12-11 | 작업 스케줄링 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11347546B2 (ko) |
JP (1) | JP7050957B2 (ko) |
KR (1) | KR20200136468A (ko) |
CN (1) | CN111694675B (ko) |
SG (1) | SG11202010574PA (ko) |
TW (1) | TW202036306A (ko) |
WO (1) | WO2020186836A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114567520B (zh) * | 2020-11-26 | 2023-06-02 | 华为技术有限公司 | 实现集合通信的方法、计算机设备和通信*** |
CN112463334B (zh) * | 2020-12-04 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 一种训练任务排队原因分析方法、***、设备以及介质 |
CN112612615B (zh) * | 2020-12-28 | 2022-12-06 | 中孚安全技术有限公司 | 基于多线程内存分配和上下文调度的数据处理方法及*** |
US20220269528A1 (en) * | 2021-02-24 | 2022-08-25 | Huawei Technologies Co., Ltd. | System, method and apparatus for intelligent heterogeneous computation |
CN113220480B (zh) * | 2021-04-29 | 2023-03-10 | 西安易联趣网络科技有限责任公司 | 分布式的数据任务跨云调度***及方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100611341B1 (ko) * | 1998-08-24 | 2006-08-14 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 저장 어드레스 생성에 대한 적재 블록을 위한 메커니즘 |
CN102129390B (zh) * | 2011-03-10 | 2013-06-12 | 中国科学技术大学苏州研究院 | 片上多核计算平台的任务调度***及进行任务并行化方法 |
CN102354289B (zh) * | 2011-09-21 | 2012-10-10 | 苏州大学 | 一种并发事务的调度方法和相关装置 |
CN102360309B (zh) * | 2011-09-29 | 2013-12-18 | 中国科学技术大学苏州研究院 | 片上多核异构***的调度***与调度执行方法 |
US9280395B2 (en) | 2012-05-30 | 2016-03-08 | Intel Corporation | Runtime dispatching among a heterogeneous group of processors |
CA3198484A1 (en) * | 2014-06-30 | 2016-01-07 | Amazon Technologies, Inc. | Feature processing tradeoff management |
CN104156264B (zh) | 2014-08-01 | 2017-10-10 | 西北工业大学 | 一种基于多gpu的基带信号处理任务并行实时调度方法 |
WO2016041126A1 (zh) * | 2014-09-15 | 2016-03-24 | 华为技术有限公司 | 基于gpu的数据流处理方法和装置 |
CN104965761B (zh) | 2015-07-21 | 2018-11-02 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
US10437649B2 (en) * | 2016-03-11 | 2019-10-08 | Intel Corporation | Task mapping for heterogeneous platforms |
CN106227507B (zh) * | 2016-07-11 | 2019-10-18 | 北京深鉴智能科技有限公司 | 计算***及其控制器 |
CN107766144A (zh) * | 2016-08-17 | 2018-03-06 | 中兴通讯股份有限公司 | 一种任务调度方法、装置及*** |
CN106648846A (zh) * | 2016-09-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种改进的异构多核任务调度的方法 |
CN107886167B (zh) * | 2016-09-29 | 2019-11-08 | 北京中科寒武纪科技有限公司 | 神经网络运算装置及方法 |
CN108021563B (zh) * | 2016-10-31 | 2021-09-07 | 华为技术有限公司 | 一种指令间数据依赖的检测方法和装置 |
US10503671B2 (en) * | 2016-12-29 | 2019-12-10 | Oath Inc. | Controlling access to a shared resource |
US11204805B2 (en) * | 2017-04-27 | 2021-12-21 | Nec Corporation | Computational resource management apparatus which optimizes computational resources to be allocated to tasks having a dependency relationship, computational resource management method and computer readable recording medium |
WO2018223330A1 (en) * | 2017-06-08 | 2018-12-13 | Alibaba Group Holding Limited | Method and apparatus for distributed machine learning system |
-
2019
- 2019-03-15 CN CN201910200097.3A patent/CN111694675B/zh active Active
- 2019-12-11 SG SG11202010574PA patent/SG11202010574PA/en unknown
- 2019-12-11 KR KR1020207030753A patent/KR20200136468A/ko active Search and Examination
- 2019-12-11 WO PCT/CN2019/124494 patent/WO2020186836A1/zh active Application Filing
- 2019-12-11 JP JP2020561765A patent/JP7050957B2/ja active Active
- 2019-12-27 TW TW108148049A patent/TW202036306A/zh unknown
-
2020
- 2020-10-22 US US17/077,186 patent/US11347546B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11347546B2 (en) | 2022-05-31 |
JP7050957B2 (ja) | 2022-04-08 |
US20210042155A1 (en) | 2021-02-11 |
CN111694675A (zh) | 2020-09-22 |
SG11202010574PA (en) | 2020-11-27 |
JP2021520578A (ja) | 2021-08-19 |
TW202036306A (zh) | 2020-10-01 |
WO2020186836A1 (zh) | 2020-09-24 |
CN111694675B (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20200136468A (ko) | 작업 스케줄링 | |
KR102228501B1 (ko) | 컴파일러 방법 | |
CN102193853B (zh) | 虚拟机监控器及其调度方法 | |
US10572290B2 (en) | Method and apparatus for allocating a physical resource to a virtual machine | |
KR102167059B1 (ko) | 멀티-타일 프로세싱 어레이의 동기화 | |
JP5643190B2 (ja) | 局所的集合内のタスクを汎用的集合に割り当てるための方法及びコンピュータ読取可能記録媒体 | |
CN110431806B (zh) | 分布式资源管理中低时延节点本地调度的***和方法 | |
KR20190044565A (ko) | 호스트 프로세서와의 동기화 | |
US9535756B2 (en) | Latency-hiding context management for concurrent distributed tasks in a distributed system | |
CN104094235B (zh) | 多线程计算 | |
JP2009265963A (ja) | 情報処理システム及びタスクの実行制御方法 | |
CN103262002A (zh) | 优化***调用请求通信 | |
CN103366338A (zh) | 图像处理装置和图像处理方法 | |
WO2014110702A1 (zh) | 协同并发式消息总线、主动构件组装模型及构件拆分方法 | |
US20170024231A1 (en) | Configuration of a computer system for real-time response from a virtual machine | |
US20200167191A1 (en) | Laxity-aware, dynamic priority variation at a processor | |
Cannella et al. | Adaptivity support for MPSoCs based on process migration in polyhedral process networks | |
KR20210051325A (ko) | 비대칭 멀티프로세싱 시스템의 데이터 공유 장치 및 방법 | |
Pazzaglia et al. | Optimizing the functional deployment on multicore platforms with logical execution time | |
WO2018075811A2 (en) | Network-on-chip architecture | |
US20100269119A1 (en) | Event-based dynamic resource provisioning | |
US9384047B2 (en) | Event-driven computation | |
KR101332839B1 (ko) | 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법 | |
JP6535304B2 (ja) | 分散同期処理システムおよび分散同期処理方法 | |
Tolosana-Calasanz et al. | Extending cometcloud to process dynamic data streams on heterogeneous infrastructures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |