KR20150088045A - 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템 - Google Patents

매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템 Download PDF

Info

Publication number
KR20150088045A
KR20150088045A KR1020140008392A KR20140008392A KR20150088045A KR 20150088045 A KR20150088045 A KR 20150088045A KR 1020140008392 A KR1020140008392 A KR 1020140008392A KR 20140008392 A KR20140008392 A KR 20140008392A KR 20150088045 A KR20150088045 A KR 20150088045A
Authority
KR
South Korea
Prior art keywords
computing device
cluster system
parallel programming
workload
kernel
Prior art date
Application number
KR1020140008392A
Other languages
English (en)
Other versions
KR101594915B1 (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 KR1020140008392A priority Critical patent/KR101594915B1/ko
Priority to US14/321,378 priority patent/US9396033B2/en
Publication of KR20150088045A publication Critical patent/KR20150088045A/ko
Application granted granted Critical
Publication of KR101594915B1 publication Critical patent/KR101594915B1/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/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
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 일 실시예에 따르는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템은 한 개의 계산 디바이스를 위해 작성된 OpenCL 어플리케이션을, 소스 수정 없이 다수 개의 계산 디바이스로 구성된 이종 매니코어 클러스터 시스템 상에서 동작시킬 수 있다. 종래에는 프로그래머가 각 계산 디바이스의 처리량에 따라 수동적으로 워크로드의 양을 계산 디바이스에 적절히 배분해야 했으나, 본 발명의 일 실시예는 이에 대한 프로그래밍 장벽을 제거할 수 있으므로, 프로그래머에게 용이한 이종 매니코어 클러스터 환경을 제공할 수 있다.

Description

매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템 {METHOD FOR PERFORMING PARALLEL PROGRAMING IN MANYCORE CLUSTER SYSTEM AND MANYCORE CLUSTER SYTEM}
본 발명은 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템에 관한 것으로, 보다 상세하게는 병렬 컴퓨팅 프레임워크를 기반으로 하는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템에 관한 것이다.
최근 들어, 일반적인 데스크 톱에도 고성능 컴퓨팅을 위한 쿼드 혹은 헥사 코어 CPU (Central Processing Unit)가 장착되어 있다. 또한, 그래픽 처리 뿐만 아니라 일반적인 계산까지 가능한 GPU (Graphic Processing Unit)도 CUDA (Computer Unified Device Architecture)나 OpenCL (Open Computing Language)을 이용하여 고성능 컴퓨팅을 처리할 수 있게 되었다. 이와 같이 하드웨어를 고성능 컴퓨팅에 이용하고자 한다면, 그에 따른 병렬 프로그래밍 모델을 사용하여야 한다. OpenCL은 대표적인 병렬 프로그래밍 모델로서 최근 들어 각광받고 있다.
OpenCL은 다중 플랫폼(예를 들어, 복수 개의 CPU, GPU 등)에서 동작하는 프로그램 등을 작성할 수 있게 하며, 그래픽 처리 장치(GPU)의 역량을 그래픽 처리 이외의 영역(범용 GPU)으로 확장할 수 있도록 한다. 이러한 OpenCL은 다양한 하드웨어 제조업체에서 제조한 각각의 하드웨어에서 동작 가능하므로, 많은 제조업체는 OpenCL을 기반으로 하여 자신의 하드웨어에 맞는 프레임워크를 제작하고 있다.
한편, 공개특허공보 제10-2009-0063122호 (공개일 : 2009. 06. 17)에 기재되어 있는 바와 같이, 시스템의 워크로드를 관리하는 것은 시스템의 부하를 줄이고 프로세스 속도를 향상시키기 위한 중요한 방법이다.
다만, 제작된 OpenCL 어플리케이션은 하나의 노드에만 적용 가능하므로, 상기 OpenCL 어플리케이션을 클러스터 환경으로 확장하여 워크로드를 분배하고자 한다면 디바이스 간 통신 및 노드 간 통신을 위한 MPI(Message Passing Interface)를 상기 OpenCL 어플리케이션에 추가해야 한다. 병렬 프로그래밍의 특성상 OpenCL 어플리케이션에 MPI를 추가하는 것은 코딩의 복잡도를 향상시킬 수 있다. 또한, 매니코어 클러스터 시스템을 구성하는 각각의 계산 디바이스가 서로 다를 경우에는 각 노드 간에 워크로드를 분배하여야 한다.
결과적으로 OpenCL 어플리케이션 실행에 따르는 워크로드를 클러스터 환경에서 분배하고자 할 때에는 프로그래머의 추가 프로그래밍이 많이 요구되므로, 결과적으로 프로그램 생산성을 떨어뜨리고, OpenCL의 활용도를 떨어뜨리게 된다.
따라서 상술된 문제점을 해결하기 위한 기술이 필요하게 되었다.
본 발명의 일실시예는, 클러스터 시스템에서 한 노드에 기인한 워크로드를 분배하고자 할 때, 프로그래밍의 장벽을 극복하기 위해, 클러스터 시스템 내의 각 계산 디바이스의 처리량을 고려하여 자동으로 워크로드를 분배시키도록 하는 데에 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따르는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법은, 각 노드가 적어도 하나의 계산 디바이스를 포함하는 복수 개의 노드를 포함하는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법에 있어서, 병렬 프로그래밍 어플리케이션을 적어도 하나의 노드에서 실행하는 단계; 상기 적어도 하나의 노드에서, 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계; 및 상기 예측된 계산 디바이스의 데이터 처리량에 따라, 상기 병렬 프로그래밍 어플리케이션의 실행에 따르는 워크로드를 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스로 분배하는 단계;를 포함한다.
또한, 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는, 기계학습 모델링을 이용하여 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측한다.
또한, 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는, 상기 적어도 하나의 노드에서 상기 병렬 프로그래밍 어플리케이션이 실행될 때 소요되는 실행시간을 예측하여, 예측된 실행시간을 바탕으로 상기 각 계산 디바이스의 데이터 처리량을 예측한다.
또한, 상기 계산 디바이스의 종류는, CPU, GPU 및 병렬 프로그래밍을 지원하는 다른 디바이스 중 어느 하나이다.또한, 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는, 상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계; 실행시간 예측 알고리즘을 통해 상기 커널 실행시간을 예측하는 단계; 상기 커널의 피처 값과 상기 커널 실행시간을 기초로, 상기 매니코어 클러스터 시스템이 상기 병렬 프로그래밍 어플리케이션을 실행하기 위한 전체 실행시간을 예측하는 단계; 및 상기 예측된 전체 실행시간을 기초로 각 계산 디바이스의 데이터 처리량을 예측하는 단계;를 포함한다.
또한, 상기 매니코어 클러스터 시스템에 대한 커널의 피처 값을 추출하는 단계는, 상기 각 계산 디바이스의 하드웨어 성능 값을 추출하여, 상기 하드웨어 성능 값을 기초로 상기 각 계산 디바이스에 대한 커널의 피처 값을 추출한다.
또한, 상기 매니코어 클러스터 시스템에 대한 커널의 피처 값을 추출하는 단계는, 적어도 하나의 상기 노드의 CPU에서 상기 워크로드의 제 1 부분을 샘플링하여, 샘플링된 워크로드의 제 1 부분을 통해 상기 적어도 하나의 노드에 포함된 GPU의 하드웨어 성능 값을 추출하는 단계; 상기 워크로드의 제 2부분을 상기 워크로드의 제 1 부분이 샘플링된 CPU에서 샘플링하여, 상기 워크로드의 제 2 부분이 샘플링된 CPU의 하드웨어 성능 값을 추출하는 단계; 및 상기 CPU 및 GPU의 하드웨어 성능 값 중 적어도 하나를 기초로 상기 일 노드 내의 계산 디바이스에 대한 커널의 피처 벡터를 추출하는 단계; 를 포함한다.
또한, 상기 병렬 프로그래밍 어플리케이션은, OpenCL 어플리케이션이다.
또한, 상기 워크로드를 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스로 분배하는 단계는, 상기 병렬 프로그래밍 어플리케이션의 소스 코드의 수정없이 상기 워크로드를 상기 적어도 하나의 계산 디바이스로 분배한다.
또한, 상기 매니코어 클러스터 시스템은, 이종 매니코어 클러스터 시스템이다.
한편, 본 발명의 제 2 측면에 따르는 매니코어 클러스터 시스템은, 각각이 적어도 하나의 계산 디바이스를 포함하며, 병렬 프로그래밍 어플리케이션을 실행할 수 있는 복수 개의 노드;를 포함하는 매니코어 클러스터 시스템에 있어서, 상기 복수 개의 노드 중 적어도 하나는, 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 기계학습 엔진을 포함하며, 상기 복수 개의 노드 중 적어도 하나의 노드에서 실행된 병렬 프로그래밍 어플리케이션에 의한 워크로드는, 상기 기계학습 엔진에 의해 예측된 계산 디바이스의 데이터 처리량에 따라 상기 적어도 하나의 계산 디바이스로 분배된다.
또한, 상기 기계학습 엔진은, 기계학습 모델링을 이용하여 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측한다.
또한, 상기 기계학습 엔진은, 상기 적어도 하나의 노드에서 상기 병렬 프로그래밍 어플리케이션이 실행될 때 소요되는 실행시간을 예측하여, 예측된 실행시간을 바탕으로 상기 각 계산 디바이스의 데이터 처리량을 예측한다.
또한, 상기 계산 디바이스의 종류는, CPU, GPU 및 병렬 프로그래밍을 지원하는 다른 디바이스 중 어느 하나이다.
또한, 상기 기계학습 엔진은, 상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계; 실행시간 예측 알고리즘을 통해 상기 커널 실행시간을 예측하는 단계; 상기 커널의 피처 값과 상기 커널 실행시간을 기초로, 상기 매니코어 클러스터 시스템이 상기 병렬 프로그래밍 어플리케이션을 실행하기 위한 전체 실행시간을 예측하는 단계; 및 상기 예측된 전체 실행시간을 기초로 각 계산 디바이스의 데이터 처리량을 예측하는 단계;를 수행한다.
또한, 상기 기계학습 엔진은, 상기 각 계산 디바이스의 하드웨어 성능 값을 추출하여, 상기 하드웨어 성능 값을 기초로 상기 각 계산 디바이스에 대한 커널의 피처 값을 추출한다.
또한, 상기 기계학습 엔진은, 상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계에서, 적어도 하나의 상기 노드의 CPU에서 상기 워크로드의 제 1 부분을 샘플링하여, 샘플링된 워크로드의 제 1 부분을 통해 상기 적어도 하나의 노드에 포함된 GPU의 하드웨어 성능 값을 추출하는 단계; 상기 워크로드의 제 2부분을 상기 워크로드의 제 1 부분이 샘플링된 CPU에서 샘플링하여, 상기 워크로드의 제 2 부분이 샘플링된 CPU의 하드웨어 성능 값을 추출하는 단계; 및 상기 CPU 및 GPU의 하드웨어 성능 값 중 적어도 하나를 기초로 상기 일 노드 내의 계산 디바이스에 대한 커널의 피처 벡터를 추출하는 단계;를 수행한다.
또한, 상기 병렬 프로그래밍 어플리케이션은, OpenCL 어플리케이션이다.
또한, 상기 워크로드는, 상기 병렬 프로그래밍 어플리케이션의 소스 코드의 수정없이 상기 적어도 하나의 계산 디바이스로 분배된다.
또한, 상기 매니코어 클러스터 시스템은, 이종 매니코어 클러스터 시스템이다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일실시예는 한 개의 계산 디바이스를 위해 작성된 OpenCL 어플리케이션을, 소스 수정 없이 다수 개의 계산 디바이스로 구성된 클러스터 시스템 상에서 동작시킬 수 있다.
종래에는 프로그래머가 각 계산 디바이스의 처리량에 따라 수동적으로 워크로드의 양을 계산 디바이스에 적절히 배분해야 했으나, 본 발명은 이에 대한 프로그래밍 장벽을 제거할 수 있으므로, 프로그래머에게 용이한 이종 매니코어 클러스터 환경을 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일실시예에 따르는 매니코어 클러스터 시스템의 구성도이다.
도 2는 본 발명의 일실시예에 따르는 일 노드의 구성을 도시한 블록도이다.
도 3a 내지 3c는 본 발명의 일실시예에 따르는 워크로드가 매니코어 클러스터 시스템 내의 각 계산 디바이스로 분배되는 과정을 도식화한 도면이다.
도 4 는 본 발명의 일실시예에 따르는 매니코어 클러스터 시스템의 계산 디바이스 가상화를 도식화한 도면이다.
도 5는 본 발명의 일 실시예에 따르는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법을 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하의 설명에서, '클러스터 시스템'이란 네트워크를 통해 연결된서 복수 개의 컴퓨터의 집합으로서, 클라이언트가 하나의 컴퓨터처럼 이용할 수 있게 하는 시스템을 의미한다. 이러한 클러스터 시스템은 복수 개의 컴퓨터를 협조시킴으로써 1대의 컴퓨터에서는 얻을 수 없었던 신뢰성과 처리능력의 향상을 구현시킬 수 있다. 또한, '매니코어 클러스터 환경' 또는 '매니코어 클러스터 시스템'이란 클러스터 시스템을 구성하는 각 컴퓨터가 매니코어 프로세서로 구성되는 경우의 시스템을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 일실시예에 따른 클러스터 시스템 구성도이다.
클러스터 시스템(100)은, 이종 또는 동종 매니코어(Heterogeneous or homogeneous Manycore) 클러스터 환경을 제공할 수 있는 시스템이다. 클러스터 시스템(100)은 독립적인 컴퓨팅 장치로 구성된 적어도 하나의 노드(20)들이 네트워크(10)를 통하여 서로 연결되어 있는 시스템이다. 여기서 각 노드(20)들은 OpenCL 어플리케이션을 실행시킬 수 있도록 구성된다.
클러스터 시스템(100)에서 각 노드(20)를 서로 연결하는 네트워크(10)는 인피니밴드 또는 이더넷 등과 같은 상호 접속 네트워크로 구현될 수 있다. 또한, 네트워크(10)는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 부가가치 통신망(Value Added Network; VAN), 개인 근거리 무선통신(Personal Area Network; PAN), 이동 통신망(mobile radio communication network), Wibro(Wireless Broadband Internet), Mobile WiMAX, HSDPA(High Speed Downlink Packet Access) 또는 위성 통신망 등과 같은 모든 종류의 유/무선 네트워크로 구현될 수 있다.
각 노드(20)는 클러스터 시스템(100) 상에서 정보처리기능 및 통신 기능을 수행하는 컴퓨팅 장치이다. 노드(20)는 컴퓨터 또는 원격처리장치와 같은 단말의 형태로 구성될 수 있다. 또한, 각 노드(20)는 독립적으로 정보처리 등의 기능을 처리할 수 있으나, 병렬 프로그래밍을 통하여 다른 노드들과 협력하면서 정보처리 등의 기능을 수행할 수도 있다. 각 노드(20)는 네트워크(10)를 통해 OpenCL 어플리케이션의 동작을 위한 통신을 수행할 수 있다. 이러한 노드는 데이터의 송신원, 수신처 또는 중계점 중 어느 하나에 해당할 수 있다.
도 2는 본 발명의 일실시예에 따른 매니코어 클러스터 시스템에서의 일 노드를 도시한 블록도이다.
노드(20)는 하나 이상의 계산 디바이스(210), 메인 메모리(220) 및 기계학습 엔진(230)을 포함할 수 있다. 노드(20)는 기계학습 엔진(230)을 통하여 OpenCL 어플리케이션의 실행에 따르는 워크로드를 클러스터 시스템 내의 각 계산 디바이스의 코어로 분배할 수 있으며, 각 계산 디바이스(210)는 분배된 워크로드를 처리할 수 있다.
이때, 계산 디바이스(210)는 그래픽 처리도 가능하며 그래픽 처리 이외에도 일반적인 계산이 가능한 장치로서, 복수 개의 코어(미도시)를 포함할 수 있다. 예를 들어, 계산 디바이스(210)는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), 병렬 프로그래밍을 지원하는(예를 들어, OpenCL을 지원하는) 기타 다른 디바이스 중 어느 하나일 수 있다. 또한, 계산 디바이스(210)는 메인 메모리(220)와 통신하기 위한 인터페이스를 포함할 수 있다. 예를 들어, 계산 디바이스(210)가 GPU인 경우, 상기 인터페이스는 GPU와 메인 메모리 간의 통신을 위한 PCI-E(Peripheral component interconnect-Express)가 될 수 있다.
메인 메모리(220)는 계산 디바이스(210)에 의해 실행되는 프로그램과 자료 및 처리 결과를 저장하는 장치이다. 예를 들어, 메인 메모리(220)는 RAM 및/또는 ROM과 같은 휘발성 메모리나 그 밖의 비휘발성 메모리로 구성될 수 있다.
기계학습 엔진(230)은 계산 디바이스(210)에 의하여 처리되는 OpenCL어플리케이션에 의한 워크로드를 계산 디바이스(210)의 처리량을 예측하여 각 계산 디바이스(210)에 분배할 워크로드의 양을 결정할 수 있다. 계산 디바이스(210)의 처리량 예측값은 주어진 커널의 소스 및 각 디바이스의 하드웨어 특성 등을 통하여 추출될 수 있다. 또한, 기계학습 엔진(230)은 매니코어 클러스터 시스템 내의 호스트 노드에만 포함되도록 구성될 수 있으나, 이에 한하지 않으며, 적어도 하나의 다른 노드에도 포함되도록 구성될 수 있다.
이하, 도 3a 내지 도 3c를 통해 본 발명의 일 실시예에 따르는 기계학습 엔진(230)의 OpenCL 어플리케이션 실행에 따르는 워크로드 분배 동작에 대하여 구체적으로 설명한다.
먼저, 매니코어 클러스터 시스템의 일 노드(20)에서 하나의 계산 디바이스를 타깃으로 하는 OpenCL 어플리케이션이 실행된다. 이어서, 상기 일 노드(20)가 OpenCL 어플리케이션의 호스트 프로그램을 실행시킬 수 있으며, 설명의 편의상 상기 일 노드를 '호스트 노드'라 한다.
이때, OpenCL 어플리케이션의 실행에 따르는 커널(kernel)의 '워크로드(300)'는 도 3a와 같은 복수 개의 블록으로 표현될 수 있다. 여기서 커널이란 OpenCL 프로그램 중 병렬로 수행되도록 만들어진 함수를 의미하며, 이 함수는 SPMD(Single Program Multiple Data) 스타일로 작성될 수 있는데, 커널의 한 실행 인스턴스(instance)를 워크-아이템(work-item)이라고 한다. 워크-아이템(300m)은 도 3a에서 하나의 블록으로 표현될 수 있다. 한편, 계산 디바이스가 GPU일 경우 GPU 내 한 개의 스칼라(scalar) 프로세서가 워크-아이템 하나의 실행을 담당할 수 있다. 그리고, 특정 개수의 워크-아이템들이 모여 하나의 워크-그룹(work-group)을 구성할 수 있으며, 한 개의 워크 그룹(300g)은 도 3a에서 일 행(column)의 워크 아이템(300m)이 될 수 있다. 한편, 워크 그룹은 OpenCL 런타임(runtime)에 의해 하나의 계산 디바이스에서 실행될 수 있다. 이어서, 적어도 하나의 워크 그룹(300g)들이 모여서 상기 '워크로드(300)'를 구성할 수 있다.
호스트 노드 상의 호스트 프로그램이 커널 커맨드(kernel command)를 실행하면, 호스트 노드의 기계학습 엔진(230)은 커널의 워크로드(300)를 클러스터 시스템을 구성하는 모든 계산 디바이스(210)의 처리량을 고려하여 각 노드(20)에 자동으로 분배할 수 있다. 예를 들어, 각 노드(20)마다 코어의 처리량이 상이할 수 있으므로, 각 노드(20)에서 수행할 수 있는 워크로드(300) 처리량도 상이할 수 있다. 따라서, 도 3b와 같이, 매니코어 클러스터 시스템의 커널의 워크로드(300)가 상이한 양으로 각 노드(20)에 분배될 수 있다. 이어서, 도 3c와 같이, 각 노드(20)에서는 각 계산 디바이스(210)의 처리량에 맞게 서로 다른 양의 워크로드(300)가 각 계산 디바이스에 분배될 수 있다. 각 계산 디바이스(210) 내에서는 각 코어의 처리량에 맞게 워크로드(300)가 분배될 수 있다.
이때, 본 발명의 일 실시예에 따르는 매니코어 클러스터 시스템은 각 노드(20) 간의 통신량이 최소화되도록 워크로드(300)를 분배하기 위해, 컴파일러를 실행할 수 있다. 컴파일러는 컴파일러 언어(예를 들어, 과학기술계산용으로 쓰이는 FORTRAN, ALGOL, 사무계산용으로 쓰이는 COBOL, 과학기술계산 및 사무 계산 겸용으로 쓰이는 PL/1 등)로 쓰여진 소스 프로그램을 번역해서 각각 목적의 기계가 해독할 수 있는 기계어로 고치기 위한 프로그램을 의미한다.
한편, 본 발명의 일 실시예에 따르는 기계학습 엔진(230)은 워크로드(300) 분배를 위해 기계학습 모델링을 이용하여 계산 디바이스(210)의 처리량을 자동으로 예측할 수 있다.
기계학습(machine learning) 모델링이란 컴퓨터가 학습할 수 있도록 하는 알고리즘의 개발 및 적용에 관한 기술로서, 어플리케이션의 성능이나 실행 시의 행동 양식을 예측하기 위해 도입된 기술이다. 기계학습 모델링은 트레이닝 데이터(training data)를 통해 얻어진 지식을 바탕으로 일반화(generalizing)할 수 있는 기능을 가지므로 더욱 정확한 모델링을 수행할 수 있다. 구체적으로, 기계학습 모델링은 대상 시스템의 성능 튜닝, 시스템 매핑 및 병렬성 예측을 위해, 컴퓨터 아키텍처와 컴파일러를 최적화하는 기능을 수행할 수 있다.
본 발명의 일 실시예의 기계학습 엔진(230)은 아래와 같은 기계학습 모델링을 통해 계산 디바이스(210)의 처리량을 예측하고 워크로드를 분배할 수 있다.
1) 먼저, 기계학습 엔진(230)은 워크로드의 제 1 부분(즉, 한 개의 워크-아이템)을 해당 노드의 CPU에서 샘플링하여 GPU의 글로벌 메모리 접근 횟수를 파악한다. 구체적으로, 기계학습 엔진(230)은 주어진 커널을 글로벌 메모리 접근 횟수를 추출하는 코드로 변환한 뒤, 샘플링된 워크로드의 제 1 부분 내에서 변환된 코드를 실행하여 메모리 접근 횟수를 파악할 수 있다. 파악된 글로벌 메모리 접근 횟수는 GPU에 대한 하드웨어 성능 값이 된다. 한편, 샘플링된 워크로드의 제 1 부분이 수정한 메모리 영역은 롤백(rollback)된다.
2) 이어서, 기계학습 엔진(230)은 워크로드의 제 2 부분(즉, 전체의 워크 그룹 중 N개의 워크 그룹)을 해당 노드의 CPU에서 샘플링하여 실행함으로써 커널 피처 벡터 x를 추출한다. 여기서, 워크로드의 제 1 부분은 제 2 부분에 속하거나 속하지 않는 것일 수 있다. 또한, 하나의 워크 그룹은 CPU 내의 하나의 코어에서 실행되므로, "N개"는 일반적으로 CPU 내에 포함된 코어의 개수가 될 수 있다. 샘플링이 끝난 후, CPU의 하드웨어 성능 값이 추출될 수 있다. CPU에 대한 하드웨어 성능 값은 메인 메모리에 대한 접근 횟수일 수 있으며, 퍼포먼스 카운터(performance counter) 라이브러리와 같은 수단을 통해 획득될 수 있다. 이때, 기계학습 엔진(230)은 CPU및 GPU의 하드웨어 성능 값 중 적어도 하나를 바탕으로 커널 피처 벡터 x를 추출할 수 있다.
3) 이어서, 기계학습 엔진(230)은 실행시간 예측 알고리즘(예를 들어, 곡선 적합(curve fitting) 알고리즘)을 이용하여, OpenCL 어플리케이션의 데이터가 해당 노드의 CPU와 GPU에서 실행되었을 때의 커널 실행시간을 예측할 수 있다.
4) 기계학습 엔진(230)은 커널 피처 벡터 x와 예측된 커널 실행시간을 해석(analytic) 모델링에 적용하여, 전체 실행시간을 예측한다. 여기서 해석 모델링이란 어플리케이션의 성능이나 실행 시의 행동 양식을 예측하기 위한 기술을 의미한다. 그리고 전체 실행시간은 각 계산 디바이스가 OpenCL 어플리케이션을 실행하는 데에 걸리는 전체 실행시간을 의미한다. 또한, 전체 실행시간과 커널 실행시간 사이의 관계는 다음과 같다 : “전체 실행시간 = 커널 실행시간 + 메인 메모리와 계산 디바이스 간 및 메인 메모리 간의 데이터 이동에 소요되는 시간”. 또한, 피처 벡터 x는 데이터 이동에 소요되는 시간을 해석 모델링으로 예측하기 위해 요구되는 것이다.
5) 기계학습 엔진(230)은 전체 실행시간을 통해 매니코어 클러스터 시스템 내에 포함된 각 계산 디바이스의 처리량을 예측할 수 있으며, 그에 따라 각 계산 디바이스에 분배할 워크로드의 양을 결정할 수 있다.
본 발명의 일 실시예에 따르는 기계학습 엔진(230)은 전술한 최적의 계산 디바이스의 종류를 예측하는 방법과 계산 디바이스의 종류에 따라 워크로드를 분배하는 방법 중 적어도 하나를 이용하여 계산 디바이스의 처리량을 예측할 수 있다. 다만, 이에 한하지 않으며, 본 발명의 일 실시예는 다른 다양한 방식의 기계학습 방법에 의한 계산 디바이스(210)의 처리량 예측법을 포함할 수 있다.
이러한 기계학습 엔진(230)의 워크로드(300) 분배 결과, 한 노드(20)에서 실행된 OpenCL 어플리케이션에 의한 워크로드(300)는 도 4의 (a)와 같이 각각의 계산 디바이스(210)로 분배된다. 그리고, 한 노드(20) 내의 각 계산 디바이스(210)는 노드(20) 내에 포함된 메인 메모리(220)와 연결되는데, 전체 클러스터 시스템(100)의 측면에서 보면 각 노드(20)의 메인 메모리(220)들의 집합은 하나의 가상 메모리(220a)로 표현될 수 있다. 따라서, 전체 클러스터 시스템(100)은 도 4의 (b)와 같이 하나의 가상 메모리(220a)와 복수 개의 계산 디바이스(210)의 조합으로 표현될 수 있다. 이어서, 복수 개의 계산 디바이스(210)는 OpenCL 어플리케이션 병렬 프로그래밍을 통해 하나의 워크로드(300)를 일부분씩 분담하여 처리하므로, 복수 개의 계산 디바이스(210)는 하나의 워크로드(300)를 처리하는 하나의 계산 디바이스(210a)로 가상화될 수 있다. 이 경우, 도 4의 (c)와 같이, 하나의 계산 디바이스(210a)와 하나의 가상 메모리(220a)로 표현될 수 있다.
따라서, 본 발명의 일 실시예에 의해 사용자는 각 노드(20)의 계산 디바이스(210)들을 하나의 계산 디바이스(210)로 가상화함으로써, 하나의 클러스터 시스템을 하나의 계산 디바이스(210)로 간주하여 이용할 수 있게 된다. 본 발명의 일 실시예에 따르는 방법이 적용된 시스템은, 하나의 노드(20)에서 클러스터 시스템 전체로 OpenCL 어플리케이션 실행에 의한 워크로드(300)를 적절하게 분배할 수 있으며, 사용자는 하나의 노드(20)에서 클러스터 시스템 전체를 하나의 시스템으로 인식하고 OpenCL 어플리케이션을 용이하게 제작할 수 있다. 결과적으로, 한 개의 계산 디바이스를 타깃으로 하는 OpenCL 어플리케이션에 대하여 아무런 소스 코드의 수정없이 자동으로 매니코어 클러스터 환경에서 동작시킬 수 있다.
이하, 도 5를 참조하여, 본 발명의 일 실시예에 따르는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법에 대해서 구체적으로 설명한다.
먼저, 클러스터 시스템의 일 노드(20)에서 하나의 계산 디바이스(210)를 타깃으로 하는 OpenCL 어플리케이션이 실행된다(S101). 여기서 상기 일 노드(20)를 호스트 노드라고 한다. OpenCL 어플리케이션은 호스트 노드의 호스트 프로그램을 통해 실행된다.
이어서, 호스트 노드의 호스트 프로그램은 커널 커맨드를 실행한다(S102).
호스트 노드는 OpenCL 어플리케이션의 실행에 따르는 커널의 워크로드(300)를 매니코어 클러스터 시스템의 다른 노드(20)들에 배분하기 위하여, 시스템 내의 각 계산 디바이스(210)의 처리량을 예측한다(S103). 이를 위해, 호스트 노드의 기계학습 엔진(230)은 각 계산 디바이스에서 OpenCL 어플리케이션을 실행하기 위한 전체 실행시간을 예측하여 상기 각 계산 디바이스(210)의 처리량을 예측할 수 있다. 이때, 기계학습 엔진(230)은 주어진 커널에 대해서 워크로드의 일부분만을 샘플링함으로써, 커널의 피처 벡터와 커널 실행시간을 예측하고, 이들을 바탕으로 전체 실행시간을 예측할 수 있다.
호스트 노드는 예측된 처리량에 따라, 커널의 워크로드(300)를 각 계산 디바이스(210)로 분배한다(S104). 각 계산 디바이스(210)에서 할당받은 워크로드(300)는 서로 다른 양이거나 같은 양일 수 있다. 또한, 각 계산 디바이스(210)에서 할당받은 워크로드(300)는 계산 디바이스(210)의 CPU 내의 코어의 개수와 GPU 내의 코어의 개수에 따라 서로 달라질 수도 있다.
이러한 과정에 따라 각 노드(20)에서는 OpenCL 어플리케이션의 소스 코드 수정없이 워크로드(300)가 분배되어 각 노드(20)에서 OpenCL 어플리케이션이 동작될 수 있다. 이는 하나의 매니코어 클러스터 시스템을 하나의 메모리와 계산 디바이스(210)로 구성된 하나의 개체로 가상화시킬 수 있다.
한편, 상술된 실시예에 따른 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
100 : 매니코어 클러스터 시스템 10 : 네트워크
20 : 노드 210 : 계산 디바이스
220 : 메인 메모리 230 : 기계학습 엔진

