KR102530348B1 - Gpgpu의 스레드 블록 스케줄링 방법 및 장치 - Google Patents

Gpgpu의 스레드 블록 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR102530348B1
KR102530348B1 KR1020200153825A KR20200153825A KR102530348B1 KR 102530348 B1 KR102530348 B1 KR 102530348B1 KR 1020200153825 A KR1020200153825 A KR 1020200153825A KR 20200153825 A KR20200153825 A KR 20200153825A KR 102530348 B1 KR102530348 B1 KR 102530348B1
Authority
KR
South Korea
Prior art keywords
resource
tbs
sms
intensively
resources
Prior art date
Application number
KR1020200153825A
Other languages
English (en)
Other versions
KR20220067289A (ko
Inventor
반효경
조경운
Original Assignee
이화여자대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이화여자대학교 산학협력단 filed Critical 이화여자대학교 산학협력단
Priority to KR1020200153825A priority Critical patent/KR102530348B1/ko
Publication of KR20220067289A publication Critical patent/KR20220067289A/ko
Application granted granted Critical
Publication of KR102530348B1 publication Critical patent/KR102530348B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)

Abstract

GPGPU의 스레드 블록 스케줄링 방법 및 장치가 개시된다. 스레드 블록 스케줄러가 수행하는 스레드 블록 스케줄링 방법은 GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들 각각에 대해 서로 다른 복수의 함수 유닛(Function Unit)을 처리하기 위한 컴퓨팅 자원의 잔여 자원량을 식별하는 단계; 상기 GPU를 통해 처리될 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대해 워크로드 종류에 따른 상기 컴퓨팅 자원의 자원 사용량을 식별하는 단계; 및 상기 식별된 복수의 SM들 각각에 대한 컴퓨팅 자원의 잔여 자원량과 상기 복수의 TB들 각각에 대한 컴퓨팅 자원의 자원 사용량에 기초하여 상기 복수의 TB들 각각을 상기 복수의 SM들 중 어느 하나의 SM에 할당하는 단계를 포함할 수 있다.

Description

