KR20210031347A - 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 - Google Patents

처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 Download PDF

Info

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
Application number
KR1020200001215A
Other languages
English (en)
Other versions
KR102350785B1 (ko
Inventor
칭슈 첸
찌비아오 짜오
헤페이 쭈
샤오쨩 공
용 왕
지안 오우양
Original Assignee
바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드
바이두 유에스에이 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드, 바이두 유에스에이 엘엘씨 filed Critical 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드
Publication of KR20210031347A publication Critical patent/KR20210031347A/ko
Application granted granted Critical
Publication of KR102350785B1 publication Critical patent/KR102350785B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message 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

처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체{METHOD, APPARATUS, DEVICE, AND STORAGE MEDIUM FOR PERFORMING PROCESSING TASK}
본 출원의 구현 방식은 포괄적으로 처리 작업에 관한 것이고, 구체적으로 복수의 처리 장치에서 분산 방식으로 처리 작업을 수행하는 방법, 장치, 기기 및 컴퓨터 저장 매체에 관한 것이다.
컴퓨터 기술이 발전하면서, 분산 처리 방식(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은 본 출원의 복수의 구현 방식을 실시할 수 있는 컴퓨터 기기의 블록도를 개략적으로 나타낸다.
후문에서 본 출원의 구현 방식을 도면을 참조하여 더 상세하게 설명하고자 한다. 도면에서 본 출원의 일부 구현 방식들을 설명하고 있지만, 이는 본 출원의 명세서에서 설명하고 있는 구현방식에 국한되는 것이 아니라, 본 출원의 내용을 더 명확하고 완전하게 설명하고자 제시된 것이다. 본 출원의 도면과 구현방식은 예시를 보여주는 것에 불과한 것이며 본 출원의 보호범위를 제한하는 것이 아니라고 이해되어야 한다.
본 출원의 내용의 구현 방식에 있어서, "포함" 및 이와 유사한 용어는 개방적 의미의 포함, 즉 "포함하지만 국한되지 않는"이라고 해석되어야 한다. "기반하여"는 "적어도 부분적으로 기반하여"로 해석되어야 한다. "하나의 구현 방식" 또는 "상기 구현 방식"은 "적어도 하나의 구현 방식"으로 해석되어야 한다. "제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. 처리 작업을 수행하는 방법에 있어서,
    상기 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함하며,
    상기 방법은,
    상기 제1 유형의 작업을 수행하는 제1 대기 행렬과 상기 제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축하는 단계;
    상기 처리 작업의 정의에 따라, 상기 처리 장치에서 수행될 상기 작업 그룹과, 상기 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득하는 단계; 및
    상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 방법은,
    상기 제1 유형의 제1 작업 그룹을 수행하는 제1 코드와 상기 제2 유형의 제2 작업 그룹을 수행하는 제2 코드를 각각 상기 처리 장치에 로딩 하는 단계
    를 더 포함하고,
    상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계는,
    상기 제1 코드에 따라 상기 제1 대기 행렬의 작업을 수행하는 단계; 및
    상기 제2 코드에 따라 상기 제2 대기 행렬의 작업을 수행하는 단계
    를 포함하는 방법.
  3. 제2항에 있어서,
    상기 방법은,
    상기 제1 코드와 상기 제2 코드 중 적어도 어느 한 항목을 상기 처리 장치의 메모리에 유지하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 방법은,
    상기 처리 작업의 처리 대기 데이터 중 상기 처리 장치에서 처리될 데이터 블록을 상기 처리 장치가 수신하는 단계 - 상기 데이터 블록은 상기 복수의 처리 장치의 수량에 따라 상기 처리 대기 데이터를 나눠서 얻은 결과임 -
    를 더 포함하고,
    상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계는,
    상기 처리 장치에서 상기 데이터 블록에 대해서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계
    를 포함하는 방법.
  5. 제4항에 있어서,
    상기 처리 작업은 올 리듀스(AII Reduce)작업이고, 상기 복수의 처리 장치를 고리 형태로 연결되고,
    상기 제1 작업 그룹은 축적 작업을 포함하되, 상기 축적 작업은, 상기 처리 장치의 데이터 블록을 상기 처리 장치 이전에 연결된 이전 처리 장치에서 상기 처리 장치에 복사된 축적 결과에 축적함으로써 상기 처리 장치의 축적 결과로 하도록 하는 작업이고,
    상기 제2 작업 그룹은 복사 작업을 포함하되, 상기 복사 적업은 상기 처리 장치의 축적 결과를 상기 처리 장치 이후에 연결되는 후속 처리 장치에 복사하도록 하는 작업인 방법.
  6. 제5항에 있어서,
    상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하는 단계는,
    상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트를 통해 상기 다른 처리 장치에 통보하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트에 의해 상기 다른 처리 장치에 통보하는 단계는,
    상기 처리 장치에서 상기 제1 대기 행렬의 한 축적 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 이전 처리 장치가 상기 제2 대기 행렬의 다음 복사 작업을 수행하도록 통보하는 단계
    를 포함하는 방법.
  8. 제6항에 있어서,
    상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트에 의해 상기 다른 처리 장치에 통보하는 단계는,
    상기 처리 장치에서 상기 제2 대기 행렬의 한 복사 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 후속 처리 장치가 상기 제1 대기 행렬의 다음 축적 작업을 수행하도록 통보하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 처리 장치와 상기 후속 처리 장치는 캐시 영역을 공유하고,
    상기 처리 장치에서 상기 복사 작업을 수행하는 단계는,
    상기 처리 장치에서 상기 캐시 영역으로 상기 축적 결과를 복사하는 단계
    를 포함하는 방법.
  10. 제1항에 있어서,
    상기 방법은,
    상기 처리 장치에서 상기 제1 대기 행렬과 상기 제2 대기 행렬의 모든 작업을 수행하였음이 확인됨에 응답하여, 상기 처리 장치가 이미 상기 처리 작업 중 상기 부분을 이미 수행하였음을 보고하는 단계
    를 더 포함하는 방법.
  11. 처리 작업을 수행하는 장치에 있어서,
    상기 처리 작업의 복수의 부분 중 한 부분은, 복수의 처리 장치 중 하나의 처리 장치에서 수행될 작업 그룹을 포함하고, 상기 작업 그룹은 제1 유형과 제2 유형의 작업을 포함하며,
    상기 장치는,
    상기 제1 유형의 작업을 수행하는 제1 대기 행렬과 상기제2 유형의 작업을 수행하는 제2 대기 행렬을 각각 구축하도록 구성된 구축 모듈;
    상기 처리 작업의 정의에 따라, 상기 처리 장치에서 수행될 상기 작업 그룹과, 상기 복수의 처리 장치 중 다른 처리 장치에서 수행될 작업 그룹 사이의 의존 관계를 획득하도록 구성된 획득 모듈; 및
    상기 의존 관계에 따라, 상기 처리 장치에서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하도록 구성된 수행 모듈
    을 포함하는 장치.
  12. 제11항에 있어서,
    상기 장치는,
    상기 제1 유형의 제1 작업 그룹을 수행하는 제1 코드와 상기 제2 유형의 제2 작업 그룹을 수행하는 제2 코드를 각각 상기 처리 장치에 로딩 하도록 구성된 로딩 모듈
    을 더 포함하고,
    상기 수행 모듈은,
    상기 제1 코드에 따라 상기 제1 대기 행렬의 작업을 수행하도록 구성된 제1 수행 모듈; 및
    상기 제2 코드에 따라 상기 제2 대기 행렬의 작업을 수행하도록 구성된 제2 수행 모듈
    을 포함하는 장치.
  13. 제12항에 있어서,
    상기 장치는,
    상기 제1 코드와 상기 제2 코드 중 적어도 어느 한 항목을 상기 처리 장치의 메모리에 유지하도록 구성된 유지 모듈
    을 더 포함하는 장치.
  14. 제11항에 있어서,
    상기 장치는,
    상기 처리 작업의 처리 대기 데이터 중 상기 처리 장치에서 처리될 데이터 블록을 상기 처리 장치가 수신하도록 구성된 수신 모듈 - 상기 데이터 블록은 상기 복수의 처리 장치의 수량에 따라 상기 처리 대기 데이터를 나눠서 얻은 결과임 -
    을 더 포함하고,
    상기 수행 모듈은,
    상기 처리 장치에서 상기 데이터 블록에 대해서 상기 제1 대기 행렬의 작업과 상기 제2 대기 행렬의 작업을 각각 수행하도록 구성된 데이터 처리 모듈
    을 더 포함하는 장치.
  15. 제14항에 있어서,
    상기 처리 작업은 올 리듀스(AII Reduce)작업이고, 상기 복수의 처리 장치를 고리 형태로 연결되고,
    상기 제1 작업 그룹은 축적 작업을 포함하되, 상기 축적 작업은, 상기 처리 장치의 데이터 블록을 상기 처리 장치 이전에 연결된 이전 처리 장치에서 상기 처리 장치에 복사된 축적 결과에 축적함으로써 상기 처리 장치의 축적 결과로 하도록 하는 작업이고,
    상기 제2 작업 그룹은 복사 작업을 포함하되, 상기 복사 적업은 상기 처리 장치의 축적 결과를 상기 처리 장치 이후에 연결되는 후속 처리 장치에 복사하도록 하는 작업인 장치.
  16. 제15항에 있어서,
    상기 수행 모듈은,
    상기 처리 장치에서 상기 제1 대기 행렬과 제2 대기 행렬 중 어느 한 대기 행렬의 작업 완료에 응답하여, 상기 처리 장치의 하드웨어 인터럽트를 통해 상기 다른 처리 장치에 통보하도록 구성된 통보 모듈
    을 포함하는 장치.
  17. 제16항에 있어서,
    상기 통보 모듈은,
    상기 처리 장치에서 상기 제1 대기 행렬의 한 축적 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 이전 처리 장치가 상기 제2 대기 행렬의 다음 복사 작업을 수행하도록 통보하도록 구성된 제1 통보 모듈
    을 포함하는 장치.
  18. 제16항에 있어서,
    상기 통보 모듈은,
    상기 처리 장치에서 상기 제2 대기 행렬의 한 복사 작업의 완료에 응답하여, 상기 하드웨어 인터럽트를 통해 상기 후속 처리 장치가 상기 제1 대기 행렬의 다음 축적 작업을 수행하도록 통보하도록 구성된 제2 통보 모듈
    을 포함하는 장치.
  19. 제18항에 있어서,
    상기 처리 장치와 상기 후속 처리 장치는 캐시 영역을 공유하고,
    상기 장치는,
    상기 처리 장치에서 상기 캐시 영역으로 상기 데이터 블록과 축적 결과 중 적어도 한 항을 복사하도록 구성된 복사 모듈
    을 포함하는 장치.
  20. 제11항에 있어서,
    상기 장치는,
    상기 처리 장치에서 상기 제1 대기 행렬과 상기 제2 대기 행렬의 모든 작업을 수행하였음이 확인됨에 응답하여, 상기 처리 장치가 이미 상기 처리 작업 중 상기 부분을 이미 수행하였음을 보고하도록 구성된 보고 모듈
    을 더 포함하는 장치.
  21. 처리 작업을 수행하는 기기에 있어서,
    하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램을 저장하기 위한 저장 장치
    를 포함하되,
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제10항 중의 임의의 한 항의 방법을 구현하도록 하는 기기.
  22. 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행될 경우, 제1항 내지 제10항 중의 임의의 한 항의 방법이 구현되도록 하는 컴퓨터 판독 가능한 저장 매체.

KR1020200001215A 2019-09-11 2020-01-06 처리 작업을 수행하는 방법, 장치, 기기 및 저장 매체 KR102350785B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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 (&#39;i/o&#39;) 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