Claims (20)

  1. 각 노드가 적어도 하나의 계산 디바이스를 포함하는 복수 개의 노드를 포함하는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법에 있어서,
    병렬 프로그래밍 어플리케이션을 적어도 하나의 노드에서 실행하는 단계;
    상기 적어도 하나의 노드에서, 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계; 및
    상기 예측된 계산 디바이스의 데이터 처리량에 따라, 상기 병렬 프로그래밍 어플리케이션의 실행에 따르는 워크로드를 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스로 분배하는 단계;
    를 포함하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  2. 제 1 항에 있어서,
    상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는,
    기계학습 모델링을 이용하여 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  3. 제 1 항에 있어서,
    상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는,
    상기 적어도 하나의 노드에서 상기 병렬 프로그래밍 어플리케이션이 실행될 때 소요되는 실행시간을 예측하여, 상기 예측된 실행시간을 기초로 상기 각 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  4. 제 3 항에 있어서,
    상기 계산 디바이스의 종류는,
    CPU, GPU 및 병렬 프로그래밍을 지원하는 다른 디바이스 중 어느 하나인, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  5. 제 4 항에 있어서,
    상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는,
    상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계;
    실행시간 예측 알고리즘을 통해 상기 커널 실행시간을 예측하는 단계;
    상기 커널의 피처 값과 상기 커널 실행시간을 기초로, 상기 매니코어 클러스터 시스템이 상기 병렬 프로그래밍 어플리케이션을 실행하기 위한 전체 실행시간을 예측하는 단계; 및
    상기 예측된 전체 실행시간을 기초로 각 계산 디바이스의 데이터 처리량을 예측하는 단계;
    를 포함하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  6. 제 5 항에 있어서,
    상기 매니코어 클러스터 시스템에 대한 커널의 피처 값을 추출하는 단계는,
    상기 각 계산 디바이스의 하드웨어 성능 값을 추출하여, 상기 하드웨어 성능 값을 기초로 상기 각 계산 디바이스에 대한 커널의 피처 값을 추출하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  7. 제 6 항에 있어서,
    상기 매니코어 클러스터 시스템에 대한 커널의 피처 값을 추출하는 단계는,
    적어도 하나의 상기 노드의 CPU에서 상기 워크로드의 제 1 부분을 샘플링하여, 샘플링된 워크로드의 제 1 부분을 통해 상기 적어도 하나의 노드에 포함된 GPU의 하드웨어 성능 값을 추출하는 단계;
    상기 워크로드의 제 2부분을 상기 워크로드의 제 1 부분이 샘플링된 CPU에서 샘플링하여, 상기 워크로드의 제 2 부분이 샘플링된 CPU의 하드웨어 성능 값을 추출하는 단계; 및
    상기 CPU 및 GPU의 하드웨어 성능 값 중 적어도 하나를 기초로 상기 일 노드 내의 계산 디바이스에 대한 커널의 피처 벡터를 추출하는 단계; 를 포함하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  8. 제 1 항에 있어서,
    상기 병렬 프로그래밍 어플리케이션은,
    OpenCL 어플리케이션인, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  9. 제 1 항에 있어서,
    상기 워크로드를 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스로 분배하는 단계는,
    상기 병렬 프로그래밍 어플리케이션의 소스 코드의 수정없이 상기 워크로드를 상기 적어도 하나의 계산 디바이스로 분배하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  10. 제 1 항에 있어서,
    상기 매니코어 클러스터 시스템은,
    이종 매니코어 클러스터 시스템인, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법.
  11. 각각이 적어도 하나의 계산 디바이스를 포함하며, 병렬 프로그래밍 어플리케이션을 실행할 수 있는 복수 개의 노드;를 포함하는 매니코어 클러스터 시스템에 있어서,
    상기 복수 개의 노드 중 적어도 하나는, 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 기계학습 엔진을 포함하며,
    상기 복수 개의 노드 중 적어도 하나의 노드에서 실행된 병렬 프로그래밍 어플리케이션에 의한 워크로드는, 상기 기계학습 엔진에 의해 예측된 계산 디바이스의 데이터 처리량에 따라 상기 적어도 하나의 계산 디바이스로 분배되는, 매니코어 클러스터 시스템.
  12. 제 11 항에 있어서,
    상기 기계학습 엔진은,
    기계학습 모델링을 이용하여 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템.
  13. 제 11 항에 있어서,
    상기 기계학습 엔진은,
    상기 적어도 하나의 노드에서 상기 병렬 프로그래밍 어플리케이션이 실행될 때 소요되는 실행시간을 예측하여, 상기 예측된 실행시간을 바탕으로 상기 각 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템.
  14. 제 13 항에 있어서,
    상기 계산 디바이스의 종류는,
    CPU, GPU 및 병렬 프로그래밍을 지원하는 다른 디바이스 중 어느 하나인, 매니코어 클러스터 시스템.
  15. 제 14 항에 있어서,
    상기 기계학습 엔진은,
    상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계;
    실행시간 예측 알고리즘을 통해 상기 커널 실행시간을 예측하는 단계;
    상기 커널의 피처 값과 상기 커널 실행시간을 기초로, 상기 매니코어 클러스터 시스템이 상기 병렬 프로그래밍 어플리케이션을 실행하기 위한 전체 실행시간을 예측하는 단계; 및
    상기 예측된 전체 실행시간을 기초로 각 계산 디바이스의 데이터 처리량을 예측하는 단계;를 수행하는, 매니코어 클러스터 시스템.
  16. 제 15 항에 있어서,
    상기 기계학습 엔진은, 상기 각 계산 디바이스의 하드웨어 성능 값을 추출하여, 상기 하드웨어 성능 값을 기초로 상기 각 계산 디바이스에 대한 커널의 피처 값을 추출하는, 매니코어 클러스터 시스템.
  17. 제 14 항에 있어서,
    상기 기계학습 엔진은,
    상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계에서, 적어도 하나의 상기 노드의 CPU에서 상기 워크로드의 제 1 부분을 샘플링하여, 샘플링된 워크로드의 제 1 부분을 통해 상기 적어도 하나의 노드에 포함된 GPU의 하드웨어 성능 값을 추출하는 단계;
    상기 워크로드의 제 2부분을 상기 워크로드의 제 1 부분이 샘플링된 CPU에서 샘플링하여, 상기 워크로드의 제 2 부분이 샘플링된 CPU의 하드웨어 성능 값을 추출하는 단계; 및
    상기 CPU 및 GPU의 하드웨어 성능 값 중 적어도 하나를 기초로 상기 일 노드 내의 계산 디바이스에 대한 커널의 피처 벡터를 추출하는 단계;를 수행하는, 매니코어 클러스터 시스템.
  18. 제 11 항에 있어서,
    상기 병렬 프로그래밍 어플리케이션은,
    OpenCL 어플리케이션인, 매니코어 클러스터 시스템.
  19. 제 11 항에 있어서,
    상기 워크로드는,
    상기 병렬 프로그래밍 어플리케이션의 소스 코드의 수정없이 상기 적어도 하나의 계산 디바이스로 분배되는, 매니코어 클러스터 시스템.
  20. 제 11 항에 있어서,
    상기 매니코어 클러스터 시스템은,
    이종 매니코어 클러스터 시스템인, 매니코어 클러스터 시스템.
