KR101572879B1 - 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 - Google Patents
병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 Download PDFInfo
- Publication number
- KR101572879B1 KR101572879B1 KR1020090037726A KR20090037726A KR101572879B1 KR 101572879 B1 KR101572879 B1 KR 101572879B1 KR 1020090037726 A KR1020090037726 A KR 1020090037726A KR 20090037726 A KR20090037726 A KR 20090037726A KR 101572879 B1 KR101572879 B1 KR 101572879B1
- Authority
- KR
- South Korea
- Prior art keywords
- schedules
- data
- parallel
- block
- dynamically
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000008859 change Effects 0.000 claims description 25
- 241000932075 Priacanthus hamrur Species 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 11
- 238000005259 measurement Methods 0.000 claims description 6
- 238000003860 storage Methods 0.000 claims description 6
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims 2
- 238000013077 scoring method Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 44
- 238000010586 diagram Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 6
- 239000006185 dispersion Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000001351 cycling effect Effects 0.000 description 3
- 238000005315 distribution function Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 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]
-
- 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
-
- 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
-
- 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
-
- 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
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Abstract
병렬응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법을 제안한다.
병렬 응용 프로그램에 따라 가용 가능한 스래드(thread) 수를 확인하고, 가용 가능한 스래드의 수에 따라 동적으로 병렬처리 하는 멀티코어를 가지는 시스템 및 방법은 실행시간에 동적으로 데이터의 병렬처리를 할 수 있다.
또한 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법은 병렬 응용 프로그램에서 처리할 데이터 블록을 데이터의 특성을 고려하여 분할하고 분할 블록에 스래드를 동적으로 사상(mapping)하여 데이터의 특성에 따른 시스템의 성능 향상을 고려할 수 있다.
멀티 코어, 병렬처리, 병렬 응용 프로그램
Description
하기에서 설명하는 것은, 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법에 관한 것이며, 특히 제안되는 실시예는 병렬 응용 프로그램에 따라 처리할 데이터 블록을 동적으로 분할하고, 분할 블록들에 스래드(thread)들을 동적으로 할당하여 동적으로 병렬처리 하는 멀티코어를 가지는 시스템 및 방법에 관련된 것이다.
최근에는, 실리콘 효율을 최대화시키기 위해서 다수의 코어를 함유하는 프로세서들을 제조하는 추세이다. 즉 프로세서의 밀도는 증가하고, 이에 따라 다수의 코어 즉 멀티 코어를 제어하는 병렬 처리 방법이 대두 되었다.
병렬 처리는 클러스터 슈퍼 컴퓨터뿐 아니라 멀티 코드 기술의 보급으로 일반 PC에도 널리 사용된다.
현재 수개에서 수십개의 코어를 가진 멀티 코어 칩이 생산되고 있으나, 곧 하나의 칩이 수백 또는 더 많은 코어를 가진 멀티 코어 칩이 생산될 것이다.
이러한 멀티 코어 칩을 가지는 병렬처리 시스템은 자원의 수가 증가 함에 따라 여러 응용 프로그램은 증가한 자원들을 공유할 것이다. 이 경우 유휴 자원들의 수에 따라 응용 프로그램들의 자원요구는 변경되야 할 것이다.
하지만 종래의 병렬처리 시스템은 유휴 자원들의 수가 변경되어도 동적으로 유휴자원을 활용하지 못하고 있다
이것은 병렬처리 시스템에서 동작하는 병렬 응용 프로그램이 동적 상황에서 유휴자원인 가용 가능한 스래드의 수를 고려하지 않고, 병렬 응용 프로그램을 생성할 당시에 결정한 스래드의 수만을 자원으로 사용하기 때문이다. 따라서, 병렬 응용 프로그램에서 사용하고자 하는 자원의 수를 보다 많이 사용하고자 하면 원시 코드(source code)를 변경하여 재 컴파일 해야 한다.
제안되는 실시예에 따른 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템은, 병렬 응용 프로그램의 구동 중에 생성되는 스래드들 각각의 고유 기능을 수행하는 멀티코어 제어부; 블록함수를 이용하여 상기 병렬 응용 프로그램이 처리할 데이터 영역에 따라 대응하는 크기의 데이터 블록을 생성하는 블록 생성부; 상기 멀티코어 제어부를 모니터링하여 가용 가능한 스래드의 수를 확인하는 모니터링부; 및 맵함수를 이용하여 상기 데이터 블록을 분할하고 스래드 할당방법을 결정하는 사상부를 포함한다.
이때, 상기 사상부는, 상기 데이터 블록에 저장된 데이터의 특징과 상기 가용 가능한 스래드의 수를 고려하여 상기 데이터 블록의 분할 형태와 상기 스래드 할당방법을 결정한다.
이때, 상기 스래드 할당방법에 따라 분산함수를 통해 동일한 작업을 수행하는 스래드들을 생성하고, 상기 생성한 스래드들을 각 분할 블록들로 할당하는 분산부; 및 결합함수를 통해 분산한 상기 스래드들을 결합하는 결합부를 더 포함한다.
이때, 상기 스래드들의 요청에 따라 뷰함수를 이용하여 대응하는 분할 블록으로부터 데이터를 읽어서 상기 스래드로 제공하거나 상기 스래드들의 결과를 상기 대응하는 분할 블록에 저장하는 뷰처리부를 더 포함한다.
제안되는 실시예에 따른 시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법은, 블록함수를 이용하여 병렬 응용 프로그램이 처리할 데이터 영역에 대응하는 크기의 데이터 블록을 생성하는 단계; 가용 가능한 스래드의 수를 확인하는 단계; 맵함수를 이용하여 상기 데이터 블록을 분할하고 스래드 할당방법을 결정하는 단계; 및 상기 스래드 할당방법에 따라 스래드들을 생성하고, 생성된 스래드들을 분할 블록에 할당하여 동적 병렬처리 하는 단계를 포함한다.
이때, 상기 데이터 블록을 분할하고 상기 스래드 할당방법을 결정하는 단계는, 상기 데이터 블록에 저장된 데이터의 특징과 상기 가용 가능한 스래드의 수를 고려하여 상기 블록의 분할 형태와 상기 스래드 할당방법을 결정한다.
이때, 상기 동적 병렬처리 하는 단계는, 상기 스래드 할당방법에 따라 분산함수를 통해 동일한 작업을 수행하는 스래드들을 생성하고, 상기 생성한 스래드들을 각 분할 블록들로 할당하는 단계; 상기 스래드들의 요청에 따라 뷰함수를 이용하여 대응하는 분할 블록으로부터 데이터를 읽어서 상기 스래드들로 제공하는 단계; 상기 스래드들 각각의 고유 기능을 수행하는 단계; 상기 스래드들의 결과를 상기 뷰함수를 이용하여 상기 대응하는 분할 블록에 저장하는 단계; 및 결합함수를 통해 분산한 상기 스래드들을 결합하는 단계를 포함한다.
제안되는 실시예는 병렬 응용 프로그램에 따라 처리할 데이터 블록을 동적으로 분할하고, 분할 블록들에 스래드(thread)들을 동적으로 할당하여 동적으로 병렬처리 하는 멀티코어를 가지는 시스템 및 방법에 관한 것으로, 가용 가능한 스래드의 수를 측정하고 측정한 가용 가능한 스래드 수에 따라 병렬로 처리하는 동적 데이터의 병렬처리가 가능하고, 데이터 블록을 분할 할 때와 스래드를 동적으로 할당할 때 데이터의 특성과 가용 가능한 스래드의 수를 고려하여 성능이 높은 방법으로 데이터 블록을 분할하고 스래드를 할당하여 시스템의 성능 향상이 가능하다.
이하, 제안되는 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
제안되는 실시예는 병렬 응용 프로그램에 따라 처리할 데이터 블록을 동적으로 분할하고, 분할 블록들에 스래드(thread)들을 동적으로 할당하여 동적으로 병렬처리 하는 멀티코어를 가지는 시스템 및 방법에 관련된 것이다.
도 1은 제안되는 실시예에 따른 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템의 구성을 도시한 도면이다.
도 1을 참조하면 시스템은 멀티 코어 제어부(110), 블록 생성부(111), 모니터링부(112), 성능 측정부(113), 사상부(114), 분산부(115), 뷰 처리부(116), 결합부(117), 변경부(118), 불휘발성 메모리(120) 및, 데이터 메모리(130)를 포함한다.
불휘발성 메모리(120)는 시스템 파라미터(system parameter) 및 저장용 데이터를 저장한다. 또한, 불휘발성 메모리(120)는 병렬 응용 프로그램을 저장할 수 있고, 더불어 병렬 응용 프로그램에서 처리할 입력데이터를 저장할 수 있다.
데이터 메모리(130)는 병렬 응용 프로그램에서 처리할 데이터 블록을 일시 저장하는 기능을 수행한다. 데이터 메모리(130)는 램(Random Access Memory)을 사용할 수 있다.
멀티 코어 제어부(110)는 2개 이상의 코어를 가지는 제어부로서 병렬 응용 프로그램을 구동하고, 병렬 응용 프로그램에 따라 생성되는 스래드들 각각의 고유 기능을 수행한다. 이때 스래드는 멀티 코어의 가용범위 내에서 생성된다.
블록 생성부(111)는 병렬 응용 프로그램이 처리할 데이터 영역 확인하고 처리할 데이터 영역에 대응하는 크기의 데이터 블록을 블록함수를 이용하여 생성하고 데이터 메모리(130)에 저장한다.
모니터링부(112)는 멀티 코어 제어부(110)를 모니터링하여 가용 가능한 스래드의 수를 계산한다. 여기서, 가용 가능한 스래드의 수는 현재 유휴 상태에 있는 코어의 수에 따라 동시에 수행처리 가능한 스래드의 총 수를 의미한다.
성능 측정부(113)는 병렬 응용 프로그램의 성능을 측정 또는 예측한다.
사상부(114)는 병렬 응용 프로그램의 진행순서에 따라 사상을 요청받으면 맵함수를 이용하여 블록 생성부(111)에서 생성한 데이터 블록을 분할하고, 스래드 할당방법을 결정한다. 이때, 데이터 블록의 분할은 프로그래머의 입력에 따라 분할하거나 가용 가능한 스래드의 수와 데이터 블록에 저장된 데이터 특징을 고려하여 데이터 블록을 분할할 수 있다.
사상부(114)는 가용 가능한 스래드의 수와 데이터 블록에 저장된 데이터 특징을 고려하기 위해 성능 측정부(113)를 통해 데이터 블록의 분할과 스래드 할당 방법에 따른 병렬 응용 프로그램의 성능을 측정 또는 예측한 결과 성능이 가장 우수한 데이터 블록의 분할과 스래드 할당방법을 사용한다.
도 2는 제안되는 실시예에 따른 시스템에서 스래드의 할당 방법의 예를 도 시한 도면이다.
도 2를 참조하면 도 2는 {1, 2}의 2개의 스래드를 할당하는 방법이다. 먼저, 도 2에서 (a)는 스래드의 할당 방법 중 하나인 블록 할당방법이다. 블록 할당방법은 데이터 블록을 대략 같은 크기의 분할 블록으로 분배하고 인접한 분할 블록에 동일한 스래드를 할당하는 방법이다. 블록 할당방법은 데이터의 특징이 인접한 분할 블록 간의 데이터 비교적 연관이 높은 경우에 적합한 할당방법이다.
도 2에서 (b)는 스래드의 할당 방법 중 하나인 사이클링 방법이다. 사이클링 방법은 분할 블록에 스래드를 라운드 로빈(round-robin)방식에 따라 차례대로 번갈아서 할당하는 방법이다. 사이클링 방법은 데이터의 특징이 인접한 분할 블록 간의 데이터 연관이 비교적 낮은 경우에 적합한 할당방법이다.
스래드 할당방법은 도 2에서 소개하는 두 가지 방법만으로 한정지어 지지 않으며 이 외에도 여러 스래드 할당방법들이 가능하다.
이와 같이 사상부(114)에서 가용 가능한 스래드의 수와 데이터의 특징을 고려하여 데이터 블록을 분할하는 이유는 가용 가능한 스래드의 수와 데이터의 특징은 분할 수와 분할 형태에 따라 최종 결과인 병렬 응용 프로그램의 성능의 차이가 크게 나기 때문이다. 또한, 병렬 응용 프로그램의 성능의 차이는 스래드 할당 방법에 따라서도 달라질 수 있다.
분산부(115)는 병렬 응용 프로그램의 진행순서에 따라 분산을 요청받으면 분산함수를 통해 동일한 작업을 수행하는 스래드들을 생성하고, 사상부(114)에서 결정한 스래드 할당방법에 따라 생성한 스래드를 각 분할 블록들로 할당한다.
뷰 처리부(116)는 뷰함수를 통해 스래드들 각각에 할당받은 분할 블록의 데이터를 읽어서 제공한다. 또한 뷰함수를 통해 스래드들 각각으로부터 작업결과를 수신하고 스래드들 각각이 할당받은 대응하는 분할 블록에 작업결과를 저장한다.
즉, 뷰 처리부(116)는 스래드의 요청에 따라 뷰함수를 스래드로 제공하여 뷰함수를 통해 스래드 각각이 할당받은 분할 블록에 접근하여 데이터를 읽고 쓸수 있도록 한다.
결합부(117)는 병렬 응용 프로그램의 진행순서에 따라 결합을 요청받으면 결합함수를 통해 분산한 스래드들을 하나의 스래드로 결합한다.
변경부(118)는 프로그램머의 요청을 받거나 상기 모니터링부(112)를 통해 가용 가능한 스래드의 수의 변화에 따른 변경 이벤트의 발생을 감지하면 변경함수를 이용하여 분산함수 또는 결함함수와 같인 스래드의 수를 늘리거나 줄인다. 또한 변경부(118)는 병렬 응용 프로그램의 진행순서에 따라 변경을 요청받으면 변경함수를 이용하여 스래드의 수를 늘리거나 줄이는 변경을 수행할 수 있다.
한편, 멀티 코어 제어부(110)는 병렬 응용 프로그램과 스래드들의 제어뿐 아니라, 제안하는 실시예에 따른 블록 생성부(111), 모니터링부(112), 성능 측정부(113), 사상부(114), 분산부(115), 뷰 처리부(116), 결합부(117) 및 변경부(118)를 제어한다. 즉, 멀티 코어 제어부(110)는 블록 생성부(111), 모니터링부(112), 성능 측정부(113), 사상부(114), 분산부(115), 뷰 처리부(116), 결합부(117) 및 변경부(118)의 기능을 수행할 수 있다. 제안하는 실시예에서 이를 별도로 구성하여 도시한 것은 각 기능들을 구별하여 설명하기 위함이다. 따라서 실제로 제품을 구현하는 경우에 이들 모두를 멀티 코어 제어부(110)에서 처리하도록 구성할 수도 있으며, 이들 중 일부만을 멀티 코어 제어부(110)에서 처리하도록 구성할 수도 있다.
한편, 도 1의 시스템을 라이브러리(Library)화 하면 동적 병렬처리를 위한 라이브러리는 블록함수, 맵함수, 분산함수, 뷰함수, 결합함수 및 변경함수를 포함할 수 있다.
동적 변경처리 응용 프로그램이 동작할 때 시스템이 동적으로 변경하는 사항을 다음과 같이 살펴보고자 한다. 먼저, 첫째로 멀티 코어에서 가용 자원에 따라 스래드의 수를 동적으로 변경한다. 둘째로 가용 가능한 스래드의 수와 처리하는 데이터의 특징을 고려하여 데이터 블록의 분할 방법과 스래드 할당방법을 동적으로 변경한다.
시스템에서 동작하는 동적 변경처리 응용 프로그램은 블록함수, 맵함수, 분산함수, 뷰함수, 결합함수 및 변경함수의 여러 조합에 따라 여러 병렬처리 하는 형태를 가질 수 있다.
도 3은 제안되는 실시예에 따른 시스템의 병렬 응용 프로그램이 병렬처리 하는 형태의 예를 도시한 도면이다.
도 3에서 (a)는 기본 병렬처리 형태로 스래드가 가용 가능한 스래드만큼 분산되었다가 다시 하나로 결합되는 구조이다.
도 3에서 (b)는 케스케이드(cascade) 병렬처리 형태로 기본 병렬처리 형태 가 반복되는 구조이다.
도 3에서 (c)는 파이프라인(pipeline) 병렬처리 형태로 스래드가 가용 가능한 스래드만큼 분산된 후 동일한 수의 스래드로 유지되면서 스래드의 고유 기능을 수행하다가 마지막에 하나로 결합되는 구조이다.
도 3에서 (d)는 트리(tree) 병렬처리 형태로 스래드가 분산을 통해 점진적으로 그 수를 늘어나 다시 결합을 통해 점진적으로 하나의 스래드로 결합되는 구조이다.
도 3에서는 4개의 병렬처리 형태만을 묘사하였지만 블록함수, 맵함수, 분산함수, 뷰함수, 결합함수 및 변경함수의 조합에 따른 수많은 형태가 가능하다.
이하, 상기와 같이 구성된 시스템에서 병렬 응용 프로그램에 따라 병렬처리 하는 방법을 아래에서 도면을 참조하여 설명한다.
도 4는 제안되는 실시예에 따른 시스템에서 병렬 응용 프로그램에 따라 병렬처리 하는 과정을 도시한 흐름도이다.
도 4를 참조하면 도 4의 병렬 응용 프로그램은 기본 병렬처리 형태의 스래드 구조를 가지는 응용프로그램이다. 제안하는 실시예에 따른 병렬 응용 프로그램은 410단계에서 병렬 응용 프로그램이 처리할 데이터 영역 확인하고, 412단계로 진행하여 처리할 데이터 영역에 대응하는 크기의 데이터 블록을 생성한다.
414단계로 진행하여 가용 가능한 스래드 수를 확인하고, 416단계로 진행하여 스래드의 수와 데이터 블록에 저장된 데이터 특징을 고려하여 데이터 블록을 분 할하고, 418단계로 진행하여 스래드의 수와 데이터 블록에 저장된 데이터 특징을 고려하여 스래드 할당방법을 결정한다.
이후, 병렬 응용 프로그램은 420단계로 진행하여 분산을 통해 동일한 작업을 수행하는 스래드들을 생성하고 결정된 스래드 할당방법에 따라 각 분할 블록들로 스래드들을 할당한다.
그리고 병렬 응용 프로그램은 420단계로 진행하여 뷰함수를 통해 각각의 스래드에 대응하는 할당받은 분할 블록의 데이터 제공하고, 424단계로 진행하여 스래드들 각각의 고유기능을 수행하도록 하고, 426단계로 진행하여 뷰함수를 통해 각각의 스래드들의 작업결과를 할당받은 분할 블록에 저장하도록 한다.
그리고 병렬 응용 프로그램은 428단계로 진행하여 결합함수를 통해 분산한 스래드들을 하나의 스래드로 결합한다.
이후, 병렬 응용 프로그램은 430단계로 진행하여 병렬 응용 프로그램의 완료 여부를 확인한다.
430단계의 확인결과 병렬 응용 프로그램이 완료되었으면 본 알고리즘을 종료한다. 하지만 430단계의 확인결과 병렬 응용 프로그램이 완료되지 않았으면 병렬 응용 프로그램은 432단계로 진행하여 변경 이벤트의 발생을 감지한다. 이때, 변경 이벤트의 발생은 프로그램머의 요청에 의해서, 가용 가능한 스래드의 수의 변화에 의해서, 또는 병렬 응용 프로그램을 생성할 당시에 기설정된 진행순서에 따라 발생할 수 있다.
432단계의 감지결과 변경 이벤트의 발생이 감지되면. 병렬 응용 프로그램은 434단계로 진행하여 가용 가능한 스래드 수를 확인하고, 436단계로 진행하여 스래드의 수와 데이터 블록에 저장된 데이터 특징을 고려하여 데이터 블록의 분할을 변경한다. 그리고, 418단계로 돌아가 418단계로 돌아가 이후 432단계까지의 일련과정을 수행한다.
432단계의 감지결과 변경 이벤트의 발생이 감지되지 않으면. 병렬 응용 프로그램은 418단계로 돌아가 이후 432단계까지의 일련과정을 수행한다.
도 5는 제안되는 실시예에 따른 병렬 응용 프로그램화한 J2K 코덱에서 스래드들을 할당 예를 도시한 도면이다. 도 5를 참조하면 부호화하고자 하는 이미지는 2048*2048 픽셀 크기를 가진다. 이를 256*256 픽셀 크기로 분할하면 64개의 타일로 구성할 수 있다.
도 5에서 (a)는 J2K 코덱이 병렬로 부호화 하지 않는 경우를 도시한 것으로 한 개의 스래드가 64개의 타일(tile)을 부호화 해야 한다. 따라서 부호화시간 * 64의 시간이 필요하다.
도 5에서 (b)는 J2K 코덱이 제안하는 실시예에 따라 동적으로 병렬처리하는 경우를 도시한 것으로 가용 가능한 스래드들이 4개(A1, A2, A3, A4)일 때를 도시하였다. (b)는 4개의 스래드를 병렬로 처리함으로써 4배의 시간을 단축한다.
즉, 도 5의 (b)와 같이 제안하는 실시예에 따라 동적으로 병렬처리하는 경우 가용 가능한 스래드들을 최대한 사용하여 시스템의 성능을 최대한 높일 수 있다.
상기한 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 제안되는 실시예에 따른 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템의 구성을 도시한 도면,
도 2는 제안되는 실시예에 따른 시스템에서 스래드의 할당 방법의 예를 도시한 도면,
도 3은 제안되는 실시예에 따른 시스템의 병렬 응용 프로그램이 병렬처리 하는 형태의 예를 도시한 도면,
도 4는 제안되는 실시예에 따른 시스템에서 병렬 응용 프로그램에 따라 병렬처리 하는 과정을 도시한 흐름도 및,
도 5는 제안되는 실시예에 따른 병렬 응용 프로그램화한 J2K 코덱에서 스래드들을 할당 예를 도시한 도면이다.
Claims (15)
- 병렬 응용 프로그램의 구동 중에 생성되는 스래드들 각각의 고유 기능을 수행하는 멀티코어 제어부;블록함수를 이용하여 상기 병렬 응용 프로그램이 처리할 데이터 영역에 따라 대응하는 크기의 데이터 블록을 생성하는 블록 생성부;상기 멀티코어 제어부를 모니터링하여 가용 가능한 스래드의 수를 확인하는 모니터링부; 및맵함수를 이용하여 상기 데이터 블록을 분할하고 스래드 할당방법을 결정하는 사상부를 포함하고,상기 사상부는,상기 데이터 블록에 저장된 데이터의 특징과 상기 가용 가능한 스래드의 수를 고려하여 상기 데이터 블록의 분할 형태와 상기 스래드 할당방법을 결정하는병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 삭제
- 제1항에 있어서,상기 사상부에서 결정하는 상기 스래드 할당방법은,인접한 분할 블록에 동일한 스래드를 할당하는 블록 할당방법 또는 분할 블록에 스래드를 라운드 로빈(round-robin)방식에 따라 차례대로 번갈아서 할당하는 사이클링 방법중 어느 하나인병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 제1항에 있어서,상기 데이터 블록의 분할 형태와 상기 스래드 할당방법에 따른 상기 시스템의 성능을 측정 또는 예측하는 성능 측정부를 더 포함하고,상기 사상부는,상기 성능 측정부의 측정 또는 예측에 따라 성능이 가장 좋은 데이터 블록의 분할 형태와 상기 스래드 할당방법을 결정하는병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 제1항에 있어서,상기 스래드 할당방법에 따라 동일한 작업을 수행하는 스래드들을 생성하고, 상기 생성한 스래드들을 각 분할 블록들로 할당하는 분산부; 및결합함수를 통해 분산한 상기 스래드들을 결합하는 결합부를 더 포함하는병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 제5항에 있어서,상기 스래드들의 요청에 따라 뷰함수를 이용하여 대응하는 분할 블록으로부터 데이터를 읽어서 상기 스래드로 제공하거나 상기 스래드들의 결과를 상기 대응하는 분할 블록에 저장하는 뷰처리부를 더 포함하는병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 제5항에 있어서,상기 모니터링 부를 통해 상기 가용 가능한 스래드의 수의 변화를 감지하면,변경함수를 이용하여 상기 스래드들의 수를 늘리거나 줄이는 변경부를 더 포함하는병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 제7항에 있어서,상기 변경부는,상기 모니터링 부를 통해 상기 가용 가능한 스래드의 수의 변화를 감지하면,상기 사상부로 상기 데이터 블록의 분할과 상기 스래드 할당방법의 변경을 요청하는병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템.
- 블록함수를 이용하여 병렬 응용 프로그램이 처리할 데이터 영역에 대응하는 크기의 데이터 블록을 생성하는 단계;가용 가능한 스래드의 수를 확인하는 단계;맵함수를 이용하여 상기 데이터 블록을 분할하고 스래드 할당방법을 결정하는 단계; 및상기 스래드 할당방법에 따라 스래드들을 생성하고, 생성된 스래드들을 분할 블록에 할당하여 동적 병렬처리 하는 단계를 포함하고,상기 데이터 블록을 분할하고 상기 스래드 할당방법을 결정하는 단계는,상기 데이터 블록에 저장된 데이터의 특징과 상기 가용 가능한 스래드의 수를 고려하여 상기 데이터 블록의 분할 형태와 상기 스래드 할당방법을 결정하는시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법.
- 삭제
- 제9항에 있어서,상기 스래드 할당방법은,인접한 분할 블록에 동일한 스래드를 할당하는 블록 할당방법 또는 분할 블록에 스래드를 라운드 로빈(round-robin)방식에 따라 차례대로 번갈아서 할당하는 사이클링 방법 중 어느 하나인시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법.
- 제9항에 있어서,상기 데이터 블록을 분할하고 상기 스래드 할당방법을 결정하는 단계는,상기 데이터 블록의 분할 형태와 상기 스래드 할당방법에 따른 상기 시스템의 성능을 측정 또는 예측하는 단계; 및상기 측정 또는 상기 예측에 따라 상기 성능이 가장 좋은 상기 데이터 블록의 분할 형태와 상기 스래드 할당방법을 결정하는시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법.
- 제9항에 있어서,상기 동적 병렬처리 하는 단계는,상기 스래드 할당방법에 따라 분산함수를 통해 동일한 작업을 수행하는 스래드들을 생성하고, 상기 생성한 스래드들을 각 분할 블록들로 할당하는 단계;상기 스래드들의 요청에 따라 뷰함수를 이용하여 대응하는 분할 블록으로부터 데이터를 읽어서 상기 스래드들로 제공하는 단계;상기 스래드들 각각의 고유 기능을 수행하는 단계;상기 스래드들의 결과를 상기 뷰함수를 이용하여 상기 대응하는 분할 블록에 저장하는 단계; 및결합함수를 통해 분산한 상기 스래드들을 결합하는 단계를 포함하는시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법.
- 제13항에 있어서,상기 동적 병렬처리 하는 단계는,상기 가용 가능한 스래드의 수의 변화를 감지하면, 변경함수를 이용하여 상기 스래드들의 수를 늘리거나 줄이는 단계를 더 포함하는시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법.
- 제9항에 있어서,상기 동적 병렬처리 하는 단계는,상기 가용 가능한 스래드의 수의 변화를 감지하면, 상기 맵함수를 이용하여 상기 데이터 블록의 분할과 상기 스래드 할당방법의 변경하는 단계를 더 포함하는시스템에서 병렬 응용 프로그램을 동적으로 병렬처리 하는 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090037726A KR101572879B1 (ko) | 2009-04-29 | 2009-04-29 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US12/662,657 US8650384B2 (en) | 2009-04-29 | 2010-04-27 | Method and system for dynamically parallelizing application program |
US13/947,629 US9189277B2 (en) | 2009-04-29 | 2013-07-22 | Method and system for dynamically parallelizing application program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090037726A KR101572879B1 (ko) | 2009-04-29 | 2009-04-29 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100118826A KR20100118826A (ko) | 2010-11-08 |
KR101572879B1 true KR101572879B1 (ko) | 2015-12-01 |
Family
ID=43031396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090037726A KR101572879B1 (ko) | 2009-04-29 | 2009-04-29 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8650384B2 (ko) |
KR (1) | KR101572879B1 (ko) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101572879B1 (ko) | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
KR101671184B1 (ko) * | 2010-12-14 | 2016-11-01 | 삼성전자주식회사 | 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법 |
US8990830B2 (en) * | 2011-07-19 | 2015-03-24 | International Business Machines Corporation | Thread management in parallel processes |
US8949809B2 (en) * | 2012-03-01 | 2015-02-03 | International Business Machines Corporation | Automatic pipeline parallelization of sequential code |
US8910137B2 (en) | 2012-04-13 | 2014-12-09 | International Business Machines Corporation | Code profiling of executable library for pipeline parallelization |
KR101392584B1 (ko) * | 2012-06-07 | 2014-05-27 | 주식회사 엘지씨엔에스 | 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 |
KR101886333B1 (ko) * | 2012-06-15 | 2018-08-09 | 삼성전자 주식회사 | 멀티 코어를 이용한 영역 성장 장치 및 방법 |
EP2690554A3 (en) * | 2012-07-25 | 2014-04-16 | Telefonaktiebolaget L M Ericsson AB (Publ) | A method of operating a system for processing data and a system therefor |
GB2506595A (en) * | 2012-10-02 | 2014-04-09 | Ibm | Provisioning systems in parallel based on success rate |
KR102108839B1 (ko) | 2013-06-12 | 2020-05-29 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 사용자 장치 및 그것의 데이터 쓰기 방법 |
CN105808339B (zh) * | 2014-12-29 | 2019-05-17 | 华为技术有限公司 | 大数据并行计算方法及装置 |
US9749548B2 (en) | 2015-01-22 | 2017-08-29 | Google Inc. | Virtual linebuffers for image signal processors |
JP6443125B2 (ja) * | 2015-02-25 | 2018-12-26 | 富士通株式会社 | コンパイラプログラム、コンピュータプログラム及びコンパイラ装置 |
US9769356B2 (en) | 2015-04-23 | 2017-09-19 | Google Inc. | Two dimensional shift array for image processor |
US9772852B2 (en) | 2015-04-23 | 2017-09-26 | Google Inc. | Energy efficient processor core architecture for image processor |
US10291813B2 (en) | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
US9785423B2 (en) | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
US9965824B2 (en) | 2015-04-23 | 2018-05-08 | Google Llc | Architecture for high performance, power efficient, programmable image processing |
US10095479B2 (en) * | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US9756268B2 (en) | 2015-04-23 | 2017-09-05 | Google Inc. | Line buffer unit for image processor |
US9804666B2 (en) * | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
US9733993B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Application sharing using endpoint interface entities |
US10198252B2 (en) | 2015-07-02 | 2019-02-05 | Microsoft Technology Licensing, Llc | Transformation chain application splitting |
US9712472B2 (en) | 2015-07-02 | 2017-07-18 | Microsoft Technology Licensing, Llc | Application spawning responsive to communication |
US9860145B2 (en) | 2015-07-02 | 2018-01-02 | Microsoft Technology Licensing, Llc | Recording of inter-application data flow |
US10261985B2 (en) | 2015-07-02 | 2019-04-16 | Microsoft Technology Licensing, Llc | Output rendering in dynamic redefining application |
US9785484B2 (en) | 2015-07-02 | 2017-10-10 | Microsoft Technology Licensing, Llc | Distributed application interfacing across different hardware |
US9733915B2 (en) | 2015-07-02 | 2017-08-15 | Microsoft Technology Licensing, Llc | Building of compound application chain applications |
US9658836B2 (en) | 2015-07-02 | 2017-05-23 | Microsoft Technology Licensing, Llc | Automated generation of transformation chain compatible class |
US10031724B2 (en) | 2015-07-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Application operation responsive to object spatial status |
US10198405B2 (en) | 2015-07-08 | 2019-02-05 | Microsoft Technology Licensing, Llc | Rule-based layout of changing information |
US10277582B2 (en) | 2015-08-27 | 2019-04-30 | Microsoft Technology Licensing, Llc | Application service architecture |
US9830150B2 (en) | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US10313641B2 (en) | 2015-12-04 | 2019-06-04 | Google Llc | Shift register with reduced wiring complexity |
US10204396B2 (en) | 2016-02-26 | 2019-02-12 | Google Llc | Compiler managed memory for image processor |
US10387988B2 (en) * | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10380969B2 (en) | 2016-02-28 | 2019-08-13 | Google Llc | Macro I/O unit for image processor |
US20180007302A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US10546211B2 (en) | 2016-07-01 | 2020-01-28 | Google Llc | Convolutional neural network on programmable two dimensional image processor |
US20180005059A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Statistics Operations On Two Dimensional Image Processor |
US20180005346A1 (en) | 2016-07-01 | 2018-01-04 | Google Inc. | Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
US10565017B2 (en) * | 2016-09-23 | 2020-02-18 | Samsung Electronics Co., Ltd. | Multi-thread processor and controlling method thereof |
KR102365167B1 (ko) * | 2016-09-23 | 2022-02-21 | 삼성전자주식회사 | 멀티 쓰레드 프로세서 및 제어 방법 |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
CN108270813B (zh) * | 2016-12-30 | 2021-02-12 | 华为技术有限公司 | 一种异构多协议栈方法、装置及系统 |
CN109445854B (zh) * | 2018-10-31 | 2019-11-05 | 中科驭数(北京)科技有限公司 | 数据传输方法及装置 |
CN110069347B (zh) * | 2019-04-29 | 2022-10-25 | 河南科技大学 | 一种基于过程重要度的线程划分方法 |
US11113064B2 (en) * | 2019-11-27 | 2021-09-07 | Sas Institute Inc. | Automated concurrency and repetition with minimal syntax |
KR102467126B1 (ko) * | 2019-12-12 | 2022-11-14 | 미쓰비시덴키 가부시키가이샤 | 데이터 처리 실행 장치, 데이터 처리 실행 방법 및 기록 매체에 저장된 데이터 처리 실행 프로그램 |
CN111459679B (zh) * | 2020-04-03 | 2023-10-27 | 宁波大学 | 一种用于5g通信测试仪表测试数据的并行处理方法 |
KR102541934B1 (ko) * | 2020-11-20 | 2023-06-12 | 주식회사 피씨엔 | 빅데이터 증강분석 프로파일링 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020157086A1 (en) | 1999-02-04 | 2002-10-24 | Lewis Brad R. | Methods and systems for developing data flow programs |
US20030014473A1 (en) | 2001-07-12 | 2003-01-16 | Nec Corporation | Multi-thread executing method and parallel processing system |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5032986A (en) * | 1987-07-28 | 1991-07-16 | Texas Instruments Incorporated | Data processing device with parallel circular addressing hardware |
FI942190A (fi) * | 1994-05-11 | 1995-11-12 | Nokia Telecommunications Oy | Menetelmä ja järjestely suurinopeuksista datansiirtoa varten TDMA-radiotietoliikennejärjestelmässä |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5893159A (en) * | 1997-10-22 | 1999-04-06 | International Business Machines Corporation | Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system |
US6076157A (en) * | 1997-10-23 | 2000-06-13 | International Business Machines Corporation | Method and apparatus to force a thread switch in a multithreaded processor |
EP0964333A1 (en) * | 1998-06-10 | 1999-12-15 | Sun Microsystems, Inc. | Resource management |
US6334177B1 (en) * | 1998-12-18 | 2001-12-25 | International Business Machines Corporation | Method and system for supporting software partitions and dynamic reconfiguration within a non-uniform memory access system |
AU3829500A (en) * | 1999-04-09 | 2000-11-14 | Clearspeed Technology Limited | Parallel data processing apparatus |
US6542991B1 (en) * | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
JP3738624B2 (ja) * | 1999-10-26 | 2006-01-25 | 日本電気株式会社 | 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体 |
US6496925B1 (en) * | 1999-12-09 | 2002-12-17 | Intel Corporation | Method and apparatus for processing an event occurrence within a multithreaded processor |
US6889319B1 (en) * | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
US6898304B2 (en) * | 2000-12-01 | 2005-05-24 | Applied Materials, Inc. | Hardware configuration for parallel data processing without cross communication |
US7330717B2 (en) * | 2001-02-23 | 2008-02-12 | Lucent Technologies Inc. | Rule-based system and method for managing the provisioning of user applications on limited-resource and/or wireless devices |
US7155727B2 (en) * | 2001-06-19 | 2006-12-26 | Sun Microsystems, Inc. | Efficient data buffering in a multithreaded environment |
US6988186B2 (en) * | 2001-06-28 | 2006-01-17 | International Business Machines Corporation | Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry |
JP3702813B2 (ja) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
JP3632635B2 (ja) * | 2001-07-18 | 2005-03-23 | 日本電気株式会社 | マルチスレッド実行方法及び並列プロセッサシステム |
US7207043B2 (en) * | 2002-12-31 | 2007-04-17 | International Business Machines Corporation | Programmatic response-time based workload distribution techniques |
US7257633B2 (en) * | 2003-03-03 | 2007-08-14 | Sun Microsystems, Inc. | Dynamic allocation of a pool of threads |
GB0320386D0 (en) * | 2003-08-30 | 2003-10-01 | Ibm | A method, apparatus and computer program for executing a program |
US20050071841A1 (en) * | 2003-09-30 | 2005-03-31 | Hoflehner Gerolf F. | Methods and apparatuses for thread management of mult-threading |
US7363369B2 (en) * | 2003-10-16 | 2008-04-22 | International Business Machines Corporation | Monitoring thread usage to dynamically control a thread pool |
DE10353268B3 (de) * | 2003-11-14 | 2005-07-28 | Infineon Technologies Ag | Paralleler Multithread-Prozessor (PMT) mit geteilten Kontexten |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US8619310B2 (en) * | 2007-05-25 | 2013-12-31 | Kyocera Document Solutions, Inc. | Image forming apparatus |
US7756919B1 (en) * | 2004-06-18 | 2010-07-13 | Google Inc. | Large-scale data processing in a distributed and parallel processing enviornment |
US7437581B2 (en) * | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
US7574424B2 (en) * | 2004-10-13 | 2009-08-11 | Sybase, Inc. | Database system with methodology for parallel schedule generation in a query optimizer |
US20060123401A1 (en) * | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US8126870B2 (en) * | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US7627864B2 (en) * | 2005-06-27 | 2009-12-01 | Intel Corporation | Mechanism to optimize speculative parallel threading |
US20070033592A1 (en) * | 2005-08-04 | 2007-02-08 | International Business Machines Corporation | Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors |
US7447873B1 (en) * | 2005-11-29 | 2008-11-04 | Nvidia Corporation | Multithreaded SIMD parallel processor with loading of groups of threads |
KR100806274B1 (ko) | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
US7584342B1 (en) * | 2005-12-15 | 2009-09-01 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and SIMD instruction issue |
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
US20070157212A1 (en) * | 2006-01-04 | 2007-07-05 | Berg Douglas C | Context key routing for parallel processing in an application serving environment |
GB0605349D0 (en) * | 2006-03-17 | 2006-04-26 | Imec Inter Uni Micro Electr | Reconfigurable multi-processing coarse-grain array |
WO2007109894A1 (en) * | 2006-03-28 | 2007-10-04 | Radisys Canada, Inc. | Multimedia processing in parallel multi-core computation architectures |
WO2007128168A1 (en) | 2006-05-10 | 2007-11-15 | Intel Corporation | Thread scheduling on multiprocessor systems |
KR100837400B1 (ko) * | 2006-07-20 | 2008-06-12 | 삼성전자주식회사 | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 |
US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US8321849B2 (en) * | 2007-01-26 | 2012-11-27 | Nvidia Corporation | Virtual architecture and instruction set for parallel thread computing |
US8255889B2 (en) * | 2007-02-14 | 2012-08-28 | The Mathworks, Inc. | Method of using parallel processing constructs and dynamically allocating program portions |
US8209701B1 (en) * | 2007-09-27 | 2012-06-26 | Emc Corporation | Task management using multiple processing threads |
US8266337B2 (en) * | 2007-12-06 | 2012-09-11 | International Business Machines Corporation | Dynamic logical data channel assignment using channel bitmap |
WO2009076654A1 (en) * | 2007-12-12 | 2009-06-18 | University Of Washington | Deterministic multiprocessing |
US8544006B2 (en) * | 2007-12-19 | 2013-09-24 | International Business Machines Corporation | Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict |
US8495636B2 (en) * | 2007-12-19 | 2013-07-23 | International Business Machines Corporation | Parallelizing single threaded programs by performing look ahead operation on the single threaded program to identify plurality of instruction threads prior to execution |
US8223779B2 (en) * | 2008-02-07 | 2012-07-17 | Ciena Corporation | Systems and methods for parallel multi-core control plane processing |
US8776077B2 (en) * | 2008-04-02 | 2014-07-08 | Oracle America, Inc. | Method for multithreading an application using partitioning to allocate work to threads |
US8612929B2 (en) * | 2008-12-10 | 2013-12-17 | Oracle America, Inc. | Compiler implementation of lock/unlock using hardware transactional memory |
US8528001B2 (en) * | 2008-12-15 | 2013-09-03 | Oracle America, Inc. | Controlling and dynamically varying automatic parallelization |
KR101572879B1 (ko) * | 2009-04-29 | 2015-12-01 | 삼성전자주식회사 | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 |
US8335911B2 (en) * | 2009-05-21 | 2012-12-18 | Oracle America, Inc. | Dynamic allocation of resources in a threaded, heterogeneous processor |
US8336056B1 (en) * | 2009-12-22 | 2012-12-18 | Gadir Omar M A | Multi-threaded system for data management |
-
2009
- 2009-04-29 KR KR1020090037726A patent/KR101572879B1/ko not_active IP Right Cessation
-
2010
- 2010-04-27 US US12/662,657 patent/US8650384B2/en not_active Expired - Fee Related
-
2013
- 2013-07-22 US US13/947,629 patent/US9189277B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020157086A1 (en) | 1999-02-04 | 2002-10-24 | Lewis Brad R. | Methods and systems for developing data flow programs |
US20030014473A1 (en) | 2001-07-12 | 2003-01-16 | Nec Corporation | Multi-thread executing method and parallel processing system |
Also Published As
Publication number | Publication date |
---|---|
US20100281489A1 (en) | 2010-11-04 |
KR20100118826A (ko) | 2010-11-08 |
US8650384B2 (en) | 2014-02-11 |
US9189277B2 (en) | 2015-11-17 |
US20130312003A1 (en) | 2013-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101572879B1 (ko) | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 | |
US11221877B2 (en) | Task parallel processing method, apparatus and system, storage medium and computer device | |
US8707314B2 (en) | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations | |
US8813073B2 (en) | Compiling apparatus and method of a multicore device | |
Kang et al. | Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks | |
TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
KR101239025B1 (ko) | 다수의 프로세서들에서 데이터 병렬 컴퓨팅을 하기 위한 응용 프로그래밍 인터페이스들 | |
Pérez et al. | Simplifying programming and load balancing of data parallel applications on heterogeneous systems | |
KR101626378B1 (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
US11907770B2 (en) | Method and apparatus for vectorized resource scheduling in distributed computing systems using tensors | |
KR20090018068A (ko) | 컴퓨팅 장치 및 컴퓨팅 장치 상에서 가상 머신을 구현하기 위한 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 판독 가능 매체 | |
KR20110019776A (ko) | 다수의 프로세서에 대한 다차원 스레드 그룹화 | |
JP2006244479A (ja) | 実行可能プログラムをスケジューリングするためのシステム及び方法 | |
US9471387B2 (en) | Scheduling in job execution | |
CN109388486A (zh) | 一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法 | |
KR20100074920A (ko) | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 | |
Cho et al. | On-the-fly workload partitioning for integrated CPU/GPU architectures | |
Cheng et al. | HASpGEMM: Heterogeneity-Aware Sparse General Matrix-Matrix Multiplication on Modern Asymmetric Multicore Processors | |
Kedad-Sidhoum et al. | Scheduling independent tasks on multi-cores with gpu accelerators | |
US20240061718A1 (en) | Method and system for managing hybrid spark cluster for efficient spark job execution | |
JP6156379B2 (ja) | スケジューリング装置、及び、スケジューリング方法 | |
JP7544142B2 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
KR20120086999A (ko) | 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 | |
Tousimojarad et al. | A parallel task-based approach to linear algebra | |
KR101952221B1 (ko) | 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |