KR20150088045A - 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템 - Google Patents
매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5019—Workload 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
본 발명은 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템에 관한 것으로, 보다 상세하게는 병렬 컴퓨팅 프레임워크를 기반으로 하는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템에 관한 것이다.
최근 들어, 일반적인 데스크 톱에도 고성능 컴퓨팅을 위한 쿼드 혹은 헥사 코어 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는 본 발명의 일 실시예에 따르는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법을 설명하기 위한 순서도이다.
도 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 : 기계학습 엔진
20 : 노드 210 : 계산 디바이스
220 : 메인 메모리 230 : 기계학습 엔진
Claims (20)
- 각 노드가 적어도 하나의 계산 디바이스를 포함하는 복수 개의 노드를 포함하는 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법에 있어서,
병렬 프로그래밍 어플리케이션을 적어도 하나의 노드에서 실행하는 단계;
상기 적어도 하나의 노드에서, 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계; 및
상기 예측된 계산 디바이스의 데이터 처리량에 따라, 상기 병렬 프로그래밍 어플리케이션의 실행에 따르는 워크로드를 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스로 분배하는 단계;
를 포함하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 1 항에 있어서,
상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는,
기계학습 모델링을 이용하여 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 1 항에 있어서,
상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는,
상기 적어도 하나의 노드에서 상기 병렬 프로그래밍 어플리케이션이 실행될 때 소요되는 실행시간을 예측하여, 상기 예측된 실행시간을 기초로 상기 각 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 3 항에 있어서,
상기 계산 디바이스의 종류는,
CPU, GPU 및 병렬 프로그래밍을 지원하는 다른 디바이스 중 어느 하나인, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 4 항에 있어서,
상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 단계는,
상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계;
실행시간 예측 알고리즘을 통해 상기 커널 실행시간을 예측하는 단계;
상기 커널의 피처 값과 상기 커널 실행시간을 기초로, 상기 매니코어 클러스터 시스템이 상기 병렬 프로그래밍 어플리케이션을 실행하기 위한 전체 실행시간을 예측하는 단계; 및
상기 예측된 전체 실행시간을 기초로 각 계산 디바이스의 데이터 처리량을 예측하는 단계;
를 포함하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 5 항에 있어서,
상기 매니코어 클러스터 시스템에 대한 커널의 피처 값을 추출하는 단계는,
상기 각 계산 디바이스의 하드웨어 성능 값을 추출하여, 상기 하드웨어 성능 값을 기초로 상기 각 계산 디바이스에 대한 커널의 피처 값을 추출하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 6 항에 있어서,
상기 매니코어 클러스터 시스템에 대한 커널의 피처 값을 추출하는 단계는,
적어도 하나의 상기 노드의 CPU에서 상기 워크로드의 제 1 부분을 샘플링하여, 샘플링된 워크로드의 제 1 부분을 통해 상기 적어도 하나의 노드에 포함된 GPU의 하드웨어 성능 값을 추출하는 단계;
상기 워크로드의 제 2부분을 상기 워크로드의 제 1 부분이 샘플링된 CPU에서 샘플링하여, 상기 워크로드의 제 2 부분이 샘플링된 CPU의 하드웨어 성능 값을 추출하는 단계; 및
상기 CPU 및 GPU의 하드웨어 성능 값 중 적어도 하나를 기초로 상기 일 노드 내의 계산 디바이스에 대한 커널의 피처 벡터를 추출하는 단계; 를 포함하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 1 항에 있어서,
상기 병렬 프로그래밍 어플리케이션은,
OpenCL 어플리케이션인, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 1 항에 있어서,
상기 워크로드를 상기 복수 개의 노드에 포함된 적어도 하나의 계산 디바이스로 분배하는 단계는,
상기 병렬 프로그래밍 어플리케이션의 소스 코드의 수정없이 상기 워크로드를 상기 적어도 하나의 계산 디바이스로 분배하는, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 제 1 항에 있어서,
상기 매니코어 클러스터 시스템은,
이종 매니코어 클러스터 시스템인, 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법. - 각각이 적어도 하나의 계산 디바이스를 포함하며, 병렬 프로그래밍 어플리케이션을 실행할 수 있는 복수 개의 노드;를 포함하는 매니코어 클러스터 시스템에 있어서,
상기 복수 개의 노드 중 적어도 하나는, 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는 기계학습 엔진을 포함하며,
상기 복수 개의 노드 중 적어도 하나의 노드에서 실행된 병렬 프로그래밍 어플리케이션에 의한 워크로드는, 상기 기계학습 엔진에 의해 예측된 계산 디바이스의 데이터 처리량에 따라 상기 적어도 하나의 계산 디바이스로 분배되는, 매니코어 클러스터 시스템. - 제 11 항에 있어서,
상기 기계학습 엔진은,
기계학습 모델링을 이용하여 상기 적어도 하나의 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템. - 제 11 항에 있어서,
상기 기계학습 엔진은,
상기 적어도 하나의 노드에서 상기 병렬 프로그래밍 어플리케이션이 실행될 때 소요되는 실행시간을 예측하여, 상기 예측된 실행시간을 바탕으로 상기 각 계산 디바이스의 데이터 처리량을 예측하는, 매니코어 클러스터 시스템. - 제 13 항에 있어서,
상기 계산 디바이스의 종류는,
CPU, GPU 및 병렬 프로그래밍을 지원하는 다른 디바이스 중 어느 하나인, 매니코어 클러스터 시스템. - 제 14 항에 있어서,
상기 기계학습 엔진은,
상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계;
실행시간 예측 알고리즘을 통해 상기 커널 실행시간을 예측하는 단계;
상기 커널의 피처 값과 상기 커널 실행시간을 기초로, 상기 매니코어 클러스터 시스템이 상기 병렬 프로그래밍 어플리케이션을 실행하기 위한 전체 실행시간을 예측하는 단계; 및
상기 예측된 전체 실행시간을 기초로 각 계산 디바이스의 데이터 처리량을 예측하는 단계;를 수행하는, 매니코어 클러스터 시스템. - 제 15 항에 있어서,
상기 기계학습 엔진은, 상기 각 계산 디바이스의 하드웨어 성능 값을 추출하여, 상기 하드웨어 성능 값을 기초로 상기 각 계산 디바이스에 대한 커널의 피처 값을 추출하는, 매니코어 클러스터 시스템. - 제 14 항에 있어서,
상기 기계학습 엔진은,
상기 매니코어 클러스터 시스템에 대한 커널의 피처(feature) 값을 추출하는 단계에서, 적어도 하나의 상기 노드의 CPU에서 상기 워크로드의 제 1 부분을 샘플링하여, 샘플링된 워크로드의 제 1 부분을 통해 상기 적어도 하나의 노드에 포함된 GPU의 하드웨어 성능 값을 추출하는 단계;
상기 워크로드의 제 2부분을 상기 워크로드의 제 1 부분이 샘플링된 CPU에서 샘플링하여, 상기 워크로드의 제 2 부분이 샘플링된 CPU의 하드웨어 성능 값을 추출하는 단계; 및
상기 CPU 및 GPU의 하드웨어 성능 값 중 적어도 하나를 기초로 상기 일 노드 내의 계산 디바이스에 대한 커널의 피처 벡터를 추출하는 단계;를 수행하는, 매니코어 클러스터 시스템. - 제 11 항에 있어서,
상기 병렬 프로그래밍 어플리케이션은,
OpenCL 어플리케이션인, 매니코어 클러스터 시스템. - 제 11 항에 있어서,
상기 워크로드는,
상기 병렬 프로그래밍 어플리케이션의 소스 코드의 수정없이 상기 적어도 하나의 계산 디바이스로 분배되는, 매니코어 클러스터 시스템. - 제 11 항에 있어서,
상기 매니코어 클러스터 시스템은,
이종 매니코어 클러스터 시스템인, 매니코어 클러스터 시스템.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180034960A (ko) * | 2016-09-28 | 2018-04-05 | 한국전자통신연구원 | 플랫폼 관리 장치 및 방법 |
Families Citing this family (12)
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)
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)
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 |
-
2014
- 2014-01-23 KR KR1020140008392A patent/KR101594915B1/ko active IP Right Grant
- 2014-07-01 US US14/321,378 patent/US9396033B2/en active Active
Patent Citations (4)
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)
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 |