KR1020140008392A 2014-01-23 2014-01-23 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템 KR101594915B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140008392A KR101594915B1 (ko) 2014-01-23 2014-01-23 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
US14/321,378 US9396033B2 (en) 2014-01-23 2014-07-01 Method of executing parallel application on manycore cluster system and the manycore cluster system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140008392A KR101594915B1 (ko) 2014-01-23 2014-01-23 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템

Publications (2)

Publication Number Publication Date
KR20150088045A true KR20150088045A (ko) 2015-07-31
KR101594915B1 KR101594915B1 (ko) 2016-02-17

Family

ID=53544896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140008392A KR101594915B1 (ko) 2014-01-23 2014-01-23 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템

Country Status (2)

Country Link
US (1) US9396033B2 (ko)
KR (1) KR101594915B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180034960A (ko) * 2016-09-28 2018-04-05 한국전자통신연구원 플랫폼 관리 장치 및 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521730B1 (en) * 2014-09-10 2019-12-31 Amazon Technoiogies. Inc. Computing instance launch workflow
US10496514B2 (en) * 2014-11-20 2019-12-03 Kevin D. Howard System and method for parallel processing prediction
US10310852B2 (en) * 2016-09-29 2019-06-04 Entit Software Llc Timing estimations for application lifecycle management work items determined through machine learning
US10891156B1 (en) * 2017-04-26 2021-01-12 EMC IP Holding Company LLC Intelligent data coordination for accelerated computing in cloud environment
KR102029711B1 (ko) * 2018-05-30 2019-10-08 한국항공대학교산학협력단 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법
KR20200083048A (ko) 2018-12-31 2020-07-08 삼성전자주식회사 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법
KR102211604B1 (ko) 2019-02-01 2021-02-04 재단법인대구경북과학기술원 Gpu 기반의 채널 단위 딥뉴럴 네트워크 구조 검색을 사용하는 인공지능 시스템
KR20210020570A (ko) 2019-08-16 2021-02-24 삼성전자주식회사 전자 장치 및 이의 제어 방법
US11113064B2 (en) * 2019-11-27 2021-09-07 Sas Institute Inc. Automated concurrency and repetition with minimal syntax
CN115668881A (zh) * 2020-05-19 2023-01-31 起元技术有限责任公司 对分布式计算网络中的通信的优化
US20240037067A1 (en) * 2022-07-29 2024-02-01 Hewlett Packard Enterprise Development Lp File system provisioning for workload
CN116258199B (zh) * 2022-12-14 2023-10-10 浙江大学 面向大规模gpu集群的分布式训练时间预测方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110060849A (ko) * 2009-11-30 2011-06-08 인터내셔널 비지네스 머신즈 코포레이션 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템
JP2011138506A (ja) * 2009-12-26 2011-07-14 Intel Corp コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化
WO2012049247A1 (en) * 2010-10-13 2012-04-19 Partec Cluster Competence Center Gmbh A computer cluster arrangement for processing a computation task and method for operation thereof
KR20140006351A (ko) * 2012-07-04 2014-01-16 전남대학교산학협력단 예상 실행 시간 정보를 이용하여 작업을 분배하는 이종 멀티코어 프로세서 시스템의 작업 분배 방법 및 그 방법을 이용하는 이종 멀티코어 프로세서 시스템

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101040117B1 (ko) 2007-12-13 2011-06-09 한국전자통신연구원 다중 시스템 워크로드 관리 시스템 및 방법
US8935702B2 (en) * 2009-09-04 2015-01-13 International Business Machines Corporation Resource optimization for parallel data integration
KR20130088512A (ko) 2012-01-31 2013-08-08 한국전자통신연구원 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법
US20140173623A1 (en) * 2012-12-17 2014-06-19 Mediatek Inc. Method for controlling task migration of task in heterogeneous multi-core system based on dynamic migration threshold and related computer readable medium

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110060849A (ko) * 2009-11-30 2011-06-08 인터내셔널 비지네스 머신즈 코포레이션 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템
JP2011138506A (ja) * 2009-12-26 2011-07-14 Intel Corp コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化
WO2012049247A1 (en) * 2010-10-13 2012-04-19 Partec Cluster Competence Center Gmbh A computer cluster arrangement for processing a computation task and method for operation thereof
KR20140006351A (ko) * 2012-07-04 2014-01-16 전남대학교산학협력단 예상 실행 시간 정보를 이용하여 작업을 분배하는 이종 멀티코어 프로세서 시스템의 작업 분배 방법 및 그 방법을 이용하는 이종 멀티코어 프로세서 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180034960A (ko) * 2016-09-28 2018-04-05 한국전자통신연구원 플랫폼 관리 장치 및 방법

