KR102741614B1 - 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 - Google Patents
스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 Download PDFInfo
- Publication number
- KR102741614B1 KR102741614B1 KR1020220002525A KR20220002525A KR102741614B1 KR 102741614 B1 KR102741614 B1 KR 102741614B1 KR 1020220002525 A KR1020220002525 A KR 1020220002525A KR 20220002525 A KR20220002525 A KR 20220002525A KR 102741614 B1 KR102741614 B1 KR 102741614B1
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- threads
- groups
- group
- cores
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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
-
- 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
-
- 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/505—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 load
-
- 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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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/501—Performance criteria
-
- 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/5018—Thread allocation
-
- 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/5021—Priority
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)
- Multi Processors (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Advance Control (AREA)
Abstract
본 발명은 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하고, 스레드 당 연산량에 기초하여 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하며, 다수의 스레드 각각의 우선 순위와, 상기에서 결정된 개수에 기초하여 스레드 그룹 각각에 스레드를 할당하고, 액티브 코어 각각에 스레드 그룹을 할당하는, 스레드 할당 방법을 제공한다.
Description
본 발명은 스레드 할당 방법에 관한 것으로, 더욱 상세하게는, 컴퓨팅 장치에 포함된 다수의 코어들에 스레드를 할당하는 방법에 관한 것이다.
종래의 스레드 할당 기법은 코어들에 할당된 스레드들에 연산 자원이 불균형하게 할당되거나, 스레드 간의 하드웨어 자원이 충돌하기도 한다.
예를 들어, 종래에는 코어 개수가 스레드 개수의 약수가 아닌 경우에 일부 코어들에 다른 코어들보다 더 많은 수의 스레드들이 할당되어 코어의 성능이 심각하게 저하되기도 한다. 또한, 코어 개수가 많아질수록 스레드 간의 자원 불균형이 커지므로 더 큰 성능 저하가 발생하기도 한다.
더욱이, 이종 코어들의 경우에는 이종 코어들 간의 성능 차이가 고려되지 못한 채 스레드 할당이 수행되기도 하는 문제점이 존재한다.
본 발명이 해결하고자 하는 기술적 과제는 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어에 대응되도록 스레드 그룹을 생성하고, 생성된 스레드 그룹을 통해 스레드를 액티브 코어에 할당하는 스레드 할당 방법을 제공하는 것이다.
본 발명의 일측면은, 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 단계; 상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 단계; 상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 단계; 및 상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계;를 포함할 수 있다.
또한, 상기 스레드의 개수를 결정하는 단계는, 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 초기화하는 단계; 및 상기 스레드 당 연산량이 큰 순서대로 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 증가시키는 단계;를 포함할 수 있다.
또한, 상기 스레드의 개수를 증가시키는 단계는, 상기 다수의 스레드 그룹 각각에 상기 다수의 스레드가 모두 할당될 때까지 반복될 수 있다.
또한, 상기 적어도 하나의 스레드를 할당하는 단계는, 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수에 기초하여 상기 스레드 당 연산량을 산출하는 단계; 상기 스레드 당 연산량에 기초하여 상기 다수의 스레드 그룹을 정렬하는 단계; 및 상기 정렬된 순서에 따라 상기 다수의 스레드 그룹 각각에 상기 적어도 하나의 스레드를 할당하는 단계;를 포함할 수 있다.
또한, 상기 적어도 하나의 스레드를 할당하는 단계는, 상기 다수의 스레드 각각에 대해 미리 부여된 자원과 스레드 ID 중 적어도 하나에 기초하여 상기 다수의 스레드 각각에 대한 우선 순위를 설정하는 단계;를 포함할 수 있다.
또한, 상기 우선 순위는, 상기 미리 부여된 자원이 적을수록 높게 설정되고, 상기 스레드 ID의 값이 작을수록 높게 설정될 수 있다.
또한, 상기 다수의 스레드 그룹 각각을 할당하는 단계는, 미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하는 단계; 상기 선택된 스레드 그룹에 포함된 적어도 하나의 스레드 각각의 코어 할당 기록에 기초하여, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 산출하는 단계; 및 상기 산출된 이주 비용이 가장 작은 액티브 코어에 상기 선택된 스레드 그룹을 할당하는 단계;를 포함할 수 있다.
또한, 상기 이주 비용을 산출하는 단계는, 서로 다른 프로세서 간의 이주에 대한 제 1 비용과, 서로 다른 코어 간의 이주에 대한 제 2 비용에 기초하여 상기 이주 비용을 산출하되, 상기 제 2 비용보다 상기 제 1 비용에 더 큰 가중치를 부여할 수 있다.
또한, 상기 다수의 액티브 코어 각각에 상기 다수의 스레드 그룹 각각이 할당되도록 스케줄링 주기를 설정하는 단계;를 더 포함할 수 있다.
또한, 상기 스케줄링 주기를 설정하는 단계는, 상기 다수의 스레드에 대한 성능 데이터를 획득하는 단계; 및 상기 성능 데이터에 기초하여 상기 스케줄링 주기를 조절하는 단계;를 포함할 수 있다.
본 발명의 다른 일측면은, 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 생성부; 상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 설정부; 상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 스레드 할당부; 및 상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 그룹 할당부;를 포함할 수 있다.
또한, 상기 설정부는, 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 초기화하고, 상기 스레드 당 연산량이 큰 순서대로 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 증가시킬 수 있다.
또한, 상기 스레드 할당부는, 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수에 기초하여 상기 스레드 당 연산량을 산출하고, 상기 스레드 당 연산량에 기초하여 상기 다수의 스레드 그룹을 정렬하며, 상기 정렬된 순서에 따라 상기 다수의 스레드 그룹 각각에 상기 적어도 하나의 스레드를 할당할 수 있다.
또한, 상기 스레드 그룹 할당부는, 미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하고, 상기 선택된 스레드 그룹에 포함된 적어도 하나의 스레드 각각의 코어 할당 기록에 기초하여, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 산출하며, 상기 산출된 이주 비용이 가장 작은 액티브 코어에 상기 선택된 스레드 그룹을 할당할 수 있다.
또한, 상기 다수의 액티브 코어 각각에 상기 다수의 스레드 그룹 각각이 할당되도록 스케줄링 주기를 설정하는 스케줄링부;를 더 포함할 수 있다.
본 발명의 또 다른 일측면은, 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서, 상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면, 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 단계; 상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 단계; 상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 단계; 및 상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계;를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함할 수 있다.
본 발명의 다른 일측면은, 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면, 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 단계; 상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 단계; 상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 단계; 및 상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계;를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함할 수 있다.
상술한 본 발명의 일측면에 따르면, 스레드 할당 방법을 제공함으로써 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어에 대응되도록 스레드 그룹을 생성하고, 생성된 스레드 그룹을 통해 스레드를 액티브 코어에 할당할 수 있다.
도 1은 본 발명의 일 실시예에 따른 스레드 할당 장치의 블록도이다.
도 2는 도 1의 생성부에서 생성되는 스레드 그룹의 일 실시예를 나타낸 도면이다.
도 3 내지 도 6은 도 1의 설정부에서, 할당할 스레드의 개수를 결정하는 과정의 일 실시예를 나타낸 도면이다.
도 7 내지 도 8은 도 1의 스레드 할당부에서 스레드 그룹에 스레드를 할당하는 과정의 일 실시예를 나타낸 도면이다.
도 9는 도 1의 그룹 할당부에서 액티브 코어에 스레드 그룹을 할당하는 과정의 일 실시예를 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 스레드 할당 방법의 순서도이다.
도 2는 도 1의 생성부에서 생성되는 스레드 그룹의 일 실시예를 나타낸 도면이다.
도 3 내지 도 6은 도 1의 설정부에서, 할당할 스레드의 개수를 결정하는 과정의 일 실시예를 나타낸 도면이다.
도 7 내지 도 8은 도 1의 스레드 할당부에서 스레드 그룹에 스레드를 할당하는 과정의 일 실시예를 나타낸 도면이다.
도 9는 도 1의 그룹 할당부에서 액티브 코어에 스레드 그룹을 할당하는 과정의 일 실시예를 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 스레드 할당 방법의 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 스레드 할당 장치의 블록도이다.
도 1을 참조하면, 스레드 할당 장치(100)는 스레드 할당 모듈(110) 및 스케줄링부(130)를 포함할 수 있다.
이때, 스레드 할당 모듈(110)은 생성부(111), 설정부(113), 스레드 할당부(115) 및 그룹 할당부(117)를 포함할 수 있다.
생성부(111)는 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성할 수 있다.
여기에서, 컴퓨팅 장치는 CPU(Central Processing Unit), GPU(Graphic Processing Unit) 및 NPU(Network Processing Unit) 등의 프로세서를 하나 이상 포함하고, 각 프로세서는 다수의 코어를 포함할 수 있다.
이에 따라, 컴퓨팅 장치는 메모리에 저장된 응용 프로그램이 실행되면, 응용 프로그램에 대한 연산을 수행할 수 있도록 다수의 코어들 중에서, 다수의 액티브 코어에 상기의 응용 프로그램에 대한 스레드를 할당할 수 있다.
이러한 경우에, 액티브 코어 각각에는 적어도 하나의 스레드가 할당되어 응용 프로그램에 대한 연산을 수행할 수 있다.
설정부(113)는 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정할 수 있다.
여기에서, 스레드 당 연산량은 스레드 그룹에 할당할 적어도 하나의 스레드 각각에 대한 연산량일 수 있다. 이를 위해, 스레드 당 연산량은 스레드 그룹에 할당할 스레드의 개수에 기초하여 스레드 그룹의 연산용량으로부터 산출될 수 있다. 예를 들어, 스레드 당 연산량은 스레드 그룹의 연산용량을 스레드 그룹에 할당할 스레드의 개수로 나눈 값일 수 있다.
이때, 연산용량은 액티브 코어의 연산용량에 대응되도록 설정될 수 있다. 일 실시예에서, 연산용량은 액티브 코어의 타입에 기초하여 설정될 수 있다.
이에 따라, 설정부(113)는 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 초기화할 수 있다.
이에 따라, 설정부(113)는 스레드 당 연산량이 큰 순서대로 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 증가시킬 수 있다.
이와 관련하여, 설정부(113)는 다수의 스레드 그룹 각각에 다수의 스레드가 모두 할당될 때까지, 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 증가시키는 과정을 반복할 수 있다.
한편, 주기는 스케줄링 주기로서, 액티브 코어에 할당된 스레드 그룹이 응용 프로그램에 대한 연산을 수행하는 시간 간격일 수 있다. 이를 위해, 주기는 스케줄링부(130)에 의해 설정될 수 있다. 스케줄링부(130)가 스케줄링 주기를 설정하는 과정은 아래에서 상세히 설명하도록 한다.
스레드 할당부(115)는 다수의 스레드 각각의 우선 순위와, 상기에서 결정된 개수에 기초하여 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당할 수 있다.
이때, 상기에서 결정된 개수는 다수의 스레드 각각에 할당할 스레드의 개수일 수 있다. 또한, 우선 순위는 다수의 스레드 각각에 대해 미리 부여된 자원과 스레드 ID 중 적어도 하나에 기초하여 설정될 수 있다.
여기에서, 자원은 각 스레드에 부여되어 있는 연산량이고, 스레드 ID는 각 스레드마다 부여된 고유 번호일 수 있다. 이에 따라, 일 실시예에서, 우선 순위는 미리 부여된 자원이 적을수록 높게 설정되고, 스레드 ID의 값이 작을수록 높게 설정될 수 있다.
한편, 스레드 할당부(115)는 다수의 스레드 그룹 각각에 할당할 스레드의 개수에 기초하여 다수의 스레드 그룹 각각의 스레드 당 연산량을 산출할 수 있다.
여기에서, 스레드 당 연산량은 스레드 그룹에 할당할 것으로 예정된 적어도 하나의 스레드 각각에 대한 연산량일 수 있다. 이를 위해, 스레드 당 연산량은 스레드 그룹에 할당할 것으로 예정된 스레드의 개수에 기초하여 스레드 그룹의 연산용량으로부터 산출될 수 있다.
예를 들어, 스레드 당 연산량은 스레드 그룹의 연산용량을 스레드 그룹에 할당할 것으로 예정된 스레드의 개수로 나눈 값일 수 있다.
이에 따라, 스레드 할당부(115)는 스레드 당 연산량에 기초하여 다수의 스레드 그룹을 정렬하고, 정렬된 순서에 따라 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당할 수 있다.
이때, 스레드 할당부(115)는 스레드 당 연산량이 동일한 다수의 스레드 그룹에 대해, 스레드 그룹에 부여된 ID의 값이 작은 스레드 그룹을 먼저 정렬할 수 있다.
이에 따라, 스레드 할당부(115)는 정렬된 다수의 스레드 그룹에, 우선 순위에 따른 적어도 하나의 스레드를 할당할 수 있다. 이때, 스레드 할당부(115)는 설정부(113)에 의해 각 스레드 그룹에 결정된 개수만큼 스레드를 할당할 수 있다.
그룹 할당부(117)는 액티브 코어 각각에 다수의 스레드 그룹 각각을 할당할 수 있다.
이를 위해, 그룹 할당부(117)는 다수의 스레드 그룹 각각에 대한 스레드 당 연산량과, 이주 비용에 기초하여 액티브 코어에 스레드 그룹을 할당할 수 있다.
이때, 이주 비용은 각각의 스레드에 대한 코어 할당 기록에 기초하여 산출될 수 있다. 여기에서, 코어 할당 기록은 이전 스케줄링 주기에서 스레드가 할당된 코어를 기록한 것일 수 있다.
따라서, 이주 비용은 스레드가 이전 스케줄링 주기에서 할당된 제 1 코어와는 다른 제 2 코어에 할당되는 경우에 발생할 수 있다. 이때, 제 2 코어가 제 1 코어와 동일한 프로세서에 포함된 경우에는, 제 2 코어가 제 1 코어와는 다른 프로세서에 포함된 경우보다 작은 값의 이주 비용이 발생할 수 있다.
다시 말해서, 그룹 할당부(117)는 서로 다른 프로세서 간의 이주에 대한 제 1 비용과, 서로 다른 코어 간의 이주에 대한 제 2 비용에 기초하여 이주 비용을 산출할 수 있다. 이때, 그룹 할당부(117)는 제 2 비용보다 상기 제 1 비용에 더 큰 가중치를 부여하여 이주 비용을 산출할 수 있다.
일 실시예에서, 어느 하나의 액티브 코어에 대한 어느 하나의 스레드 그룹의 이주 비용은 상기의 스레드 그룹에 할당된 적어도 하나의 스레드 각각이 상기의 액티브 코어에 할당되는 경우에 발생하는 이주 비용의 총합일 수 있다.
이에 기초하여, 그룹 할당부(117)는 아래와 같은 일 실시예에 따라 다수의 액티브 코어 각각에 다수의 스레드 그룹 각각을 할당할 수 있다.
일 실시예에서, 그룹 할당부(117)는 액티브 코어에 미 할당된 적어도 하나의 스레드 그룹 중 스레드 당 연산량이 가장 큰 스레드 그룹을 선택할 수 있다.
이에 따라, 그룹 할당부(117)는 선택된 스레드 그룹에 포함된 적어도 하나의 스레드 각각의 코어 할당 기록에 기초하여, 미 할당된 액티브 코어 각각에 대한 상기에서 선택된 스레드 그룹의 이주 비용을 산출할 수 있다.
이때, 그룹 할당부(117)는 산출된 이주 비용이 가장 작은 액티브 코어에 상기에서 선택된 스레드 그룹을 할당할 수 있다.
이와 관련하여, 그룹 할당부(117)는 액티브 코어에 미 할당된 스레드 그룹이 존재하지 않을 때까지 스레드 그룹을 선택하고, 이주 비용을 산출하여 액티브 코어에 스레드 그룹을 할당하는 과정을 반복할 수 있다.
한편, 스케줄링부(130)는 액티브 코어 각각에 다수의 스레드 그룹 각각이 할당되도록 스케줄링 주기를 설정할 수 있다. 일 실시예에서, 스케줄링부(130)는 응용 프로그램이 실행되면 초기의 스케줄링 주기를 미리 설정된 최소 주기(예를 들어, 0.125 ms)로 설정할 수 있다.
이에 따라, 스케줄링부(130)는 다수의 스레드에 대한 성능 데이터를 획득하고, 획득된 성능 데이터에 기초하여 스케줄링 주기를 조절할 수 있다.
일 실시예에서, 스케줄링부(130)는 새로운 성능 데이터가 이전의 성능 데이터보다 높게 나타나는 경우에 스케줄링 주기를 2 배 늘릴 수 있다. 또한, 스케줄링부(130)는 새로운 성능 데이터가 이전의 성능 데이터보다 낮게 나타나는 경우에는 응용 프로그램이 종료될 때까지 스케줄링 주기를 이전 스케줄링 주기로 고정할 수 있다. 이러한 경우에, 스케줄링부(130)는 응용 프로그램에 대해 고정된 스케줄링 주기를 기록하고, 상기의 응용 프로그램이 재 실행되는 경우에 기록된 스케줄링 주기에 따라 스레드를 할당할 수 있다.
한편, 일 실시예에서, 스케줄링부(130)는 성능 모니터링 장치로부터 성능 데이터를 획득할 수 있다. 이를 위해, 성능 모니터링 장치는 컴퓨팅 장치에 의해 실행된 응용 프로그램에 대해 미리 설정된 주기마다 신호를 요청할 수 있다.
이에 따라, 성능 모니터링 장치는 일정한 주기에 따라 신호를 요청하여 컴퓨팅 장치로부터 수신된 신호 간의 간격에 기초하여 성능 데이터를 생성할 수 있다.
예를 들어, 성능 모니터링 장치는 수신된 신호 간의 간격이 짧아질수록 성능 데이터가 높은 성능을 나타내도록 생성하고, 간격이 길어질수록 성능 데이터가 낮은 성능을 나타내도록 생성할 수 있다.
일 실시예에서, 성능 모니터링 장치는 일정한 주기에 따라 컴퓨팅 장치로부터 하트비트(Heartbeats) 신호를 수신할 수 있다.
여기에서, 하트비트 신호는 임의의 장치가 특정 네트워크와의 연결이 유지되도록 송신하는 신호일 수 있다. 이때, 하트비트 신호를 생성하는 것은 종래에 공지된 기술이 이용될 수 있다.
이에 따라, 성능 모니터링 장치는 하트비트 신호 간의 간격이 짧아질수록 성능 데이터가 높은 성능을 나타내도록 생성하고, 간격이 길어질수록 성능 데이터가 낮은 성능을 나타내도록 생성할 수 있다.
도 2는 도 1의 생성부에서 생성되는 스레드 그룹의 일 실시예를 나타낸 도면이다.
도 2를 참조하면, 프로세서에 포함된 다수의 코어들(210, 230)과, 생성부(111)에 의해 생성된 다수의 스레드 그룹(310)을 확인할 수 있다.
이와 같이, 스레드 그룹(310)은 다수의 액티브 코어(210)에 대응되도록 다수개가 생성될 수 있다. 이때, 스레드 그룹(310)은 액티브 코어(210)의 개수와 동일한 개수로 생성될 수 있다. 또한, 스레드 그룹(310)은 액티브 코어(210)의 타입과 동일한 타입으로 생성될 수 있다.
일 실시예에서, 생성부(111)는 고성능 액티브 코어(211, H) 3개와 저성능 액티브 코어(213, L) 2개가 액티브 코어(210)로서 설정되면, 고성능 스레드 그룹(311, TG1 내지 TG3) 3개와 저성능 스레드 그룹(313, TG4 내지 TG5) 2개를 생성할 수 있다.
도 3 내지 도 6은 도 1의 설정부에서, 할당할 스레드의 개수를 결정하는 과정의 일 실시예를 나타낸 도면이다.
도 3을 참조하면, 다수의 스레드 그룹(310) 각각의 연산용량(Computation capacity), 다수의 스레드 그룹(310) 각각에 대해 할당할 것으로 예측된 스레드 개수(Thread count) 및 스레드 당 연산량(Per-thread computation capacity)을 확인할 수 있다.
이때, 고성능 스레드 그룹(311, TG1 내지 TG3)은 연산용량이 각각 C로 설정되고, 저성능 스레드 그룹(313, TG4 내지 TG5)은 연산용량이 각각 0.8C로 설정될 수 있다.
이와 관련하여, 다수의 스레드 그룹(310) 각각이 생성된 직후에, 다수의 스레드 그룹(310) 각각에 할당할 것으로 예상되는 스레드의 개수가 1로 초기화된 것을 확인할 수 있다.
이에 따라, 설정부(113)는 스레드 당 연산량이 큰 순서에 따라, 제 1 고성능 스레드 그룹(311, TG1)에 할당할 스레드의 개수를 증가시킬 수 있다.
도 4를 참조하면, 제 1 고성능 스레드 그룹(311, TG1)에 할당할 스레드의 개수가 증가된 것을 확인할 수 있다.
이에 따라, 제 1 고성능 스레드 그룹(311, TG1)에 대한 스레드 당 연산량은 0.5C로 예측될 수 있다.
다음으로, 설정부(113)는 스레드 당 연산량이 큰 순서에 따라, 제 2 고성능 스레드 그룹(311, TG2)에 할당할 스레드의 개수를 증가시킬 수 있다.
도 5를 참조하면, 제 2 고성능 스레드 그룹(311, TG2)에 할당할 스레드의 개수가 증가된 것을 확인할 수 있다.
이에 따라, 제 2 고성능 스레드 그룹(311, TG2)에 대한 스레드 당 연산량은 0.5C로 예측될 수 있다.
다음으로, 설정부(113)는 스레드 당 연산량이 큰 순서에 따라, 제 3 고성능 스레드 그룹(311, TG3)에 할당할 스레드의 개수를 증가시킬 수 있다.
도 6을 참조하면, 제 3 고성능 스레드 그룹(311, TG3)에 할당할 스레드의 개수가 증가된 것을 확인할 수 있다.
이에 따라, 제 3 고성능 스레드 그룹(311, TG3)에 대한 스레드 당 연산량은 0.5C로 예측될 수 있다.
이때, 설정부(113)는 현재 주기 내 실행할 다수의 스레드의 개수가 8개인 경우에, 현재 상태에서, 다수의 스레드 그룹(310) 각각에 할당할 스레드의 개수를 증가시키는 과정을 종료할 수 있다.
다시 말해서, 설정부(113)는 고성능 스레드 그룹(311, TG1 내지 TG3) 각각에 대해 할당할 스레드의 개수를 2개로 결정하고, 저성능 스레드 그룹(313, TG4 내지 TG5) 각각에 대해 할당할 스레드의 개수를 1개로 결정할 수 있다.
도 7 내지 도 8은 도 1의 스레드 할당부에서 스레드 그룹에 스레드를 할당하는 과정의 일 실시예를 나타낸 도면이다.
도 7을 참조하면, 정렬된 스레드 그룹(310)과 우선 순위에 기초하여 화살표 방향으로 나열된 다수의 스레드를 확인할 수 있다. 이때, 다수의 스레드는 물결 표시로 형상화되었다.
도 6을 더 참조하면, 고성능 스레드 그룹(311, TG1 내지 TG3) 각각에 대한 스레드 당 연산량 보다 큰 스레드 당 연산량이 산출된 저성능 스레드 그룹(313, TG4 내지 TG5) 각각이 먼저 정렬된 것을 확인할 수 있다.
또한, 스레드 당 연산량이 동일한 경우에는, 스레드 그룹의 ID의 값이 작은 스레드 그룹이 먼저 정렬된 것을 확인할 수 있다.
도 8을 참조하면, 정렬된 다수의 스레드 그룹에, 우선 순위에 따른 적어도 하나의 스레드가 할당된 것을 확인할 수 있다.
도 9는 도 1의 그룹 할당부에서 액티브 코어에 스레드 그룹을 할당하는 과정의 일 실시예를 나타낸 도면이다.
도 9를 참조하면, 다수의 액티브 코어(210) 각각에 다수의 스레드 그룹(310) 각각이 할당된 것을 확인할 수 있다.
이때, 다수의 스레드 그룹 각각에 대한 스레드 당 연산량과, 이주 비용에 기초하여 다수의 액티브 코어(210) 각각에 다수의 스레드 그룹(310) 각각이 할당된 것으로 이해할 수 있다.
도 10은 본 발명의 일 실시예에 따른 스레드 할당 방법의 순서도이다.
도 10을 참조하면, 생성부(111)는 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브 코어(210)의 개수에 기초하여 다수의 스레드 그룹(310)을 생성할 수 있다(S100).
이때, 설정부(113)는 다수의 스레드 그룹(310) 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 다수의 스레드 그룹(310) 각각에 할당할 스레드의 개수를 결정할 수 있다.
이에 따라, 스레드 할당부(115)는 다수의 스레드 각각의 우선 순위와, 상기에서 결정된 개수에 기초하여 다수의 스레드 그룹(310) 각각에 적어도 하나의 스레드를 할당할 수 있다(S300).
이를 통해, 그룹 할당부(117)는 액티브 코어(210) 각각에 다수의 스레드 그룹(310) 각각을 할당할 수 있다(S400).
본 문서의 다양한 실시예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 메모리(내장 메모리 또는 외장 메모리))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램)로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치(예: 장치)를 포함할 수 있다. 상기 명령이 프로세서(예: 프로세서)에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어 하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 스레드 할당 장치
200: 코어
210: 액티브 코어
211: 고성능 액티브 코어
213: 저성능 액티브 코어
230: 논-액티브 코어
231: 고성능 논-액티브 코어
233: 저성능 논-액티브 코어
310: 스레드 그룹
311: 고성능 스레드 그룹
313: 저성능 스레드 그룹
200: 코어
210: 액티브 코어
211: 고성능 액티브 코어
213: 저성능 액티브 코어
230: 논-액티브 코어
231: 고성능 논-액티브 코어
233: 저성능 논-액티브 코어
310: 스레드 그룹
311: 고성능 스레드 그룹
313: 저성능 스레드 그룹
Claims (17)
- 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 단계;
상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 단계;
상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 단계; 및
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계;를 포함하되,
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계는, 미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하고, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 기반으로 상기 액티브 코어에 상기 선택된 스레드 그룹을 할당하는, 스레드 할당 방법. - 제 1 항에 있어서, 상기 스레드의 개수를 결정하는 단계는,
상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 초기화하는 단계; 및
상기 스레드 당 연산량이 큰 순서대로 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 증가시키는 단계;를 포함하는, 스레드 할당 방법. - 제 2 항에 있어서, 상기 상기 스레드의 개수를 증가시키는 단계는,
상기 다수의 스레드 그룹 각각에 상기 다수의 스레드가 모두 할당될 때까지 반복되는, 스레드 할당 방법. - 제 1 항에 있어서, 상기 적어도 하나의 스레드를 할당하는 단계는,
상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수에 기초하여 상기 스레드 당 연산량을 산출하는 단계;
상기 스레드 당 연산량에 기초하여 상기 다수의 스레드 그룹을 정렬하는 단계; 및
상기 정렬된 순서에 따라 상기 다수의 스레드 그룹 각각에 상기 적어도 하나의 스레드를 할당하는 단계;를 포함하는, 스레드 할당 방법. - 제 4 항에 있어서, 상기 적어도 하나의 스레드를 할당하는 단계는,
상기 다수의 스레드 각각에 대해 미리 부여된 자원과 스레드 ID 중 적어도 하나에 기초하여 상기 다수의 스레드 각각에 대한 우선 순위를 설정하는 단계;를 포함하는, 스레드 할당 방법. - 제 5 항에 있어서, 상기 우선 순위는,
상기 미리 부여된 자원이 적을수록 높게 설정되고, 상기 스레드 ID의 값이 작을수록 높게 설정되는, 스레드 할당 방법. - 제 1 항에 있어서, 상기 다수의 스레드 그룹 각각을 할당하는 단계는,
미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하는 단계;
상기 선택된 스레드 그룹에 포함된 적어도 하나의 스레드 각각의 코어 할당 기록에 기초하여, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 산출하는 단계; 및
상기 산출된 이주 비용이 가장 작은 액티브 코어에 상기 선택된 스레드 그룹을 할당하는 단계;를 포함하는, 스레드 할당 방법. - 제 7 항에 있어서, 상기 이주 비용을 산출하는 단계는,
서로 다른 프로세서 간의 이주에 대한 제 1 비용과, 서로 다른 코어 간의 이주에 대한 제 2 비용에 기초하여 상기 이주 비용을 산출하되, 상기 제 2 비용보다 상기 제 1 비용에 더 큰 가중치를 부여하는, 스레드 할당 방법. - 제 1 항에 있어서,
상기 다수의 액티브 코어 각각에 상기 다수의 스레드 그룹 각각이 할당되도록 스케줄링 주기를 설정하는 단계;를 더 포함하는, 스레드 할당 방법. - 제 9 항에 있어서, 상기 스케줄링 주기를 설정하는 단계는,
상기 다수의 스레드에 대한 성능 데이터를 획득하는 단계; 및
상기 성능 데이터에 기초하여 상기 스케줄링 주기를 조절하는 단계;를 포함하는, 스레드 할당 방법. - 컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 생성부;
상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 설정부;
상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 스레드 할당부; 및
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 그룹 할당부;를 포함하되,
상기 그룹 할당부는,
미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하고, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 기반으로 상기 액티브 코어에 상기 선택된 스레드 그룹을 할당하는, 스레드 할당 장치. - 제 11 항에 있어서, 상기 설정부는,
상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 초기화하고, 상기 스레드 당 연산량이 큰 순서대로 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 증가시키는, 스레드 할당 장치. - 제 11 항에 있어서, 상기 스레드 할당부는,
상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수에 기초하여 상기 스레드 당 연산량을 산출하고, 상기 스레드 당 연산량에 기초하여 상기 다수의 스레드 그룹을 정렬하며, 상기 정렬된 순서에 따라 상기 다수의 스레드 그룹 각각에 상기 적어도 하나의 스레드를 할당하는, 스레드 할당 장치. - 제 11 항에 있어서, 상기 그룹 할당부는,
미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하고, 상기 선택된 스레드 그룹에 포함된 적어도 하나의 스레드 각각의 코어 할당 기록에 기초하여, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 산출하며, 상기 산출된 이주 비용이 가장 작은 액티브 코어에 상기 선택된 스레드 그룹을 할당하는, 스레드 할당 장치. - 제 11 항에 있어서,
상기 다수의 액티브 코어 각각에 상기 다수의 스레드 그룹 각각이 할당되도록 스케줄링 주기를 설정하는 스케줄링부;를 더 포함하는, 스레드 할당 장치. - 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 단계;
상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 단계;
상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 단계; 및
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계;를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하되,
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계는,
미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하고, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 기반으로 상기 액티브 코어에 상기 선택된 스레드 그룹을 할당하는, 컴퓨터 판독 가능한 기록매체. - 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,
상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
컴퓨팅 장치에 포함된 다수의 코어들 중 액티브(Active) 코어의 개수에 기초하여 다수의 스레드 그룹을 생성하는 단계;
상기 다수의 스레드 그룹 각각의 스레드 당 연산량에 기초하여 현재 주기 내 실행할 다수의 스레드 중 상기 다수의 스레드 그룹 각각에 할당할 스레드의 개수를 결정하는 단계;
상기 다수의 스레드 각각의 우선 순위와, 상기 결정된 개수에 기초하여 상기 다수의 스레드 그룹 각각에 적어도 하나의 스레드를 할당하는 단계; 및
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계;를 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하되,
상기 액티브 코어 각각에 상기 다수의 스레드 그룹 각각을 할당하는 단계는, 미 할당된 적어도 하나의 스레드 그룹 중 상기 스레드 당 연산량이 가장 큰 스레드 그룹을 선택하고, 미 할당된 액티브 코어 각각에 대한 상기 선택된 스레드 그룹의 이주 비용을 기반으로 상기 액티브 코어에 상기 선택된 스레드 그룹을 할당하는, 컴퓨터 프로그램.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220002525A KR102741614B1 (ko) | 2022-01-07 | 2022-01-07 | 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 |
JP2024532926A JP2024542890A (ja) | 2022-01-07 | 2022-05-17 | スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 |
PCT/KR2022/007074 WO2023132414A1 (ko) | 2022-01-07 | 2022-05-17 | 스레드 할당 방법, 스레드 할당 장치, 및 컴퓨터 판독 가능한 기록 매체 |
EP22918951.9A EP4432077A1 (en) | 2022-01-07 | 2022-05-17 | Thread allocation method, thread allocation device, and computer readable recording medium |
US18/679,467 US20240338252A1 (en) | 2022-01-07 | 2024-05-31 | Thread allocation method, thread allocation device, and computer readable recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020220002525A KR102741614B1 (ko) | 2022-01-07 | 2022-01-07 | 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230106865A KR20230106865A (ko) | 2023-07-14 |
KR102741614B1 true KR102741614B1 (ko) | 2024-12-16 |
Family
ID=87073836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220002525A Active KR102741614B1 (ko) | 2022-01-07 | 2022-01-07 | 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240338252A1 (ko) |
EP (1) | EP4432077A1 (ko) |
JP (1) | JP2024542890A (ko) |
KR (1) | KR102741614B1 (ko) |
WO (1) | WO2023132414A1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013500543A (ja) * | 2009-07-27 | 2013-01-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング |
JP5510322B2 (ja) * | 2008-07-04 | 2014-06-04 | 日本電気株式会社 | マルチプロセッサシステム、マルチスレッド処理方法、及びプログラム |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5450461A (en) * | 1977-09-29 | 1979-04-20 | Mitsubishi Heavy Ind Ltd | Freely peleasable coupler for mandrel and mandrel rod of cross helical rolling mill |
US8724486B2 (en) | 2008-05-02 | 2014-05-13 | Pine Valley Investments, Inc. | System and method for heartbeat signal generation |
KR101975288B1 (ko) * | 2012-06-15 | 2019-05-07 | 삼성전자 주식회사 | 멀티 클러스터 프로세싱 시스템 및 그 구동 방법 |
US9280388B2 (en) * | 2013-01-22 | 2016-03-08 | Oracle International Corporation | Method and apparatus for efficient scheduling of multithreaded programs |
US9424092B2 (en) * | 2014-09-26 | 2016-08-23 | Microsoft Technology Licensing, Llc | Heterogeneous thread scheduling |
US10417054B2 (en) * | 2017-06-04 | 2019-09-17 | Apple Inc. | Scheduler for AMP architecture with closed loop performance controller |
KR102022972B1 (ko) * | 2018-03-09 | 2019-09-19 | 울산과학기술원 | 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법 |
US11422849B2 (en) * | 2019-08-22 | 2022-08-23 | Intel Corporation | Technology for dynamically grouping threads for energy efficiency |
US11436118B2 (en) | 2019-12-27 | 2022-09-06 | Intel Corporation | Apparatus and method for adaptively scheduling work on heterogeneous processing resources |
-
2022
- 2022-01-07 KR KR1020220002525A patent/KR102741614B1/ko active Active
- 2022-05-17 WO PCT/KR2022/007074 patent/WO2023132414A1/ko active Application Filing
- 2022-05-17 JP JP2024532926A patent/JP2024542890A/ja active Pending
- 2022-05-17 EP EP22918951.9A patent/EP4432077A1/en active Pending
-
2024
- 2024-05-31 US US18/679,467 patent/US20240338252A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5510322B2 (ja) * | 2008-07-04 | 2014-06-04 | 日本電気株式会社 | マルチプロセッサシステム、マルチスレッド処理方法、及びプログラム |
JP2013500543A (ja) * | 2009-07-27 | 2013-01-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング |
Also Published As
Publication number | Publication date |
---|---|
EP4432077A1 (en) | 2024-09-18 |
US20240338252A1 (en) | 2024-10-10 |
KR20230106865A (ko) | 2023-07-14 |
WO2023132414A1 (ko) | 2023-07-13 |
JP2024542890A (ja) | 2024-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2466460B1 (en) | Compiling apparatus and method for a multicore device | |
US8793695B2 (en) | Information processing device and information processing method | |
CN109117264B (zh) | 容器工作负载调度器以及调度容器工作负载的方法 | |
KR101651871B1 (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
US8286170B2 (en) | System and method for processor thread allocation using delay-costs | |
KR20110075297A (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
CN114356543A (zh) | 一种基于Kubernetes的多租户机器学习任务资源调度方法 | |
KR100791296B1 (ko) | 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법 | |
CN112988361B (zh) | 集群任务分配方法、装置和计算机可读介质 | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
CN111158868A (zh) | 计算系统及用于操作计算系统的方法 | |
KR20220052546A (ko) | 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템 | |
CN104598304B (zh) | 用于作业执行中的调度的方法和装置 | |
Xu et al. | Prophet: Scheduling executors with time-varying resource demands on data-parallel computation frameworks | |
JP6007516B2 (ja) | リソース配分システム、リソース配分方法、及びリソース配分プログラム | |
CN114911610A (zh) | 一种任务编译方法、装置和编译器 | |
US9760969B2 (en) | Graphic processing system and method thereof | |
Tsai et al. | Scheduling multiple scientific and engineering workflows through task clustering and best-fit allocation | |
KR102741614B1 (ko) | 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치 | |
CN110704195A (zh) | 一种cpu调整方法、服务器及计算机可读存储介质 | |
Markthub et al. | Using rCUDA to reduce GPU resource-assignment fragmentation caused by job scheduler | |
CN117651044A (zh) | 一种边缘计算任务调度方法及装置 | |
CN116302327A (zh) | 资源调度方法及相关设备 | |
Li et al. | Topology-aware scheduling on blue waters with proactive queue scanning and migration-based job placement | |
JP2012038275A (ja) | 取引計算シミュレーションシステム、方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20220107 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20240412 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20241113 |
|
PG1601 | Publication of registration |