KR102484563B1 - 다중 작업 효율화 방법 및 장치 - Google Patents

다중 작업 효율화 방법 및 장치 Download PDF

Info

Publication number
KR102484563B1
KR102484563B1 KR1020210033642A KR20210033642A KR102484563B1 KR 102484563 B1 KR102484563 B1 KR 102484563B1 KR 1020210033642 A KR1020210033642 A KR 1020210033642A KR 20210033642 A KR20210033642 A KR 20210033642A KR 102484563 B1 KR102484563 B1 KR 102484563B1
Authority
KR
South Korea
Prior art keywords
kernel
kernels
intensive
information
gpu
Prior art date
Application number
KR1020210033642A
Other languages
English (en)
Other versions
KR20220128903A (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 KR1020210033642A priority Critical patent/KR102484563B1/ko
Publication of KR20220128903A publication Critical patent/KR20220128903A/ko
Application granted granted Critical
Publication of KR102484563B1 publication Critical patent/KR102484563B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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)
  • Electrotherapy Devices (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 명세서는 다중 작업 효율화 방법 및 장치에 관한 것이다. 본 명세서의 일 실시예에 따른 다중 작업 효율화 방법은 복수의 커널(Kernel)을 입력 받는 단계, 커널의 카테고리에 관한 정보를 포함하는 카테고리 정보를 이용하여, 복수의 커널을 정렬하는 단계, 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함하는 커널 정보 및 정렬된 복수의 커널에 기반하는 K-Scheduler 알고리즘을 이용하여, 복수의 커널 중 동시 실행할 적어도 하나의 커널을 그루핑한 복수의 그룹을 포함하는 동시실행그룹리스트를 생성하는 단계, 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 그루핑 된 적어도 하나의 커널을 GPU에 전송하여 다중 작업(Multi-tasking)을 수행하는 단계를 포함한다.

Description

다중 작업 효율화 방법 및 장치{METHOD AND APPARATUS FOR MULTI-TASKING EFFICIENCY}
본 명세서는 다중 작업 효율화 방법 및 장치에 관한 것이다.
최근 DATA CENTER 및 클라우드 환경에서 GPU 기반 infrastructure service를 제공하기 시작했다. 실제 GPGPU(General Prupose GPU) 애플리케이션은 GPU 친화적인 애플리케이션과 달리 낮은 GPU 활용도를 보인다. 이로 인해 높은 가격을 갖는 GPU의 자원 활용도를 높이기 위해 SM(Streaming Multiprocessor) 내부의 자원을 공유하며 서로 다른 애플리케이션들을 동시에 실행하는 다중 작업(Muntitasking)에 대한 요구가 발생되고 있다.
그러나, GPU 자원을 공유하는 경우 한정된 자원에 대한 자원 경쟁이 발생할 수 있어 다중 작업 시 성능 예측이 어렵다. 또한, GPU를 이용하여 실행되는 애플리케이션의 실행 단위인 커널(Kernel) 각각은 서로 다른 GPU 자원 사용량 및 서로 다른 런타임(runtime)동작을 갖는다. 따라서, 커널의 동시 실행 시 커널의 단독 실행할 때보다 작업 성능이 감소할 수도 있으므로 작업 성능의 향상을 위해 최적의 커널 조합 선택이 매우 중요하다.
그러나, 사용하는 애플리케이션의 수가 많아질수록 이러한 커널의 조합을 선택하는 것이 어려워 지며, 이러한 커널 조합 선택의 어려움에 따라 다중 작업 성능의 최적화가 이루어지지 못하므로 GPU 내부의 자원을 효율적으로 이용하지 못하게 되는 문제점이 있다.
또한, 종래의 자원 할당 방법은 애플리케이션이 단독으로 실행된 결과만을 토대로 동시 수행의 성능을 예측 하였으므로 애플리케이션의 동시 실행에서 발생할 수 있는 자원의 경쟁 정도가 고려되지 않아 이론적 성능과 실제 성능의 결과가 다른 문제점이 있다.
본 명세서의 목적은 커널의 카테고리 정보에 따라 커널을 분류함으로써 커널의 동시 수행 시 GPU 성능을 최적화할 수 있는 다중 작업 효율화 방법 및 장치를 제공하는 것이다.
또한, 본 명세서의 목적은 K-Scheduler 알고리즘을 이용하여 동시실행그룹리스트를 생성함으로써 자원 경쟁을 최소화할 수 있는 다중 작업 효율화 방법 및 장치를 제공하는 것이다.
또한, 본 명세서의 목적은 스케줄링 규칙을 통해 GPU 자원의 높은 활용도를 달성하여 전체 GPU의 성능뿐 아니라 단일 커널의 기대 성능 또한 향상시킬 수 있는 다중 작업 효율화 방법 및 장치를 제공하는 것이다.
또한 본 명세서의 목적은 커널의 동시 수행에서 발생할 수 있는 자원의 경쟁 정도를 예측함으로써 실제 성능을 최대화할 수 있는 다중 작업 효율화 방법 및 장치를 제공하는 것이다
본 명세서의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 명세서의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 명세서의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 명세서의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
본 명세서의 일 실시예에 따른 다중 작업 효율화 방법은 복수의 커널(Kernel)을 입력 받는 단계, 커널의 카테고리에 관한 정보를 포함하는 카테고리 정보를 이용하여, 복수의 커널을 정렬하는 단계, 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함하는 커널 정보 및 정렬된 복수의 커널에 기반하는 K-Scheduler 알고리즘을 이용하여, 복수의 커널 중 동시 실행할 적어도 하나의 커널을 그루핑한 복수의 그룹을 포함하는 동시실행그룹리스트를 생성하는 단계, 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 그루핑 된 적어도 하나의 커널을 GPU에 전송하여 다중 작업(Multi-tasking)을 수행하는 단계를 포함한다.
본 명세서의 일 실시예에서 커널의 카테고리 정보는 계산 집약(compute-intensive) 커널, 메모리 집약(memory-intensive) 커널, L1 캐쉬 집약(L1 cache-intensive) 커널을 포함한다.
본 명세서의 일 실시예에서 커널 정보를 이용하여 상기 복수의 커널을 정렬하는 단계는 복수의 커널을 L1 캐쉬 집약 커널, 메모리 집약 커널, 계산 집약 커널의 순서로 정렬하고, 카테고리 정보가 동일한 경우 실행 시간이 긴 커널을 우선으로 하여 상기 복수의 커널을 정렬하는 단계를 포함한다.
본 명세서의 일 실시예에서 실행 특성 정보는 EPC(Eligible warp Per Cycle)가 1보다 작은 커널은 상기 커널에 많은 양의 자원을 할당해 주어도 GPU의 처리속도가 향상되지 않는 제 1특성, 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하면 GPU의 처리속도가 향상되지 않는 제 2특성, L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 3특성, 적어도 2 이상의 메모리 집약 커널을 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 4특성 및 계산 집약 커널의 EPC가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 5특성을 포함한다.
본 명세서의 일 실시예에서 프로파일링 정보는 커널이 사용하는 GPU의 자원량에 대한 정보인 정적 프로파일링 정보 및 커널의 런타임(runtime) 정보, 실행 지연(Stall) 원인에 대한 동적 프로파일링 정보를 포함한다.
본 명세서의 일 실시예에서 K-Scheduler 알고리즘은 실행 특성 정보에 기반한 스케줄링 규칙을 포함한다.
본 명세서의 일 실시예에서 스케줄링 규칙은 정적 스케줄링 규칙 및 동적 스케줄링 규칙 중 적어도 하나를 포함하고, 정적 스케줄링 규칙은 상기 커널이 상기 GPU의 자원 제공량을 초과하여 사용될 수 없는 제1규칙 및 상기 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 상기 GPU의 공급량을 초과하여 사용될 수 없는 제 2규칙을 포함하고, 동적 스케줄링 규칙은 L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 다중 작업할 수 없는 제 3규칙, 적어도 2 이상의 메모리 집약 커널을 다중 작업을 할 수 없는 제 4규칙 및 계산 집약 커널의 EPC(Eligible warp Per Cycle)가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 다중 작업할 수 없는 제 5규칙을 포함한다.
본 명세서의 일 실시예에 따른 다중 작업 효율화 장치는 명령어를 실행하는 하나 이상의 프로세서를 포함하고, 하나의 프로세서는, 복수의 커널(Kernel)을 입력 받고, 커널의 카테고리에 관한 정보를 포함하는 카테고리 정보를 이용하여, 상기 복수의 커널을 정렬하고, 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함하는 커널 정보 및 상기 정렬된 복수의 커널에 기반하는 K-Scheduler 알고리즘을 이용하여, 상기 복수의 커널 중 동시 실행할 적어도 하나의 커널을 그루핑한 복수의 그룹을 포함하는 동시실행그룹리스트를 생성하고, 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 상기 그루핑 된 적어도 하나의 커널을 GPU에 전송하여 다중 작업(Multi-tasking)을 수행한다.
본 명세서의 일 실시예에서 커널의 카테고리 정보는 계산 집약(compute-intensive) 커널, 메모리 집약(memory-intensive) 커널, L1 캐쉬 집약(L1 cache-intensive) 커널을 포함한다.
본 명세서의 일 실시예에서 하나의 프로세서는 복수의 커널을 L1 캐쉬 집약 커널, 메모리 집약 커널, 계산 집약 커널의 순서로 정렬하고, 상기 카테고리 정보가 동일한 경우 실행 시간이 긴 커널을 우선으로 하여 상기 복수의 커널을 정렬한다.
본 명세서의 일 실시예에서 실행 특성 정보는 EPC(Eligible warp Per Cycle)가 1보다 작은 커널은 상기 커널에 많은 양의 자원을 할당해 주어도 상기 GPU의 처리속도가 향상되지 않는 제 1특성, 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하면 상기 GPU의 처리속도가 향상되지 않는 제 2특성, L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 동시 실행시 상기 GPU의 처리속도가 향상되지 않는 제 3특성, 적어도 2 이상의 메모리 집약 커널을 동시 실행시 상기 GPU의 처리속도가 향상되지 않는 제 4특성 및 계산 집약 커널의 EPC가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 동시 실행시 상기 GPU의 처리속도가 향상되지 않는 제 5특성을 포함한다.
본 명세서의 일 실시예에서 프로파일링 정보는 커널이 사용하는 GPU의 자원량에 대한 정보인 정적 프로파일링 정보 및 상기 커널의 런타임(runtime) 정보, 실행 지연(Stall) 원인에 대한 동적 프로파일링 정보를 포함한다.
본 명세서의 일 실시예에서 K-Scheduler 알고리즘은 실행 특성 정보에 기반한 스케줄링 규칙을 포함한다.
본 명세서의 일 실시예에서 스케줄링 규칙은 정적 스케줄링 규칙 및 동적 스케줄링 규칙 중 적어도 하나를 포함하고, 정적 스케줄링 규칙은 상기 커널이 상기 GPU의 자원 제공량을 초과하여 사용될 수 없는 제1규칙 및 상기 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하여 사용될 수 없는 제 2규칙을 포함하고, 동적 스케줄링 규칙은 L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 다중 작업할 수 없는 제 3규칙, 적어도 2 이상의 메모리 집약 커널을 다중 작업을 할 수 없는 제 4규칙 및 계산 집약 커널의 EPC(Eligible warp Per Cycle)가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 다중 작업할 수 없는 제 5규칙을 포함한다.
본 명세서의 일 실시예에 따른 다중 작업 효율화 방법 및 장치는 커널의 카테고리 정보에 따라 커널을 분류함으로써 커널의 동시 수행시 GPU 성능을 최적화할 수 있다.
또한, 본 명세서의 일 실시예에 따른 다중 작업 효율화 방법 및 장치는 K-Scheduler 알고리즘을 이용하여 동시실행그룹리스트를 생성함으로써 자원 경쟁을 최소화할 수 있다.
또한, 본 명세서의 일 실시예 따른 다중 작업 효율화 장치는 스케줄링 규칙을 통해 GPU 자원의 높은 활용도를 달성하여 전체 GPU의 성능뿐 아니라 단일 커널의 기대 성능 또한 향상시킬 수 있다.
또한, 본 명세서의 일 실시예에 따른 다중 작업 효율화 방법 및 장치는 커널의 동시 수행에서 발생할 수 있는 자원의 경쟁 정도를 예측함으로써 실제 성능을 최대화할 수 있다.
도 1은 본 명세서의 일 실시예에 따른 다중 작업 효율화 장치를 포함하는 K-Scheduler 기반 시스템(1)의 블록도이다.
도 2 내지 도 6은 본 명세서의 일 실시예에서 커널의 실행 특성 정보를 산출하는 과정을 나타낸 도면이다.
도 7은 본 명세서의 일 실시예에서 K-Scheduler 알고리즘을 나타낸 도면이다.
도 8은 제3 규칙 내지 제 5규칙을 판단하는 알고리즘을 나타낸 도면이다.
도 9는 본 명세서의 일 실시예에서 다중 작업 효율화 장치가 동시실행그룹리스트를 생성하는 방법을 나타낸 도면이다.
도 10은 본 명세서의 일 실시예에 따른 다중 작업 효율화 방법의 순서도이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자가 본 명세서의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 명세서를 설명함에 있어서 본 명세서와 관련된 공지 기술에 대한 구체적인 설명이 본 명세서의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 명세서에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되며, 이에 따라 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자가 본 명세서의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 명세서를 설명함에 있어서 본 명세서와 관련된 공지 기술에 대한 구체적인 설명이 본 명세서의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 이하, 첨부된 도면을 참조하여 본 명세서에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조 부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
도 1은 본 명세서의 일 실시예에 따른 다중 작업 효율화 장치를 포함하는 K-Scheduler 기반 시스템(1)의 블록도이다. 본 명세서의 일 실시예에서 K-Scheduler 기반 시스템은 프로파일러(100), 커널 분류기(200), 다중 작업 효율화 장치(300) 및 GPU(400)를 포함한다.
프로파일러(profiler,100)는 복수의 커널(10)이 시스템(1)에 입력되면 입력된 복수의 커널(Kernel)을 분석하여 프로파일링 정보를 생성한다. 프로파일러(100)는 커널 또는 애플리케이션의 성능 등을 분석하는 도구로써 분석을 통해 어느 부분에서 커널의 성능 저하가 발생하는지를 확인할 수 있다.
구체적으로, 프로파일러는 커널의 어느 부분에서 실행 지연이 일어나는지 분석하기 위해 정적 프로파일링 및 동적 프로파일링을 모두 수행하는데, 이에 따라 생성된 프로파일링 정보는 정적 프로파일러(예컨대, NVIDIA CUDA Compiler)로부터 획득된 정적 프로파일링 정보 및 동적 프로파일러(예컨대, NVProf)로부터 획득된 동적 프로파일링 정보를 포함할 수 있다. 정적 프로파일링 정보는 GPU의 자원량에 대한 정보인 SM에 포함된 레지스터의 크기, Shared momory(L1 Cache)의 크기 및 TB(Tread Block)의 수에 대한 정보를 포함할 수 있고, 동적 프로파일링 정보는 커널의 런타임(runtime) 정보 및 실행 지연(Stall) 원인 정보를 포함할 수 있다. 따라서, 이러한 프로파일링 정보를 통해 커널의 어느 부분에서 실행 지연이 발생하는지 판단할 수 있다.
커널 분류기(Kernel Classifier,200)는 프로파일러(100)로부터 생성된 프로파일링 정보를 획득하고, 획득한 프로파일링 정보에 기초하여 입력된 커널(예를 들어, K1)을 카테고리 정보(210)에 따라 분류한다.
이때, 카테고리 정보(210)는 계산 집약(compute-intensive) 커널, 메모리 집약(memory-intensive) 커널, L1 캐쉬 집약(L1 cache-intensive) 커널을 포함할 수 있고, 이러한 카테고리의 분류는 커널의 실행 지연(Stall) 원인을 기준으로 하여 설정될 수 있다. 즉 커널의 실행 지연 원인이 어디에서 발생 하느냐에 따라 카테고리가 분류된다.
커널 분류기(200)는 입력된 커널(K1)의 프로파일링 정보에 포함된 실행 지연 정보가 캐쉬인 경우 카테고리 정보(210)에 따라 입력된 커널(K1)을 L1 캐쉬 집약 커널로 분류하고, 입력된 커널(K1)의 프로파일링 정보에 포함된 실행 지연 정보가 메모리인 경우 커널(K1)을 메모리 집약 커널로 분류하고, 입력된 커널(K1)의 프로파일링 정보에 포함된 실행 지연 정보가 계산인 경우 커널(K1)을 계산 집약 커널로 분류한다. 이러한 분류 작업을 통해 후술할 바와 같이 다중 작업 효율화 장치(300)는 복수의 커널을 손쉽게 정렬할 수 있어 다중 작업의 효율화가 가능하다.
다중 작업 효율화 장치(300)는 커널 분류기(200)에 의해 분류된 복수의 커널을 정렬하고, K-Scheduler 알고리즘을 이용하여 다중 작업 수행을 위한 동시실행그룹리스트를 생성한다. 이후, 생성된 동시실행그룹리스트는 GPU(400)에 전송되어 다중 작업(Multi-tasking)이 수행된다.
구체적으로, 다중 작업 효율화 장치(300)는 카테고리 정보(210), 커널의 실행 특성 정보(220) 및 K-Scheduler 알고리즘에 포함된 스케줄링 규칙(230)에 기반하여 동시실행그룹리스트를 생성한다. 다중 작업 효율화 장치(300)가 입력 커널 로부터 동시실행그룹리스트를 생성하는 방법은 후술하여 상세히 설명한다.
도 2 내지 도 6은 본 명세서의 일 실시예에서 커널의 실행 특성 정보를 산출하는 과정을 나타낸 도면이다. 이하 도 2 내지 도 6을 참조하여 산출된 커널의 실행 특성 정보 및 실행 특성 정보로부터 산출된 스케줄링 규칙에 대해 설명하도록 한다.
커널의 실행 특성 정보는 커널의 실행 특성은 커널 각각이 개별적으로 실행될 때의 특성 및 다수의 커널이 동시 수행될 때의 특성에 기초하여 산출될 수 있고, 커널의 실행 특성은 다섯 가지의 특성을 포함할 수 있다.
구체적으로, 커널의 실행 특성은 사이클 당 명령을 실행하는 warp의 수인EPC(Eligible warp Per Cycle)가 1보다 작은 커널은 커널에 많은 양의 자원을 할당해 주어도 GPU의 처리속도가 향상되지 않는 제1 특성, 커널의 누적 memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하면 GPU의 처리속도가 향상되지 않는 제 2특성, L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 동시 실행시 GPU의 처리속도가 향상되지 않는 제 3특성, 적어도 2 이상의 메모리 집약 커널을 동시 실행시 GPU의 처리속도가 향상되지 않는 제 4특성 및 계산 집약 커널의 EPC가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 동시 실행시 GPU의 처리속도가 향상되지 않는 제 5특성을 포함할 수 있다.
제1 특성과 관련하여 도 2를 참조하면, 도 2의 (a) 및 (b)는 모두 같은 계산 집약 커널이다. 그러나 (a)의 경우 EPC가 1보다 작은 0.17의 크기를 가지며 (b)의 경우 EPC가 1보다 큰 5.67의 크기를 갖는다.
이에 따라 (a)의 경우 30SM-1TB, 30SM-2TB, 30SM-4TB의 자원을 할당해 주었을 때 각각의 커널 수행 시간은 64ms, 58ms, 58ms 이다. 반면, (b)의 경우 30SM-1TB, 30SM-2TB, 30SM-4TB의 자원을 할당해 주었을 때 각각의 커널 수행 시간은 237ms, 123.974ms, 69ms 로 성능이 향상됨을 확인할 수 있다.
즉, EPC가 작은 커널은 GPU에서 많은 정적 자원(TB)을 할당해주어도 성능향상이 없다. EPC가 작을수록 실행 지연(stall)이 많이 발생하기 때문이다. 이러한 결과에 따라 제 1특성이 산출된다.
제 2특성과 관련하여 도 3을 참조하면, GPU마다 가용 가능한 memory bandwidth(메모리 대역폭) 및 계산량(FLOPS; FLoating point Operations Per Second)이 존재한다. 예를 들어, 도 3의 (c)에서 GPU의 메모리 대역폭은 547.6GB/s bandwidth를 갖는다. 이때 하나의 커널을 실행 시 266GB/s 의 bandwidth를 사용하므로 2개의 커널 실행 시 547.6GB/s를 초과하지 않아 커널 수행 시간이 지연되지 않지만, 3개의 커널 실행 시 대역폭이 547.6GB/s를 초과하므로 커널 수행 시간이 대폭 증가한다(50ms이상).
마찬가지로 도 3의 (d)에서 GPU의 가용 가능한 계산량 (FLOPS)은 379.7 GFLOPS이며 하나의 커널이 사용될 때마다 184.4948 GFLOPS가 사용되므로 379.7 GFLOPS가 초과하는 3개의 커널을 동시 사용할 때 커널 수행 시간이 대폭 증가한다(100ms이상). 이러한 결과에 따라 제 2특성이 산출된다.
제 3특성과 관련하여 도 4를 참조하면, L1 캐쉬 집약 커널인 LBM의 경우 L1 캐쉬 트랜잭션이 0에 가까운 QS를 제외한 나머지 커널 대부분은 LBM을 단독으로 실행했을 때(검은 선)보다 더 낮은 성능을 보였다. 이러한 결과에 따라 L1 캐쉬를 적게 사용하는 커널과 동시 수행할 때만 동시 수행 이득을 기대할 수 있다는 제 3특성이 산출된다.
제 4특성과 관련하여 도 5를 참조하면, 도 5에 도시된 HS, RD, NW, SY, STENCIL, SPMV, NW는 모두 메모리 집약 커널이다. 메모리 집약 커널 간 동시 수행 시 메모리 집약 커널을 단독 수행했을 때(붉은 선) 보다 더 낮은 성능을 보였다. 이러한 결과에 따라 GPU가 제공하는 bandwidth를 초과하지 않더라도 메모리 집약 커널 간 동시 수행 시 성능 향상이 없다는 제 4특성이 산출된다.
제 5특성과 관련하여 도 6을 참조하면, 도 6은 계산 집약 커널 간의 동시 수행 결과에 따른 커널 실행 특성을 나타낸다. 도 6의 (e)는 계산 집약 커널인 FDTD와 동시 수행되는 다른 계산 집약 커널과의 성능 실험 결과이고, (f)는 계산 집약 커널인 CUTCP와 동시 수행되는 다른 계산 집약 커널과의 성능 실험 결과이다.
(e)의 FDTD의 경우 EPC가 1보다 작아 FDTD와 동시 수행되는 경우 모두 성능 향상을 보인다. 반면, (f)의 CUTCP의 경우 EPC가 1보다 매우 커, LavaMD 및 CUTCP를 제외한 나머지 커널과의 동시 수행 시 성능 향상을 보이지 못한다.
동시 수행되는 커널 모두의 EPC가 크다면 동시 수행을 통해 감소할 실행 지연(Stall)이 많지 않으므로 성능 향상을 보이지 못하는 것이다. 이에 따라 계산 집약 커널의 EPC가 미리 설정된 임계값 보다 큰 적어도 2 이상의 계산 집약 커널을 동시 실행 시 GPU의 처리속도가 향상되지 않는 제 5특성이 산출된다. EPC의 미리 설정된 임계값은 예를 들어, 1일 수 있다.
한편, 스케줄링 규칙(230)은 K-Scheduler 알고리즘내에서 복수의 커널을 그루핑하여 동시실행그룹리스트를 생성할 때 적용되는 규칙으로, 상술한 커널의 실행 특성에 기반하여 산출된다. 또한, 스케줄링 규칙(230)은 정적 스케줄링 규칙 및 동적 스케줄링 규칙을 포함한다.
보다 상세하게, 정적 스케줄링 규칙은 커널이 GPU의 자원 제공량을 초과하여 사용될 수 없는 제1규칙 및 커널의 누적 memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 하드웨어의 공급량을 초과하여 사용될 수 없는 제 2규칙을 포함하고, 동적 스케줄링 규칙은 L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 다중 작업할 수 없는 제 3규칙, 적어도 2 이상의 메모리 집약 커널을 다중 작업을 할 수 없는 제 4규칙 및 계산 집약 커널의 EPC(Eligible warp Per Cycle)가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 다중 작업할 수 없는 제 5규칙을 포함한다.
이와 같이 스케줄링 규칙(230)은 커널의 실행 특성에 기반하여 산출된 바, 스케줄링 규칙을 통해 생성된 동시실행그룹리스트에 포함된 커널은 자원 경쟁을 최소화함으로써 효율적인 다중 작업이 수행될 수 있는 효과를 갖는다.
도 7은 본 명세서의 일 실시예에서 K-Scheduler 알고리즘을 나타낸 도면이고, 도 8은 제3 규칙 내지 제 5규칙을 판단하는 알고리즘을 나타낸 도면이고, 도 9는 본 명세서의 일 실시예에서 다중 작업 효율화 장치가 동시실행그룹리스트를 생성하는 방법을 나타낸 도면이다. 이하, 도 7 내지 도 9를 참조하여 설명하도록 한다.
도 7을 참조하면 먼저, K-Scheduler 알고리즘은 커널 정보에 기반하여 이루어지고, 커널 정보는 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함한다.
즉, 복수의 커널(10)의 프로파일링 정보로부터 각 커널의 카테고리가 결정되고, K-Scheduler 알고리즘에 사용되는 스케줄링 규칙은 커널의 실행 특성 정보에 기반하므로 K-Scheduler 알고리즘은 커널 정보에 기반하여 이루어진다.
커널 분류기(200)에 의해 분류가 완료된 복수의 커널(K1, K2, ...,Kk)이 입력으로 들어오면(line 1), 다중 작업 효율화 장치(300)는 커널의 카테고리에 관한 정보를 포함하는 카테고리 정보(210)를 이용하여 입력으로 들어온 복수의 커널을 정렬한다(line 2).
구체적으로 다중 작업 효율화 장치(300)는 복수의 커널(K1, K2, ...,Kk)을 L1 캐쉬 집약 커널, 메모리 집약 커널, 계산 집약 커널의 순서로 정렬하고, 카테고리 정보(210)가 동일한 경우 실행 시간이 긴 커널을 우선순위로 하여 복수의 커널을 정렬한다.
정렬된 복수의 커널(SK1, SK2, ...,SKk)은 정렬리스트(SK_List)에 저장되며, 다중 작업 효율화 장치(300)는 정렬리스트에 존재하는 커널이 없을 때까지 반복하여 동시 수행할 커널의 조합을 찾는다(line 3).
즉, 다중 작업 효율화 장치(300)는 커널의 실행 특성 정보에 기반한 스케줄링 규칙을 통해 동시 수행할 커널의 조합을 그루핑한다. 다시 말해, 다중 작업 효율화 장치(300)는 정렬리스트에 존재하는 커널(SK1, SK2, ...,SKk)을 대상으로 스케줄링 규칙을 만족하는지 여부를 확인하고, 스케줄링 규칙을 만족하는 커널의 조합을 그룹화한다(line 5-9).
이와 같이 그룹화된 각각의 그룹(CK)은 동시 수행할 적어도 하나의 커널을 포함하며, 각각의 그룹이 순차적으로 실행되도록 동시실행그룹리스트 (CK_List)에 추가되며 동시 실행그룹리스트가 생성된다(line 10).
한편, 정렬리스트에 존재하는 커널이 스케줄링 규칙을 만족하는지는 하기의 식을 기준으로 판단한다.
먼저, 제1 규칙과 관련하여,
<식 1>
Figure 112021030449344-pat00001
<식 2>
Figure 112021030449344-pat00002
<식 3>
Figure 112021030449344-pat00003
다중 작업 효율화 장치(300)는 상기의 식 1을 통해 현재까지 선택된 커널이 요청한 레지스터의 개수의 합과 Ki가 요청한 레지스터 개수의 합이 현재 GPU가 제공할 수 있는 최대 레지스터 개수인 MAXREG를 초과하지 않는지 확인하고, 식 2를 통해 현재까지 선택된 커널의 공유 메모리(shared memory)의 크기 합과 Ki가 사용하는 공유 메모리 크기의 합이 현재 GPU가 제공할 수 있는 공유 메모리의 크기인 MAXSMEM를 초과하지 않는지 확인하고, 식 3을 통해 그룹에 포함된 커널들의 지정된 thread block 개수의 합과 Ki의 지정된 thread block 개수를 합한 것이 GPU가 제공할 수 있는 thread block의 최대 개수인 MAXTB미만인지 확인하여 정렬리스트에 존재하는 커널이 스케줄링 규칙을 만족하는지 판단할 수 있다.
제2 규칙과 관련하여,
<식 4>
Figure 112021030449344-pat00004
<식 5>
Figure 112021030449344-pat00005
다중 작업 효율화 장치(300)는 상기의 식 4를 통해 현재까지 선택된 커널의 bandwidth 요구량을 합한 값과 Ki를 수행하는데 필요한 bandwidth 요구량의 합이 현재 GPU가 제공할 수 있는 최대 bandwidth인 MAXBW를 초과하지 않는지 확인하고, 식 5를 통해 현재까지 선택된 커널의 요구 계산 성능의 합이 현재 GPU가 제공할 수 있는 GFLOPS 공급량인 MAXGFLOPS를 초과하지 않는지 확인하여 정렬리스트에 존재하는 커널이 스케줄링 규칙을 만족하는지 판단할 수 있다.
제3 규칙 내지 제 5규칙과 관련하여 다중 작업 효율화 장치(300)는 도 8에 도시된 바와 같이 카테고리 정보에 기반하여 L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 동시 실행되었는지 여부, 적어도 2 이상의 메모리 집약 커널이 동시 실행되었는지 여부 및 계산 집약 커널의 EPC가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널이 동시 실행되었는지 여부를 확인함으로써 정렬리스트에 존재하는 커널이 스케줄링 규칙을 만족하는지 판단할 수 있다.
이와 같이 본 명세서의 일 실시예 따른 다중 작업 효율화 장치는 스케줄링 규칙을 통해 GPU 자원의 높은 활용도를 달성하여 전체 GPU의 성능뿐 아니라 단일 커널의 기대 성능 또한 향상시킬 수 있다.
도 9를 참조하면, 다중 작업 효율화 장치(300)에 입력(Workload)으로 들어온 복수의 커널(K0, K1, K2, K3, K4, K5)는 K-Scheduler 알고리즘을 통해 CK1, CK2, CK3의 그룹으로 그룹화 되었다.
여기서 생성된 동시실행그룹리스트는 (CK_List = CK1, CK2, CK3)이며, CK1, CK2, CK3 각각은 적어도 하나의 커널 {K0, K3, K5}, {K2, K4}, {K1}을 포함한다. 하나의 그룹에 포함된 커널은 모두 동시 수행되며 CK1, CK2, CK3 그룹 순서대로 순차적으로 실행된다.
즉, 다중 작업 효율화 장치(300)는 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 그루핑 된 적어도 하나의 커널을 GPU에 전송하면 GPU(400)에서는 전송된 커널의 다중 작업(Multi-tasking)을 수행한다.
도 10은 본 명세서의 일 실시예에 따른 다중 작업 효율화 방법의 순서도이다.
도면을 참조하면, 다중 작업 효율화 방법은 복수의 커널(Kernel)을 입력 받으면(S110), 커널의 카테고리에 관한 정보를 포함하는 카테고리 정보를 이용하여, 상기 복수의 커널을 정렬한다(S120)
또한, 다중 작업 효율화 방법은 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함하는 커널 정보 및 상기 정렬된 복수의 커널에 기반하는 K-Scheduler 알고리즘을 이용하여, 상기 복수의 커널 중 동시 실행할 적어도 하나의 커널을 그루핑한 복수의 그룹을 포함하는 동시실행그룹리스트를 생성한다(S130).
이후, 다중 작업 효율화 방법은 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 상기 그루핑 된 적어도 하나의 커널을 GPU에 전송하여 다중 작업(Multi-tasking)을 수행한다.
이상과 같이 본 발명에 대해서 예시한 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시 예와 도면에 의해 본 발명이 한정되는 것은 아니며, 본 발명의 기술사상의 범위 내에서 통상의 기술자에 의해 다양한 변형이 이루어질 수 있음은 자명하다. 아울러 앞서 본 발명의 실시 예를 설명하면서 본 발명의 구성에 따른 작용 효과를 명시적으로 기재하여 설명하지 않았을지라도, 해당 구성에 의해 예측 가능한 효과 또한 인정되어야 함은 당연하다.

Claims (14)

  1. 명령어를 실행하는 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서에 의한 다중 작업 효율화 방법에 있어서,
    상기 하나 이상의 프로세서로 복수의 커널(Kernel)을 입력 받는 단계;
    상기 하나 이상의 프로세서는 커널의 카테고리에 관한 정보를 포함하는 카테고리 정보를 이용하여, 상기 복수의 커널을 정렬하는 단계;
    상기 하나 이상의 프로세서는 상기 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함하는 커널 정보 및 상기 정렬된 복수의 커널에 기반하는 K-Scheduler 알고리즘을 이용하여, 상기 복수의 커널 중 동시 실행할 적어도 하나의 커널을 그루핑한 복수의 그룹을 포함하는 동시실행그룹리스트를 생성하는 단계; 및
    상기 하나 이상의 프로세서는 상기 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 상기 그루핑 된 적어도 하나의 커널을 GPU에 전송하여 다중 작업(Multi-tasking)을 수행하는 단계를 포함하는
    다중 작업 효율화 방법.
  2. 제1항에 있어서,
    상기 커널의 카테고리 정보는
    계산 집약(compute-intensive) 커널, 메모리 집약(memory-intensive) 커널, L1 캐쉬 집약(L1 cache-intensive) 커널을 포함하는
    다중 작업 효율화 방법.
  3. 제2항에 있어서,
    상기 커널 정보를 이용하여 상기 복수의 커널을 정렬하는 단계는
    상기 복수의 커널을 L1 캐쉬 집약 커널, 메모리 집약 커널, 계산 집약 커널의 순서로 정렬하고, 상기 카테고리 정보가 동일한 경우 실행 시간이 긴 커널을 우선으로 하여 상기 복수의 커널을 정렬하는 단계를 포함하는
    다중 작업 효율화 방법.
  4. 제1항에 있어서,
    상기 실행 특성 정보는
    EPC(Eligible warp Per Cycle)가 1보다 작은 커널은 상기 커널에 많은 양의 자원을 할당해 주어도 상기 GPU의 처리속도가 향상되지 않는 제 1특성,
    상기 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하면 상기 GPU의 처리속도가 향상되지 않는 제 2특성,
    L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 동시 실행시 상기 GPU의 처리속도가 향상되지 않는 제 3특성,
    적어도 2 이상의 메모리 집약 커널을 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 4특성 및
    계산 집약 커널의 EPC가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 5특성을 포함하는
    다중 작업 효율화 방법.
  5. 제1항에 있어서,
    상기 프로파일링 정보는
    상기 커널이 사용하는 GPU의 자원량에 대한 정보인 정적 프로파일링 정보 및 상기 커널의 런타임(runtime) 정보, 실행 지연(Stall) 원인에 대한 동적 프로파일링 정보를 포함하는
    다중 작업 효율화 방법.
  6. 제1항에 있어서,
    상기 K-Scheduler 알고리즘은
    상기 실행 특성 정보에 기반한 스케줄링 규칙을 포함하는
    다중 작업 효율화 방법.
  7. 제6항에 있어서,
    상기 스케줄링 규칙은
    정적 스케줄링 규칙 및 동적 스케줄링 규칙 중 적어도 하나를 포함하고,
    상기 정적 스케줄링 규칙은 상기 커널이 상기 GPU의 자원 제공량을 초과하여 사용될 수 없는 제1규칙 및 상기 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 상기 GPU의 공급량을 초과하여 사용될 수 없는 제 2규칙을 포함하고,
    상기 동적 스케줄링 규칙은 L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 다중 작업할 수 없는 제 3규칙, 적어도 2 이상의 메모리 집약 커널을 다중 작업을 할 수 없는 제 4규칙 및 계산 집약 커널의 EPC(Eligible warp Per Cycle)가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 다중 작업할 수 없는 제 5규칙을 포함하는
    다중 작업 효율화 방법.
  8. 명령어를 실행하는 하나 이상의 프로세서를 포함하고,
    상기 하나 이상의 프로세서는,
    복수의 커널(Kernel)을 입력 받고,
    커널의 카테고리에 관한 정보를 포함하는 카테고리 정보를 이용하여, 상기 복수의 커널을 정렬하고,
    상기 카테고리 정보, 커널의 실행 특성 정보, 프로파일링 정보를 포함하는 커널 정보 및 상기 정렬된 복수의 커널에 기반하는 K-Scheduler 알고리즘을 이용하여, 상기 복수의 커널 중 동시 실행할 적어도 하나의 커널을 그루핑한 복수의 그룹을 포함하는 동시실행그룹리스트를 생성하고,
    상기 동시실행그룹리스트에 포함된 각각의 그룹에 대하여, 상기 그루핑 된 적어도 하나의 커널을 GPU에 전송하여 다중 작업(Multi-tasking)을 수행하는
    다중 작업 효율화 장치.
  9. 제8항에 있어서,
    상기 커널의 카테고리 정보는
    계산 집약(compute-intensive) 커널, 메모리 집약(memory-intensive) 커널, L1 캐쉬 집약(L1 cache-intensive) 커널을 포함하는
    다중 작업 효율화 장치.
  10. 제9항에 있어서,
    상기 하나의 프로세서는,
    상기 복수의 커널을 L1 캐쉬 집약 커널, 메모리 집약 커널, 계산 집약 커널의 순서로 정렬하고, 상기 카테고리 정보가 동일한 경우 실행 시간이 긴 커널을 우선으로 하여 상기 복수의 커널을 정렬하는
    다중 작업 효율화 장치.
  11. 제8항에 있어서,
    상기 실행 특성 정보는
    EPC(Eligible warp Per Cycle)가 1보다 작은 커널은 상기 커널에 많은 양의 자원을 할당해 주어도 상기 GPU의 처리속도가 향상되지 않는 제 1특성,
    상기 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하면 상기 GPU의 처리속도가 향상되지 않는 제 2특성,
    L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 3특성,
    적어도 2 이상의 메모리 집약 커널을 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 4특성 및
    계산 집약 커널의 EPC가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 동시 실행 시 상기 GPU의 처리속도가 향상되지 않는 제 5특성을 포함하는
    다중 작업 효율화 장치.
  12. 제8항에 있어서,
    상기 프로파일링 정보는
    상기 커널이 사용하는 GPU의 자원량에 대한 정보인 정적 프로파일링 정보 및 상기 커널의 런타임(runtime) 정보, 실행 지연(Stall) 원인에 대한 동적 프로파일링 정보를 포함하는
    다중 작업 효율화 장치.
  13. 제8항에 있어서,
    상기 K-Scheduler 알고리즘은
    상기 실행 특성 정보에 기반한 스케줄링 규칙을 포함하는
    다중 작업 효율화 장치.
  14. 제13항에 있어서,
    상기 스케줄링 규칙은
    정적 스케줄링 규칙 및 동적 스케줄링 규칙 중 적어도 하나를 포함하고,
    상기 정적 스케줄링 규칙은 상기 커널이 상기 GPU의 자원 제공량을 초과하여 사용될 수 없는 제1규칙 및 상기 커널의 누적 Memory bandwidth 사용량 및 계산량 (FLOPS; FLoating point Operations Per Second)이 GPU의 공급량을 초과하여 사용될 수 없는 제 2규칙을 포함하고,
    상기 동적 스케줄링 규칙은 L1 캐쉬 집약 커널의 경우 미리 설정된 L1 캐쉬 트랜잭션 수를 초과하는 다른 커널과 다중 작업할 수 없는 제 3규칙, 적어도 2 이상의 메모리 집약 커널을 다중 작업을 할 수 없는 제 4규칙 및 계산 집약 커널의 EPC(Eligible warp Per Cycle)가 미리 설정된 임계값(Base threshold)보다 큰 적어도 2 이상의 계산 집약 커널을 다중 작업할 수 없는 제 5규칙을 포함하는
    다중 작업 효율화 장치.
KR1020210033642A 2021-03-15 2021-03-15 다중 작업 효율화 방법 및 장치 KR102484563B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210033642A KR102484563B1 (ko) 2021-03-15 2021-03-15 다중 작업 효율화 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210033642A KR102484563B1 (ko) 2021-03-15 2021-03-15 다중 작업 효율화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220128903A KR20220128903A (ko) 2022-09-22
KR102484563B1 true KR102484563B1 (ko) 2023-01-04

Family

ID=83445564

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210033642A KR102484563B1 (ko) 2021-03-15 2021-03-15 다중 작업 효율화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102484563B1 (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
KR20160003502A (ko) * 2014-07-01 2016-01-11 삼성전자주식회사 병렬화 방법 및 전자 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김세진 외 3명. GPU 상에서 응용의 실행 특성에 따른 멀티태스킹 성능 분석. 2020.12.
오지선 외 3명. 응용 프로파일링 정보에 따른 GPU 작업 컨테이너 실행 전략. 2019.06.

Also Published As

Publication number Publication date
KR20220128903A (ko) 2022-09-22

Similar Documents

Publication Publication Date Title
KR101286700B1 (ko) 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
Rogers et al. Cache-conscious wavefront scheduling
US8132172B2 (en) Thread scheduling on multiprocessor systems
Kang et al. Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks
Zhang et al. The real-time scheduling strategy based on traffic and load balancing in storm
Pathania et al. Optimal greedy algorithm for many-core scheduling
Zhang et al. Toward qos-awareness and improved utilization of spatial multitasking gpus
CN111045800A (zh) 一种基于短作业优先的优化gpu性能的方法及系统
Huangfu et al. Static WCET analysis of GPUs with predictable warp scheduling
KR20120083000A (ko) 병렬 제어 모듈을 동적으로 할당하는 방법
KR102484563B1 (ko) 다중 작업 효율화 방법 및 장치
Blanche et al. Terrible twins: A simple scheme to avoid bad co-schedules
Tsog et al. Static allocation of parallel tasks to improve schedulability in cpu-gpu heterogeneous real-time systems
KR102210765B1 (ko) 긴 지연시간 숨김 기반 워프 스케줄링을 위한 방법 및 장치
Kundan et al. Priority-aware scheduling under shared-resource contention on chip multicore processors
Weinberg et al. User-guided symbiotic space-sharing of real workloads
Chen et al. Opara: Exploiting Operator Parallelism for Expediting DNN Inference on GPUs
Weng et al. Raise: Efficient gpu resource management via hybrid scheduling
Singla et al. Task Scheduling Algorithms for Grid Computing with Static Jobs: A Review
Farooqui et al. Accelerating graph applications on integrated GPU platforms via instrumentation-driven optimizations
Anderson et al. Multicore scheduling based on learning from optimization models
CN104111868A (zh) 一种推测多线程调度方法及装置
Agarwal et al. Parallel Implementation of Scheduling Algorithms on GPU using CUDA
Kim et al. K-Scheduler: dynamic intra-SM multitasking management with execution profiles on GPUs
Choo et al. Contention-Aware Selective Caching to Mitigate Intra-Warp Contention on GPUs

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right