Also Published As

Publication number Publication date
US20150205637A1 (en) 2015-07-23
US9396033B2 (en) 2016-07-19
KR101594915B1 (ko) 2016-02-17

Similar Documents

Publication Publication Date Title
KR101594915B1 (ko) 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
Akherfi et al. Mobile cloud computing for computation offloading: Issues and challenges
US10310908B2 (en) Dynamic usage balance of central processing units and accelerators
US20230035451A1 (en) Resource usage prediction for deep learning model
CN102609296B (zh) 虚拟机分支和并行执行
US20180046446A1 (en) Efficient workload deployment using containers and unikernels
US10768916B2 (en) Dynamic generation of CPU instructions and use of the CPU instructions in generated code for a softcore processor
Flores et al. Large-scale offloading in the Internet of Things
US10185590B2 (en) Mobile and remote runtime integration
US20080244222A1 (en) Many-core processing using virtual processors
US11188348B2 (en) Hybrid computing device selection analysis
US9438466B1 (en) Migrating virtual machines between oversubscribed and undersubscribed compute devices
Silla et al. On the benefits of the remote GPU virtualization mechanism: The rCUDA case
US11442835B1 (en) Mobile and remote runtime integration
Kwon et al. Precise execution offloading for applications with dynamic behavior in mobile cloud computing
Montella et al. Enabling android-based devices to high-end gpgpus
Damschen et al. Transparent offloading of computational hotspots from binary code to Xeon Phi
US11467835B1 (en) Framework integration for instance-attachable accelerator
Harichane et al. KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems
Yang et al. Implementation of GPU virtualization using PCI pass-through mechanism
EP3155523B1 (en) Mobile and remote runtime integration
Kirsch et al. Cyber-physical cloud computing: The binding and migration problem
Prades et al. Multi-tenant virtual GPUs for optimising performance of a financial risk application
Zhang et al. A low-code development framework for cloud-native edge systems
Masek et al. Container based virtualisation for software deployment in self-driving vehicles

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200203

Year of fee payment: 5