GPGPU의 스레드 블록 스케줄링 방법 및 장치{GPGPU THREAD BLOCK SCHEDULING METHOD AND APPARATUS}
본 발명은 GPGPU 스레드 블록 스케줄링 방법 및 장치에 관한 것으로, 보다 구체적으로는 GPU에서 수행되는 워크로드의 자원 사용 특성에 기초하여 스레드 블록을 스케줄링 하는 방법 및 장치에 관한 것이다.
4차 산업혁명시대의 도래로 딥러닝, 블록체인, 유전자 분석 등 다양한 분야에서 GPU가 병렬 연산장치로 활용되고 있다. 그러나 GPU 관리는 워크로드의 다양성을 반영하기보다는 간결한 제어 구조를 통한 개별 워크로드의 병렬성 극대화에 초점을 맞추어 왔다.
최근 다양한 분야의 워크로드가 GPU에서 동시에 수행되는 것이 지원되면서 개별 워크로드의 병렬 수행보다 멀티태스킹으로 인한 효율성을 높이는 것이 GPU 관리의 중요한 이슈로 부각되고 있다.
따라서, 멀티태스킹으로 인한 효율성을 높이기 위한 GPU의 스레드 블록 스케줄링 방법이 요구되고 있다.
본 발명은 GPGPU 스레드 블록 스케줄링 방법 및 장치에 관한 것으로, 보다 구체적으로는 GPU에서 수행되는 워크로드의 자원 사용 특성을 분석하여 서로 다른 자원 사용 특성을 가지는 워크로드에 대응하는 스레드 블록들을 동일한 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)에 배치하는 방법 및 장치에 관한 것이다.
본 발명의 일실시예에 따른 스레드 블록 스케줄러가 수행하는 스레드 블록 스케줄링 방법은 GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들 각각에 대해 서로 다른 복수의 함수 유닛(Function Unit)을 처리하기 위한 컴퓨팅 자원의 잔여 자원량을 식별하는 단계; 상기 GPU를 통해 처리될 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대해 워크로드 종류에 따른 상기 컴퓨팅 자원의 자원 사용량을 식별하는 단계; 및 상기 식별된 복수의 SM들 각각에 대한 컴퓨팅 자원의 잔여 자원량과 상기 복수의 TB들 각각에 대한 컴퓨팅 자원의 자원 사용량에 기초하여 상기 복수의 TB들 각각을 상기 복수의 SM들 중 어느 하나의 SM에 할당하는 단계를 포함할 수 있다.
상기 컴퓨팅 자원은 단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함할 수 있다.
상기 할당하는 단계는 특정 SM에 할당하고자 하는 둘 이상의 TB들이 서로 상이한 컴퓨팅 자원을 사용하는 경우, 상기 특정 SM의 컴퓨팅 자원에 대한 잔여 자원량을 초과하지 않는 한도 내에서 동일한 SM에 할당할 수 있다.
상기 할당하는 단계는 상기 복수의 TB들 각각을 상기 복수의 SM들에 라운드 로빈(Round-Robin) 방식에 따라 순차적으로 하나씩 할당할 수 있다.
본 발명의 일실시예에 따른 스레드 블록 스케줄러는 프로세서를 포함하고, 상기 프로세서는 GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들 각각에 대해 서로 다른 복수의 함수 유닛(Function Unit)을 처리하기 위한 컴퓨팅 자원의 잔여 자원량을 식별하고, 상기 GPU를 통해 처리될 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대해 워크로드 종류에 따른 상기 컴퓨팅 자원의 자원 사용량을 식별하며, 상기 식별된 복수의 SM들 각각에 대한 컴퓨팅 자원의 잔여 자원량과 상기 복수의 TB들 각각에 대한 컴퓨팅 자원의 자원 사용량에 기초하여 상기 복수의 TB들 각각을 상기 복수의 SM들 중 어느 하나의 SM에 할당할 수 있다.
상기 컴퓨팅 자원은 단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함할 수 있다.
상기 프로세서는 특정 SM에 할당하고자 하는 둘 이상의 TB들이 서로 상이한 컴퓨팅 자원을 사용하는 경우, 상기 특정 SM의 컴퓨팅 자원에 대한 잔여 자원량을 초과하지 않는 한도 내에서 동일한 SM에 할당할 수 있다.
상기 프로세서는 상기 복수의 TB들 각각을 상기 복수의 SM들에 라운드 로빈(Round-Robin) 방식에 따라 순차적으로 하나씩 할당할 수 있다.
본 발명의 일실시예에 따른 스레드 블록 스케줄러가 수행하는 스레드 블록 스케줄링 방법은 GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들 각각에 대한 컴퓨팅 자원 및 메모리 자원의 잔여 자원량을 식별하는 단계; 상기 GPU를 통해 처리될 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대해 워크로드 종류에 따른 상기 GPU의 자원 사용량을 식별하는 단계; 및 상기 식별된 복수의 SM들 각각에 대한 잔여 자원량과 상기 복수의 TB들 각각에 대한 GPU의 자원 사용량에 기초하여 상기 복수의 TB들 각각을 상기 복수의 SM들 중 어느 하나의 SM에 할당하는 단계를 포함하고, 상기 컴퓨팅 자원은 서로 다른 복수의 함수 유닛(Function Unit)을 처리하기 위한 장치들로 구성되고, 상기 메모리 자원은 레지스터 파일, 공유 메모리 및 통합 캐시로 구성될 수 있다.
상기 컴퓨팅 자원은 단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함할 수 있다.
상기 할당하는 단계는 특정 SM에 할당하고자 하는 둘 이상의 TB들에 대한 컴퓨팅 자원 및 메모리 자원이 상기 특정 SM의 잔여 자원량을 초과하지 않는 경우, 해당 TB들을 특정 SM에 할당하고, 상기 특정 SM의 잔여 자원량을 초과하는 경우, 특정 SM을 스킵(Skip)할 수 있다.
상기 할당하는 단계는 상기 복수의 TB들 각각을 상기 복수의 SM들에 라운드 로빈(Round-Robin) 방식에 따라 순차적으로 하나씩 할당할 수 있다.
본 발명의 일실시예에 따른 스레드 블록 스케줄러는 프로세서를 포함하고, 상기 프로세서는 GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들 각각에 대한 컴퓨팅 자원 및 메모리 자원의 잔여 자원량을 식별하고, 상기 GPU를 통해 처리될 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대한 워크로드 종류에 기초하여 요구되는 상기 GPU의 자원 사용량을 식별하며, 상기 식별된 복수의 SM들 각각의 잔여 자원량과 복수의 TB들 각각의 GPU 자원 사용량에 기초하여 상기 복수의 TB들 각각을 상기 복수의 SM들 중 어느 하나의 SM에 할당하고, 상기 컴퓨팅 자원은 서로 다른 복수의 함수 유닛(Function Unit)을 처리하기 위한 장치들로 구성되고, 상기 메모리 자원은 레지스터 파일, 공유 메모리 및 통합 캐시로 구성될 수 있다.
상기 컴퓨팅 자원은 단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함할 수 있다.
상기 프로세서는 특정 SM에 할당하고자 하는 둘 이상의 TB들에 대한 컴퓨팅 자원 및 메모리 자원이 상기 특정 SM의 잔여 자원량을 초과하지 않는 경우, 해당 TB들을 특정 SM에 할당하고, 상기 특정 SM의 잔여 자원량을 초과하는 경우, 해당 특정 SM을 스킵(Skip)할 수 있다.
상기 프로세서는 상기 복수의 TB들 각각을 상기 복수의 SM들에 라운드 로빈(Round-Robin) 방식에 따라 순차적으로 하나씩 할당할 수 있다.
본 발명은 GPGPU 스레드 블록 스케줄링 방법 및 장치에 관한 것으로, 보다 구체적으로는 GPU에서 수행되는 워크로드의 자원 사용 특성을 분석하여 서로 다른 자원 사용 특성을 가지는 워크로드에 대응하는 스레드 블록들을 동일한 SM에 배치함으로써 GPU 작업배치 및 멀티태스킹을 효율적으로 달성할 수 있다.
도 1은 본 발명의 일실시예에 따른 스레드 블록 스케줄링의 개념도를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 스레드 블록을 처리하는데 필요한 SM의 자원을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 TBS가 특정 TB를 SM에 할당하는 제1 방법을 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 TBS가 특정 TB를 SM에 할당하는 제2 방법을 나타낸 도면이다.
도 5는 본 발명의 일실시예에 따른 GPGPU의 스레드 블록 스케줄링 방법을 플로우챠트로 나타낸 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 스레드 블록 스케줄링의 개념도를 도시한 도면이다.
GPU의 컴퓨팅 하드웨어는 수백 혹은 수천 단위의 계산 코어들로 구성된 컴퓨팅 프로세서(주로 Stream Multiprocessor, 이하 SM)들의 집합이다. 이러한 SM의 개수는 GPU 장치의 종류에 따라 다양할 수 있다. 보통 1개의 SM은 보통 수십에서 수백개의 동일한 컴퓨팅 명령을 처리 데이터만 달리하여 하드웨어적으로 동시에 수행할 수 있다.
GPU에 주로 쓰이는 프로그래밍 방식은 1개 코어 기준의 단일 스레드(single thread) 프로그램을 하드웨어적으로 병렬 수행하는 기법이다. 그런데 GPU를 통해 해결하고자 하는 컴퓨팅 문제들은 수십만에서 수백만 단위의 스레드로 구성될 수 있으므로, 이를 GPU에서 동시 수행하는 것은 하드웨어적으로 불가능하다.
이러한 문제를 해결하고자 GPU는 수십만에서 수백만 단위의 스레드를 해결하고자 하는 문제에 맞게 일정한 크기의 작업 단위로 그룹화하여 SM상에서 수행시키는 방법을 제공한다. 이러한 작업 단위를 스레드 블럭(Thread Block, 이하 TB)이라 하며 TB들을 GPU 장치내의 존재하는 다수의 SM에 할당하는 기능을 수행하는 관리자를 스레드 블록 스케줄러(Thread Block Scheduler, 이하 TBS)라 한다.
도 1을 참고하면, TBS(100)는 서로 다른 복수의 서브 커널(Sub Kernel)들 내에 포함된 TB들을 수신하여 GPU 내의 하드웨어인 SM에 할당하는 역할을 수행할 수 있다. 여기서, 서브 커널들은 GPU에서 수행되는 코드로서 CPU 개념으로 볼 때 프로그램으로 이해될 수 있다. 서브 커널들은 커널의 종류에 따라 서로 다른 크기의 TB들을 포함할 수 있으며, 각각의 서브 커널 내에 포함된 TB들은 크기가 동일할 수 있다. 즉, 서브 커널 A(Kernel A)와 커널 B(Kernel B)는 서로 다른 크기의 TB들을 포함할 수 있으며, 서브 커널 A 및 서브 커널 B 각각에 포함된 TB들은 크기가 동일할 수 있다.
TB는 1개의 스레드부터 보통 1024개의 스레드로 구성될 수 있는데, SM은 TBS(100)를 통해 할당된 TB 내의 스레드들을 동시에 수행할 수 있다. Warp는 GPU의 하드웨어에서 물리적으로 동시에 수행가능한 스레드 단위를 나타내며, 보통 하나의 Warp는 32개의 스레드로 구성될 수 있다. 일례로, TB가 64개의 스레드로 구성되었다고 가정하면, 해당 TB는 2개의 Warp로 구성될 수 있다. 그리고, 해당 TB가 TBS(100)를 통해 SM에 할당되면, 할당된 SM을 통해 32개의 스레드, 즉, Warp 단위로 동시에 수행될 수 있다.
만약, TB가 1개의 스레드로 구성되었다면, 해당 TB는 1개의 Warp로 구성될 수 있는데 1개의 스레드를 가지는 TB는 테스트 이외의 용도로는 사용하지 않으므로 보통 TB의 스레드 개수는 32의 배수로 구성될 수 있다.
이와 같이 GPU 내의 하드웨어인 SM에서 수행되는 작업(스레드)의 처리율은 TBS(100)가 수행하는 스케줄링 정책에 많은 영향을 받을 수 있다. TBS(100)는 서로 다른 복수의 서브 커널들 내에 포함된 TB들을 라운드 로빈(Round-Robin) 방식으로 복수의 SM들에 순차적으로 하나씩 할당할 수 있다.
이때, 본 발명에서 제공하는 TBS(100)는 GPU에서 수행되는 워크로드의 자원 사용 특성을 분석하여 서로 다른 자원 사용 특성을 가지는 워크로드에 대응하는 스레드 블록들을 동일한 SM에 배치함으로써 GPU 작업배치 및 멀티태스킹을 효율적으로 달성하는 방법을 제공할 수 있다.
도 2는 본 발명의 일실시예에 따른 스레드 블록을 처리하는데 필요한 SM의 자원을 나타낸 도면이다.
GPU를 구성하는 SM은 TB가 할당되었을 때, 할당된 TB를 처리하기 위하여 일정한 크기의 자원이 요구될 수 있다. 이때, 필요한 자원은 스레드 수, 공유 메모리 및 레지스터 수 중 적어도 하나를 포함할 수 있다.
동일한 커널 내에 포함된 TB들은 크기가 동일할 수 있으므로, 요구되는 SM의 자원량이 동일할 수 있으며, 이와 같은 SM의 자원량은 TB들이 컴파일 될 때 결정될 수 있다.
TBS(100)는 특정 TB를 복수의 SM들 중 어느 하나의 SM에 할당하는 경우, 우선 복수의 SM들 각각에 대한 잔여 자원량을 식별할 수 있다. 이후 TBS(100)는 미리 정해진 할당 순서에 따라 제1 SM의 잔여 자원량과 할당하고자 하는 특정 TB에 대한 SM 자원 사용량을 비교하여 특정 TB의 SM 자원 사용량이 제1 SM의 잔여 자원량 보다 작은 경우, 특정 TB를 제1 SM에 할당할 수 있다.
이와는 달리 TBS(100)는 특정 TB의 SM 자원 사용량이 제1 SM의 잔여 자원량 보다 큰 경우, 제1 SM을 스킵(Skip)하고, 이후 할당 순서에 대응하는 제2 SM의 잔여 자원량과 특정 TB의 SM 자원 사용량을 비교하고, 비교 결과에 따라 할당을 수행할 수 있다.
이때, TBS(100)는 제1 SM의 자원 구성하는 스레드 수, 공유 메모리 및 레지스터 수 중 적어도 하나의 자원에 대한 잔여 자원량이 할당하고자 하는 특정 TB의 SM 자원 사용량 보다 작은 경우, 해당 제1 SM을 스킵하고, 이후 할당 순서에 대응하는 제2 SM에 특정 TB의 할당 여부를 판단할 수 있다.
도 3은 본 발명의 일실시예에 따른 TBS가 특정 TB를 SM에 할당하는 제1 방법을 나타낸 도면이다.
TB들을 처리하는 SM은 자원이 한정되어 있기 때문에 TBS(100)를 통해 한정된 자원 내에서 TB들을 적절히 배치하는 것이 중요할 수 있다. GPU의 SM을 통해 처리되는 TB들은 워크로드 종류에 따라 필요한 SM의 자원이 서로 다를 수 있다. 일례로, 도 3을 참고하면, Hotspot에 대응하는 TB는 SM의 자원 중 컴퓨팅 자원을 주로 사용하고, Stream Cluster에 대응하는 TB는 SM의 자원 중 메모리 자원을 주로 사용하는 것을 알 수 있다.
따라서, TBS(100)는 할당하고자 하는 TB들을 워크로드 종류에 기초하여 컴퓨팅 자원 집약적인지 또는 메모리 자원 집약적인지를 판단하고, 서로 다른 종류의 자원을 집약적으로 사용하는 TB들을 하나의 SM에 공동으로 할당함으로써 SM의 자원 사용률을 극대화할 수 있다.
이와 같이 할당하고자 하는 TB들이 컴퓨팅 자원 집약적인지 또는 메모리 자원 집약적인지를 판단하기 위하여 커널 빌드 후 사전 사용량 테스트가 수행될 수 있다. 이후 테스트 결과값이 커널에 포함된 복수의 TB들에 반영될 수 있다.
도 4는 본 발명의 일실시예에 따른 TBS가 특정 TB를 SM에 할당하는 제2 방법을 나타낸 도면이다.
도 3에서는 할당하고자 하는 TB가 컴퓨팅 자원 집약적인지 또는 메모리 자원 집약적인지를 판단하고, 판단 결과에 따라 서로 다른 종류의 자원을 집약적으로 사용하는 TB들을 하나의 SM에 공동으로 할당함으로써 SM의 자원 사용률을 극대화하는 방법을 제공하였다.
한편, 컴퓨팅 자원 집약적인 워크로드들은 함수 유닛(Function Unit)의 종류에 따라 필요한 SM의 자원이 서로 다를 수 있다. 이때, 컴퓨팅 자원은 함수 유닛의 종류에 따라 단정밀도(Single Floating Point, SFP) 연산 장치, 배정밀도(Double Floating Point, DFP) 연산 장치, 제어흐름(Control-Flow, CF) 장치, 로드/스토어(Load/Store, LSDT) 장치 및 특수함수(Special Function Unit, SFU) 연산 장치 중 적어도 하나를 포함할 수 있다.
일례로, 도 4를 참고하면, Back Propagation에 대응하는 TB는 SM의 컴퓨팅 자원 중 배정밀도 연산 장치를 주로 사용하고, Nbody에 대응하는 TB는 SM의 컴퓨팅 자원 중 단정밀도 연산 장치를 주로 사용하는 것을 알 수 있다.
따라서, TBS(100)는 할당하고자 하는 TB들을 워크로드 종류에 기초하여 복수의 컴퓨팅 자원 중 어떤 자원을 집약적으로 사용하는지를 판단하고, 서로 다른 종류의 컴퓨팅 자원을 집약적으로 사용하는 TB들을 하나의 SM에 공동으로 할당함으로써 SM의 자원 사용률을 극대화할 수 있다.
이와 같이 할당하고자 하는 TB들이 컴퓨팅 자원 중 어떤 자원을 집약적으로 사용하는지를 판단하기 위하여 커널 빌드 후 사전 사용량 테스트가 수행될 수 있다. 이후 테스트 결과값이 커널에 포함된 복수의 TB들에 반영될 수 있다.
도 5는 본 발명의 일실시예에 따른 GPGPU의 스레드 블록 스케줄링 방법을 플로우챠트로 나타낸 도면이다.
단계(510)에서, TBS(100)는 GPU를 구성하는 복수의 SM들 각각에 대한 컴퓨팅 자원 및 메모리 자원의 잔여 자원량을 식별할 수 있다. 이때, 컴퓨팅 자원은 서로 다른 복수의 함수 유닛을 처리하기 위한 장치들로 단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함할 수 있다. 그리고, 메모리 자원은 레지스터 파일, 공유 메모리 및 통합 캐시 중 적어도 하나를 포함할 수 있다.
단계(520)에서, TBS(100)는 GPU를 통해 처리될 복수의 TB들 각각에 대해 워크로드 종류에 따른 GPU의 자원 사용량을 식별할 수 있다.
단계(530)에서, TBS(100)는 식별된 복수의 SM들 각각에 대한 잔여 자원량과 복수의 TB들 각각에 대한 GPU의 자원 사용량에 기초하여 복수의 TB들 각각을 복수의 SM들 중 어느 하나의 SM에 할당할 수 있다.
이때, TBS(100)는 특정 SM에 할당하고자 하는 둘 이상의 TB들에 대한 컴퓨팅 자원 및 메모리 자원이 특정 SM의 잔여 자원량을 초과하지 않는 경우, 해당 TB들을 특정 SM에 할당하고, 특정 SM의 잔여 자원량을 초과하는 경우, 해당 특정 SM을 스킵하고, 이후 할당 순서에 대응하는 SM에 대하여 할당 여부를 판단할 수 있다.
한편, 본 발명에 따른 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.
본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 장치, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 즉 정보 캐리어, 예를 들어 기계 판독가능 저장 장치(컴퓨터 판독가능 매체) 또는 전파 신호에서 유형적으로 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.
컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 장치들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 컴퓨터 프로그램 명령어들 및 데이터를 구체화하는데 적절한 정보 캐리어들은 예로서 반도체 메모리 장치들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리, EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM) 등을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로조직에 의해 보충되거나, 이에 포함될 수 있다.
또한, 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 컴퓨터 저장매체 및 전송매체를 모두 포함할 수 있다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 장치 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 장치들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.
한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.
100 : 스레드 블록 스케줄러(TBS)

