KR20110075296A - 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 - Google Patents
멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20110075296A KR20110075296A KR1020090131712A KR20090131712A KR20110075296A KR 20110075296 A KR20110075296 A KR 20110075296A KR 1020090131712 A KR1020090131712 A KR 1020090131712A KR 20090131712 A KR20090131712 A KR 20090131712A KR 20110075296 A KR20110075296 A KR 20110075296A
- Authority
- KR
- South Korea
- Prior art keywords
- stage
- core
- information
- job
- stages
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims 2
- 230000002596 correlated effect Effects 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 230000001419 dependent effect Effects 0.000 description 8
- 230000003068 static effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 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/468—Specific access rights for resources, e.g. using capability register
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
Description
본 발명은 멀티코어 기술에 관한 것으로, 복수개의 코어로 구성된 컴퓨팅 시스템에 있어서 파이프라인 작업을 효율적으로 수행하기 위해 단위 작업을 할당하는 방법 및 그 장치에 관한 것이다.
최근 CE 기기의 저전력 고성능 요구사항이 증가함에 따라, 멀티 코어의 필요성이 높아지고 있다. 이러한 멀티 코어 시스템에는 동일한 코어가 다수개 존재하는 대칭형 멀티코어 시스템(SMP, Symmetric Multi-Processing)과 DSP(Digital Processing Processor)나 GPU(Graphic Processing Unit) 등 GPP(General Purpose Processor)로 사용될 수 있는 다양한 이기종 코어들로 이루어진 비대칭 멀티코어 시스템(AMP, Asymmetric Multi-Processing)이 있다.
많은 데이터를 처리하는 소프트웨어를 여러 코어에서 병렬로 실행시킴으로써 성능을 향상시키기 위해서는 처리해야 하는 전체 데이터를 분할하여 분할된 데이터를 각 코어에 할당하고 각 코어에서 이를 처리하도록 한다. 이를 위하여 처리 대상 데이터를 코어의 개수로 나누어 작업(job)을 분할하는 정적 스케줄링 방법이 있다. 또한 데이터의 분할시 분할된 데이터의 크기가 같더라도 OS, 멀티코어 S/W 플랫폼 그리고 다른 응용 프로그램의 영향으로 인해 코어들이 작업을 종료하는 시간이 다를 수 있기 때문에, 전체 성능에서 손실을 입는 경우에는 할당 받은 작업을 모두 종료한 코어가 다른 코어에게 할당된 작업의 일부를 가져와서 수행하는 동적 스케줄링 방법이 사용될 수 있다. 두 가지 방법 모두 코어마다 별도의 작업큐(work queue)를 가지고 있고, 데이터 처리를 시작할 때 전체 데이터가 여러 개로 분할되어 각 코어의 작업큐에 할당된다.
정적 스케줄링 방법은 각 코어의 성능이 모두 동일하고 코어에서 수행되는 작업이 다른 프로세스를 실행하기 위해 컨텍스트 스위칭(context switching) 되지 않을 경우에 성능상의 최대 이득을 얻을 수 있다. 동적 스케줄링 방법은 다른 코어의 작업큐에 할당 받은 작업을 취소하고 빼앗아 올 수 있을 경우에만 사용할 수 있다. 하지만 이종의 멀티코어 플랫폼은 각 코어마다 성능과 계산 특성이 다르기 때문에 동작시키는 프로그램의 성격에 따라 코어별 수행 시간을 예측하기가 어려워서 정적 스케줄링 방법이 효율적으로 동작하지 않는다. 또한, 각 코어가 가지고 있는 작업큐는 해당 코어만 접근할 수 있는 메모리 영역에 가지고 있는 경우가 대부분이어서 동작 중에 한 코어가 다른 코어의 작업큐에 접근하여 작업을 가지고 오는 것이 불가능하기 때문에 동적 스케줄링 방법을 사용하는 것이 불가능하다.
따라서, 본 발명의 일 양상에 따라, 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리하기 위하여 각 스테이지를 각 코어에 효율적으로 분배하는 작업 분배 방법을 제공하는 것을 목적으로 한다.
본 발명의 일 양상에 따른 멀티코어 시스템의 작업 분배 방법은, 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리할 때, 각 스테이지 사이의 연관관계에 대한 정보 뿐만 아니라 각 스테이지에 대한 코어별 성능을 주기적으로 수집한 다음 수집된 정보에 기초하여 각 스테이지가 실행될 코어를 선정하여 작업을 분배한다.
또한, 본 발명의 다른 양상에 따른 멀티코어 시스템은 특정 어플리케이션에 대한 스테이지 작업을 직접 수행하는 코어 및 상기 스테이지 작업에 대한 정보를 저장하고 있는 작업큐를 포함하는 하나 또는 둘 이상의 작업 프로세서 및 상기 스테이지들 간의 연관관계 정보 및 각 스테이지에 대한 코어별 성능 정보에 기초하여 상기 스테이지 작업을 상기 작업 프로세서에 할당하는 호스트 프로세서를 포함한다.
본 발명의 일실시예에 따르면, 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리하기 위하여 각 스테이지를 각 코어에 효율적으로 분배하는 작업이 가능하게 된다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설명한다.
도 1a 내지 도 1b는 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 파이프라인 처리하는 과정을 설명하기 위한 도면이다.
도 1a를 참조하면 하나의 어플리케이션은 스테이지A, B, C, D 및 E로 표시되는 5개의 스테이지로 구성되어 있다. 또한, 이 어플리케이션을 실행하기 위해서는 이 5개의 스테이지를 전부 수행하여야 한다. 대부분의 어플리케이션에 있어서 각 스테이지는 이전 스테이지에 종속되어 있으므로, 스테이지A, 스테이지B, 스테이지C, 스테이지D, 및 스테이지E의 순서로 진행된다. 이때 각 스테이지가 순서대로 1회씩 진행되는 과정을 1사이클(cycle)이라고 한다. 이때, 어플리케이션을 1회 수행하기 위하여 스테이지A로부터 스테이지E까지 수행되는 1사이클 과정에서 사용되는 데이터를 토큰(token)이라고 한다.
도 1b는 5개의 스테이지로 구분하여 수행 가능한 어플리케이션을 파이프라인 처리하는 과정을 설명하기 위한 도면이다. 도 1b를 참조하면 먼저 첫번째 사이클의 스테이지 A0가 수행되고 곧바로 스테이지B0가 수행되는데, 이와 별도로 새로운 두번째 사이클의 스테이지A1이 동시에 수행된다. 첫번째 사이클의 스테이지B0가 수행되고 나서 첫번째 사이클의 스테이지C0가 수행되는데, 이와 별도로 두번째 사이클 의 스테이지B1이 동시에 수행되고, 또한 새로운 세번째 사이클의 스테이지A2가 동시에 시작한다. 이처럼 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 처리하는 것을 파이프라인이라고 한다.
여기에서 이 각각의 사이클에서 사용되는 데이터를 구별하기 위하여 첫번째 사이클에서 사용되는 데이터를 토큰1, 두번째 사이클에서 사용되는 데이터를 토큰2, 그리고 세번째 사이클에서 사용되는 데이터를 토큰3라 할 수 있다.
도 2는 본 발명의 일 실시예에 따른 멀티코어 시스템의 전체 구성을 도시한 도면이다.
도 2에서는 본 발명에 대한 설명의 편의를 위하여 본 발명의 일 실시예에 따른 멀티코어 시스템(10)을 4개의 프로세서(100, 200, 300, 400)로 구성되어 있는 것으로 가정하였다. 4개의 프로세서(100, 200, 300, 400)는 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리하는 제1디바이스프로세서 내지 제3디바이스프로세서(200, 300, 400)와, 각 디바이스프로세서(200, 300, 400)에 대한 스테이지 작업 할당 및 스테이지 작업이 수행되는 과정을 제어하고 관리하는 호스트 프로세서(100)를 포함한다. 다시 말하면 제1디바이스프로세서(200), 제2디바이스프로세서(300) 및 제3디바이스프로세서(400)는 호스트 프로세서(100)의 제어에 따라 할당된 스테이지 작업을 직접 수행한다.
이하 제1디바이스프로세서 내지 제3디바이스프로세서(200, 300, 400)는 편의상 작업 프로세서라 칭한다.
각각의 작업 프로세서(200, 300, 400)는 각각 코어(210, 310, 410) 및 작업 큐(220, 320, 420)를 포함할 수 있다. 이는 특히 각 작업 프로세서(200, 300), 400)에 포함된 코어가 서로 다른 비대칭 멀티코어 시스템인 경우이지만, 반드시 이에 한정되는 것은 아니다. 상기 제1작업큐 내지 제3작업큐(220, 320, 420)에는 각각의 코어(210, 310, 410)에서 처리되어야 하는 스테이지 작업들에 대한 정보가 저장되어 있다. 제1코어 내지 제3코어(210, 310, 410)는 각각 작업큐(220, 320, 420)에 저장되어 있는 정보에 기초하여 디램(DRAM) 등과 같은 제1 저장장치 또는 하드디스크 드라이브 등과 같은 제2 저장장치에 저장되어 있는 데이터를 읽어 들여 각자 필요한 작업을 수행하게 된다.
제1코어 내지 제3코어(210, 310, 410)는 CPU(Central Processing Unit), DSP(Digital Processing Processor) 또는 GPU(Graphic Processing Unit) 중에서 선택되는 어느 하나로서, 제1코어 내지 제3코어(210, 310, 410)가 모두 동일한 코어이거나 서로 다른 코어일 수 있다. 예컨대 제1 코어(210)는 DSP이고, 제2 코어(310) 및 제3 코어(410)는 GPU인 멀티코어 시스템이 본 발명의 대상일 수 있다.
제1작업큐 내지 제3작업큐(220, 320, 420)는 도 1에 도시한 바와 같이 각 코어(210, 310, 410)가 포함된 프로세서(200, 300, 400)의 로컬 메모리 내에 존재할 수 있다.
호스트 프로세서(100)는 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리될 수 있도록, 각 스테이지를 적합한 프로세서에 할당하여 작업의 전체 수행 과정을 관리한다. 호스트 프로세서(100)는 이를 위하여 작업 리스트 관리 모듈(110), 코어 성능 관리모듈(120), 작 업 스케줄러(130) 및 작업큐 모니터(140)를 포함할 수 있다.
작업 리스트 관리 모듈(110)은 해당 어플리케이션 수행을 위해 처리해야할 2개 이상의 스테이지 작업에 대한 연관관계 정보를 관리한다. 본 발명의 일 실시예에서 이 연관관계는 각 스테이지들 간의 종속관계에 기반하여 결정할 수 있다.
코어 성능 관리 모듈(120)은 해당 어플리케이션 수행을 위해 처리해야 할 2개 이상의 스테이지 작업에 대하여 일정 주기 동안 코어별 성능 정보를 관리한다. 본 발명의 일 실시예에 있어서 각 스테이지에 대한 코어별 성능 정보로는 해당 코어에서 각 스테이지가 실행될 수 있는지 여부; 해당 스테이지를 실행했을 때 평균적으로 소요되는 시간; 이전 스테이지에서 수행되었던 정보를 해당 스테이지가 수행되는 코어로 전송해야 하는지 여부 및 전송하는데 소요되는 시간; 및, 해당 코어의 작업큐에 저장되어 있는 스테이지들을 모두 수행하는데 소요되는 시간 또는 작업큐에 저장되어 있는 스테이지에 대한 평균 수행 소요 시간 중에서 선택되는 어느 하나 이상의 정보를 포함할 수 있다.
이때 각 코어별로 각 스테이지 작업을 처리할 때마다의 성능이 동일할 수도 있지만 일부 디바이스에서는 코드 전송시간, 코드 캐쉬의 영향으로 인해 점점 성능이 좋아지는 경향이 있으므로, 필요에 따라 전체 작업을 수행한 회수가 아니라 최근 수행하였던 몇 개의 단위작업 만을 성능 평가에 사용할 수 있다. 이러한 정보에 기초하여 단위 시간당 각 코어가 처리한 스테이지의 개수 혹은 데이터의 양을 주기적으로 갱신하면서 각 코어의 성능을 계산할 수 있다.
호스트 프로세서(100)에서 동작하는 작업큐 모니터(140)는 멀티코어 시스템 을 구성하는 복수개의 작업 프로세서(200, 300, 400)에 존재하는 작업큐(220, 320, 420)의 상태를 주기적으로 모니터링한다. 작업큐 모니터(140)의 모니터링 주기는 멀티코어 시스템(10)의 성능에 대한 요구사항에 따라 다르게 결정될 수 있다. 예컨대 각 코어(210, 310, 410) 에서 일정한 시간 주기마다 작업큐(220, 320, 420)의 상태를 모니터링 하거나, 각 코어(210, 310, 410)에서 매번 각 스테이지 작업이 완료될 때마다 작업큐(220, 320, 420)의 상태를 모니터링 할 수 있다. 이를 위하여 작업큐 모니터(140)는 단위 스테이지 작업이 끝날 때마다 이를 알리는 통지(notification)를 각 코어(210, 310, 410)로부터 받을 수 있다.
호스트 프로세서(100)에서 동작하는 작업 스케줄러(130)는 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리되도록 적합한 작업 프로세서(200, 300, 400)에서 해당 스테이지 작업을 할당한다. 이때 작업 스케줄러(130)는 작업 리스트 관리 모듈(110)에서 관리하는 각 스테이지에 대한 연관관계 및 코어 성능 관리 모듈(120)이 관리하는 각 스테이지에 대한 코어별 성능정보에 기초하여 어떤 작업 프로세서(200, 300, 400)에 어느 정도의 스테이지 작업을 할당할지를 결정한다.
작업큐 모니터(140)는 작업 프로세서(200, 300, 400)에 존재하는 작업큐(220, 320, 420)의 상태를 주기적으로 모니터링 한다. 작업큐의 상태 정보는 작업큐에 저장된 스테이지 작업의 개수; 스테이지 작업 시작 시간 및 각 작업 수행 시간; 및, 작업큐에 저장된 스테이지 작업의 전체 또는 평균 수행 시간 중에 선택되는 어느 하나일 수 있다. 본 발명의 일 실시예에서 작업큐 모니터(140)는 작업 스케줄러(130)가 스테이지 작업을 작업 프로세서에 할당하는데 참고할 수 있도록 작업큐(220, 320, 420)의 상태 정보를 작업 스케줄러에 제공한다.
도 3a 내지 도 3c는 일실시예에 따른 멀티코어 시스템에서 각 스테이지별 코어의 성능정보에 따라 파이프라인 작업을 진행하는 과정을 설명하기 위한 도면이다.
도 3a 내지 도 3c에서 4개의 동일한 프로세서로 구성된 대칭형 멀티코어 환경(SMP)을 가정한다. 멀티코어 환경에서 파이프라인 작업을 진행하고자 하는 어플리케이션은 4개의 스테이지(스테이지A, 스테이지B, 스테이지C 및 스테이지D)로 구성되어 있다. 이때 각 프로세서에서 각 스테이지를 처리하는데 소요되는 시간을 도 3a에 나타내었다.
전술한 어플리케이션을 파이프라인으로 처리하게 되면 4번째 사이클부터는 4개의 서로 다른 스테이지가 멀티코어 환경에서 동시에 처리되어야 한다. 만약 도 3b에 도시한 바와 같이 4개의 스테이지 각각을 4개의 프로세서에 나누어서 할당하게 되면 프로세서2에서의 시간 지연 때문에 전체적인 처리 속도가 지연되게 된다.
따라서 이러한 경우에는 도 3c에 도시한 바와 같이 각 스테이지에 대한 코어별 성능 정보에 기초하여 프로세서1에서 스테이지A 및 스테이지C를 처리하고, 프로세서 2 및 3에서 스테이지B를 처리하고, 프로세서4에서 스테이지D를 처리하도록 할 수 있다.
도 4a 내지 도 4b는 다른 일실시예에 따른 멀티코어 시스템에서 각 스테이지별 코어의 성능정보에 따라 파이프라인 작업을 진행하는 과정을 설명하기 위한 도 면이다.
도 4a에 도시된 바와 같이 프로세서1에서는 스테이지D를 제외하고는 모두 실행 가능하고, 프로세서2에서는 스테이지B를 제외하고는 모두 실행 가능하다. 따라서, 본 발명의 일 실시예에 따라 각 프로세서에서 해당 스테이지를 실행하는데 소요되는 시간을 고려한다면, 스테이지A 및 B는 프로세서1에서 수행한 다음, 스테이지C, D 및 E는 프로세서2에서 수행하게 된다.
도 4b에는 각 스테이지별 코어의 성능정보로 각 프로세서에서 각 스테이지에 대한 수행 시간뿐만 아니라, 해당 스테이지를 수행하기 위하여 이전 스테이지로부터 필요한 정보를 전달받는데 필요한 시간이 추가로 포함되는 경우를 예시하고 있다. 도 4b에 도시된 바와 같이 스테이지C는 프로세서1보다 프로세서2에서 보다 빠르게 수행될 수 있지만, 스테이지B에서 생성된 데이터를 프로세서1에서 프로세서2로 전달하는 시간이 프로세서1에서 처리하는 시간보다 오래 걸리는 것을 알 수 있다. 따라서, 이러한 경우에는 본 발명의 일 실시예에 따라 프로세서에서 해당 스테이지를 수행하는데 소요되는 시간뿐만 아니라, 데이터를 전달하는데 소요되는 시간까지 종합적으로 고려하여 스테이지A, B 및 C는 프로세서1에서 수행한 다음, 스테이지D 및 E는 프로세서2에서 수행하게 된다.
도 5a 내지 도 5c는 또 다른 일실시예에 따른 멀티코어 시스템에서 각 스테이지별 코어의 성능정보에 따라 파이프라인 작업을 진행하는 과정을 설명하기 위한 도면이다.
본 발명의 일 실시예에서 전술한 연관관계는 각 스테이지들 간의 종속관계에 기반하여 결정할 수 있다. 따라서 이전 스테이지에 종속된 스테이지는 이전 스테이지에 대한 실시가 완료되기 전까지는 동일 프로세서나 다른 프로세서에서 실행될 수 없다.
도 5a에는 본 실시예의 설명을 위한 어플리케이션을 실행하기 위하여 수행되어야 하는 스테이지들간의 연관관계를 도시한 도면이다. 어플리케이션은 총 5개의 스테이지(스테이지A, 스테이지B, 스테이지C, 스테이지D 및 스테이지E)로 구성되어 있는데, 스테이지B의 상태에 따라 스테이지C 또는 스테이지D로 분기하여 선택적으로 수행된다.
도 5b는 어플리케이션에 대한 작업 리스트 내에서 각 스테이지별로 종속관계를 나타낸 도면이다. 작업 리스트는 본 발명에 따른 멀티코어 시스템에서 어플리케이션을 처리하기 위해 수행하여야 할 전체 작업에 대한 각 스테이지에 대한 작업 정보로, 비순차적 큐(out-of-order queue)에 저장될 수 있다. 따라서 가장 먼저 입력(enque)된 스테이지 정보가 가장 먼저 출력(deque)되는 FIFO(First-in-first-out) 방식이 아니라, 늦게 입력된 스테이지 정보라 하더라도 먼저 출력될 수 있게 된다.
도 5b 및 도5c에 있어서 각 스테이지명 우측에 기재된 숫자는 어플리케이션을 파이프라인으로 처리하기 위한 사이클을 구별하기 위한 것으로 같은 숫자는 같은 사이클로 처리되는 것을 의미한다.
도 5b는 각 스테이지가 직전에 수행된 스테이지에 종속된다는 것에 기반한 스테이지들간의 연관관계를 나타낸 도면이다. 따라서 스테이지B0는 스테이지A0에 종속되어 있고, 스테이지C0 및 D0는 스테이지B0에 종속되어 있으며, 스테이지E0는 스테이지C0 및 D0에 종속되어 있다. 하지만, 스테이지A1은 스테이지A0와 종속되어 있지 않다.
따라서, 스테이지A0가 프로세서1에서 실행되는 동안 스테이지B0는 프로세서1이나 프로세서2에서 실행될 수 없다. 하지만, 스테이지A1은 스테이지A0에 종속되어 있지 않기 때문에 스테이지A0가 실행되고 있다 하더라도 이에 관계없이 프로세서1의 작업큐에 입력(enque)되거나, 프로세서2에서 실행될 수 있다.
도 5c는 자신과 동일한 이전 사이클의 스테이지에 종속된다는 것에 기반하여 스테이지들간의 연관관계를 설정하는 경우를 나타낸 도면이다. 이 경우에는 기본적인 연관관계는 도 5b에 도시한 내용과 동일하지만, 스테이지A1이 스테이지A0에 종속되면서 추가적으로 연관관계를 갖게 된다.
따라서, 스테이지A0가 프로세서1에서 실행되는 동안 스테이지B0 뿐만 아니라 스테이지 A1도 프로세서1이나 프로세서2에서 실행될 수 없다. 그리고 스테이지A0가 종료되고 나면 스테이지B0 및 A1은 프로세서1 또는 프로세서2에서 실행된다. 이때, 스테이지B0 및 A1이 어떤 프로세서에서 실행되는지는 각 스테이지에 대한 코어별 성능 정보에 기초하여 결정될 수 있다.
도 6은 본 발명의 일 실시예에 따른 멀티코어 시스템에 있어서 각 코어에 작업을 분배하는 과정을 설명한 순서도이다.
먼저 본 발명에 따른 멀티코어 시스템이 특정 어플리케이션으로부터 업무(task) 수행 요청을 접수한다(S10). 본 발명에 따른 멀티코어 시스템을 구비한 전체 컴퓨팅 시스템상에는 하나 이상의 어플리케이션이 수행 중이다. 이러한 어플리케이션은 새로이 데이터를 생성하거나 기존의 데이터를 다른 형태의 데이터로 변환하는 등의 작업(task)을 정해진 순서대로 수행하여야 한다. 이러한 작업은 메인 연산 장치에 해당하는 멀티코어 시스템이 디램(DRAM) 등과 같은 제1 저장장치 또는 하드디스크 드라이브 등과 같은 제2 저장장치에 저장되어 있는 데이터를 읽어 들여 처리 하는 형태로 수행된다.
이 요청을 접수한 멀티코어 시스템은 해당 업무가 파이프라인으로 처리될 수 있도록 보다 작은 독립된 작업 단위인 스테이지로 구분한 다음 각 스테이지에 대한 연관관계 정보를 생성한다(S12). 이러한 연관관계는 각 스테이지들 간의 종속관계에 기반하여 결정할 수 있다. 따라서, 어플리케이션의 전체 실행 순서에 기초하여 특정 스테이지는 해당 스테이지 직전에 수행되어야 하는 스테이지에 대하여 종속적인 관계가 형성되고 따라서 이전 스테이지에 대하여 연관관계가 있는 것으로 설정될 수 있다. 또한, 이전 사이클의 동일한 스테이지에 대해서도 종속적인 관계가 형성될 수 있기 때문에 연관관계가 있는 것으로 설정될 수 있다.
다음으로 멀티코어 시스템에 포함된 각 프로세서를 통해 각 스테이지에 대한 초기 작업을 진행한다(S14). 이는 각 스테이지에 대한 코어별 성능 정보를 확인하기 위한 작업이다. 본 발명의 일 실시예에 있어서 각 스테이지에 대한 코어별 성능 정보로는 해당 코어에서 각 스테이지가 실행될 수 있는지 여부; 해당 스테이지를 실행했을 때 평균적으로 소요되는 시간; 이전 스테이지에서 수행되었던 정보를 해당 스테이지가 수행되는 코어로 전송해야 하는지 여부 및 전송하는데 소요되는 시 간; 및, 해당 코어의 작업큐에 저장되어 있는 스테이지들을 모두 수행하는데 소요되는 시간 또는 작업큐에 저장되어 있는 스테이지에 대한 평균 수행 소요 시간 중에서 선택되는 어느 하나 이상의 정보를 포함할 수 있다.
본 발명에 따른 멀티코어 시스템이 각 프로세서에 작업을 할당하는 것은 호스트 프로세서 내에서 실행되는 작업 스케줄러가 각 프로세서에 내장되어 있는 작업큐(work queue)에 각 스테이지에 대한 정보를 입력(enque)하는 방식으로 수행될 수 있다.
이후 멀티코어 시스템은 각 프로세서에 내장되어 있는 코어의 성능을 주기적으로 모니터링한다(S16). 이 단계는 멀티코어 시스템을 구성하는 각각의 프로세서에 존재하는 작업큐의 상태를 주기적으로 확인하는 방식으로 수행될 수 있다.
작업큐에 대한 모니터링 주기는 멀티코어 시스템의 성능에 대한 요구사항에 따라 다르게 결정될 수 있다. 예컨대 각 코어에서 일정한 시간 주기마다 작업큐의 상태를 모니터링 하거나, 각 코어에서 매번 스테이지에 대한 작업이 완료될 때마다 작업큐의 상태를 모니터링 할 수 있다. 이를 위하여 각 프로세서에서 스테이지가 끝날 때마다 이를 알리는 통지(notification)를 받을 수 있다. 이때, 통지의 내용은 한 스테이지 작업을 수행한 전체 시간 혹은 작업 수행 시작 시간 및 종료 시간에 대한 정보를 포함할 수 있다.
본 발명의 일 실시예에 있어서 각 코어의 성능에 대한 정보는 해당 코어에서 각 스테이지가 실행될 수 있는지 여부; 해당 스테이지를 실행했을 때 평균적으로 소요되는 시간; 이전 스테이지에서 수행되었던 정보를 해당 스테이지가 수행되는 코어로 전송해야 하는지 여부 및 전송하는데 소요되는 시간; 및, 해당 코어의 작업큐에 저장되어 있는 스테이지들을 모두 수행하는데 소요되는 시간 또는 작업큐에 저장되어 있는 스테이지에 대한 평균 수행 소요 시간 중에서 선택되는 어느 하나 이상의 정보를 포함할 수 있다.
이때 각 코어별로 각 스테이지 작업을 처리할 때마다의 성능이 동일할 수도 있지만 일부 디바이스에서는 코드 전송시간, 코드 캐쉬의 영향으로 인해 점점 성능이 좋아지는 경향이 있으므로, 필요에 따라 전체 작업을 수행한 회수가 아니라 최근 수행하였던 몇 개의 단위작업 만을 성능 평가에 사용할 수 있다. 이러한 정보에 기초하여 단위 시간당 각 코어가 처리한 스테이지의 개수 혹은 데이터의 양을 주기적으로 갱신하면서 각 코어의 성능을 계산할 수 있다.
다음으로 각 프로세서에 추가 작업을 할당한다(S18). 이때 본 발명의 일 실시예에서는 S10단계에서 확인된 각 스테이지들 간의 연관관계에 대한 정보와, S14단계에서 확인된 각 스테이지에 대한 코어별 성능정보를 종합적으로 고려하여 어떤 스테이지 작업을 어떤 코어에 부여할지 여부를 결정할 수 있다.
이러한 S14 내지 S18 단계를 반복하면서 어플리케이션으로부터 요청받은 전체 업무(task)에 대한 단위 작업의 할당이 완료되고 나면 종료 처리하고 다음 지시를 기다린다.
이제까지 본 발명의 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1a 내지 도 1b는 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 파이프라인 처리하는 과정을 설명하기 위한 도면이고,
도 2는 본 발명의 일 실시예에 따른 멀티코어 시스템의 전체 구성을 도시한 도면이고,
도 3a 내지 도 3c는 일실시예에 따른 멀티코어 시스템에서 각 스테이지별 코어의 성능정보에 따라 파이프라인 작업을 진행하는 과정을 설명하기 위한 도면이고,
도 4a 내지 도 4b는 다른 일실시예에 따른 멀티코어 시스템에서 각 스테이지별 코어의 성능정보에 따라 파이프라인 작업을 진행하는 과정을 설명하기 위한 도면이고,
도 5a 내지 도 5c는 또 다른 일실시예에 따른 멀티코어 시스템에서 각 스테이지별 코어의 성능정보에 따라 파이프라인 작업을 진행하는 과정을 설명하기 위한 도면이고,
도 6은 본 발명의 일 실시예에 따른 멀티코어 시스템에 있어서 각 코어에 작업을 분배하는 과정을 설명한 순서도이다.
Claims (13)
- 2개 이상의 스테이지로 구분하여 수행 가능한 어플리케이션을 시간차를 두고 병렬로 파이프라인 처리하는 멀티코어 시스템의 작업 분배 방법에 있어서,상기 각 스테이지 사이의 연관관계에 대한 정보를 수집하는 제1단계;상기 각 스테이지에 대한 코어별 성능을 주기적으로 수집하는 제2단계; 및,상기 수집된 연관관계 및 성능에 대한 정보에 기초하여 상기 각 스테이지가 실행될 코어를 선정하는 제3단계를 포함하는 멀티코어 시스템의 작업 분배 방법.
- 제1항에 있어서, 상기 제1단계는상기 어플리케이션의 전체 실행 순서를 참조하여 제1 스테이지 직전에 제2 스테이지가 수행되어야 하는 것으로 파악되는 경우에는, 상기 제1 스테이지와 제2 스테이지는 연관관계가 있는 것으로 설정되는 멀티코어 시스템의 작업 분배 방법.
- 제1항에 있어서, 상기 제1단계는상기 어플리케이션의 전체 실행 순서를 참조하여, 이전 사이클의 동일한 스테이지들 사이에는 서로 연관관계가 있는 것으로 설정되는 멀티코어 시스템의 작업 분배 방법.
- 제1항에 있어서,상기 각 스테이지에 대한 코어별 성능 정보는 해당 코어에서 각 스테이지가 실행될 수 있는지 여부 및, 해당 스테이지를 실행했을 때 평균적으로 소요되는 시간 정보인 멀티코어 시스템의 작업 분배 방법.
- 제4항에 있어서,상기 각 스테이지에 대한 코어별 성능 정보는 이전 스테이지에서 수행되었던 정보를 해당 스테이지가 수행되는 코어로 전송해야 하는지 여부 및 전송하는데 소요되는 시간; 및, 해당 코어의 작업큐에 저장되어 있는 스테이지들을 모두 수행하는데 소요되는 시간 또는 작업큐에 저장되어 있는 스테이지에 대한 평균 수행 소요 시간 중에서 선택되는 어느 하나 이상의 정보를 더 포함하는 멀티코어 시스템의 작업 분배 방법.
- 제1항에 있어서, 상기 제2단계는상기 각 코어에서 각 스테이지가 종료할 때마다 주기적으로 각 코어의 성능에 대한 정보를 수집하는 멀티코어 시스템의 작업 분배 방법
- 제1항에 있어서,상기 컴퓨팅 시스템은 서로 다른 성능의 코어를 2개 이상 포함하고 있는 비대칭 멀티코어 시스템인 멀티코어 시스템의 작업 분배 방법.
- 복수개의 코어를 포함하는 컴퓨팅 시스템에 있어서,특정 어플리케이션에 대한 스테이지 작업을 직접 수행하는 코어 및 상기 스테이지 작업에 대한 정보를 저장하고 있는 작업큐를 포함하는 하나 또는 둘 이상의 작업 프로세서; 및,상기 스테이지들 간의 연관관계 정보 및 각 스테이지에 대한 코어별 성능 정보에 기초하여 상기 스테이지 작업을 상기 작업 프로세서에 할당하는 호스트 프로세서를 포함하는 컴퓨팅 시스템
- 제8항에 있어서,상기 호스트 프로세서는상기 스테이지들 간의 연관관계 정보를 관리하고 있는 작업 리스트 관리 모듈;상기 스테이지에 대한 코어별 성능 정보를 주기적으로 관리하는 코어 성능 관리 모듈; 및,상기 작업 리스트 관리 모듈의 연관관계 정보 및 상기 코어 성능 관리 모듈의 코어별 성능 정보에 기초하여 상기 스테이지 작업을 각 작업 프로세서에게 할당하는 작업 스케줄러를 포함하는 컴퓨팅 시스템.
- 제9항에 있어서,상기 호스트 프로세서는 상기 작업 프로세서에 존재하는 작업큐의 상태를 주 기적으로 모니터링하는 작업큐 모니터를 더 포함하는 컴퓨팅 시스템.
- 제8항에 있어서,상기 각 스테이지에 대한 코어별 성능 정보는 해당 코어에서 상기 각 스테이지가 실행될 수 있는지 여부 및, 해당 스테이지를 실행했을 때 평균적으로 소요되는 시간 정보인 컴퓨팅 시스템.
- 제11항에 있어서,상기 각 스테이지에 대한 코어별 성능 정보는 이전 스테이지에서 수행되었던 정보를 해당 스테이지가 수행되는 코어로 전송해야 하는지 여부 및 전송하는데 소요되는 시간; 및, 해당 코어의 작업큐에 저장되어 있는 스테이지들을 모두 수행하는데 소요되는 시간 또는 작업큐에 저장되어 있는 스테이지에 대한 평균 수행 소요 시간 중에서 선택되는 어느 하나 이상의 정보를 더 포함하는 컴퓨팅 시스템.
- 제8항에 있어서,서로 다른 성능의 코어를 2개 이상 포함하고 있는 컴퓨팅 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090131712A KR101640848B1 (ko) | 2009-12-28 | 2009-12-28 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
US12/843,320 US20110161965A1 (en) | 2009-12-28 | 2010-07-26 | Job allocation method and apparatus for a multi-core processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090131712A KR101640848B1 (ko) | 2009-12-28 | 2009-12-28 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110075296A true KR20110075296A (ko) | 2011-07-06 |
KR101640848B1 KR101640848B1 (ko) | 2016-07-29 |
Family
ID=44189089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090131712A KR101640848B1 (ko) | 2009-12-28 | 2009-12-28 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110161965A1 (ko) |
KR (1) | KR101640848B1 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101284195B1 (ko) * | 2012-01-09 | 2013-07-10 | 서울대학교산학협력단 | 개방형 범용 병렬 컴퓨팅 프레임워크 동적 작업 분배 장치 |
WO2016093521A1 (ko) * | 2014-12-12 | 2016-06-16 | 삼성전자 주식회사 | 연산 프로세서 및 연산 프로세서의 동작 방법 |
KR20220068777A (ko) * | 2020-11-19 | 2022-05-26 | 엘아이지넥스원 주식회사 | 복합 센서 이동형 레이더의 실시간 코어 사용량 측정 장치 및 방법 |
KR20230076494A (ko) * | 2021-11-24 | 2023-05-31 | 엘아이지넥스원 주식회사 | 복합 센서 이동형 레이더의 실시간 연산 태스크 재할당 장치 및 방법 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9348602B1 (en) * | 2013-09-03 | 2016-05-24 | Amazon Technologies, Inc. | Resource allocation for staged execution pipelining |
JP6203691B2 (ja) * | 2014-08-29 | 2017-09-27 | ファナック株式会社 | 複数軸の軸制御処理を分散して実行可能な数値制御装置 |
US10386817B1 (en) * | 2015-09-11 | 2019-08-20 | Haas Automation, Inc. | Multi-core processing machine tool control system |
US10162684B2 (en) * | 2015-10-15 | 2018-12-25 | International Business Machines Corporation | CPU resource management in computer cluster |
US10372493B2 (en) | 2015-12-22 | 2019-08-06 | Intel Corporation | Thread and/or virtual machine scheduling for cores with diverse capabilities |
US10073718B2 (en) | 2016-01-15 | 2018-09-11 | Intel Corporation | Systems, methods and devices for determining work placement on processor cores |
KR102592330B1 (ko) | 2016-12-27 | 2023-10-20 | 삼성전자주식회사 | OpenCL 커널을 처리하는 방법과 이를 수행하는 컴퓨팅 장치 |
CN111628941A (zh) * | 2020-05-27 | 2020-09-04 | 广东浪潮大数据研究有限公司 | 一种网络流量的分类处理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008084009A (ja) * | 2006-09-27 | 2008-04-10 | Toshiba Corp | マルチプロセッサシステム |
US20080263324A1 (en) * | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US20090055627A1 (en) * | 2007-04-20 | 2009-02-26 | The Regents Of The University Of Colorado | Efficient Pipeline Parallelism Using Frame Shared Memory |
KR20090089327A (ko) * | 2006-11-10 | 2009-08-21 | 샌드브리지 테크놀로지스, 인코포레이티드 | 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289437B1 (en) * | 1997-08-27 | 2001-09-11 | International Business Machines Corporation | Data processing system and method for implementing an efficient out-of-order issue mechanism |
US6463522B1 (en) * | 1997-12-16 | 2002-10-08 | Intel Corporation | Memory system for ordering load and store instructions in a processor that performs multithread execution |
US6694425B1 (en) * | 2000-05-04 | 2004-02-17 | International Business Machines Corporation | Selective flush of shared and other pipeline stages in a multithread processor |
US7363467B2 (en) * | 2002-01-03 | 2008-04-22 | Intel Corporation | Dependence-chain processing using trace descriptors having dependency descriptors |
US7996839B2 (en) * | 2003-07-16 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Heterogeneous processor core systems for improved throughput |
US7328330B2 (en) * | 2005-08-16 | 2008-02-05 | International Business Machines Corporation | Queue design supporting dependency checking and issue for SIMD instructions within a general purpose processor |
KR101286700B1 (ko) * | 2006-11-06 | 2013-07-16 | 삼성전자주식회사 | 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법 |
US8429663B2 (en) * | 2007-03-02 | 2013-04-23 | Nec Corporation | Allocating task groups to processor cores based on number of task allocated per core, tolerable execution time, distance between cores, core coordinates, performance and disposition pattern |
US7669036B2 (en) * | 2007-06-14 | 2010-02-23 | Qualcomm Incorporated | Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication |
US20090077561A1 (en) * | 2007-07-05 | 2009-03-19 | International Business Machines Corporation | Pipeline Processing Method and Apparatus in a Multi-processor Environment |
KR20090005921A (ko) * | 2007-07-10 | 2009-01-14 | 삼성전자주식회사 | 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치 |
JP5209933B2 (ja) * | 2007-10-19 | 2013-06-12 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US8675739B2 (en) * | 2007-12-17 | 2014-03-18 | Samsung Electronics Co., Ltd. | Method and apparatus for video decoding based on a multi-core processor |
US8037350B1 (en) * | 2008-04-30 | 2011-10-11 | Hewlett-Packard Development Company, L.P. | Altering a degree of redundancy used during execution of an application |
US20090288092A1 (en) * | 2008-05-15 | 2009-11-19 | Hiroaki Yamaoka | Systems and Methods for Improving the Reliability of a Multi-Core Processor |
US8122269B2 (en) * | 2009-01-07 | 2012-02-21 | International Business Machines Corporation | Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores |
-
2009
- 2009-12-28 KR KR1020090131712A patent/KR101640848B1/ko active IP Right Grant
-
2010
- 2010-07-26 US US12/843,320 patent/US20110161965A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080263324A1 (en) * | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
JP2008084009A (ja) * | 2006-09-27 | 2008-04-10 | Toshiba Corp | マルチプロセッサシステム |
KR20090089327A (ko) * | 2006-11-10 | 2009-08-21 | 샌드브리지 테크놀로지스, 인코포레이티드 | 파이프라인 컴퓨터 처리의 병렬화를 위한 방법 및 시스템 |
US20090055627A1 (en) * | 2007-04-20 | 2009-02-26 | The Regents Of The University Of Colorado | Efficient Pipeline Parallelism Using Frame Shared Memory |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101284195B1 (ko) * | 2012-01-09 | 2013-07-10 | 서울대학교산학협력단 | 개방형 범용 병렬 컴퓨팅 프레임워크 동적 작업 분배 장치 |
WO2016093521A1 (ko) * | 2014-12-12 | 2016-06-16 | 삼성전자 주식회사 | 연산 프로세서 및 연산 프로세서의 동작 방법 |
US11062425B2 (en) | 2014-12-12 | 2021-07-13 | Samsung Electronics Co., Ltd. | Arithmetic processor and method for operating arithmetic processor |
KR20220068777A (ko) * | 2020-11-19 | 2022-05-26 | 엘아이지넥스원 주식회사 | 복합 센서 이동형 레이더의 실시간 코어 사용량 측정 장치 및 방법 |
KR20230076494A (ko) * | 2021-11-24 | 2023-05-31 | 엘아이지넥스원 주식회사 | 복합 센서 이동형 레이더의 실시간 연산 태스크 재할당 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR101640848B1 (ko) | 2016-07-29 |
US20110161965A1 (en) | 2011-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101640848B1 (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
US11550627B2 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
KR101651871B1 (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
JP5245722B2 (ja) | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
KR101694310B1 (ko) | 멀티코어 프로세서 기반의 모니터링 장치 및 그 방법 | |
US8127300B2 (en) | Hardware based dynamic load balancing of message passing interface tasks | |
KR101332840B1 (ko) | 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법 | |
KR101626378B1 (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
US20120266180A1 (en) | Performing Setup Operations for Receiving Different Amounts of Data While Processors are Performing Message Passing Interface Tasks | |
US20090063885A1 (en) | System and Computer Program Product for Modifying an Operation of One or More Processors Executing Message Passing Interface Tasks | |
JP2009528610A (ja) | タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置 | |
US9471387B2 (en) | Scheduling in job execution | |
JP5718378B2 (ja) | 一又は複数のタスクを実行するために使用するシステム及び方法 | |
US9507633B2 (en) | Scheduling method and system | |
JP6252140B2 (ja) | タスク割り付けプログラム及びタスク割り付け方法 | |
JP2021522593A (ja) | Gpuについてのフィードバックガイド付き分割ワークグループのディスパッチ | |
US10203988B2 (en) | Adaptive parallelism of task execution on machines with accelerators | |
US11875425B2 (en) | Implementing heterogeneous wavefronts on a graphics processing unit (GPU) | |
KR20120083000A (ko) | 병렬 제어 모듈을 동적으로 할당하는 방법 | |
Hoffmann et al. | Dynamic task scheduling and load balancing on cell processors | |
CN103197917A (zh) | 计算线程阵列粒度执行抢占 | |
CN116414541B (zh) | 兼容多种任务工作模式的任务执行方法和装置 | |
CN114930292A (zh) | 协作式工作窃取调度器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |