KR20210031347A - 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 - Google Patents
처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 Download PDFInfo
- Publication number
- KR20210031347A KR20210031347A KR1020200001215A KR20200001215A KR20210031347A KR 20210031347 A KR20210031347 A KR 20210031347A KR 1020200001215 A KR1020200001215 A KR 1020200001215A KR 20200001215 A KR20200001215 A KR 20200001215A KR 20210031347 A KR20210031347 A KR 20210031347A
- Authority
- KR
- South Korea
- Prior art keywords
- processing device
- processing
- queue
- accumulation
- task
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 97
- 239000011159 matrix material Substances 0.000 claims abstract description 8
- 238000009825 accumulation Methods 0.000 claims description 94
- 230000004044 response Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
-
- 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
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
본 출원은 클라우드 컴퓨팅 분야에 관한 것이며, 구체적으로 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체에 관한 것이다. 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함한다. 당해 방법에서, 제1 유형의 작업을 수행하는 제1 대기 행렬과 제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축한다. 처리 작업의 정의에 따라, 처리 장치에서 수행될 작업 그룹과, 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득한다. 의존 관계에 따라, 제1 대기 행렬의 작업과 제2 대기 행렬의 작업을 각각 수행한다. 상기 구현 방법을 통해, 다양한 유형의 작업을 배치하는데 필요한 시간과 자원 비용을 절감하고, 처리 작업을 더 효율적으로 수행할 수 있다.
Description
본 출원의 구현 방식은 포괄적으로 처리 작업에 관한 것이고, 구체적으로 복수의 처리 장치에서 분산 방식으로 처리 작업을 수행하는 방법, 장치, 기기 및 컴퓨터 저장 매체에 관한 것이다.
컴퓨터 기술이 발전하면서, 분산 처리 방식(distributed processing)이 현재 이미 개발되어 있다. 복수의 처리 장치를 제공할 뿐만 아니라 분산 방식으로 복수의 처리 장치에서 처리 작업을 수행할 수 있다. 하지만, 처리 작업이 점점 복잡해지면서 대량의 처리 장치에 의해 조정하여 작업할 필요가 있다. 이때 복수의 처리 장치를 어떻게 배치하여 더 효과적으로 처리 작업을 수행하는 지가 하나의 기술 난제로 되었다.
본 출원 실시예의 구현 방식은 처리 작업을 수행하기 위한 일종의 방안이다.
본 출원의 내용의 제1 양태에 있어서, 처리 작업을 수행하는 방법을 제공한다. 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함한다. 상기 방법에서, 제1 유형의 작업을 수행하는 제1 대기 행렬과 제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축한다. 처리 작업의 정의에 따라, 처리 장치에서 수행될 작업 그룹과, 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득한다. 의존 관계에 따라, 처리 장치에서 제1 대기 행렬의 작업과 제2 대기 행렬의 작업을 각각 수행한다.
본 출원의 내용의 제2 양태에 있어서, 처리 작업을 수행하는 장치를 제공한다. 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함한다. 상기 장치는, 제1 유형의 작업을 수행하는 제1 대기 행렬과 제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축하도록 구성된 구축 모듈; 처리 작업의 정의에 따라, 처리 장치에서 수행될 작업 그룹과, 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득하도록 구성된 획득 모듈; 및 의존 관계에 따라, 처리 장치에서 제1 대기 행렬의 작업과 제2 대기 행렬의 작업을 각각 수행하도록 구성된 수행 모듈을 포함한다.
본 출원의 내용의 제3 양태에 있어서, 처리 작업을 수행하는 기기를 제공한다. 상기 기기는 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램을 저장하기 위한 저장 장치를 포함하되, 하나 또는 복수의 프로그램이 하나 또는 복수의 프로세서에 의해 실행될 경우, 하나 또는 복수의 프로세서가 본 출원의 내용의 제1 양태의 방법을 구현하도록 한다.
본 출원의 내용의 제4 양태에 있어서, 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체를 제공하되, 상기 프로그램이 프로세서에 의해 수행될 때 본 출원의 내용의 제1 양태의 방법을 구현한다.
발명의 내용 부분에서 설명한 내용은 본 출원의 실시예의 핵심 혹은 중요 특징을 한정하는 것이 아니고, 또한 본 출원의 범위를 제한하고자 하는 것이 아니라고 이해되어야 한다. 본 출원의 기타 다른 특징은 후문의 설명으로 더 쉽게 이해될 것이다.
도면의 결합 및 후문의 상세 설명으로 본 출원의 실시예의 상기 설명, 기타 특징, 장점 및 각 부분들이 더 명료해 질 것이다. 도면에서 같거나 비슷한 도면 표기는 같거나 비슷한 요소를 나타낸다.
도 1a는 복수의 처리 장치에 의해 처리 작업이 수행되는 블록도를 개략적으로 나타낸다.
도 1b는 복수의 처리 장치에 의해 처리 작업이 수행된 이후의 처리 결과의 블록도를 개략적으로 나타낸다.
도 2는 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 블록도를 개략적으로 나타낸다.
도 3은 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 방법의 흐름도를 개략적으로 나타낸다.
도 4는 본 출원의 예시 구현방식에 따른 복수의 처리 장치 사이에 필요한 데이터 분포의 블록도를 개략적으로 나타낸다.
도 5는 본 출원의 예시 구현방식에 따른 복수의 처리장치에서 축적 작업을 수행하는 블록도를 개략적으로 나타낸다.
도 6은 본 출원의 예시 구현방식에 따른 처리 장치에 코드를 로드하는 블록도를 개략적으로 나타낸다.
도 7은 본 출원의 예시 구현방식에 따른 복사 대기 행렬 중 복사 작업을 완료한 후 하드웨어 인터럽트를 작동하는 블록도를 개략적으로 나타낸다.
도 8은 본 출원의 예시 구현방식에 따른 축적 대기 행렬 중 축적 작업을 완료한 후 하드웨어 인터럽트를 작동하는 블록도를 개략적으로 나타낸다.
도 9는 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 장치의 블록도를 개략적으로 나타낸다.
도 10은 본 출원의 복수의 구현 방식을 실시할 수 있는 컴퓨터 기기의 블록도를 개략적으로 나타낸다.
도 1a는 복수의 처리 장치에 의해 처리 작업이 수행되는 블록도를 개략적으로 나타낸다.
도 1b는 복수의 처리 장치에 의해 처리 작업이 수행된 이후의 처리 결과의 블록도를 개략적으로 나타낸다.
도 2는 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 블록도를 개략적으로 나타낸다.
도 3은 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 방법의 흐름도를 개략적으로 나타낸다.
도 4는 본 출원의 예시 구현방식에 따른 복수의 처리 장치 사이에 필요한 데이터 분포의 블록도를 개략적으로 나타낸다.
도 5는 본 출원의 예시 구현방식에 따른 복수의 처리장치에서 축적 작업을 수행하는 블록도를 개략적으로 나타낸다.
도 6은 본 출원의 예시 구현방식에 따른 처리 장치에 코드를 로드하는 블록도를 개략적으로 나타낸다.
도 7은 본 출원의 예시 구현방식에 따른 복사 대기 행렬 중 복사 작업을 완료한 후 하드웨어 인터럽트를 작동하는 블록도를 개략적으로 나타낸다.
도 8은 본 출원의 예시 구현방식에 따른 축적 대기 행렬 중 축적 작업을 완료한 후 하드웨어 인터럽트를 작동하는 블록도를 개략적으로 나타낸다.
도 9는 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 장치의 블록도를 개략적으로 나타낸다.
도 10은 본 출원의 복수의 구현 방식을 실시할 수 있는 컴퓨터 기기의 블록도를 개략적으로 나타낸다.
후문에서 본 출원의 구현 방식을 도면을 참조하여 더 상세하게 설명하고자 한다. 도면에서 본 출원의 일부 구현 방식들을 설명하고 있지만, 이는 본 출원의 명세서에서 설명하고 있는 구현방식에 국한되는 것이 아니라, 본 출원의 내용을 더 명확하고 완전하게 설명하고자 제시된 것이다. 본 출원의 도면과 구현방식은 예시를 보여주는 것에 불과한 것이며 본 출원의 보호범위를 제한하는 것이 아니라고 이해되어야 한다.
본 출원의 내용의 구현 방식에 있어서, "포함" 및 이와 유사한 용어는 개방적 의미의 포함, 즉 "포함하지만 국한되지 않는"이라고 해석되어야 한다. "기반하여"는 "적어도 부분적으로 기반하여"로 해석되어야 한다. "하나의 구현 방식" 또는 "상기 구현 방식"은 "적어도 하나의 구현 방식"으로 해석되어야 한다. "제1", "제2" 등 표현은 같거나 다른 대상을 지칭한다. 후문에서는 기타 다른 명확한 정의 및 뜻이 함축된 정의를 담고 있을 수 있다.
본 출원의 전후 설명에 나오는 처리 작업은 올 리듀스(AII Reduce)이며, 상기 작업은 처리 대기 데이터에 대해서 축적 작업을 수행하는 것이다. 복수의 처리 장치(예컨대, GPU, AI전용칩 등)에서 처리 작업이 수행될 수 있으며, n으로 복수의 처리 장치의 수량을 표시할 수 있다. 설명의 편의를 위해 본 출원의 설명에서는 4개의 처리 장치로 처리 작업을 수행하는 것을 예시로 설명하고자 한다. n의 수치는 더 클 수도 더 작을 수도 있는 정수라고 이해하면 된다.
이미 AII Reduce를 수행하기 위한 다양한 기술 방안이 있고, 고리형태를 기반으로 한 AII Reduce 방안에서는 처리 대기 데이터를 n 부분으로 나눌 수 있으며, 원형으로 연결된 n개의 처리 장치에 의해 n분의 데이터 중 1개씩을 각각 처리한다. 모든 처리 장치는 자체의 축적 결과를 고리형태 구조에서의 다음 처리 장치로 전송하고, 또한 고리형태 구조에서의 이전 처리 장치의 축적 결과를 수신한다.
전후 설명에서 우선 도 1a와 도 1b를 참조하여 본 출원의 응용 환경을 설명하고자 한다. 도 1a는 복수의 처리 장치에서 처리 작업을 수행하는 블록도(100A)를 개략적으로 나타낸다. 도 1a와 같이, 고리형태의 방식으로 연결된 4개의 처리 장치(110, 120, 130 및 140)에 의해 처리 작업을 수행한다. 처리될 처리 대기 데이터가 M이라는 가정하에, 데이터(M)를 4등분 할 수 있고, 이때 1개 데이터는 M/4로 된다. 모든 처리 장치에 처리 대기 데이터인 M/4을 각각 전송한다.
각각의 처리 장치의 데이터는 평균적으로 4등분 한 것이고, 제I 처리 장치는 제i 등분의 데이터를 후속 처리 장치에 복사한다. 각각의 처리 장치는, 이전 처리 장치의 데이터를 수신한 후 로컬의 대응하는 데이터를 축적하고, 축적 결과를 다음 처리 장치에 복사한다. 다음 라운드에서, 각각의 처리 장치가 이전 처리 장치의 축적 결과를 기다렸다가, 수신된 축적 결과와 로컬의 대응하는 데이터를 축적하여, 새로운 축적 결과를 다음 처리 장치에 다시 복사한다. 이러한 절차를 모든 처리 장치가 일부 완전한 축적 결과를 가질 때까지 반복된다. 계속해서, 모든 처리 장치는 자체의 일부 완전한 축적 결과를 다음 처리 장치에 복사하고, 다음 처리 장치는 상기 일부 완전한 축적 결과를 수신한 다음, 후속 처리 장치에 복사하되, 이러한 절차는 모든 처리 장치가 전부 완전한 축적 결과를 가질 때까지 반복된다.
도 1b는 복수의 처리 장치에서 처리 작업이 수행된 이후의 처리 결과의 블록도를 개략적으로 나타낸다. 전문에서 설명한 All Reduce 작업을 수행한 후, 각각의 처리 장치(110, 120, 130, 140)는 모두 전부 완전한 축적 결과를 갖는다. 컨트롤 가능한 n개의 처리 장치의 협업을 위해 전문에서 설명한 과정을 수행하는 데는 대량의 통신 자원을 통한 데이터의 축적, 복사 및 수신을 배치해야 하기 때문에 확장성이 부족하다.
현재 고리형태를 기반으로 한 양방향 All Reduce 방법이 있는데, 당해 방법은 복수의 처리 장치를 가로와 세로 두 개 방향의 고리로 구분한 것이다. 하지만, 당해 방법은 각 절차 사이에 더 많은 통신이 필요하여 대규모 데이터를 처리하는데 적용하기는 어렵다. 따라서 All Reduce 처리 작업을 수행할 더 효과적인 방법이 필요하다.
상기 기술 방법의 한계를 부분적으로 해결하기 위해서, 본 출원의 예시 구현에 따라 처리 작업을 수행하는 일종의 기술 방안을 제시한다. 구체적으로는 본 출원의 예시 구현은 작업 대기 행렬의 개념을 제시하고, 처리 장치에서 다른 유형의 작업을 수행하기 위해 작업 대기 행렬을 구축할 수 있다. 그리고 한 처리 장치에서 수행하는 복수의 작업과 다른 처리 장치에서 수행하는 복수의 작업 사이의 의존 관계에 따라, 처리 장치는 각 작업 대기 행렬의 작업을 각각 수행함으로써 처리 작업 중 각 처리 장치로 분배된 부분들을 완성하도록 한단. 후문에서는 도 2를 참고하여 본 출원의 과정을 포괄적으로 설명하고자 한다.
도 2는 본 출원의 예시 구현방식에 따른 처리 작업을 수행하는 블록도(200)를 개략적으로 나타낸다. 한 처리 장치 그룹이 n개의 처리 장치를 포함할 경우 상기 처리 작업(210)을 n개의 부분으로 나눌 수 있다. 도 2에서 도시한 바와 같이, 처리 작업(210)은 복수의 부분(220, 230 등)을 포함하고, 하나의 처리 장치를 통해 처리 작업(210) 중 한 부분을 수행할 수 있다. 예를 들어, 처리 장치(110)를 통해 부분(220)을 처리할 수 있고, 처리 장치(120)을 통해 부분(230)을 처리할 수 있다. 설명의 편의를 위해서 후문에서는 처리 장치(110)에서 부분(220)을 수행하는 것만 예를 들어서 설명한다. 처리 장치(120)에 의해 부분(230)이 수행되는 과정도 유사하다.
각 부분은 제1 유형의 작업과 제2 유형의 작업을 포함한다. 예를 들어 부분(220)은 제1 유형(222)과 제2 유형(224)의 작업을 포함할 수 있다. 처리 장치(110)에서, 제1 유형(222)의 작업을 수행하는 제1 대기 행렬(226)과 제2 유형 (224)의 작업을 수행하는 제2 대기 행렬(228)을 각각 구축할 수 있다. 이때 작업 유형과 각 작업의 수행 순서에 따라 각 작업을 상응하는 대기 행렬에 배열할 수 있다.
이어서, 처리 작업(210)의 정의에 따라, 처리 장치(110)에서 수행될 작업 그룹과 복수의 처리 장치 중 다른 처리 장치(120)에서 수행될 작업 그룹 사이의 의존 관계(240)를 획득할 수 있다. 여기서의 의존 관계(240)는 각 작업을 수행하는 순서이다. 예로 들면, 처리 장치(110)에서 수행될 작업에 있어서, 데이터 블록을 후속 처리 장치에 복사하는 복사 작업은 다른 작업에 의존하지 않아도 되지만, 축적 작업은 이전 처리 장치에 의해 데이터 블록을 당해 처리 장치(110)에 복사한 것에 의존한다. 의존 관계(240)를 획득한 상태에서, 의존 관계(240)를 기반으로 처리 장치(110)에서 제1 대기 행렬(226)의 작업과 제2 대기 행렬(228)의 작업을 각각 수행할 수 있다.
이와 유사하게, 처리 장치(120)에 있어서, 처리 장치(120)에서 수행되도록 배분된 부분(230)은 제1 유형(232)의 작업과 제2 유형(234)의 작업을 포함할 수 있고, 제1 대기 행렬(236)과 제2 대기 행렬(238)을 각각 구축함으로써 각 유형의 작업을 관리할 수 있다. 이어서 의존 관계(240)를 기반으로 처리 장치(120)에서는 제1 대기 행렬(236)의 작업과 제2 대기 행렬(238)의 작업을 각각 수행한다. 본 출원의 기술 방법은 대기 행렬과 의존 관계를 기반으로 복수의 다른 유형 작업들의 수행을 배치하여, All Reduce의 병렬성을 크게 향상시킬 수 있고, 수행 기간 동안 각종 시간과 자원 지출을 줄일 수 있다. 나아가 본 출원의 기술 방법은 현존하는 All Reduce 방법과 결합할 수 있다.
후문에서는 도 3을 참고하여 본 출원 예시 구현의 더 자세한 부분을 설명하고자 한다. 도 3은 본 출원의 예시 구현에 따른 처리 작업을 수행하는 방법(300)의 흐름도를 개략적으로 나타낸다. 여기서 처리 작업(210)의 부분(220)은 처리 장치(110)에서 수행될 것이다. 블록(310)에서, 제1 유형의 작업을 수행하는 제1 대기 행렬과 제2 유형의 작업을 수행하는 제2 대기 행렬을 처리 장치에서 구축할 수 있다.
본 출원의 예시 구현에 따라, 처리 작업(210)은 All Reduce 작업이고, 복수의 처리 장치는 고리형태로 연결되어 있다. 예를 들어, 복수의 처리 장치(110, 120, 130, 140)는 도 1a에서 도시한 방식과 같이 앞뒤가 서로 연결된 고리의 형태로 연결되어 있다. 또 예를 들면, 복수의 처리 장치를 가로와 세로 두 개의 방향으로 구분하고 두개 방향의 고리에 복수의 처리 장치를 각각 연결한다.
처리 작업(210)에 의해 처리될 처리 대기 데이터는 다수의 데이터 블록으로 나눌 수 있다고 이해하여야 한다. 예를 들어, n개의 처리 장치에서 처리 작업(210)이 수행될 것이라고 가정한다면, 처리 대기 데이터를 n개의 데이터 블록으로 나눌 수 있고, 각 처리 장치에 상응하는 데이터 블록을 각각 전송할 수 있다. 이때 각 처리 장치에서는 하나의 데이터 블록을 수신할 수 있고, 당해 데이터 블록은 처리 작업(210)의 처리 대기 데이터 중 처리 장치에서 처리될 하나의 부분이다.
설명의 편의를 위해 처리 대기 데이터 전부는 M이고, 4개의 처리 장치를 사용하는 상태에서 처리 대기 데이터를 4개 데이터 블록으로 나눌 수 있다고 가정하고자 한다. 이때 처리 장치(110, 120, 130 및 140)에 각각 처리 대기 데이터 블록을 나눠서 전송할 수 있다. 각 처리 장치에서는 수신된 데이터를 4등분 할 수 있다. 처리 장치(110)에서 데이터 (A1, B1, C1, D1)를 포함하고, 처리 장치(120)에서는 데이터 (A2, B2, C2, D2)를 포함되는 식으로 구성된다. 후문에서는 각 처리 장치에서 작업을 하는 예를 설명하고자 한다. 도 4는 본 출원의 예시 구현에 따른 복수의 처리 장치 사이의 데이터 분포의 블록도(400)를 개략적으로 나탄내다. 예를 들어, 아래 <표 1>은 처리 장치(120)에서 작업을 수행하는 예로, 이때 처리 장치(120)는 이미 데이터(A2, B2, C2, D2)를 가지고 있다.
작업ID | 작업유형 | 작업내용 |
작업1 | 복사 작업 | 처리 장치(120)의 데이터 블록(B2)을 처리 장치(130)에 복사 |
작업2 | 축적 작업 | 처리 장치(110)로부터 수신된 데이터 블록(A1)과 로컬의 데이터 블록(A2)을 축적하여 축적 결과(A1+A2) 획득 |
작업3 | 복사 작업 | 축적 결과(A1+A2)를 처리 장치(130)에 복사 |
작업4 | 축적 작업 | ...... |
...... | ...... |
<표 1> 처리 장치에서의 작업 수행 예시
<표 1>에서 첫 번째 열은 작업 ID, 두 번째 열은 작업유형, 그리고 세 번째 열은 작업내용을 나타낸다. <표 1>은 처리 장치(120)에서 수행되는 한 부분의 작업을 예시적으로 나타낸 것으로, 작업(2) 이후에는 축적 작업과 복사 작업이 번갈아 진행되고, 이는 축적 결과(A1+A2+A3+A4)를 얻을 때까지 계속된다. 여기서 축적 결과(A1+A2+A3+A4)는 일부 완전한 축적 결과에 불과하다고 이해되어야 한다. 따라서 각 처리 장치는 장치 로컬의 일부 완전한 축적 결과를 다음 처리 장치에 복사해 주어야 하고, 다음 처리 장치도 반복해서 복사해 주어야 하며, 이는 각 처리 장치가 전체적으로 완전한 축적 결과를 가질 때까지 계속되어야 한다.
처리 장치(120)에서 수행될 작업 그룹은 복사 작업과 축적 작업으로 구성된다. 이때 처리 장치(120)에서 수행될 작업의 유형에 따라 제1 대기 행렬과 제2 대기 행렬을 구축할 수 있다. 구체적으로 설명하자면, 제1 대기 행렬은 아래 <표 2>에서 나타낸 축적 작업을, 제2 대기 행렬은 아래 <표 3>에서 나타낸 복사 작업을 포함할 수 있다.
작업2 |
작업4 |
... |
<표 2> 축적 대기 행렬 예시
작업1 |
작업3 |
... |
<표 3>복사 대기 행렬 예시
후문에서는 도 4와 도 5를 참고하여 복사 작업과 축적 작업의 더 상세한 내용에 대해서 설명하고자 한다. 복사 작업은, 처리 장치의 축적 결과/데이터 블록을 해당 처리 장치 다음에 연결된 후속 처리 장치에 복사하는 것이다. 처리 장치(110)에 있어서, 화살표(410)와 같이 상기 처리 장치(110)는 데이터(A1)를 처리 장치(120)에 복사하여 복사본을 만든다. 처리 장치(120)에 있어서, 화살표(420)와 같이 상기 처리 장치(120)는 데이터(B2)를 처리 장치(130)에 복사하여 복사본을 만든다. 다른 처리 장치에서도 이와 같은 복사 작업이 수행된다. 도 4에서 도시하지는 않았지만 복사 작업의 대상은 처리 장치 중의 축적 결과일 수도 있다.
본 출원의 예시 구현에 따르면, 축적 작업은, 처리 장치의 데이터 블록을 해당 처리 장치 이전에 연결된 이전 처리 장치에서 해당 처리 장치로 복사된 축적 결과에 축적함으로써 해당 처리 장치의 축적 결과로 삼는 것이다. 도 5는 본 출원의 예시 구현에 따른 복수의 처리 장치에서 축적 작업을 수행하는 블록도(500)를 개략적으로 나타낸다. 도 5는 도 4의 복사 작업 이후 처리 장치(120)의 상태를 도시한 것으로, 이때 처리 장치(120)는 이미 데이터(A1)의 복사본을 갖고 있다. 처리 장치(120)에서, 데이터(A1)의 복사본과 데이터(A2)에 기반하여 축적 결과(510)(즉, A1+A2)를 확정한다. 이와 같이 다른 처리 장치에서도 다른 데이터의 축적 결과를 확정한다.
본 출원의 예시 구현에 따라, 복사 작업과 축적 작업을 수행하기 위해서 처리 장치에 상응하는 유형의 작업을 수행하는데 필요한 코드를 로드할 수 있다. 도 6은 본 출원의 예시 구현에 따른 처리 장치에 코드를 로드하는 블록도(600)를 개략적으로 나타낸다. 도 6과 같이, 호스트 컴퓨터(410)는 처리 장치(110, 120, 130 및 140)와 연결될 수 있다. 이때 호스트 컴퓨터(410)는 각 처리 장치의 메모리에 축적 유형의 작업을 수행하는데 필요한 제1 코드와 복사 작업을 수행하는데 필요한 제2 코드를 로드할 수 있다.
각 처리 장치에 코드를 로드하는 과정은 유사하고, 간략한 설명을 위해 후문에서는 처리 장치(110)의 로딩과정만 설명하고자 한다. 본 출원의 예시 구현에 따라, 처리 장치(110)의 메모리(610)에 축적 작업 수행을 위한 제1 코드(612)와 복사 작업 수행을 위한 제2 코드(614)를 각각 로드할 수 있다.
제1 코드(612)와 제2 코드(614)가 메모리(610)에 로드된 이후 처리 장치(110)는 즉시 코드에 상응하는 작업을 수행한다. 본 출원의 예시 구현에 따라, 처리 장치(110)의 속도 향상을 위해서 제1 코드(612)와 제2 코드(614) 중 적어도 한 항목을 처리 장치(110)의 메모리(610)에 남겨둘 수 있다. 본 출원의 예시 구현방식에 의해, 데이터 블록과 데이터 축적 코드를 각 처리 장치에 미리 로드하고, 각 처리 장치의 메모리에 계속 남아있게 함으로써 반복적인 로딩/해제로 인한 시간과 자원의 추가지출을 막을 수 있다.
이때 제1 코드(612)를 기반으로 제1 대기 행렬의 작업을 수행하고 제2 코드(614)를 기반으로 제2 대기 행렬의 작업을 수행할 수 있다. 복사 작업은 처리 장치 사이의 대역폭 자원을 사용해야 하고 축적 작업은 각 처리 장치의 연산 자원을 사용하기 때문에, 의존 관계가 형성되지 않은 작업의 경우 두 개의 대기 행렬 작업의 병렬 수행이 가능하다.
블록(320)에서, 처리 작업(210)의 정의에 따라 복수의 작업 간의 의존 관계를 확정할 수 있다. 처리 장치(110)에서 수행될 작업 그룹과, 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득할 수 있다. 후문에서는 처리 장치(120)에서 복수의 작업을 처리하는 것만 예를 들어 어떻게 의존 관계를 획득하는지에 대한 설명을 하고자 한다. 전문의 예시를 이어서, 처리 장치(110, 120, 130, 140)에 4개의 데이터 블록을 전송했다고 가정한다. All Reduce 과정에 따라, 각 작업 사이의 의존 관계를 <표 4>와 같이 확정한다.
작업ID | 작업 유형 | 작업 내용 | 의존 관계 |
작업1 | 복사 작업 | 처리 장치(120)의 데이터 블록(B2)을 처리 장치(130)에 복사 | 상기 복사 작업은 다른 작업에 의존하지 않음 |
작업 2 | 축적 작업 | 처리 장치(110)으로부터 수신된 데이터 블록(A1)과 로컬의 데이터 블록(A2)을 축적하여 축적 결과(A1+A2) 획득 | 상기 축적 작업은 처리 장치(110)가 데이터 블록(A1)을 처리 장치(120)에 복사한 것에 의존하며, 작업1과 작업2는 의존 관계 없음 |
작업 3 | 복사 작업 | 축적 결과(A1+A2)를 처리 장치(130)에 복사 | 당해 복사 작업은 작업2의 완성에 의존 |
작업 4 | 축적 작업 | ...... | ...... |
...... | ...... | ...... | ...... |
<표 4> 의존 관계 예시
다시 도 3으로 돌아오면, 블록(330)에서, 의존 관계에 기반하여 처리 장치에서 제1 대기 행렬의 작업과 제2 대기 행렬의 작업을 각각 수행한다. 하드웨어 인터럽트를 통해, 어떤 특정한 작업 수행의 의존 관계가 충족되었음을 처리 장치에 통보할 수 있고, 나아가 상기 처리 장치를 구동하여 상기 특정한 작업을 수행할 수 있다. 본 출원의 예시 구현에 따라, 만약 처리 장치에서 제1 대기 행렬 및 제2 대기 행렬 중 어느 하나의 대기 행렬의 작업을 완성하였음이 확인되면, 처리 장치의 하드웨어 인터럽트를 통해 다른 처리 장치에 통보를 한다.
본 출원의 예시 구현에 따라, 처리 장치의 하드웨어 인터럽트를 통해 대기 행렬의 작업을 배치하고, 처리 장치에 의해 자체적으로 작업 수행의 앞뒤순서를 보장함으로써 호스트 컴퓨터와의 불필요한 통신을 방지한다.
도 7은 본 출원의 예시 구현에 따른 복사 대기 행렬의 작업을 완료한 후 하드웨어 인터럽트를 작동하는 블록도(700)를 개략적으로 나타낸다. 도 7은 처리 장치(120)에 대한 복사 대기 행렬(710)을 나타낸 것으로, 상기 복사 대기 행렬(710)은 복수의 복사 작업을 포함할 수 있으며, 도 7에 도시한 바와 같이 복사 대기 행렬(710)의 복사 작업(712)은 전문의 <표 1> 에서 작업(1)에 해당한다. 즉 처리 장치(120)의 데이터(B2)를 후속 처리 장치(130)에 복사하는 작업이다. <표 4>의 의존 관계를 보면 알 수 있다시피, 상기 작업은 다른 작업에 의존하지 않기 때문에 바로 수행 가능하다.
나아가, 의존 관계에 기반하여, 후속 처리 장치(130)의 축적 작업은 복사 작업(712)을 기반으로 이루어지므로, 복사 작업(712)을 완성한 다음 하드웨어 인터럽트(714)를 촉발하여, 후속 처리 장치(130)로 상응하는 축적 작업을 수행할 것을 통지(716)할 수 있다. 후속 처리 장치(130)에서는 이전 처리 장치(120)의 하드웨어 인터럽트(714)를 수신하면 축적 작업을 수행할 수 있다(즉, 수신된 데이터(B2)와 로컬의 데이터 블록(B3)을 축적한다).
본 출원의 예시 구현에 따르면, 처리 장치와 후속 처리 장치는 캐시 영역을 공유하기 때문에, 복사 작업을 완성하기 위해 처리 장치에서 캐시 영역으로 축적 결과를 복사할 수 있다. 예를 들어, 전문에서 설명한 처리 장치(120)과 처리 장치(130) 사이에 공유하는 캐시 영역을 가질 수 있고, 이때 처리 장치(120)는 캐시 영역으로 데이터를 복사할 수 있으며, 처리 장치(130)은 캐시 영역에서 데이터를 읽어올 수 있다. 도 7에서 대기 행렬(710) 중 하나의 복사 작업(712)을 수행한 다음 하드웨어 인터럽트(714)를 촉발하는 예에 대해서만 상세하게 설명하였지만, 다른 복사 작업을 완성한 후 유사한 방법으로 후속 처리 장치로 상응하는 축적 작업을 수행하도록 통지할 수 있다.
본 출원의 예시 구현에 따르면, 처리 장치에서 제1 대기 행렬 중 하나의 축적 작업을 이미 수행하였다면, 하드웨어 인터럽트를 통해서 이전 처리 장치에 통보하여 제2 대기 행렬의 다음 복사 작업을 수행하도록 할 수 있다. 후문에서는 본 출원의 예시 구현에 따른 축적 대기 행렬의 작업을 완료한 이후 하드웨어 인터럽트를 작동하는 것을 개략적으로 도시한 블록도(800)를 참고하여 상세하게 설명하도록 하겠다. 도 8은 처리 장치(120)의 축적 대기 행렬(810)에 관한 것으로, 상기 축적 대기 행렬(810)은 복수의 복사 작업을 포함할 수 있다. 도 8의 축적 대기 행렬(810) 중 축적 작업은 전문 <표 1>에서의, 처리 장치(110)에서 수신한 데이터(A1)와 로컬 데이터(A2)를 축적하여 축적 결과(A1+A2)를 얻는 작업(2)을 의미한다. 상기 작업은 이전 처리 장치(110)에서 데이터(A1)가 처리 장치(120)로 복사된 이후에 수행되기 때문에, 처리 장치(120)가 처리 장치(110)로부터 하드웨어 인터럽트를 수신받았을 때 축적 작업(812)을 실시할 수 있다.
나아가, 축적 작업(812)의 의존 관계에서 알 수 있다시피, 이전 처리 장치(110)가 처리 장치(120)에 후속 축적 결과를 복사하는 복사 작업은 상기 축적 작업(812)을 기반으로 이루어진다. 따라서 축적 작업(812)을 완료한 다음 하드웨어 인터럽트(814)를 구동하여 이전 처리 장치(110)에 통보(816)를 하여 후속 축적 결과를 처리 장치(120)에 복사하도록 할 수 있다. 이전 처리 장치(110)에서 처리 장치(120)로부터 하드웨어 인터럽트(814)를 수신하면 처리 장치(110)는 복사 작업을 수행할 수 있다.
본 출원의 예시 구현의 방법에 따르면, 복사 작업과 축적 작업은 각각 대역폭과 연산 자원을 사용하기 때문에, 복사 대기 행렬과 축적 대기 행렬을 통해 수행 대기 복사 작업과 축적 작업을 저장함으로써, 두 종류의 작업으로 인한 자원 충돌 발생을 방지하고 병행 수행의 가능성을 높여줄 수 있다. 나아가 호스트 컴퓨터가 각 처리 장치의 운행을 조율하거나 폴링 기술로 의존 관계의 충족 여부를 계속해서 확인하는 기술 방안과 비교했을 때, 하드웨어 인터럽트를 통해 의존 관계를 통보하는 방식은 작업 배치의 효율을 크게 향상시켜 작업 그룹을 훨씬 효율적으로 수행할 수 있다.
본 출원의 예시 구현에 따르면, 처리 장치에서 제1 대기 행렬과 제2 대기 행렬의 모든 작업이 수행된 것이 확인되면, 처리 장치에 의해 처리 작업 중의 부분을 이미 수행하였다는 메시지를 발송할 수 있다. 본 출원의 예시 구현에서는 처리 작업을 수행하는 구체적인 과정을 하나의 처리 장치에서 수행되는 과정을 예로써 설명하였지만, 복수의 처리 장치 중 다른 처리 장치에서 수행되는 것도 이와 유사하다고 이해되어야 할 것이다. 병렬방식을 통해 모든 복수의 처리 장치에서 상기 설명의 방법(300)을 수행하면 각 처리 장치가 배분받은 처리 작업의 부분을 더 효율적으로 수행할 수 있고, 이로써 전체 처리 작업 수행의 효율도 향상된다.
어떻게 처리 작업이 수행되는지에 대한 방법(300)의 많은 구현 방식을 전문에서 상세하게 설명하였다. 한편, 본 출원의 예시 구현에서는 처리 작업에 필요한 장치도 제시하였다. 후문에서는 도 9를 참고하여 상세하게 설명하고자 한다. 도 9는 본 출원의 예시 구현에 따른 처리 작업 수행하는 장치(900)의 블록도를 개략적으로 나타낸다. 처리 작업의 많은 부분 중 하나의 부분은 복수의 처리 장치 중 한 개의 처리 장치에서 수행될 작업그룹을 포함하고 있고, 작업 그룹은 제1 유형과 제2 유형의 작업을 포함한다. 도 9와 같이 상기 장치(900)는, 제1 유형 작업 수행에 필요한 제1 대기 행렬과 제2 유형 작업 수행에 필요한 제2 대기 행렬을 구축하는 구축 모듈 (910), 처리 작업의 정의에 따라, 처리 장치에서 수행될 작업 그룹과 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 간의 의존 관계를 획득하는 획득 모듈(920), 그리고 의존 관계를 기반으로 처리 장치에서 제1 대기 행렬의 작업과 제2 대기 행렬의 작업을 각각 수행하는 수행 모듈(930)을 포함한다.
본 출원의 예시 구현에 따르면, 제1 유형의 제1 작업 그룹 수행을 위한 제1 코드와 제2 유형의 제2 작업 그룹 수행을 위한 제2 코드를 처리 장치에 각각 로드하는 로딩 모듈도 포함한다. 본 출원의 예시 구현에 따르면, 수행 모듈(930)은 제1 코드에 따라 제1 대기 행렬의 작업을 수행하는 제1 수행 모듈과 제2 코드에 따라 제2 대기 행렬의 작업을 수행하는 제2 수행 모듈을 포함한다.
본 출원의 예시 구현에 따르면, 제1 코드와 제2 코드 중 적어도 어느 하나를 처리 장치의 메모리에 남겨두는 유지 모듈도 포함한다.
본 출원의 예시 구현에 따르면, 처리 장치에서 처리 작업의 처리 대기 데이터 중 처리 장치에서 처리될 데이터 블록을 수신하는 수신 모듈도 포함한다. 데이터 블록은 복수의 처리 장치의 수량에 따라 처리 대기 데이터를 나눠서 얻은 결과이다.
본 출원의 예시 구현에 따르면, 수행 모듈(930)은 처리 장치에서 데이터 블록에 대해 제1 대기 행렬의 작업과 제2 대기 행렬의 작업을 각각 수행하는 데이터 처리 모듈도 포함한다.
본 출원의 예시 구현에 따르면, 처리 작업은 All Reduce 작업이고, 복수의 처리 장치는 고리 형태로 연결되어 있다.
본 출원의 예시 구현에 따르면, 제1 작업 그룹은 축적 작업을 포함하고, 당해 축적 작업은 처리 장치의 데이터 블록을 처리 장치 앞에 연결된 이전 처리 장치에서 처리 장치에 복사된 축적 결과에 축적함으로써 처리 장치의 축적 결과를 생성한다.
본 출원의 예시 구현에 따르면, 제2 작업 그룹은 복사 작업을 포함하고, 당해 복사 작업은 처리 장치의 데이터 블록과 축적 결과 중 적어도 어느 한 항목을 처리 장치 뒤에 연결되는 후속 처리 장치에 복사한다.
본 출원의 예시 구현에 따르면, 수행 모듈(930)은 처리 장치에서 제1 대기 행렬과 제2 대기 행렬의 어느 한 대기 행렬의 작업을 완성함에 응답하여, 처리 장치의 하드웨어 인터럽트를 통해 다른 처리 장치에 통보하는 통보 모듈을 포함한다.
본 출원의 예시 구현에 따르면, 통보 모듈은 처리 장치에서 제1 대기 행렬의 한 축적 작업을 수행하였음에 응답하여, 하드웨어 인터럽트를 통해 이전 처리 장치가 제2 대기 행렬 중 다음 복사 작업을 하도록 통보하는 제1 통보 모듈을 포함한다.
본 출원의 예시 구현에 따르면, 통보 모듈을 처리 장치에서 제2 대기 행렬의 한 복사 작업을 수행하였음에 응답하여, 하드웨어 인터럽트를 통해 후속 처리 장치가 제1 대기 행렬 중 다음 축적 작업을 하도록 통보하는 제2 통보 모듈을 포함한다.
본 출원의 예시 구현에 따르면, 처리 장치와 후속 처리 장치는 캐시영역을 공유하고, 장치는 처리 장치에서 캐시영역으로 데이터 블록과 축적 결과 중 적어도 한 항목을 복사하는 복사 모듈도 포함한다.
본 출원의 예시 구현에 따르면, 처리 장치에서 제1 대기 행렬 및 제2 대기 행렬의 모든 작업을 수행하였음이 확인됨에 응답하여, 장치가 처리 작업의 부분을 수행하였다고 보고하는 보고 모듈도 포함한다.
도 10은 본 출원의 복수의 구현 방식을 수행하는 컴퓨터 기기(1000)의 블록도를 개략적으로 나타낸다. 기기(1000)는 도 3에서 설명한 방법을 구현할 수 있다. 도면과 같이, 기기(1000)는 중앙처리장치(CPU)(1001)를 포함하는데, 이는 읽기 전용 메모리(ROM)(1002)에 저장된 컴퓨터 프로그램 명령 또는 저장 장치(1008)에서 랜덤 액세스 메모리(RAM) (1003)에 로드된 컴퓨터 프로그램 명령에 따라, 그에 맞는 작동과 처리를 수행할 수 있다. 기기(1000)의 작동에 필요한 다양한 프로그램과 데이터를 RAM(1003)에 저장할 수 있다. CPU (1001), ROM(1002) 및 RAM(1003)는 버스(1004)를 통해 서로 연결되어 있다. 입력/출력(I/O) 인터페이스(1005)도 버스 (1004)에 연결되어 있다.
기기(1000)의 많은 부품은 I/O 인터페이스(1005)에 연결되어 있고, 키보드, 마우스 등의 입력 장치(1006), 다양한 유형의 디스플레이, 스피커 등의 출력 장치(1007), 자기 디스크, 광 디스크 등의 저장 장치(1008), 그리고 랜 카드, 모뎀, 무선통신 송수신기 등의 통신 장치(1009)를 포함한다. 통신 장치(1009)는, 기기(1000)가 인터넷과 같은 컴퓨터 네트워크 및/또는 각종 전기 통신망을 통해 다른 기기와 정보/데이터를 교환하도록 허락한다.
처리 장치(1001)는 방법(300)과 같은 전문에서 설명한 각 방법과 처리를 수행한다. 예를 들어, 일부 구현 방법에서 방법(300)은 컴퓨터 프로그램으로 구현될 수 있고, 저장 장치(1008)와 같이 컴퓨터 판독 가능 매체에 유형의 형태로 포함될 수 있다. 일부 구현 방법에서 컴퓨터 프로그램의 부분 또는 전부는 ROM(1002) 및/또는 통신 장치(1009)를 거쳐 기기(1000)에 로드 및/또는 탑재될 수 있다. 컴퓨터 프로그램이 RAM(1003)에 로드되고 CPU(1001)에 의해 수행될 때, 전문에서 설명한 방법(300) 중 하나 혹은 복수의 절차를 수행할 수 있다. 부가적으로, 다른 구현 방법에서 CPU(1001)는 어떤 다른 적당한 방법(예, 펌웨어를 이용)으로 수행 방법(300)을 구성할 수 있다.
본 출원의 예시 구현 방법에서는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체를 제시한다. 프로세서가 프로그램을 수행할 때 본 출원 명세서에서 설명한 방법을 구현한다.
본문에서 이상 설명된 기능은 적어도 일부가 하나 또는 복수의 하드웨어 논리 부재에 의해 실행될 수 있다. 예를 들어, 비제한적으로, 사용 가능한 시범 유형의 하드웨어 논리 부재는 필드 프로그램 가능 게이트 어레이(FPGA), 전용 집적 회로(ASIC), 전용 표준 제품(ASSP), 시스템 온 칩의 시스템(SOC), 복합 프로그램 가능 논리 소자(CPLD) 등을 포함한다.
본 발명의 방법을 구현하는 프로그램 코드는 하나 또는 복수의 프로그래밍 언어의 임의의 조합으로 편집할 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 다른 프로그램 가능 데이터 처리 장치의 프로세서 또는 제어기에 제공될 수 있으며, 프로그램 코드는 프로세서 또는 제어기에 의해 실행될 경우, 흐름도 및/또는 블록도에 지정된 기능/작동이 구현되도록 할 수 있다. 프로그램 코드는 완전히 기계에서 실행되거나, 부분적으로 기계에서 실행되거나, 독립형 소프트웨어 패키지로서 기계에서 실행되며, 일부는 원격 기계에서 실행되거나 완전히 원격 기계 또는 서버에서 실행될 수 있다.
본 발명의 컨텍스트에서, 기계 판독 가능 매체는 명령 실행 시스템, 장치 또는 기기에 의해 또는 명령 실행 시스템, 장치 또는 기기와 결합하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 유형 매체일 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호 매체 또는 기계 판독 가능 저장 매체일 수 있다. 기계 판독 가능 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 기기, 또는 상기 내용의 임의의 적절한 조합을 포함할 수 있지만 이에 한정되지 않는다. 기계 판독 가능 저장 매체의 보다 구체적인 예는 하나 또는 복수의 와이어에 기반한 전기 연결, 휴대용 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능 프로그램 가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, CD-ROM, 광학 저장 기기, 자기 저장 기기 또는 전술한 내용의 임의의 적절한 조합을 포함한다.
이 밖에, 특정 순서로 각 동작을 설명하였지만, 이는 이러한 동작들이 도시된 특정 순서 또는 순차적 순서로 수행되도록 요구되거나 모든 도시된 동작들이 예기한 결과에 달성하기 위해 수행되어야 함을 이해해야 한다. 일정한 환경에서, 복수의 미션 및 합병 처리는 유리할 수 있다. 마찬가지로, 전술한 설명에서 여러 개의 구체적인 구현 세부사항이 포함되어 있지만 이것이 본 발명의 범위를 한정하는 것으로 해석되어서는 안된다. 독립적인 실시예의 컨텍스트에서 설명된 특정된 특징은 단일 구현으로 조합되어 구현될 수 있다. 반대로, 단일 구현의 컨텍스트에서 설명된 다양한 특징은 또한 복수의 구현에서 독립적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다.
구조 특징 및/또는 방법 논리적 동작에 특정된 언어로 본 부제를 설명하였지만, 첨부된 청구범위에서 한정된 주제는 전술한 특정된 특징 또는 동작에 반드시 한정되는 것은 아님을 이해해야 한다. 반대로, 전술한 특정된 특징 및 동작은 단지 청구범위의 예시적 형태를 구현하기 위한 것이다.
Claims (22)
- 처리 작업을 수행하는 방법에 있어서,
상기 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함하며,
상기 방법은,
상기 제1 유형의 작업을 수행하는 제1 대기 행렬과 상기 제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축하는 단계;
상기 처리 작업의 정의에 따라, 상기 처리 장치에서 수행될 상기 작업 그룹과, 상기 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득하는 단계; 및
상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 방법은,
상기 제1 유형의 제1 작업 그룹을 수행하는 제1 코드와 상기 제2 유형의 제2 작업 그룹을 수행하는 제2 코드를 각각 상기 처리 장치에 로딩 하는 단계
를 더 포함하고,
상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계는,
상기 제1 코드에 따라 상기 제1 대기 행렬의 작업을 수행하는 단계; 및
상기 제2 코드에 따라 상기 제2 대기 행렬의 작업을 수행하는 단계
를 포함하는 방법. - 제2항에 있어서,
상기 방법은,
상기 제1 코드와 상기 제2 코드 중 적어도 어느 한 항목을 상기 처리 장치의 메모리에 유지하는 단계
를 더 포함하는 방법. - 제1항에 있어서,
상기 방법은,
상기 처리 작업의 처리 대기 데이터 중 상기 처리 장치에서 처리될 데이터 블록을 상기 처리 장치가 수신하는 단계 - 상기 데이터 블록은 상기 복수의 처리 장치의 수량에 따라 상기 처리 대기 데이터를 나눠서 얻은 결과임 -
를 더 포함하고,
상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계는,
상기 처리 장치에서 상기 데이터 블록에 대해서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계
를 포함하는 방법. - 제4항에 있어서,
상기 처리 작업은 올 리듀스(AII Reduce)작업이고, 상기 복수의 처리 장치를 고리 형태로 연결되고,
상기 제1 작업 그룹은 축적 작업을 포함하되, 상기 축적 작업은, 상기 처리 장치의 데이터 블록을 상기 처리 장치 이전에 연결된 이전 처리 장치에서 상기 처리 장치에 복사된 축적 결과에 축적함으로써 상기 처리 장치의 축적 결과로 하도록 하는 작업이고,
상기 제2 작업 그룹은 복사 작업을 포함하되, 상기 복사 적업은 상기 처리 장치의 축적 결과를 상기 처리 장치 이후에 연결되는 후속 처리 장치에 복사하도록 하는 작업인 방법. - 제5항에 있어서,
상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계는,
상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트를 통해 상기 다른 처리 장치에 통보하는 단계
를 포함하는 방법. - 제6항에 있어서,
상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트에 의해 상기 다른 처리 장치에 통보하는 단계는,
상기 처리 장치에서 상기 제1 대기 행렬의 한 축적 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 이전 처리 장치가 상기 제2 대기 행렬의 다음 복사 작업을 수행하도록 통보하는 단계
를 포함하는 방법. - 제6항에 있어서,
상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트에 의해 상기 다른 처리 장치에 통보하는 단계는,
상기 처리 장치에서 상기 제2 대기 행렬의 한 복사 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 후속 처리 장치가 상기 제1 대기 행렬의 다음 축적 작업을 수행하도록 통보하는 단계
를 포함하는 방법. - 제8항에 있어서,
상기 처리 장치와 상기 후속 처리 장치는 캐시 영역을 공유하고,
상기 처리 장치에서 상기 복사 작업을 수행하는 단계는,
상기 처리 장치에서 상기 캐시 영역으로 상기 축적 결과를 복사하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 방법은,
상기 처리 장치에서 상기 제1 대기 행렬과 상기 제2 대기 행렬의 모든 작업을 수행하였음이 확인됨에 응답하여, 상기 처리 장치가 이미 상기 처리 작업 중 상기 부분을 이미 수행하였음을 보고하는 단계
를 더 포함하는 방법. - 처리 작업을 수행하는 장치에 있어서,
상기 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함하며,
상기 장치는,
상기 제1 유형의 작업을 수행하는 제1 대기 행렬과 상기제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축하도록 구성된 구축 모듈;
상기 처리 작업의 정의에 따라, 상기 처리 장치에서 수행될 상기 작업 그룹과, 상기 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득하도록 구성된 획득 모듈; 및
상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하도록 구성된 수행 모듈
을 포함하는 장치. - 제11항에 있어서,
상기 장치는,
상기 제1 유형의 제1 작업 그룹을 수행하는 제1 코드와 상기 제2 유형의 제2 작업 그룹을 수행하는 제2 코드를 각각 상기 처리 장치에 로딩 하도록 구성된 로딩 모듈
을 더 포함하고,
상기 수행 모듈은,
상기 제1 코드에 따라 상기 제1 대기 행렬의 작업을 수행하도록 구성된 제1 수행 모듈; 및
상기 제2 코드에 따라 상기 제2 대기 행렬의 작업을 수행하도록 구성된 제2 수행 모듈
을 포함하는 장치. - 제12항에 있어서,
상기 장치는,
상기 제1 코드와 상기 제2 코드 중 적어도 어느 한 항목을 상기 처리 장치의 메모리에 유지하도록 구성된 유지 모듈
을 더 포함하는 장치. - 제11항에 있어서,
상기 장치는,
상기 처리 작업의 처리 대기 데이터 중 상기 처리 장치에서 처리될 데이터 블록을 상기 처리 장치가 수신하도록 구성된 수신 모듈 - 상기 데이터 블록은 상기 복수의 처리 장치의 수량에 따라 상기 처리 대기 데이터를 나눠서 얻은 결과임 -
을 더 포함하고,
상기 수행 모듈은,
상기 처리 장치에서 상기 데이터 블록에 대해서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하도록 구성된 데이터 처리 모듈
을 더 포함하는 장치. - 제14항에 있어서,
상기 처리 작업은 올 리듀스(AII Reduce)작업이고, 상기 복수의 처리 장치를 고리 형태로 연결되고,
상기 제1 작업 그룹은 축적 작업을 포함하되, 상기 축적 작업은, 상기 처리 장치의 데이터 블록을 상기 처리 장치 이전에 연결된 이전 처리 장치에서 상기 처리 장치에 복사된 축적 결과에 축적함으로써 상기 처리 장치의 축적 결과로 하도록 하는 작업이고,
상기 제2 작업 그룹은 복사 작업을 포함하되, 상기 복사 적업은 상기 처리 장치의 축적 결과를 상기 처리 장치 이후에 연결되는 후속 처리 장치에 복사하도록 하는 작업인 장치. - 제15항에 있어서,
상기 수행 모듈은,
상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트를 통해 상기 다른 처리 장치에 통보하도록 구성된 통보 모듈
을 포함하는 장치. - 제16항에 있어서,
상기 통보 모듈은,
상기 처리 장치에서 상기 제1 대기 행렬의 한 축적 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 이전 처리 장치가 상기 제2 대기 행렬의 다음 복사 작업을 수행하도록 통보하도록 구성된 제1 통보 모듈
을 포함하는 장치. - 제16항에 있어서,
상기 통보 모듈은,
상기 처리 장치에서 상기 제2 대기 행렬의 한 복사 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 후속 처리 장치가 상기 제1 대기 행렬의 다음 축적 작업을 수행하도록 통보하도록 구성된 제2 통보 모듈
을 포함하는 장치. - 제18항에 있어서,
상기 처리 장치와 상기 후속 처리 장치는 캐시 영역을 공유하고,
상기 장치는,
상기 처리 장치에서 상기 캐시 영역으로 상기 데이터 블록과 축적 결과 중 적어도 한 항을 복사하도록 구성된 복사 모듈
을 포함하는 장치. - 제11항에 있어서,
상기 장치는,
상기 처리 장치에서 상기 제1 대기 행렬과 상기 제2 대기 행렬의 모든 작업을 수행하였음이 확인됨에 응답하여, 상기 처리 장치가 이미 상기 처리 작업 중 상기 부분을 이미 수행하였음을 보고하도록 구성된 보고 모듈
을 더 포함하는 장치. - 처리 작업을 수행하는 기기에 있어서,
하나 또는 복수의 프로세서; 및
하나 또는 복수의 프로그램을 저장하기 위한 저장 장치
를 포함하되,
상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제10항 중의 임의의 한 항의 방법을 구현하도록 하는 기기. - 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체에 있어서,
상기 프로그램이 프로세서에 의해 실행될 경우, 제1항 내지 제10항 중의 임의의 한 항의 방법이 구현되도록 하는 컴퓨터 판독 가능한 저장 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910859334.7 | 2019-09-11 | ||
CN201910859334.7A CN112486638A (zh) | 2019-09-11 | 2019-09-11 | 用于执行处理任务的方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210031347A true KR20210031347A (ko) | 2021-03-19 |
KR102350785B1 KR102350785B1 (ko) | 2022-01-14 |
Family
ID=69055870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200001215A KR102350785B1 (ko) | 2019-09-11 | 2020-01-06 | 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11301255B2 (ko) |
EP (1) | EP3792757A1 (ko) |
JP (1) | JP7122299B2 (ko) |
KR (1) | KR102350785B1 (ko) |
CN (1) | CN112486638A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11561840B2 (en) * | 2020-01-30 | 2023-01-24 | Alibaba Group Holding Limited | Efficient inter-chip interconnect topology for distributed parallel deep learning |
CN116483584B (zh) * | 2023-05-26 | 2024-05-03 | 摩尔线程智能科技(北京)有限责任公司 | Gpu的任务处理方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010287255A (ja) * | 2005-08-22 | 2010-12-24 | Ns Solutions Corp | 情報処理装置及び情報処理システム |
US20110276966A1 (en) * | 2010-05-06 | 2011-11-10 | Arm Limited | Managing task dependency within a data processing system |
US20120066692A1 (en) * | 2006-12-15 | 2012-03-15 | International Business Machines Corporation | Iteratively processing segments by concurrently transmitting to, processing by, and receiving from partnered process |
US20120179881A1 (en) * | 2007-05-29 | 2012-07-12 | Internatioal Business Machines Corporation | Performing An Allreduce Operation Using Shared Memory |
KR101676467B1 (ko) * | 2016-06-24 | 2016-11-15 | 주식회사 넷츠 | 프로비저닝 방법 및 그 장치 |
JP6197791B2 (ja) * | 2012-07-30 | 2017-09-20 | 日本電気株式会社 | 分散処理装置及び分散処理システム並びに分散処理方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3639323B2 (ja) * | 1994-03-31 | 2005-04-20 | 富士通株式会社 | メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機 |
US20040139299A1 (en) * | 2003-01-14 | 2004-07-15 | International Business Machines Corporation | Operand forwarding in a superscalar processor |
US20060026371A1 (en) * | 2004-07-30 | 2006-02-02 | Chrysos George Z | Method and apparatus for implementing memory order models with order vectors |
US7620945B1 (en) | 2005-08-16 | 2009-11-17 | Sun Microsystems, Inc. | Parallelization scheme for generic reduction |
US7634591B2 (en) * | 2006-01-26 | 2009-12-15 | International Business Machines Corporation | Method and apparatus for tracking command order dependencies |
US7707390B2 (en) * | 2007-04-25 | 2010-04-27 | Arm Limited | Instruction issue control within a multi-threaded in-order superscalar processor |
US8683471B2 (en) * | 2008-10-02 | 2014-03-25 | Mindspeed Technologies, Inc. | Highly distributed parallel processing on multi-core device |
US8700834B2 (en) * | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US20140101673A1 (en) * | 2012-10-05 | 2014-04-10 | Microsoft Corporation | Dynamic dependency evaluation for computing task execution |
US20160283438A1 (en) * | 2013-12-23 | 2016-09-29 | Hu Tiger Chen | System-on-a-chip (soc) including hybrid processor cores |
US10928882B2 (en) * | 2014-10-16 | 2021-02-23 | Futurewei Technologies, Inc. | Low cost, low power high performance SMP/ASMP multiple-processor system |
US10318348B2 (en) * | 2016-09-23 | 2019-06-11 | Imagination Technologies Limited | Task scheduling in a GPU |
US10698785B2 (en) * | 2017-05-30 | 2020-06-30 | International Business Machines Corporation | Task management based on an access workload |
CN107315629A (zh) * | 2017-06-14 | 2017-11-03 | 北京小米移动软件有限公司 | 任务处理方法、装置及存储介质 |
CN108491260A (zh) * | 2018-04-12 | 2018-09-04 | 迈普通信技术股份有限公司 | 通信设备多任务测试方法及装置 |
US11243775B2 (en) * | 2019-03-26 | 2022-02-08 | Intel Corporation | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues |
US11023289B2 (en) * | 2019-07-12 | 2021-06-01 | Vmware, Inc. | Cloud environment configuration based on task parallelization |
-
2019
- 2019-09-11 CN CN201910859334.7A patent/CN112486638A/zh active Pending
- 2019-12-27 JP JP2019238897A patent/JP7122299B2/ja active Active
- 2019-12-30 EP EP19220081.4A patent/EP3792757A1/en active Pending
- 2019-12-30 US US16/729,989 patent/US11301255B2/en active Active
-
2020
- 2020-01-06 KR KR1020200001215A patent/KR102350785B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010287255A (ja) * | 2005-08-22 | 2010-12-24 | Ns Solutions Corp | 情報処理装置及び情報処理システム |
US20120066692A1 (en) * | 2006-12-15 | 2012-03-15 | International Business Machines Corporation | Iteratively processing segments by concurrently transmitting to, processing by, and receiving from partnered process |
US20120179881A1 (en) * | 2007-05-29 | 2012-07-12 | Internatioal Business Machines Corporation | Performing An Allreduce Operation Using Shared Memory |
US20110276966A1 (en) * | 2010-05-06 | 2011-11-10 | Arm Limited | Managing task dependency within a data processing system |
JP6197791B2 (ja) * | 2012-07-30 | 2017-09-20 | 日本電気株式会社 | 分散処理装置及び分散処理システム並びに分散処理方法 |
KR101676467B1 (ko) * | 2016-06-24 | 2016-11-15 | 주식회사 넷츠 | 프로비저닝 방법 및 그 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP2021043933A (ja) | 2021-03-18 |
CN112486638A (zh) | 2021-03-12 |
KR102350785B1 (ko) | 2022-01-14 |
US20210072996A1 (en) | 2021-03-11 |
EP3792757A1 (en) | 2021-03-17 |
JP7122299B2 (ja) | 2022-08-19 |
US11301255B2 (en) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9378047B1 (en) | Efficient communication of interrupts from kernel space to user space using event queues | |
EP3786793A1 (en) | Task processing method and device, and computer system | |
CN108351783A (zh) | 多核数字信号处理系统中处理任务的方法和装置 | |
US9535756B2 (en) | Latency-hiding context management for concurrent distributed tasks in a distributed system | |
US20100082848A1 (en) | Increasing available fifo space to prevent messaging queue deadlocks in a dma environment | |
US9063918B2 (en) | Determining a virtual interrupt source number from a physical interrupt source number | |
US9836516B2 (en) | Parallel scanners for log based replication | |
US10970805B2 (en) | Graphics processing unit operation | |
CN106656525B (zh) | 一种数据广播系统、数据广播方法及设备 | |
KR20210031347A (ko) | 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 | |
US20130061246A1 (en) | Processing data communications messages with input/output control blocks | |
US8631086B2 (en) | Preventing messaging queue deadlocks in a DMA environment | |
US20140196047A1 (en) | Computing job management based on priority and quota | |
KR20160039846A (ko) | 인터럽트 처리 시스템 및 인터럽트 처리 방법 | |
US8447912B2 (en) | Paging memory from random access memory to backing storage in a parallel computer | |
KR20140096587A (ko) | 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서 | |
CN112711522B (zh) | 一种基于docker的云测试方法、系统及电子设备 | |
CN111767126A (zh) | 分布式批量处理的系统和方法 | |
US20160357707A1 (en) | Parallel computer system, parallel computing method, and program storage medium | |
JP2017062540A (ja) | 片方向オペレーティングシステム間通信システム及びプログラム | |
CN105630593A (zh) | 用于处理中断的方法 | |
KR20050057834A (ko) | 멀티프로세서 시스템에서 스케줄러를 이용한 대규모데이터 처리 방법 | |
US20130103926A1 (en) | Establishing a data communications connection between a lightweight kernel in a compute node of a parallel computer and an input-output ('i/o') node of the parallel computer | |
CN102736949A (zh) | 改善对非连贯设备要执行的任务的调度 | |
CN115599507A (zh) | 数据处理方法、执行工作站、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
N231 | Notification of change of applicant | ||
GRNT | Written decision to grant |