Claims (16)

  1. 스레드 블록 스케줄러의 프로세서에 의해 수행되는 스레드 블록 스케줄링 방법에 있어서,
    GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들에 할당하고자 하는 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대해, 상기 복수의 TB 들 각각이 컴퓨팅 자원을 집약적으로 사용하는지 또는 메모리 자원을 집약적으로 사용하는지 여부를 판단하는 단계;
    상기 복수의 SM들 각각에 대해 식별된 메모리 자원에 기초하여, 상기 메모리 자원을 집약적으로 사용하는 것으로 판단된 TB들을 순차적으로 할당하는 단계; 및
    상기 복수의 SM들 각각에 대해 식별된 워크로드 종류에 따른 상기 컴퓨팅 자원의 종류 별 자원 사용량에 기초하여, 상기 컴퓨팅 자원을 집약적으로 사용하는 것으로 판단된 TB들 중 서로 다른 종류의 컴퓨팅 자원을 집약적으로 사용하는 TB 들을 어느 하나의 SM에 공동으로 할당하는 단계
    를 포함하고,
    상기 TB들을 어느 하나의 SM에 공동으로 할당하는 단계는,
    미리 정해진 할당 순서에 따라, 제1 SM의 각 자원별 잔여량과 할당하고자 하는 특정 TB의 각 자원별 사용량을 비교하여, 모든 자원에 대해 특정 TB의 자원 사용량이 동일 자원에 대한 제1 SM의 잔여 자원량을 초과하는 경우가 발생하지 않으면, 특정 TB를 제1 SM에 할당하고,
    특정 TB의 각 자원별 사용량 중 어느 하나라도 동일 자원에 대한 제1 SM의 잔여 자원량을 초과하는 경우가 발생하면, 제1 SM을 스킵(Skip)하고, 이후 할당 순서에 대응하는 제2 SM의 각 자원별 잔여량과 비교하여 할당 여부를 판단하고,
    상기 TB들은 커널 빌드 후 사전 사용량 테스트를 통해 상기 컴퓨팅 자원 중 어떤 자원을 집약적으로 사용하는지를 구분할 수 있는 식별자를 포함하는 스레드 블록 스케줄링 방법.
  2. 제1항에 있어서,
    상기 컴퓨팅 자원은,
    단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함하는 스레드 블록 스케줄링 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 할당하는 단계는,
    상기 복수의 TB들 각각을 상기 복수의 SM들에 라운드 로빈(Round-Robin) 방식에 따라 순차적으로 하나씩 할당하는 스레드 블록 스케줄링 방법.
  5. 스레드 블록 스케줄러에 있어서,
    프로세서를 포함하고,
    상기 프로세서는,
    GPU를 구성하는 복수의 스트림 멀티프로세서(Stream Multiprocessor, 이하 SM)들에 할당하고자 하는 복수의 스레드 블록(Thread Block, 이하 TB)들 각각에 대해, 상기 복수의 TB 들 각각이 컴퓨팅 자원을 집약적으로 사용하는지 또는 메모리 자원을 집약적으로 사용하는지 여부를 컴퓨팅 자원의 종류를 판단하고, 상기 복수의 SM들 각각에 대해 식별된 메모리 자원에 기초하여, 상기 메모리 자원을 집약적으로 사용하는 것으로 판단된 TB들을 순차적으로 할당하고, 상기 복수의 SM들 각각에 대해 식별된 워크로드 종류에 따른 상기 컴퓨팅 자원의 종류 별 자원 사용량에 기초하여, 상기 컴퓨팅 자원을 집약적으로 사용하는 것으로 판단된 TB들 중 서로 다른 종류의 컴퓨팅 자원을 집약적으로 사용하는 TB 들을 상기 복수의 SM 들 중 어느 하나의 SM에 공동으로 할당하고,
    상기 프로세서는,
    미리 정해진 할당 순서에 따라, 제1 SM의 각 자원별 잔여량과 할당하고자 하는 특정 TB의 각 자원별 사용량을 비교하여, 모든 자원에 대해 특정 TB의 자원 사용량이 동일 자원에 대한 제1 SM의 잔여 자원량을 초과하는 경우가 발생하지 않으면, 특정 TB를 제1 SM에 할당하고,
    특정 TB의 각 자원별 사용량 중 어느 하나라도 동일 자원에 대한 제1 SM의 잔여 자원량을 초과하는 경우가 발생하면, 제1 SM을 스킵(Skip)하고, 이후 할당 순서에 대응하는 제2 SM의 각 자원별 잔여량과 비교하여 할당 여부를 판단하고,
    상기 TB들은 커널 빌드 후 사전 사용량 테스트를 통해 상기 컴퓨팅 자원 중 어떤 자원을 집약적으로 사용하는지를 구분할 수 있는 식별자를 포함하는 스레드 블록 스케줄러.
  6. 제5항에 있어서,
    상기 컴퓨팅 자원은,
    단정밀도 연산 장치, 배정밀도 연산 장치, 제어흐름 장치, 로드/스토어 장치 및 특수함수 연산 장치 중 적어도 하나를 포함하는 스레드 블록 스케줄러.
  7. 삭제
  8. 제5항에 있어서,
    상기 프로세서는,
    상기 복수의 TB들 각각을 상기 복수의 SM들에 라운드 로빈(Round-Robin) 방식에 따라 순차적으로 하나씩 할당하는 스레드 블록 스케줄러.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
