KR102003721B1 - Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치 - Google Patents

Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치 Download PDF

Info

Publication number
KR102003721B1
KR102003721B1 KR1020180003473A KR20180003473A KR102003721B1 KR 102003721 B1 KR102003721 B1 KR 102003721B1 KR 1020180003473 A KR1020180003473 A KR 1020180003473A KR 20180003473 A KR20180003473 A KR 20180003473A KR 102003721 B1 KR102003721 B1 KR 102003721B1
Authority
KR
South Korea
Prior art keywords
kernel
state
execution
gpu
snapshot
Prior art date
Application number
KR1020180003473A
Other languages
English (en)
Other versions
KR20190085391A (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 KR1020180003473A priority Critical patent/KR102003721B1/ko
Publication of KR20190085391A publication Critical patent/KR20190085391A/ko
Application granted granted Critical
Publication of KR102003721B1 publication Critical patent/KR102003721B1/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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

컴퓨팅 장치가 개시된다. 본 발명의 컴퓨팅 장치는, 적어도 하나의 그래픽 프로세싱 명령을 발행하는 CPU(Central Processing Unit), 상기 적어도 하나의 그래픽 명령을 실행하는 GPU(Graphic Processing Unit), 및 데이터를 저장하는 메모리를 포함하며, 상기 GPU는, 제 1 커널의 수행 상태에 따른 중단 명령을 인가하고, 제 2 커널을 실행하고, 및 우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행한다.

Description

GPU 커널 트랜잭션화 방법 및 컴퓨팅 장치{GPU Kernel transactionization method and computing device}
본 발명은 GPU(Graphic Procsssing Unit) 프로세싱에 있어서, GPU 커널의 우선 순위를 보장하기 위해 실행중인 GPU 커널의 즉각 중단 및 중단된 커널을 재실행할 수 있는 GPU 커널 트랜잭션화(transactionization) 방법 및 이를 수행하는 컴퓨팅 장치에 대한 것이다.
컴퓨팅 디바이스는 범용 병렬 연산을 수행하기 위해 그래픽 프로세싱 유닛(GPU)을 사용할 수 있다. GPU는 그래픽 프로세싱뿐만 아니라 간단한 연산을 수행이 가능한 다수의 코어를 통해 범용 병렬 연산(General Purpose GPU, GPGPU)을 수행할 수 있다. 호스트 중앙 처리 유닛(Central Processing Unit)은 하나 이상의 병렬 연산 명령들을 GPU에 발행함으로써 GPU의 동작을 제어할 수 있다.
하드웨어 제약으로 인해 GPU에서는 선점 기능을 지원하기 어렵다. 또한, GPU는 선점 스케줄링을 지원하지 않아 우선 순위의 역전 현상이 발생할 수 있다. GPU는 일반적으로 실행중단(abort) 명령을 제공하지만, 중단 명령으로 커널의 실행을 중단하면 애플리케이션 전체의 실행이 중단되고 처음부터 다시 실행되어야 한다.
하나의 애플리케이션은 일반적으로 다수의 GPU 커널을 순차적으로 실행하며, 각각의 커널은 이전 수행 커널의 결과에 의존성(dependency)을 갖을 수 있다. 따라서, 실행 중인 커널을 실행중단하면, 기존 수행 컨텍스트에서 입력 데이터의 변화가 발생한 경우 중단된 커널을 다시 실행할 수 없고, 그로 인해 모든 커널을 처음부터 다시 실행해야 하는 사태가 발생한다.
상술한 기술적 과제를 해결하기 위하여, GPU 커널 트랜잭션화 방법이 개시된다. 본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법은, 제 1 커널의 수행 상태에 따른 중단 명령을 인가하는 단계로서, 커널의 수행 상태는 POOL 상태 및 SLOT 상태를 포함하며, POOL 상태는 커널이 요청되어 대기중인 상태를 나타내고, SLOT 상태는 스냅샷이 생성되는 SNAP 상태, 커널이 실행되는 RUN 상태 및 실행이 끝난 DONE 상태를 포함하는, 인가 단계; 제 2 커널을 실행하는 단계; 및 우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행하는 단계를 포함한다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법은, 상기 제 1 커널의 수행 상태가 상기 SNAP 상태인 경우, 상기 중단 명령에 따라서 스냅샷 프로세스를 종료하거나, 또는, 상기 제 1 커널의 수행 상태가 상기 RUN 상태인 경우, 상기 제 1 커널의 실행을 중단하는 단계를 더 포함한다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법은, 상기 제 1 커널의 수행 상태가 상기 SNAP 상태 또는 상기 RUN 상태인 경우, 상기 제 1 커널의 수행 상태를 선점을 위한 롤백 프로세싱을 필요함을 나타내는 P-SNAP 상태 또는 P-RUN 상태로 전환하는 단계를 더 포함한다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법은, 상기 제 1 커널의 수행 상태가 상기 P-SNAP 상태 또는 상기 P-RUN 상태로 전환된 경우, 상기 제 1 커널을 재수행을 위해 작업풀(run-pool)에 재삽입하는 단계를 더 포함한다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법에 있어서, 상기 제 2 커널 종료 후에 실행되는 제 3 커널은 상기 제 1 커널에 해당하거나 상기 제 1 커널보다 우선 순위가 높은 다른 커널에 해당할 수 있다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법은, 상기 제 2 커널 종료 후 실행되는 제 3 커널의 상태가 상기 P-SNAP 상태인 경우, 스냅샷 생성을 중단 지점해서 재개하고, 스냅샷 생성이 완료되면 커널을 실행할 수 있다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법은, 상기 제 2 커널 종료 후 실행되는 제 3 커널의 상태가 상기 P-RUN 상태인 경우, 버퍼의 스냅샷에서 버퍼를 실행 전 상태로 롤백하고, 커널을 실행할 수 있다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법에 있어서, 상기 제 2 커널 종료 후 실행되는 제 3 커널이 시스템에서 가장 높은 우선순위를 갖는 경우, 커널의 스냅샷 생성은 생략될 수 있다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법에 있어서, 상기 스냅샷 생성은, 중단된 커널을 재수행할 때 메모리 일관성을 보장하기 위해 커널 수행 전 버퍼 영역을 스냅샷 영역으로 저장 또는 복구하는 작업을 나타낼 수 있다.
본 발명의 실시예에 따른 GPU 커널 트랜잭션화 방법에 있어서, 상기 스냅샷을 위한 스냅샷 메모리는 어플리케이션이 GPU 버퍼를 할당할 때 할당되며, 상기 GPU 버퍼와 상기 GPU 버퍼의 스냅샷 메모리 영역은 쌍을 이루어 관리된다.
상술한 기술적 과제를 해결하기 위하여, 본 발명의 실시예에 따른 컴퓨팅 장치는, 적어도 하나의 범용 병렬 연산 명령을 발행하는 CPU(Central Processing Unit), 상기 적어도 하나의 범용 병렬 연산 명령을 실행하는 GPU(Graphic Processing Unit), 및 데이터를 저장하는 메모리를 포함하며, 상기 GPU는, 제 1 커널의 수행 상태에 따른 중단 명령을 인가하고, 제 2 커널을 실행하고, 및 우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행하며, 상기 커널의 수행 상태는 POOL 상태 및 SLOT 상태를 포함하며, 상기 POOL 상태는 커널이 요청되어 대기중인 상태를 나타내고, 상기 SLOT 상태는 스냅샷이 생성되는 SNAP 상태, 커널이 실행되는 RUN 상태 및 실행이 끝난 DONE 상태를 포함한다.
본 발명에 따르면, 애플리케이션 중단 없이 실행 중인 GPU 커널의 중단 및 재수행을 보장한다.
본 발명에 따르면, 커널 실행을 중단하더라도 애플리케이션 실행이 유지되므로, 높은 우선순위의 GPU 커널이 발생하는 경우 기존 커널의 실행을 중단하고, 우선순위가 높은 커널을 즉각 수행할 수 있다.
본 발명에 따르면, GPU 하드웨어의 추가적인 지원이 필요 없으며, 기존에 컴파일된 GPU 커널을 그대로 사용하면서도 GPU 커널의 선점형 우선순위 스케쥴링을 지원 가능하다.
이하에서 본 발명의 구성과 함께 효과에 대해서도 다시 설명한다.
도 1은 본 발명의 실시예에 따른 HSA 시스템에서 OpenCL 런타임 모델 및 메모리 관리를 나타낸다.
도 2는 본 발명의 실시예에 따른, 스냅샷-기반 GPU 커널 트랜잭션화를 통한 선점적 스케줄링의 예를 나타낸다.
도 3은 본 발명의 실시예에 따른, 각 커널 실행 스테이지에 대한 스냅 샷 생성 단계들을 나타낸다.
도 4는 본 발명의 실시예에 따른, 커널 인스턴스 개시와 스냅샷 생성을 헨들링하는 독립적인 트랜젝션 스레드(thread)를 나타낸다.
도 5는 본 발명의 실시예에 따른 GPU 드라이버의 스케줄링 절차를 나타낸다.
도 6은 본 발명의 실시예에 따른 커널 스케줄링 스테이트들 및 선점-전/후 과정을 나타낸다.
도 7은 본 발명의 실시예에 따른 컴퓨팅 디바이스를 나타낸다.
도 8은 본 발명의 실시예에 따른 GPU의 커널 트랜잭션화 방법을 나타낸다.
본 발명의 바람직한 실시예에 대해 구체적으로 설명하며, 그 예는 첨부된 도면에 나타낸다. 첨부된 도면을 참조한 아래의 상세한 설명은 본 발명의 실시예에 따라 구현될 수 있는 실시예만을 나타내기보다는 본 발명의 바람직한 실시예를 설명하기 위한 것이다. 다음의 상세한 설명은 본 발명에 대한 철저한 이해를 제공하기 위해 세부 사항을 포함하지만, 본 발명이 이러한 세부 사항을 모두 필요로 하는 것은 아니다. 본 발명은 이하에서 설명되는 실시예들은 각각 따로 사용되어야 하는 것은 아니다. 복수의 실시예 또는 모든 실시예들이 함께 사용될 수 있으며, 특정 실시예들은 조합으로서 사용될 수도 있다.
본 발명에서 사용되는 대부분의 용어는 해당 분야에서 널리 사용되는 일반적인 것들에서 선택되지만, 일부 용어는 출원인에 의해 임의로 선택되며 그 의미는 필요에 따라 다음 설명에서 자세히 서술한다. 따라서 본 발명은 용어의 단순한 명칭이나 의미가 아닌 용어의 의도된 의미에 근거하여 이해되어야 한다.
GPU 컴퓨팅의 사용은 빠르게 증가하고 있다. GPU 임베디드 시스템은 여러개의 독립적인 작업을 동시에 실행할 수 있다. GPU 컴퓨팅에서 GPU 컴퓨팅의 실행 단위인 GPU 커널의 컨텍스트 저장 및 복원은 GPU 내부의 방대한 연산 유닛 모두에 대해 동시에 수행되어야 하므로 상당한 시간과 메모리 공간을 필요로 한다. 따라서 하드웨어 지원 커널 선점은 GPU 설계를 복잡하게 할 수 있다.
미션 크리티컬 임베디드 시스템은 그래픽 처리 장치(GPU) 컴퓨팅에 크게 의존한다. 시스템은 중요도 및 적시성의 요구에 기반하여 여러 작업을 동시에 실행할 수 있다. 그러나 GPU 커널의 선행 스케줄인은 GPU 내부의 병렬성으로 인해 구현이 용이하지 않다. GPU는 CPU와 달리 다수의 코어에서 병렬적으로 스레드를 수행하기 때문이 인스트럭션 단위의 컨텍스트 스위치를 위해서는 컨텍스트 저장 및 인출 비용이 크다.
GPU는 선점 스케줄링을 지원하지 않으므로, 우선순위 역전 현상이 발생할 수 있다. GPU는 이미 실행이 시작된 커널이 있으면 커널의 실행이 완료될 때까지 다른 커널로 컨텍스트 스위칭을 할 수 없다. 우선순위 역전 문제란 낮은 우선순위 작업 수행으로 인해 높은 우선순위 작업이 실행을 대기해야 하여 실행이 지체되는 현상이다. 실시간 시스템에서는 해결이 필요한 문제이다.
GPU는 일반적으로 실행 중단(abort) 명령을 제공하지만, 중단 명령으로 커널의 실행을 중단하면 애플리케이션 전체의 실행이 중단되고 처음부터 다시 실행되어야 한다. 하나의 애플리케이션은 일반적으로 다수의 GPU 커널을 순차적으로 실행하며, 각각의 커널은 이전 수행 커널의 결과에 의존성(dependency)을 갖는다. 따라서 실행 중인 커널을 실행 중단하면, 입력 데이터의 변화가 발생해서 중단된 커널을 다시 실행할 수 없고, 그로 인해 모든 커널을 처음부터 다시 실행해야할 수도 있다.
이기종 시스템 아키텍처(Heterogeneous System Architecture, HSA)는 서로 다른 성격의 프로세서들이 하나의 시스템 내에서 통합되어 서로 시스템 메모리를 공유하여 동일 태스크를 수행하는 아키텍처를 지칭한다. HSA의 hUMA(Heterogeneous Unified Memory Access) 모델은 CPU와 GPU가 메모리를 공유한다. hUMA에서는 CPU와 GPU가 각각의 페이지 테이블 엔트리를 갖고 있으며, 가상 메모리 주소 매핑을 통해 동일한 메모리 오브젝트 등을 공유할 수 있다. 본 발명에서는 CPU와 GPU가 HSA에서 동일한 물리적 메모리를 볼 수 있다는 특성을 사용하여 GPU 커널 트랙잭션 기술을 제안할 수 있다.
본 명세서에서, 그래픽 프로세싱 명령은 범용 병렬 연산 명령으로 지칭될 수도 있다.
도 1은 본 발명의 실시예에 따른 HSA 시스템에서 OpenCL 런타임 모델 및 메모리 관리를 나타낸다.
오픈 CL(Computing Language);(OpenCL)은 CPU와 GPU를 포함한 다양한 프로세서를 포함하는 이기종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해주는 개방형 범용 병렬 컴퓨팅 프레임워크이다. 다시 말하면, OpenCL은 CPU 및 GPU를 비롯한 다양한 컴퓨팅 장치에서 응용 프로그램을 실행하기 위한 프레임 워크이다.
OpenCL은 GPU를 활용한 범용 컴퓨팅(GPGPU)을 위한 메모리 모델을 지원할 수 있다. OpenCL은 GPGPU를 위해 CPU와 GPU의 독립된 물리 메모리 할당 및 서로 간의 데이터 복사를 할 수 있는 표준을 제공한다. OpenCL은 hUMA를 지원하기 위해 서로 독립적인 할당된 CPU/GPU의 물리 메모리를 각자의 가상 메모리 공간 내에 동일한 위치로 매핑시키기 위한 기술을 제공한다.
OpenCL의 GPGPU를 위한 작업 수행 모델 지원을 위해, OpenCL을 CPU가 호스트가 되어 GPU로 작업(커널)을 보내 실행을 요청할 수 있는 구조가 제공될 수 있다. 호스트 프로그램(애플리케이션)은 GPU 커널의 실행을 요청할 때 GPU 커널이 사용하는 메모리인 커널 버퍼의 주소를 파라미터로 디바이스 드라이브에게 전달할 수 있다. 실행 중인 커널인 커널 인스턴스는 자신의 고유 ID와 상태 정보 그리고 커널 버퍼의 주소를 담는 메타 데이터를 갖고, 운영 체제는 메타 데이터를 통해 커널 인스턴스의 정보를 얻는다.
실행 중인 커널 인스턴스는 자신의 고유 ID, 상태 정보 및 커널 버퍼의 주소를 포함하는 메타 데이터를 간고, 운영 체제는 메타 데이터를 통해 커널 인스턴스의 정보를 획득할 수 있다. 복수의 커널 인스턴스는 동일한 커널 버퍼를 공유하여 사용할 수 있다. 커널 버퍼는 연속하여 실행되는 두 개의 커널 인스턴스 사이에서 데이터를 주고 받는 매개 역할을 할 수 있다. 커널 버퍼를 통해 데이터를 주고 받는 커널 인스턴스들은 생산자-소비사의 관계의 의존성을 형성할 수 있다.
이하에서는 선점되어 중단된 커널에 대해 이전 실행해서 오염된 커널 버퍼를 실행 초기 상태로 복구하여 다시 수행하기 위한 기술에 대하여 설명한다.
도 2는 본 발명의 실시예에 따른, 스냅샷-기반 GPU 커널 트랜잭션화를 통한 선점적 스케줄링의 예를 나타낸다.
도 2에서, 태스크 A에 의해 발행된 커널 A는 GPU 스케줄러의 의해 다음 라인에 선택된다. OS는 커널 A가 사용할 커널 버퍼를 포함하여 GPU 메모리의 스냅 샷을 생성할 수 있다. 커널 A를 실행하는 중에, 우선도가 높은 태스크 B가 커널 B를 발행한다. GPU에서 커널 A의 실행은 중단되고, 커널 B가 예약된다. 커널 B가 우선도가 높으므로, GPU 스케줄러는 스냅 샷을 생성하지 않고 GPU에 커널 B를 실행한다. 커널 B를 완료한 후에 GPU 스케줄러는 커널 A를 다시 스케줄링한다. 커멀 A가 선점되어 중단되었으므로, 트랜젝션 처리 모듈은 롤백(roll back) 프로세스를 시작한다. 롤백 후에 GPU 스케줄러는 커널 A를 GPU에 실행하고 작업 A의 실행은 정상적으로 진행된다.
도 3은 본 발명의 실시예에 따른, 각 커널 실행 스테이지에 대한 스냅 샷 생성 단계들을 나타낸다.
스냅 샷 생성 프로세서는 도 3과 같이 3개의 단계들을 포함할 수 있다. 태스크가 새 커널 버퍼를 요청하면, GPU 드라이버는 커널 버퍼를 할당하고 이를 GPU 주소 공간에 매핑한다. 이 경우 GPU 드라이버는 새로 할당된 커널 버퍼에 스냅샷 공간을 할당한다. 나중에 태스크가 커널 인스턴스를 발행하면 GPU 드라이버는 인스턴스의 스냅샷 대상을 결정한다. 스냅샷 대상은 커널 인스턴스에 의해 사용되는 커널 버퍼를 포함한다. 커널 인스턴스가 시작될 예정이면, 해당 스냅샷 대상에 포함된 커널 버퍼가 미리 할당된 스냅샷 공간에 복사된다. 커널 인스턴스 메타데이터는 스냅샷 공간에도 복사된다. 스냅샷을 생성되고, 커널 인스턴스가 GPU에서 실행된다.
커널 버퍼는 커널 인스턴스 생성 전에 할당된다. GPU 드라이버는 물리적 페이지를 요청된 버퍼 크기에 할당하고, 이를 GPU 주소 공간에 매핑한다. 커널 버퍼 할당과 함께, 본 발명에서 수정된 장치 드라이버는 커널 버퍼 전용 스냅샷 공간의 물리적 페이지를 할당한다. 스냅샷 공간의 크기는 커널 버퍼의 크기와 같을 수 있다. 스냅 샷 공간은 GPU 드라이버에 의해서만 액세스되므로, 스냅 샷 공간은 GPU 주소 공간이 아닌 호스트 주소 공간에 매핑된다.
GPU 드라이버는 영역(region)이라고 지칭되는 데이터 구조를 갖는 커널 버퍼를 나타낸다. 이 영역의 구조는 GPU 주소 공간의 인접한 가상 주소에 매핑되는 물리적 페이지의 주소를 포함한다. 호스트 태스크는 통상 복수의 영역들을 포함한다. GPU 드라이버는 영역의 시작 주소를 키로 사용하는 레드 블랙(redblack) 트리에서 작업의 영역을 관리하여 주어진 주소에 해당하는 영역을 빠르게 찾을 수 있다. 영역 구조에는 스냅샷 공간을 가리키는 추가 필드가 포함된다. 이 필드는 실제 할당된 호스트의 가상 주소 공간에 있는 페이지 세트이다. 이 필드에 액세스하면 GPU 드라이버가 주어진 영역의 스냅샷 공간에 빠르게 액세스할 수 있다.
커널 버퍼 할당은 응용 프로그램이 할당된 커널 버퍼를 재사용하는 형향이 있어 드물게 수행될 수 있다. 또한, 통상 커널 할당과 커널 인스턴스 생성 사이에는 간격이 있다. 따라서 스냅샷 공간 할당 오버헤드는 대부분의 경우 무시될 수도 있다.
GPU 드라이버는 스냅샷 대상을 미리 결정해야 한다. 중단된 커널 인스턴스의 초기 상태로 롤백하려면 커널 인스턴스가 실행 중에 수정할 수 있는 모든 메모리 영역이 스냅샷 대상에 포함되어야 한다.
호스트 태스크가 새 커널 인스턴스 생성을 요청하면, GPU 드라이버는 인스턴스에 대한 메타데이터 구조를 생성한다. 인스턴스 ID, 스케줄링 상태, 입력 매개 변수로 넘겨진 커널 버퍼의 주소 등이 메타 데이터에 포함될 수 있다. 스케줄링 상태를 포함한 일부 메타 데이터 필드는 실행 중에 변경될 수 있다. 따라서 메타데이터는 스냅샷 대상에 포함되어야 한다. 커널 인스턴스를 실행하기 위해 호스트 태스크는 시스템 호출을 통해 메타 데이터 주소를 GPU 드라이버에게 전달할 수 있다. 따라서 GPU 드라이버는 커널 인스턴스 메타데이터의 위치를 쉽게 식별할 수 있다.
호스트 태스크는 GPU 드라이버에게 커널 인스턴스가 사용할 커널 버퍼를 명시적으로 알려줄 수 있다. 따라서 커널 인스턴스 메타데이터는 매개 변수로 선언된 모든 영역에 대한 포인터를 갖도록 설계된다. 따라서 메타데이터의 해당 필드를 조사하면 GPU 드라이버가 커널에서 사용하는 커널 버퍼의 위치를 쉽게 감지할 수 있다.
도 4는 본 발명의 실시예에 따른, 커널 인스턴스 개시와 스냅샷 생성을 헨들링하는 독립적인 트랜젝션 스레드(thread)를 나타낸다.
커널의 실행을 중단하였을 때 커널 실행 초기 상태로 GPU 커널 버퍼를 롤백(roll-back)할 수 있는 GPU 커널의 트랜잭션화 방법을 설명한다.
도 4는 GPU 디바이스 드라이버의 스케줄링 과정에서 롤백을 위해 커널 버퍼의 초기 상태 복사본인 스냅샷을 생성하는 과정을 나타낸다. 도 4의 스냅샷 트랜젝션의 각 스테이지들에 대한 설명은 아래와 같다.
스냅샷: 중단된 커널을 재수행할 때 메모리 일관성을 보장하기 위해 커널 수행 직전 자신의 버퍼 영역을 스냅샷 영역으로 저장하거나 복구하는 작업을 수행한다.
작업 수행: GPU 커널은 스냅샷 작업이 완료된 후 GPU에 의해 요청되어 작업을 수행한다.
작업 종료: GPU가 커널 수행을 완료하여 발생한 인터럽트의 핸들러가 호출된 시점을 작업 종료로 정의하며, 다음 커널을 실행할 수 있는 상태가 된다.
스냅샷 트랜잭션은 GPU 스케줄러와 독립적으로 수행될 수 있다. 스냅샷 트랜잭션 도중 더 높은 우선순위의 커널 인스턴스가 요청되는 경우 즉시 스케줄링하기위해 GPU 스케줄링과 스냅샷 트랜잭션은 독립적으로 수행될 수 있다. 스냅샷 생성 과정은 스케줄러에 의해 중도에 종료될 수 있도록 시그널링 또는 종료 명령을 입력받는 IPC(InterProcess Communication) 채널을 사용한다. 스냅샷을 위한 스냅샷 메모리는 호스트 애플리케이션이 GPUU 버퍼를 할당할 때 할당된다. GPU 버퍼와 GPU 버퍼의 스냅샷 영역은 쌍(pair)을 이루어 관리된다. GPU 커널의 실행이 요청되는 경우, 해당 커널 인스턴스가 사용하는 GPU 버퍼의 주소는 GPU 디바이스 드라이버로 패러미터 형태로 전달되기 때문에 쉽게 파악될 수 있다.
이하에서는 GPU 커널 수행 상태에 따른 선점형 스케줄링 방법에 대해 설명한다.
도 5는 본 발명의 실시예에 따른 GPU 드라이버의 스케줄링 절차를 나타낸다.
호스트 태스크가 커널 인스턴스의 실행을 요청하면, 인스턴스는 런풀(runpool)에 삽입된다. 런풀은 실행풀이라고 지칭할 수도 있다. 각 태스크는 자체의 런-풀을 갖는다. GPU 스케줄러가 다음 커널을 시작하는 작업을 선택한다. 선택된 태스크는 선착순으로 런 풀에 대기중인 커널을 선택하고, 사용 가능한 슬롯에 커널을 배치한다. 슬롯은 GPU 내부의 작업 버퍼 슬롯에 일대일로 매핑될 수 있다. 슬롯에 있는 커널은 GPU에 의해 순차적으로 그리고 자동으로 실행될 수 있다.
GPU 드라이버는 CFS(Completely Fair Scheduler)를 사용하여 GPU를 사용하는 각 태스크에 GPU를 사용할 수 있는 시간(Time slice)를 배분 후 런풀에 삽입한다. 이와 같이 GPU를 사용할 수 있는 시간을 가진 태스크들을 Round-Robin 스케줄러에 의해 우선순위에 상관없이 순차적으로 한 번씩 선택되며, 선택된 태스크는 자신이 가진 GPU 작업 하나를 GPU에 요청 후 런풀 끝으로 재 삽입된다. 그러나 본 발명의 수정된 스케줄러는 런풀에서 대기중인 태스크들 중 가장 높은 우선순위를 갖는 태스크를 선택할 수 있다. 태스크의 우선 순위는 UNIX nice 값에 의해 결정될 수 있다. 실시예로서, 나이스(nice) 값이 -20이면 가장 중요한 태스크임을 나타내고, 나이스 값이 -20인 태스크는 다른 태스크에 의해 선점될 수 없다. 이러한 태스크는 응급(emergency) 클래스로서, 커널 인스턴스는 응급 클래스 커널이다. 트랜젝션 스레드는 응급 클래스 커널에 대한 스탭샷을 생성하지 않는다. 대신, 응급 클래스의 태스크는 바로 실행된다.
GPU 스케줄러는 현재 커널의 최신 상태를 추적하여 필요 시 적절히 선점할 수 있어야 한다. 또한, 트랜잭션 스레드는 주어진 커널 인스턴스가 선점 후 적절하게 수행되도록 선점된 시점을 인식할 수 있어야 한다. 따라서 mContext에는 각 커널 인스턴스의 현재 스케줄링 상태를 추적하는 sched_state 필드가 포함될 수 있다.
도 6은 본 발명의 실시예에 따른 커널 스케줄링 스테이트들 및 선점-전/후 과정을 나타낸다.
도 6은 스케줄링 플로우 다음의 sched_state 변경 사항을 나타낸다. sched_state는 커널 인스턴스가 런-풀 또는 슬롯에서 대기중인 경우 POOL 또는 SLOT으로 표시된다. 트랜잭션 스레드가 스냅샷을 시작하면 sched_state가 SNAP로 변경된다. 실행 중 sched_state는 RUN으로 유지되며, 인터럽트 핸들러는 커널 완료 루틴을 시작할 때 이를 DONE 상태로 변환한다. 트랜잭션 직렬화로 인해 특정 시간에 하나의 커널 인스턴스만 SNAP 또는 RUN 상태에 있을 수 있다.
선점이 발생하면, 선점 시점의 커널 인스턴스 상태가 sched_state 필드에 기록된다. 이 기록은 선점된 커널 인스턴스에 대한 롤백을 포함하는 적절한 선점 후 프로세스를 결정하는데 사용된다. POOL 상태에서, 커널은 아직 스케줄링되지 않았으므로 선점되지 않는다. SLOT, SNAP,또는 RUN 상태의 커널 인스턴스에 선점이 발생하면, sched_state가 각각 P_SLOT, P_SNAP 또는 P_RUN으로 변경된다.
새로운 커널 인스턴스가 런-풀에 삽입되면, 새 커널 인스턴스의 우선순위가 SNAP, SLOT 또는 RUN 상태의 인스턴스 우선순위와 비교된다. 새 커널 인스턴스의 우선순위가 SNAP 또는 RUN 상태의 커널 인스턴스와 같거나 낮으면 GPU 드라이버는 더 이상 작업을 수행하지 않는다. 그러나 새로 호출된 커널 인스턴스가 현재 슬롯에 있는 커널 중 하나보다 높은 우선순위를 갖는 경우, 조건에 따라 GPU 드라이버가 다음과 같이 동작을 수행할 수 있다.
(1) RUN 상태의 커널 인스턴스가 새로 발급된 커널 인스턴스보다 낮은 우선 순위를 갖는 경우
RUN 상태의 커널 인스턴스가 새로 발급된 커널 인스턴스보다 낮은 우선 순위를 갖는 경우, GPU 드라이버는 현재 실행중인 인스턴스의 sched_state를 P_RUN으로 변경하고 중단한다. 중단 명령을 수신하면 GPU는 커널 인스턴스 메타데이터에 예외 플래그를 설정한 후 인터럽트를 전송한다. 인터럽트 핸들러/처리기는 sched_state가 P_RUN인지 여부를 확인한다. sched_state가 P_RUN이 아닌 경우, 인터럽트 핸들러는 오류 또는 예외로 인해 커널이 중단된 것이므로, 기존의 예외 처리 루틴을 호출하고 호스트 태스크를 종료시킨다. sched_state가 P_RUN인 경우, 커널 인스턴스가 재실행을 위해 런-풀에 다시 삽입된다. 선점된 인스턴스의 모든 스냅샷 대상은 재실행 직전의 트랜잭션 스레드에 의해 롤백된다.
(2) SNAP 상태의 커널 인스턴스가 새로 발급된 커널 인스턴스보다 낮은 우선순위를 갖는 경우
SNAP 상태의 커널 인스턴스가 새로 발급된 커널 인스턴스보다 낮은 우선순위를 갖는 경우, GPU 드라이버는 트랜잭션 스레드에 스냅샷을 취소하도록 명령하고 SNAP 상태의 인스턴스의 sched_state를 P_SNAP으로 변경한다. 그리고 GPU 드라이버는 LINUX 커널에 의해 제공되는 소프트 IRQ 메커니즘들 중 하나인 작업큐(workqueue)에 선점-후 루틴을 등록한다.
(3) SLOT 스테이트의 커널 인스턴스가 새로 발급된 커널 인스턴스보다 낮은 우선 순위를 갖는 경우
SLOT 스테이트의 커널 인스턴스가 새로 발급된 커널 인스턴스보다 낮은 우선 순위를 갖는 경우, SLOT 상태의 커널이 해당 슬롯에서 제거되고, sched_state가 P_SLOT으로 변경된다. 새로운 커널 인스턴스가 대신 빈 슬롯에 삽입된다. 마지막으로, P_SNAP와 같은 방식으로, 작업 선행 후 루틴이 작업큐에 등록된다.
P_SNAP 및 P_SLOT 상태의 커널 인스턴스에 등록된 선점-후 작업큐 루틴은 소프트 IRQ에서 실행된다. 각 선점-후 작업 큐 루틴에는 매개 변수로 처리할 커널 인스턴스가 할당된다. 선점-후 루틴은 커널 인스턴스를 해당 런-풀로 리턴하고 상태를 POOL로 변경한다. 새 커널 인스턴스가 런-풀에 삽입되었을 수도 있다. 커널 인스턴스는 이전에 발급된 커널 인스턴스에 종속될 수 있으므로, 커널 인스턴스는 발급 순서대로 실행되어야 한다. 따라서 이러한 경우 선점 후 루틴은 올바른 인스턴스 순서를 유지하기 위해 선점된 커널 인스턴스를 실행 풀의 적절한 위치에 다시 배치해야 한다.
우선순위 인스턴스를 선점하려고 하는 새롭게 스케줄링된 인스턴스는 비상 클래스에 속하지 않는 한 추후에 선점될 수 있다. 따라서 스냅샷은 실행 전에 수행되어야 한다. 선점된 인스턴스가 SNAP 상태에 있는 경우 비동기적으로 발급된 두 개의 커널 인스턴스 스냅샷에서 일관성 문제가 발생할 수 없으므로 우선순위가 높은 커널 인스턴스의 스냅 샷이 즉시 시작될 수 있다. 따라서, 본 발명은 스냅샷을 병렬처리하기 위해 여러 트랜잭션 스레드를 준비하고 활용한다. GPU 드라이버가 작업 트랜잭션 스래드에 스냅샷 취소 명령을 보내면 GPU 드라이버는 대기중인 트랜잭션 스레드를 먼저 호출한 다음 새로운 우선순위가 높은 커널 인스턴스에 대한 트랜잭션을 즉시 시작할 수 있다. 따라서 스냅샷 취소 및 스냅샷 생성을 병렬로 수행함으로써 스케줄링 지연을 더욱 단축할 수 있다.
도 7은 본 발명의 실시예에 따른 컴퓨팅 디바이스를 나타낸다.
컴퓨팅 디바이스는 CPU(7010), GPU(7020) 및 메모리(7030)를 포함한다. CPU(7010)는 하나 이상의 범용 병렬 연산 명령들을 GPU에 발행함으로써 GPU의 동작을 제어할 수 있다. GPU(7020)는 범용 병렬 연산 명령들을 실행한다. GPU(7020)는 그래픽 프로세싱 명령을 실행하기 위해 복수의 프로세싱 스테이지들을 포함하는 그래픽 프로세싱 파이프라인을 실행할 수도 있다. 메모리(7030)는 다양한 데이터 저장 공간에 해당할 수 있다. 본 발명의 실시예에서, 메모리(7030)는 CPU(7010) 및 GPU(7020)에 의해 공유될 수 있다. 컴퓨팅 디바이스의 GPU(7020)는 본 명세서에서 설명한 GPU 커널 트랜잭션화 방법을 수행할 수 있다.
도 8은 본 발명의 실시예에 따른 GPU의 커널 트랜잭션화 방법을 나타낸다.
GPU는 제 1 커널 중단 명령을 인가할 수 있다(S8010). 상술한 바와 같이, GPU는 실행 중인 제 1 커널의 상태에 따라서 중단 명령을 인가할 수 있다.
그리고 GPU는 제 2 커널을 실행한다(S8020).
GPU 스케줄러는 낮은 순위의 커널을 선점 시킬 때 적절한 행동을 취할 수 있도록 실행되는 커널의 상태를 파악할 수 있어야 한다. 커널의 수행 상태는, 스케줄링 여부에 따라 커널이 요청되어 대기 중인 상태인 POOL 상태 및 스케줄러에 의해 선택된 SLOT 상태를 포함한다. SLOT 상태는, 실행 단계에 따라서 SNAP, RUN, DONE의 하위 상태를 포함한다. SNAP 상태는 스냅샷을 생성하고 있는 상태를 나타내고, RUN 상태는 커널이 실행되고 있는 상태를 나타내며, DONE 상태는 커널의 실행이 끝난 상태를 나타낸다.
커널의 수행 상태가 SNAP 상태인 경우, GPU는 스냅샷 프로세스를 중단 명령에 따라서 종료할 수 있다. 커널의 수행 상태가 RUN 상태인 경우, GPU는 커널의 실행을 중단할 수 있다.
GPU는 POOL 및 DONE 상태의 경우 실제 실행이 시작되기 전이므로 선점을 위한 롤백을 위한 추가 작업을 수행하지 않는다. SNAP 상태 및 RUN 상태의 경우, 커널이 스케줄링된 상태이므로, GPU는 롤백 처리가 필요함을 나타내기 위해 커널의 상태를 각각 P_SNAP 상태 및 P_RUN 상태로 전환할 수 있다.
상술한 바와 같이, GPU의 트랜잭션화 방법은 GPU 선점 전 프로세싱과 선점 후 프로세싱을 포함한다.
선점-전(Pre-Preemption) 프로세싱은 현재 커널의 수행 상태에 따라 적절한 중단 명령을 내리고 다음 커널을 수행한다. GPU는 RUN 상태의 경우 종료(Abort) 명령을 통해 커널 실행을 종료시킬 수 있다. 또한, GPU는 스냅샷 프로세스를 종료시킬 수 있다. 그리고 GPU는 소프트 IRQ인 작업큐에 선점 후 처리 작업을 등록한다. 이는 선점 후 처리 작업이 다음 커널의 수행을 지연시키지 않기 위함이다.
선점-후(Post-Preemption) 프로세싱은 다음과 같다. GPU는 P_RUN 또는 P_SNAP의 경우 GPU 작업 동료 중단(interrupt) 핸들러에서 선점 여부를 판단하여 커널을 초기화하고, 재수행을 위해 커널을 작업풀/런풀에 재삽입하여 재실행을 대기하도록 한다. 작업풀에 재삽입 시 커널 인스턴스 사이의 의존성에 따른 순서가 고려될수 있다.
GPU는 제 2 커널 실행 종료 후 다음 커널을 선택 및 실행한다(S8030). GPU는 우선순위를 고려하여 다음 실행할 커널을 선택하고 실행을 시작할 수 있다.
다음 스케줄할 커널의 상태가 P-SNAP인 경우 커널은 스냅샷 생성 중간에 중단된 것이므로, GPU는 스냅샷 생성 중단 지점에서 재개하고, 스냅삿 생성이 완료되면 커널을 실행한다. 다음 스케줄할 커널의 상태가 P_RUN인 경우, GPU는 커널이 사용하는 버퍼의 스냅샷에서 버퍼를 실행 전 상태로 롤벡하고, 커널을 실행한다.
상술한 바와 같이, 최상위 우선순위를 갖는 GPU 커널은 다른 커널에 의해 의해 실행을 방해받지 않으므로 실행 전 스냅샷을 생성할 필요가 없다. 시스템에서 가장 높은 우선 순위를 갖는 커널의 경우, 실행 시 스냅샷 생성이 생략되므로 스냅샷 생성으로 인한 스케줄링 지연이 방지될 수 있다.
스냅샷 생성은, 중단된 커널을 재수행할 때 메모리 일관성을 보장하기 위해 커널 수행 전 버퍼 영역을 스냅샷 영역으로 저장 또는 복구하는 작업을 나타낸다. 스냅샷을 위한 스냅샷 메모리는 어플리케이션이 GPU 버퍼를 할당할 때 할당되며, GPU 버퍼와 GPU 버퍼의 스냅샷 메모리 영역은 쌍을 이루어 관리된다.
이상에서 설명된 실시예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성하는 것도 가능하다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명에 따른 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시예는 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 일 실시예는 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
본 발명은 본 발명의 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상술한 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니 되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
7010: CPU
7020: GPU
7030: 메모리

Claims (20)

  1. 제 1 커널의 수행 상태에 따른 중단 명령을 인가하는 단계로서, 커널의 수행 상태는 POOL 상태 및 SLOT 상태를 포함하며, POOL 상태는 커널이 요청되어 대기중인 상태를 나타내고, SLOT 상태는 스냅샷이 생성되는 SNAP 상태, 커널이 실행되는 RUN 상태 및 실행이 끝난 DONE 상태를 포함하는,
    제 2 커널을 실행하는 단계; 및
    우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행하는 단계를 포함하고,
    상기 제 1 커널의 수행 상태가 상기 SNAP 상태인 경우, 상기 중단 명령에 따라서 스냅샷 프로세스를 종료하거나, 또는, 상기 제 1 커널의 수행 상태가 상기 RUN 상태인 경우, 상기 제 1 커널의 실행을 중단하는 단계를 더 포함하는, GPU 커널 트랜잭션화 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 커널의 수행 상태가 상기 SNAP 상태 또는 상기 RUN 상태인 경우, 상기 제 1 커널의 수행 상태를 선점을 위한 롤백 프로세싱을 필요함을 나타내는 P-SNAP 상태 또는 P-RUN 상태로 전환하는 단계를 더 포함하는, GPU 커널 트랜잭션화 방법.
  4. 제 3 항에 있어서,
    상기 제 1 커널의 수행 상태가 상기 P-SNAP 상태 또는 상기 P-RUN 상태로 전환된 경우, 상기 제 1 커널을 재수행을 위해 작업풀(run-pool)에 재삽입하는 단계를 더 포함하는, GPU 커널 트랜잭션화 방법.
  5. 제 3 항에 있어서,
    상기 제 2 커널 종료 후에 실행되는 제 3 커널은 상기 제 1 커널에 해당하거나 상기 제 1 커널보다 우선 순위가 높은 다른 커널에 해당하는, GPU 커널 트랜잭션화 방법.
  6. 제 5 항에 있어서,
    상기 제 2 커널 종료 후 실행되는 제 3 커널의 상태가 상기 P-SNAP 상태인 경우, 스냅샷 생성을 중단 지점해서 재개하고, 스냅샷 생성이 완료되면 커널을 실행하는, GPU 커널 트랜잭션화 방법.
  7. 제 5 항에 있어서,
    상기 제 2 커널 종료 후 실행되는 제 3 커널의 상태가 상기 P-RUN 상태인 경우, 버퍼의 스냅샷에서 버퍼를 실행 전 상태로 롤백하고, 커널을 실행하는, GPU 커널 트랜잭션화 방법.
  8. 제 5 항에 있어서,
    상기 제 2 커널 종료 후 실행되는 제 3 커널이 시스템에서 가장 높은 우선순위를 갖는 경우, 커널의 스냅샷 생성은 생략되는, GPU 커널 트랜잭션화 방법.
  9. 제 1 커널의 수행 상태에 따른 중단 명령을 인가하는 단계로서, 커널의 수행 상태는 POOL 상태 및 SLOT 상태를 포함하며, POOL 상태는 커널이 요청되어 대기중인 상태를 나타내고, SLOT 상태는 스냅샷이 생성되는 SNAP 상태, 커널이 실행되는 RUN 상태 및 실행이 끝난 DONE 상태를 포함하는,
    제 2 커널을 실행하는 단계; 및
    우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행하는 단계를 포함하고,
    상기 스냅샷 생성은, 중단된 커널을 재수행할 때 메모리 일관성을 보장하기 위해 커널 수행 전 버퍼 영역을 스냅샷 영역으로 저장 또는 복구하는 작업을 나타내는, GPU 커널 트랜잭션화 방법.
  10. 제 9 항에 있어서,
    상기 스냅샷을 위한 스냅샷 메모리는 어플리케이션이 GPU 버퍼를 할당할 때 할당되며, 상기 GPU 버퍼와 상기 GPU 버퍼의 스냅샷 메모리 영역은 쌍을 이루어 관리되는, GPU 커널 트랜잭션화 방법.
  11. 적어도 하나의 범용 병렬 연산 명령을 발행하는 CPU(Central Processing Unit),
    상기 적어도 하나의 범용 병렬 연산 명령을 실행하는 GPU(Graphic Processing Unit), 및
    데이터를 저장하는 메모리를 포함하며,
    상기 GPU는, 제 1 커널의 수행 상태에 따른 중단 명령을 인가하고, 제 2 커널을 실행하고, 및 우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행하며,
    상기 커널의 수행 상태는 POOL 상태 및 SLOT 상태를 포함하며, 상기 POOL 상태는 커널이 요청되어 대기중인 상태를 나타내고, 상기 SLOT 상태는 스냅샷이 생성되는 SNAP 상태, 커널이 실행되는 RUN 상태 및 실행이 끝난 DONE 상태를 포함하고,
    상기 제 1 커널의 수행 상태가 상기 SNAP 상태인 경우, 상기 GPU는, 상기 중단 명령에 따라서 스냅샷 프로세스를 종료하거나, 또는, 상기 제 1 커널의 수행 상태가 상기 RUN 상태인 경우, 상기 제 1 커널의 실행을 중단하는, 컴퓨팅 장치.
  12. 삭제
  13. 제 11 항에 있어서,
    상기 제 1 커널의 수행 상태가 상기 SNAP 상태 또는 상기 RUN 상태인 경우, 상기 제 1 커널의 수행 상태를 선점을 위한 롤백 프로세싱을 필요함을 나타내는 P-SNAP 상태 또는 P-RUN 상태로 전환하는 단계를 더 포함하는, 컴퓨팅 장치.
  14. 제 13 항에 있어서,
    상기 제 1 커널의 수행 상태가 상기 P-SNAP 상태 또는 상기 P-RUN 상태로 전환된 경우, 상기 GPU는, 상기 제 1 커널을 재수행을 위해 작업풀(run-pool)에 재삽입하는, 컴퓨팅 장치.
  15. 제 13 항에 있어서,
    상기 제 2 커널 종료 후에 실행되는 제 3 커널은 상기 제 1 커널에 해당하거나 상기 제 1 커널보다 우선 순위가 높은 다른 커널에 해당하는, 컴퓨팅 장치.
  16. 제 15 항에 있어서,
    상기 제 2 커널 종료 후 실행되는 제 3 커널의 상태가 상기 P-SNAP 상태인 경우, 상기 GPU는, 스냅샷 생성을 중단 지점해서 재개하고, 스냅샷 생성이 완료되면 커널을 실행하는, 컴퓨팅 장치.
  17. 제 15 항에 있어서,
    상기 제 2 커널 종료 후 실행되는 제 3 커널의 상태가 상기 P-RUN 상태인 경우, 상기 GPU는, 버퍼의 스냅샷에서 버퍼를 실행 전 상태로 롤백하고, 커널을 실행하는, 컴퓨팅 장치.
  18. 제 15 항에 있어서,
    상기 제 2 커널 종료 후 실행되는 제 3 커널이 시스템에서 가장 높은 우선순위를 갖는 경우, 커널의 스냅샷 생성은 생략되는, 컴퓨팅 장치.

  19. 적어도 하나의 범용 병렬 연산 명령을 발행하는 CPU(Central Processing Unit),
    상기 적어도 하나의 범용 병렬 연산 명령을 실행하는 GPU(Graphic Processing Unit), 및
    데이터를 저장하는 메모리를 포함하며,
    상기 GPU는, 제 1 커널의 수행 상태에 따른 중단 명령을 인가하고, 제 2 커널을 실행하고, 및 우선 순위에 기초하여 상기 제 2 커널 실행 종료 후 실행할 커널을 선택 및 실행하며,
    상기 커널의 수행 상태는 POOL 상태 및 SLOT 상태를 포함하며, 상기 POOL 상태는 커널이 요청되어 대기중인 상태를 나타내고, 상기 SLOT 상태는 스냅샷이 생성되는 SNAP 상태, 커널이 실행되는 RUN 상태 및 실행이 끝난 DONE 상태를 포함하고,
    상기 스냅샷 생성은, 중단된 커널을 재수행할 때 메모리 일관성을 보장하기 위해 커널 수행 전 버퍼 영역을 스냅샷 영역으로 저장 또는 복구하는 작업을 나타내는, 컴퓨팅 장치.
  20. 제 19 항에 있어서,
    상기 스냅샷을 위한 스냅샷 메모리는 어플리케이션이 GPU 버퍼를 할당할 때 할당되며, 상기 GPU 버퍼와 상기 GPU 버퍼의 스냅샷 메모리 영역은 쌍을 이루어 관리되는, 컴퓨팅 장치.
KR1020180003473A 2018-01-10 2018-01-10 Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치 KR102003721B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180003473A KR102003721B1 (ko) 2018-01-10 2018-01-10 Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180003473A KR102003721B1 (ko) 2018-01-10 2018-01-10 Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20190085391A KR20190085391A (ko) 2019-07-18
KR102003721B1 true KR102003721B1 (ko) 2019-07-26

Family

ID=67469507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180003473A KR102003721B1 (ko) 2018-01-10 2018-01-10 Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102003721B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102086757B1 (ko) * 2019-07-31 2020-03-09 서강대학교 산학협력단 Gpu 메모리 스케줄러 및 이를 이용한 gpu 메모리 선점 방법
CN114115025B (zh) * 2021-11-24 2024-05-28 国汽智控(北京)科技有限公司 基于自动驾驶系统的故障信息的保存方法、装置和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101292572B1 (ko) * 2012-03-16 2013-08-09 국방과학연구소 가상 머신을 이용한 파일 시스템 관리 장치 및 그 방법
KR101376952B1 (ko) 2006-05-08 2014-03-20 마이크로소프트 코포레이션 머신을 가상 머신으로 변환하는 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601302B2 (en) * 2009-06-22 2013-12-03 Amazon Technologies, Inc. Processor system in low power state retention mode with linear regulator off and switch regulator low in power management IC
US10002021B2 (en) * 2012-07-20 2018-06-19 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
KR101915198B1 (ko) * 2012-08-10 2018-11-05 한화테크윈 주식회사 프로세서간 메시지처리장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101376952B1 (ko) 2006-05-08 2014-03-20 마이크로소프트 코포레이션 머신을 가상 머신으로 변환하는 방법
KR101292572B1 (ko) * 2012-03-16 2013-08-09 국방과학연구소 가상 머신을 이용한 파일 시스템 관리 장치 및 그 방법

Also Published As

Publication number Publication date
KR20190085391A (ko) 2019-07-18

Similar Documents

Publication Publication Date Title
Amert et al. GPU scheduling on the NVIDIA TX2: Hidden details revealed
US10073711B2 (en) Virtual machine monitor configured to support latency sensitive virtual machines
JP6381956B2 (ja) 動的仮想マシンサイジング
US9507631B2 (en) Migrating a running, preempted workload in a grid computing system
US8276145B2 (en) Protected mode scheduling of operations
US20170220381A1 (en) Implicit co-scheduling of cpus
US20070130569A1 (en) Method, apparatus and program storage device for providing a no context switch attribute that allows a user mode thread to become a near interrupt disabled priority
US8321874B2 (en) Intelligent context migration for user mode scheduling
KR20130066900A (ko) 연성 실시간 운영체제의 실시간성 확보방법
Bloom et al. Scheduling and thread management with RTEMS
WO2005048009A2 (en) Method and system for multithreaded processing using errands
KR102003721B1 (ko) Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치
US20220035664A1 (en) Reverse restartable sequences for lock polling scalability
US11449339B2 (en) Memory barrier elision for multi-threaded workloads
US8010963B2 (en) Method, apparatus and program storage device for providing light weight system calls to improve user mode performance
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
CN114035847A (zh) 用于并行执行核心程序的方法和装置
US10922128B1 (en) Efficiently managing the interruption of user-level critical sections
US20230236901A1 (en) Safe critical section operations for virtual machines with virtual central processing unit overcommit
Rothberg Interrupt handling in Linux
US20230019377A1 (en) Memory barrier elision for multi-threaded workloads
Dos Santos et al. On the design and implementation of real-time resource access protocols
US20240134669A1 (en) Paravirtual pause loops in guest user space
Burgio et al. Real-time heterogeneous platforms
US20230305872A1 (en) Efficient central processing unit overcommit for virtual machines with symmetric multi-processing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right