[go: up one dir, main page]

KR101989033B1 - 플랫폼 관리 장치 및 방법 - Google Patents

플랫폼 관리 장치 및 방법 Download PDF

Info

Publication number
KR101989033B1
KR101989033B1 KR1020160124857A KR20160124857A KR101989033B1 KR 101989033 B1 KR101989033 B1 KR 101989033B1 KR 1020160124857 A KR1020160124857 A KR 1020160124857A KR 20160124857 A KR20160124857 A KR 20160124857A KR 101989033 B1 KR101989033 B1 KR 101989033B1
Authority
KR
South Korea
Prior art keywords
calculation units
application
policy
applications
devices
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.)
Expired - Fee Related
Application number
KR1020160124857A
Other languages
English (en)
Other versions
KR20180034960A (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 KR1020160124857A priority Critical patent/KR101989033B1/ko
Publication of KR20180034960A publication Critical patent/KR20180034960A/ko
Application granted granted Critical
Publication of KR101989033B1 publication Critical patent/KR101989033B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

플랫폼 관리 장치 및 방법이 개시된다. 본 발명의 일실시예에 따른 플랫폼 관리 장치는 어플리케이션들의 설정 정책을 전달 받아 디바이스들을 검사하여 계산 유닛들의 수를 결정하는 정책 관리부 및 상기 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하고, 상기 어플리케이션들을 상기 계산 유닛들에 할당하는 디바이스 관리부를 포함한다.

Description

플랫폼 관리 장치 및 방법 {APPRATUS FOR MANAGING PLATFORM AND METHOD FOR USING THE SAME}
본 발명은 컴퓨터 기술에 관한 것으로, 보다 상세하게는 Open CL 기반 시스템의 관리 기술에 관한 것이다.
최근 CPU의 발전 방향을 살펴보면 에너지 효율을 위해서 성능이 다른 여러 종류의 코어를 하나의 칩에 넣는 이종시스템(Heterogeneous system)이 발전하고 있다. 또한, GPU에서는 GPGPU의 발전과 함께 많은 수의 코어가 존재하는 매니코어(manycore) 시스템이 대중화 되고 있다. 이에 따라 이종 시스템에서 데이터를 병렬적으로 처리하는 소프트웨어기술이 소개되고 있는데, 대표적인 것이 Khronos 그룹에서 제안한 OpenCL(Open Computing Language)이다. OpenCL은 다수의 이종 프로세서 및 매니코어 시스템에서 데이터를 병렬적으로 처리할 수 있게 도와주는 프레임워크이다.
하나의 머신에는 여러 OpenCL 계산 디바이스가 존재하며 하나의 디바이스는 각각 여러 개여 계산 유닛(Computing Unit; CU)을 제공한다. 예를 들어, X사(社)의 CPU와 Y사(社)의 그래픽카드가 하나의 머신에 존재하고 서로 협업하여 계산을 수행하는 환경이라면, 2개의 디바이스가 각각 여러 개의 계산 유닛을 제공하여 연산을 수행하는 형태가 된다. OpenCL 프레임워크에서는 하나 이상의 디바이스를 묶어서 플랫폼(Platform)이라고 불리며, 주로 하나의 하드웨어 벤더가 하나의 플랫폼을 제공한다. OpenCL 프레임워크에서는 여러 플랫폼을 관리하기 위해 ICD(Installable Client Device) 로더가 존재한다. ICD 로더는 시스템에서 하나만 존재 할 수 있으며, 어플리케이션들은 ICD 로더를 통해서 OpenCL 명령을 수행할 수 있다.
OpenCL 시스템은 여러 어플리케이션이 동시에 같은 컴퓨팅 디바이스를 사용할 수 있기 때문에, 하나의 어플리케이션은 같이 수행하는 어플리케이션에 따라 품질의 저하가 나타날 수 있다. 따라서 특정 어플리케이션이 수행 중일 때 다른 어플리케이션의 동작에 영향을 받지 않고 성능을 보장할 수 있는 시스템이 필요하다.
한편, 한국등록특허 제10-1284195호“개방형 범용 병렬 컴퓨팅 프레임워크 동적 작업 분배 장치”는 커널의 수행 시점에 기반하여 코어의 작업을 분배하는 장치에 관하여 개시하고 있다.
본 발명은 전술한 어플리케이션간의 간섭으로 인한 성능 저하 문제를 해결하는 것을 목적으로 한다.
또한, 본 발명은 여러 개의 OpenCL 어플리케이션이 하나의 OpenCL 디바이스를 사용할 경우 발생하는 성능 간섭을 최소화하는 것을 목적으로 한다.
또한, 본 발명은 정책에 따라 특정 어플리케이션이 OpenCL 디바이스의 일부를 전용으로 사용할 수 있는 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 기존의 어플리케이션과 플랫폼 드라이버의 수정 없이 기존 시스템에도 그대로 적용하는 것을 목적으로 한다.
또한, 본 발명은 메모리 계층도에 따라 파티셔닝하는 알고리즘을 이용하여 시스템의 성능을 극대화하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 플랫폼 관리 장치는 어플리케이션들의 설정 정책을 전달 받아 디바이스들을 검사하여 계산 유닛들의 수를 결정하는 정책 관리부 및 상기 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하고, 상기 어플리케이션들을 상기 계산 유닛들에 할당하는 디바이스 관리부를 포함한다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 플랫폼 관리 방법은 플랫폼 관리 장치를 이용하는 방법에 있어서, 어플리케이션들의 설정 정책을 전달 받아 디바이스 및 계산 유닛들의 수를 검사하는 단계; 상기 디바이스 및 계산 유닛들의 수를 결정하는 단계; 상기 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하여 상기 어플리케이션들을 상기 계산 유닛들에 할당하는 단계를 포함한다.
본 발명은 전술한 어플리케이션간의 간섭으로 인한 성능 저하 문제를 해결할 수 있다.
또한, 본 발명은 여러 개의 OpenCL 어플리케이션이 하나의 OpenCL 디바이스를 사용할 경우 발생하는 성능 간섭을 최소화할 수 있다.
또한, 본 발명은 정책에 따라 특정 어플리케이션이 OpenCL 디바이스의 일부를 전용으로 사용할 수 있는 시스템 및 방법을 제공할 수 있다.
또한, 본 발명은 기존의 어플리케이션과 플랫폼 드라이버의 수정 없이 기존 시스템에도 그대로 적용할 수 있다.
또한, 본 발명은 메모리 계층도에 따라 파티셔닝하는 알고리즘을 이용하여 시스템의 성능을 극대화할 수 있다.
도 1은 본 발명의 일실시예에 따른 플랫폼 관리 시스템을 나타낸 블록도이다.
도 2는 본 발명의 일실시예에 따른 플랫폼 관리 시스템에서 플랫폼 관리 장치를 세부적으로 나타낸 블록도이다.
도 3은 본 발명의 일실시예에 따른 어플리케이션의 디바이스 할당을 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 계산 유닛을 나타낸 도면이다.
도 5는 본 발명의 일실시예에 따른 플랫폼 관리 방법을 나타낸 동작흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 플랫폼 관리 시스템을 나타낸 블록도이다.
도 1을 참조하면, OpenCL 어플리케이션A,B가 ICD 로더에 상응하는 플랫폼 관리 장치(100)에 의해 플랫폼 1, 2의 CPU와 GPU에 할당되는 것을 알 수 있다.
OpenCL 플랫폼 관리 시스템은 여러 어플리케이션이 동시에 같은 컴퓨팅 디바이스를 사용할 수 있기 때문에, 하나의 어플리케이션은 같이 수행하는 어플리케이션에 따라 품질의 저하가 나타날 수 있다.
예를 들어, 어플리케이션A가 X사(社) CPU를 이용하여 작업을 수행 중인데, 어플리케이션B가 X사(社)의 GPU 혹은 Y사(社)의 GPU를 이용하여 작업을 수행한다면 어플리케이션A에 주는 영향이 미미하지만, X사(社)의 CPU를 이용한다면 어플리케이션A에서는 눈에 띄는 성능의 저하가 나타나게 된다. 어플리케이션은 자신이 모든 자원을 차지하여 최고의 성능을 내려고 하기 때문에, 이런 어플리케이션들이 여러 개가 수행 중이라면 성능의 저하는 피할 수가 없다.
도 2는 본 발명의 일실시예에 따른 플랫폼 관리 시스템에서 플랫폼 관리 장치를 세부적으로 나타낸 블록도이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 플랫폼 관리 장치(100)는 정책 관리부(110)와 디바이스 관리부(120)를 포함한다.
플랫폼 관리 장치(100)는 성능 격리 기능이 추가된 ICD 로더에 상응할 수 있다.
정책 설정 어플리케이션은 어플리케이션들의 정책을 설정할 수 있다.
정책 관리부(110)는 정책 설정 어플리케이션에서 설정한 설정 정책을 받아 올 수 있다.
이 때, 어플리케이션이 플랫폼 관리 장치(100)에 작업 요청을 보내면, 정책 관리부(110)는 정책에 설정이 된 어플리케이션인지 확인할 수 있다.
이 때, 정책 관리부(110)는 어플리케이션들의 설정 정책을 전달 받아 디바이스들을 검사하여 계산 유닛들의 수를 결정할 수 있다.
만약, 정책에서 디바이스 및 계산 유닛을 할당하지 않은 어플리케이션이라면, 작업 요청을 수행하지 않는다. 디바이스 및 계산 유닛이 할당 되었다면, 정책 관리부(100)는 정책에 동일한 디바이스에 할당 된 다른 어플리케이션이 있는지 확인할 수 있다.
이 때, 정책 관리부(110)는 OpenCL 성능 격리 시스템을 사용하기 위하여 먼저 어플리케이션 별로 사용 가능한 디바이스 및 계산 유닛의 수를 결정할 수 있다. 정책의 설정을 위해 정책 설정 어플리케이션을 수행하면, 플랫폼 관리 장치(100)에서는 각각의 OpenCL 디바이스들을 검사하여 디바이스 별로 다음과 같은 형태로 사용자에게 알려줄 수 있다.
Figure 112016094159559-pat00001
여기서 디바이스ID는 OpenCL 디바이스를 구분해 주는 고유한 ID에 상응할 수 있고, 디바이스 형태는 CPU, GPU, DSP 등 디바이스의 종류에 상응할 수 있다. 계산 유닛의 수는 총 사용 가능한 계산 유닛의 수에 상응할 수 있다.
이를 바탕으로 하여, 사용자는 각각의 어플리케이션에 대해서 사용할 디바이스와 계산 유닛을 다음과 같은 형태로 지정하여 정책 관리 모듈에게 알려줄 수 있다.
Figure 112016094159559-pat00002
이 때, 어플리케이션ID는 특정 어플리케이션을 지칭하는 ID, 실행파일명, 실행파일 경로, 혹은 실행파일 해쉬 값 등 어플리케이션을 구분할 수 있는 다양한 형태가 사용될 수 있다. 디바이스ID는 정책 설정 어플리케이션에게 반환했던 디바이스ID에 상응할 수 있고, 계산 유닛수는 지정한 어플리케이션에게 할당 된 계산 유닛의 수를 지정할 수 있다.
이후에 어플리케이션이 실제 OpenCL 사용을 위해서 플랫폼 관리 장치(100)를 이용하여 OpenCL 디바이스에 접근을 하려고 하면, 플랫폼 관리 장치(100)는 정책 어플리케이션에서 설정된 디바이스만을 OpenCL 어플리케이션에게 노출할 수 있고, OpenCL어플리케이션은 정책에서 설정된 OpenCL 디바이스와 계산 유닛 이외에는 사용할 수 없다.
디바이스 관리부(120)는 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하고, 상기 어플리케이션들을 상기 계산 유닛들에 할당할 수 있다.
ICD 로더에 상응하는 플랫폼 관리 장치(100)는 기존의 OpenCL 규격에 맞춰 OpenCL 어플리케이션에게 노출되고, 플랫폼도 기존의 OpenCL 규격에 맞춰져 있으므로, OpenCL 어플리케이션 및 플랫폼 드라이버의 수정 없이 기존 ICD 로더에 기능만 추가하여 사용할 수 있다.
다른 어플리케이션이 없다면, 디바이스 관리부(120)는 그 어플리케이션에 디바이스의 계산 유닛 전체에 접근 권한을 생성할 수 있다. 만약 두 개 이상의 어플리케이션이 하나의 디바이스에 할당이 되어 있다면, 디바이스 관리부(120)는 디바이스의 계산 유닛을 파티셔닝 하여 (partitioning or fission) 여러 개의 서브 디바이스로 만든 다음 나누어진 서브 디바이스만을 어플리케이션에게 할당 할 수 있다. 서브 디바이스를 만들기 위해서는 플랫폼 드라이버에서 이를 지원해야 하는데, OpenCL 1.2 프로파일을 만족하는 플랫폼이라면 clCreateSubDevices() 함수 등 디바이스를 나누는 방법을 제공하기 때문에 이를 이용해서 서브 디바이스로 나눠줄 수 있다.
도 3은 본 발명의 일실시예에 따른 어플리케이션의 디바이스 할당을 나타낸 도면이다.
도 3을 참조하면, 어플리케이션A는 X사(社)의 디바이스에 단독으로 할당이 되어 있기 때문에, 정책에서 제시한 계산 유닛의 수와 상관없이 디바이스 전체의 계산 유닛을 어플리케이션 A에게 할당 할 수 있다. 어플리케이션B와 어플리케이션C의 경우 하나의 디바이스에 할당되어 있기 때문에, 이런 경우라면, Y사(社) CPU 디바이스를 서브 디바이스로 나누어서 어플리케이션B과 어플리케이션C에 할당 할 수 있다. 어플리케이션B와 어플리케이션C에서는 정책에서 할당된 수만큼의 계산 유닛이 보이게 되므로 그 이상의 계산 유닛을 사용할 수 없다.
디바이스 관리부(120)는 하나의 디바이스를 서브 디바이스로 나눌 때, 계산 유닛 간 캐쉬를 공유하게 하여 최대한 성능을 높일 수 있다.
이 때, 계산 유닛들 사이에 공유 정도에 따라 메모리 계층이 존재할 수 있다.
도 4는 본 발명의 일실시예에 따른 계산 유닛을 나타낸 도면이다.
도 4를 참조하면, CPU에서의 메모리 계층도의 예시이다. GPU도 이와 비슷한 형태에 상응할 수 있다. 계산 유닛, 스트리밍 멀티프로세서, 프로세서 클러스터 등 여러 형태의 메모리 계층이 존재하며, 이들은 디바이스마다 상이하므로, 본 발명에서는 이를 추상화 한 상태에서 설명한다. 계산 유닛 간 공유하는 메모리가 다르므로, 최대한 같은 메모리를 공유하는 계산 유닛을 하나의 서브 디바이스에 할당할 수 있다. 따라서 다음 알고리즘을 이용하여 최적의 서브 디바이스를 나눌 수 있다.
하나의 디바이스에 할당된 어플리케이션 n개에 대해 정책에서 할당된 계산 유닛의 수가 (c1, c2,…,cn) 이고, 메모리 계층도에서 존재하는 공유 메모리의 높이를 k라고하자. (레벨1은 가장 많은 계산 유닛이 공유하는 메모리이고, 레벨k는 가장 적은 계산 유닛이 공유하는 메모리이다.) 레벨 i의 메모리에서 파티셔닝을 할 경우 생성할 수 있는 서브 디바이스 수를 di 라고 하고, 서브 디바이스당 계산 유닛의 수를 si라고 할 때, 다음을 수행한다.
FOR 1≤i≤k
IF di≥n AND si≥max(c1,c2,…,cn)
각각에 어플리케이션에 di 개의 서브 디바이스 중 하나씩을 할당 종료
ENDIF
ENDFOR
// 위 루프 내에서 종료되지 않았다면, 정책을 만족시키면서 메모리를 공유하는 계산 유닛을 찾을 수 없다.
// 이 경우 메모리 공유를 계산하지 않고 할당.
// 어플리케이션 별로 필요 계산 유닛을 순차적으로 할당.
디바이스 관리부(120)는 위 알고리즘을 이용하여, 정책을 만족시키면서 계산 유닛끼리 최대한 큰 메모리를 공유하는 파티셔닝 방법을 찾을 수 있다.
즉, 디바이스 관리부(120)는 도 4에 도시된 바와 같이, NUMA메모리, L4, L3, L2, L1의 순으로 파티셔닝을 하면서 정책을 만족시키는 파티셔닝 방법을 찾을 수 있다. 따라서, 계산 유닛끼리 더 많은 메모리를 공유할 수 있고, 이에 따라 계산 유닛끼리 데이터를 공유하는 경우, 성능을 향상시킬 수 있다.
도 5는 본 발명의 일실시예에 따른 플랫폼 관리 방법을 나타낸 동작흐름도이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 플랫폼 관리 방법은 먼저 디바이스 및 계산 유닛 수를 검사할 수 있다(S210).
즉, 단계(S210)는 정책 설정 어플리케이션에서 설정한 설정 정책을 받아 올 수 있다.
이 때, 단계(S210)는 어플리케이션들의 설정 정책을 전달 받아 디바이스들을 검사하여 계산 유닛들의 수를 결정할 수 있다.
이 때, 단계(S210)는 어플리케이션이 플랫폼 관리 장치(100)에 작업 요청을 보내면, 정책 관리부(110)는 정책에 설정이 된 어플리케이션이지 확인할 수 있다. 만약, 정책에서 디바이스 및 계산 유닛을 할당하지 않은 어플리케이션이라면, 작업 요청을 수행하지 않는다.
이 때, 단계(S210)는 디바이스 및 계산 유닛이 할당 되었다면, 정책에 동일한 디바이스에 할당 된 다른 어플리케이션이 있는지 확인할 수 있다.
또한, 본 발명의 일실시예에 따른 정책 플랫폼 관리 방법은 디바이스 및 계산 유닛 수를 결정할 수 있다(S220).
즉, 단계(S220)는 OpenCL 성능 격리 시스템을 사용하기 위하여 먼저 어플리케이션 별로 사용 가능한 디바이스 및 계산 유닛의 수를 결정할 수 있다. 정책의 설정을 위해 정책 설정 어플리케이션을 수행하면, 플랫폼 관리 장치(100)에서는 각각의 OpenCL 디바이스들을 검사하여 디바이스 별로 다음과 같은 형태로 사용자에게 알려줄 수 있다.
Figure 112016094159559-pat00003
여기서 디바이스ID는 OpenCL 디바이스를 구분해 주는 고유한 ID에 상응할 수 있고, 디바이스 형태는 CPU, GPU, DSP 등 디바이스의 종류에 상응할 수 있다. 계산 유닛의 수는 총 사용 가능한 계산 유닛의 수에 상응할 수 있다.
이를 바탕으로 하여, 사용자는 각각의 어플리케이션에 대해서 사용할 디바이스와 계산 유닛을 다음과 같은 형태로 지정하여 정책 관리 모듈에게 알려줄 수 있다.
Figure 112016094159559-pat00004
이 때, 어플리케이션ID는 특정 어플리케이션을 지칭하는 ID, 실행파일명, 실행파일 경로, 혹은 실행파일 해쉬 값 등 어플리케이션을 구분할 수 있는 다양한 형태가 사용될 수 있다. 디바이스ID는 정책 설정 어플리케이션에게 반환했던 디바이스ID에 상응할 수 있고, 계산 유닛수는 지정한 어플리케이션에게 할당 된 계산 유닛의 수를 지정할 수 있다.
이후에 어플리케이션이 실제 OpenCL 사용을 위해서 플랫폼 관리 장치(100)를 이용하여 OpenCL 디바이스에 접근을 하려고 하면, 플랫폼 관리 장치(100)는 정책 어플리케이션에서 설정된 디바이스만을 OpenCL 어플리케이션에게 노출할 수 있고, OpenCL어플리케이션은 정책에서 설정된 OpenCL 디바이스와 계산 유닛 이외에는 사용할 수 없다.
또한, 본 발명의 일실시예에 따른 플랫폼 관리 방법은 계산 유닛을 파티셔닝 하고 어플리케이션을 계산 유닛에 할당 할 수 있다(S230).
즉, 단계(S230)는 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하고, 상기 어플리케이션들을 상기 계산 유닛들에 할당할 수 있다.
ICD 로더에 상응하는 플랫폼 관리 장치(100)는 기존의 OpenCL 규격에 맞춰 OpenCL 어플리케이션에게 노출되고, 플랫폼도 기존의 OpenCL 규격에 맞춰져 있으므로, OpenCL 어플리케이션 및 플랫폼 드라이버의 수정 없이 기존 ICD 로더에 기능만 추가하여 사용할 수 있다.
다른 어플리케이션이 없다면, 단계(S230)는 어플리케이션에 디바이스의 계산 유닛 전체에 접근 권한을 생성할 수 있다. 만약 두 개 이상의 어플리케이션이 하나의 디바이스에 할당이 되어 있다면, 단계(S230)는 디바이스의 계산 유닛을 파티셔닝하여(partitioning or fission) 여러 개의 서브 디바이스로 만든 다음 나누어진 서브 디바이스만을 어플리케이션에게 할당 할 수 있다. 서브 디바이스를 만들기 위해서는 플랫폼 드라이버에서 이를 지원해야 하는데, OpenCL 1.2 프로파일을 만족하는 플랫폼이라면 clCreateSubDevices() 함수 등 디바이스를 나누는 방법을 제공하기 때문에 이를 이용해서 서브 디바이스로 나눠줄 수 있다.
도 3을 참조하면, 어플리케이션A는 X사(社)의 디바이스에 단독으로 할당이 되어 있기 때문에, 정책에서 제시한 계산 유닛의 수와 상관없이 디바이스 전체의 계산 유닛을 어플리케이션 A에게 할당 할 수 있다. 어플리케이션B와 어플리케이션C의 경우 하나의 디바이스에 할당되어 있기 때문에, 이런 경우라면, Y사(社) CPU 디바이스를 서브 디바이스로 나누어서 어플리케이션B과 어플리케이션C에 할당 할 수 있다. 어플리케이션B와 어플리케이션C에서는 정책에서 할당된 수만큼의 계산 유닛이 보이게 되므로 그 이상의 계산 유닛을 사용할 수 없다.
또한, 단계(S230)는 하나의 디바이스를 서브 디바이스로 나눌 때, 계산 유닛 간 캐쉬를 공유하게 하여 최대한 성능을 높일 수 있다.
이 때, 계산 유닛들 사이에 공유 정도에 따라 메모리 계층을 포함할 수 있다.
도 4를 참조하면, CPU에서의 메모리 계층도의 예시이다. GPU도 이와 비슷한 형태에 상응할 수 있다. 계산 유닛, 스트리밍 멀티프로세서, 프로세서 클러스터 등 여러 형태의 메모리 계층이 존재하며, 이들은 디바이스마다 상이하므로, 본 발명에서는 이를 추상화 한 상태에서 설명한다. 계산 유닛 간 공유하는 메모리가 다르므로, 최대한 같은 메모리를 공유하는 계산 유닛을 하나의 서브 디바이스에 할당할 수 있다. 따라서 다음 알고리즘을 이용하여 최적의 서브 디바이스를 나눌 수 있다.
하나의 디바이스에 할당된 어플리케이션 n개에 대해 정책에서 할당된 계산 유닛의 수가 (c1, c2,…,cn) 이고, 메모리 계층도에서 존재하는 공유 메모리의 높이를 k라고하자. (레벨1은 가장 많은 계산 유닛이 공유하는 메모리이고, 레벨k는 가장 적은 계산 유닛이 공유하는 메모리이다.) 레벨 i의 메모리에서 파티셔닝을 할 경우 생성할 수 있는 서브 디바이스 수를 di 라고 하고, 서브 디바이스당 계산 유닛의 수를 si라고 할 때, 다음을 수행한다.
FOR 1≤i≤k
IF di≥n AND si≥max(c1,c2,…,cn)
각각에 어플리케이션에 di 개의 서브 디바이스 중 하나씩을 할당 종료
ENDIF
ENDFOR
// 위 루프 내에서 종료되지 않았다면, 정책을 만족시키면서 메모리를 공유하는 계산 유닛을 찾을 수 없다.
// 이 경우 메모리 공유를 계산하지 않고 할당.
// 어플리케이션 별로 필요 계산 유닛을 순차적으로 할당.
단계(S230)는 위 알고리즘을 이용하여, 정책을 만족시키면서 계산 유닛끼리 최대한 큰 메모리를 공유하는 파티셔닝 방법을 찾을 수 있다.
즉, 단계(230)는 도 4에 도시된 바와 같이, NUMA메모리, L4, L3, L2, L1의 순으로 파티셔닝을 하면서 정책을 만족시키는 파티셔닝 방법을 찾을 수 있다. 따라서, 계산 유닛끼리 더 많은 메모리를 공유할 수 있고, 이에 따라 계산 유닛끼리 데이터를 공유하는 경우 성능을 향상시킬 수 있다.
이상에서와 같이 본 발명에 따른 플랫폼 관리 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
110: 정책 관리부
120: 디바이스 관리부

Claims (10)

  1. 어플리케이션들의 설정 정책을 전달 받아 디바이스들을 검사하여 계산 유닛들의 수를 결정하는 정책 관리부; 및
    상기 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하고, 상기 어플리케이션들을 상기 계산 유닛들에 할당하는 디바이스 관리부;
    를 포함하고,
    상기 디바이스 관리부는
    두 개 이상의 어플리케이션들이 하나의 디바이스에 할당이 되어 있는 경우, 계산 유닛을 파티셔닝하여 나뉘어진 복수개의 서브 디바이스들에 상기 두 개 이상의 어플리케이션들을 할당하고,
    가장 많은 계산 유닛을 공유하는 메모리로부터 가장 적은 계산 유닛을 공유하는 메모리 순서로 각각의 어플리케이션이 필요로 하는 상기 복수개의 서브 디바이스들 중 어느 하나를 할당하는 것을 특징으로 하는 플랫폼 관리 장치.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 디바이스 관리부는
    하나의 디바이스로부터 계산 유닛들 간에 서로 캐쉬를 공유하도록 복수개의 서브 디바이스들을 파티셔닝하는 것을 특징으로 하는 플랫폼 관리 장치.
  4. 청구항 3에 있어서,
    상기 디바이스 관리부는
    동일한 메모리를 공유하는 계산 유닛들을 하나의 서브 디바이스에 할당하는 것을 특징으로 하는 플랫폼 관리 장치.
  5. 삭제
  6. 플랫폼 관리 장치를 이용하는 플랫폼 관리 방법에 있어서,
    어플리케이션들의 설정 정책을 전달 받아 디바이스 및 계산 유닛들의 수를 검사하는 단계;
    상기 디바이스 및 계산 유닛들의 수를 결정하는 단계; 및
    상기 설정 정책과 상기 계산 유닛들의 수에 기반하여 상기 계산 유닛들을 파티셔닝(partitioning)하여 상기 어플리케이션들을 상기 계산 유닛들에 할당하는 단계;
    를 포함하고,
    상기 할당하는 단계는
    두 개 이상의 어플리케이션들이 하나의 디바이스에 할당이 되어 있는 경우, 계산 유닛을 파티셔닝하여 나뉘어진 복수개의 서브 디바이스들에 상기 두 개 이상의 어플리케이션들을 할당하고,
    가장 많은 계산 유닛을 공유하는 메모리로부터 가장 적은 계산 유닛을 공유하는 메모리 순서로 각각의 어플리케이션이 필요로 하는 상기 복수개의 서브 디바이스들 중 어느 하나를 할당하는 것을 특징으로 하는 플랫폼 관리 방법.
  7. 삭제
  8. 청구항 6에 있어서,
    상기 할당하는 단계는
    하나의 디바이스로부터 계산 유닛들 간에 서로 캐쉬를 공유하도록 복수개의 서브 디바이스들로 파티셔닝하는 것을 특징으로 하는 플랫폼 관리 방법.
  9. 청구항 8에 있어서,
    상기 할당하는 단계는
    동일한 메모리를 공유하는 계산 유닛들을 하나의 서브 디바이스에 할당하는 것을 특징으로 하는 플랫폼 관리 방법.
  10. 삭제
KR1020160124857A 2016-09-28 2016-09-28 플랫폼 관리 장치 및 방법 Expired - Fee Related KR101989033B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160124857A KR101989033B1 (ko) 2016-09-28 2016-09-28 플랫폼 관리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160124857A KR101989033B1 (ko) 2016-09-28 2016-09-28 플랫폼 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180034960A KR20180034960A (ko) 2018-04-05
KR101989033B1 true KR101989033B1 (ko) 2019-06-13

Family

ID=61977386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160124857A Expired - Fee Related KR101989033B1 (ko) 2016-09-28 2016-09-28 플랫폼 관리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101989033B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667560B (zh) * 2020-12-22 2023-01-24 深圳致星科技有限公司 基于fpga的数据分发装置和计算平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010510607A (ja) * 2006-11-21 2010-04-02 マイクロソフト コーポレーション システムハードウェアの交換
JP2015507771A (ja) 2011-09-30 2015-03-12 インテル コーポレイション 消費電力を低減する優先度に基づくアプリケーションイベント制御(paec)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101332839B1 (ko) * 2012-01-05 2013-11-27 서울대학교산학협력단 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
KR101594915B1 (ko) * 2014-01-23 2016-02-17 서울대학교산학협력단 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010510607A (ja) * 2006-11-21 2010-04-02 マイクロソフト コーポレーション システムハードウェアの交換
JP2015507771A (ja) 2011-09-30 2015-03-12 インテル コーポレイション 消費電力を低減する優先度に基づくアプリケーションイベント制御(paec)

Also Published As

Publication number Publication date
KR20180034960A (ko) 2018-04-05

Similar Documents

Publication Publication Date Title
KR102788532B1 (ko) 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
WO2015117565A1 (en) Methods and systems for dynamically allocating resources and tasks among database work agents in smp environment
US7698529B2 (en) Method for trading resources between partitions of a data processing system
US9684600B2 (en) Dynamic process/object scoped memory affinity adjuster
US20200210242A1 (en) Method and system for gpu virtualization based on container
KR20110075295A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US20150128136A1 (en) Graphics processing unit controller, host system, and methods
US11334477B2 (en) Virtualization of multiple coprocessor memory
CN112000465B (zh) 数据中心环境下减少延迟敏感程序性能干扰的方法及系统
CN115605846A (zh) 用于在多核处理器中管理可共享资源的设备和方法
CN103049328A (zh) 计算机系统中内存资源分配方法
CN114281516A (zh) 一种基于numa属性的资源分配方法及装置
CN112130977A (zh) 一种任务调度方法、装置、设备及介质
CN110998530A (zh) 一种虚拟机资源分配系统、方法及计算机程序
US9792209B2 (en) Method and apparatus for cache memory data processing
US20110153971A1 (en) Data Processing System Memory Allocation
KR101848450B1 (ko) 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치
CN114546587A (zh) 一种在线图像识别服务的扩缩容方法及相关装置
CN110502334A (zh) 基于混合内存架构的带宽感知任务窃取方法、系统及芯片
US20230063893A1 (en) Simultaneous-multi-threading (smt) aware processor allocation for cloud real-time workloads
US20150212859A1 (en) Graphics processing unit controller, host system, and methods
KR101989033B1 (ko) 플랫폼 관리 장치 및 방법
US6665777B2 (en) Method, apparatus, network, and kit for multiple block sequential memory management
US20100153678A1 (en) Memory management apparatus and method
US9158551B2 (en) Activating and deactivating Operating System (OS) function based on application type in manycore system

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20160928

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20170814

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20160928

Comment text: Patent Application

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: 20181022

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: 20190310

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20190607

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20190610

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20211125

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20230523

Start annual number: 5

End annual number: 5

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20250318