KR1020200153825A 2020-11-17 2020-11-17 Gpgpu의 스레드 블록 스케줄링 방법 및 장치 KR102530348B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200153825A KR102530348B1 (ko) 2020-11-17 2020-11-17 Gpgpu의 스레드 블록 스케줄링 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200153825A KR102530348B1 (ko) 2020-11-17 2020-11-17 Gpgpu의 스레드 블록 스케줄링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220067289A KR20220067289A (ko) 2022-05-24
KR102530348B1 true KR102530348B1 (ko) 2023-05-09

Family

ID=81805407

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200153825A KR102530348B1 (ko) 2020-11-17 2020-11-17 Gpgpu의 스레드 블록 스케줄링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102530348B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080103861A1 (en) 2006-04-27 2008-05-01 International Business Machines Corporation Fair share scheduling for mixed clusters with multiple resources
US20130205028A1 (en) 2012-02-07 2013-08-08 Rackspace Us, Inc. Elastic, Massively Parallel Processing Data Warehouse
US20190332420A1 (en) 2018-04-27 2019-10-31 Advanced Micro Devices, Inc. Feedback guided split workgroup dispatch for gpus

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080103861A1 (en) 2006-04-27 2008-05-01 International Business Machines Corporation Fair share scheduling for mixed clusters with multiple resources
US20130205028A1 (en) 2012-02-07 2013-08-08 Rackspace Us, Inc. Elastic, Massively Parallel Processing Data Warehouse
US20190332420A1 (en) 2018-04-27 2019-10-31 Advanced Micro Devices, Inc. Feedback guided split workgroup dispatch for gpus

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Nandita Vijaykumar, et. al."Zorua: A holistic approach to resource virtualization in GPUs".2016 49th Annual IEEE/ACM International Symposium on Microarchitecture,2016.10.15.,(제1면 내지 제14면)*
박윤주 외."GPU 작업 배치의 효율화를 위한 자원 이용률 상세 분석".한국인터넷방송통신학회논문지.Volume 19 Issue 1,2019.02.28.,(제111면 내지 제116면),<https://doi.org/10.7236/JIIBC.2019.19.1.111>*

Also Published As

Publication number Publication date
KR20220067289A (ko) 2022-05-24

Similar Documents

Publication Publication Date Title
US9965324B2 (en) Process grouping for improved cache and memory affinity
Chen et al. Accelerating mapreduce on a coupled cpu-gpu architecture
TWI533211B (zh) 用於任務排程之電腦系統,方法及電腦可讀取記錄媒體
US9804666B2 (en) Warp clustering
KR101572879B1 (ko) 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US10108458B2 (en) System and method for scheduling jobs in distributed datacenters
US10026145B2 (en) Resource sharing on shader processor of GPU
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
US9032411B2 (en) Logical extended map to demonstrate core activity including L2 and L3 cache hit and miss ratio
US8869162B2 (en) Stream processing on heterogeneous hardware devices
US20150220370A1 (en) Job scheduling apparatus and method therefor
US10558460B2 (en) General purpose register allocation in streaming processor
Kang et al. Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
Zhong et al. Towards GPU-accelerated large-scale graph processing in the cloud
Wu et al. GPU accelerated counterexample generation in LTL model checking
US20120324458A1 (en) Scheduling heterogenous computation on multithreaded processors
KR20150056373A (ko) 순차적 수행 방식의 멀티스레드 프로세싱 장치 및 방법
US11875425B2 (en) Implementing heterogeneous wavefronts on a graphics processing unit (GPU)
KR102530348B1 (ko) Gpgpu의 스레드 블록 스케줄링 방법 및 장치
KR20150101870A (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
KR102224446B1 (ko) Gpgpu 스레드 블록 스케줄링 확장 방법 및 장치
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
CN112130977B (zh) 一种任务调度方法、装置、设备及介质
KR20200114702A (ko) 긴 지연시간 숨김 기반 워프 스케줄링을 위한 방법 및 장치

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant