KR101568204B1 - Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing - Google Patents
Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing Download PDFInfo
- Publication number
- KR101568204B1 KR101568204B1 KR1020140089014A KR20140089014A KR101568204B1 KR 101568204 B1 KR101568204 B1 KR 101568204B1 KR 1020140089014 A KR1020140089014 A KR 1020140089014A KR 20140089014 A KR20140089014 A KR 20140089014A KR 101568204 B1 KR101568204 B1 KR 101568204B1
- Authority
- KR
- South Korea
- Prior art keywords
- cpu
- gpu
- cores
- core
- data
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Processing (AREA)
Abstract
Description
본 발명은 CPU/GPU 기반 매니코어 시스템 및 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법에 관한 것이다. The present invention relates to a method for determining the number of cores of a multicore CPU for simultaneous processing of a CPU / GPU-based Mannier system and a CPU / GPU.
최근 컴퓨터 구조의 발달로 인해 일반적인 PC나 모바일 컴퓨팅 환경도 멀티코어 CPU/GPU 구조를 가지고 있다. 이에 따라, 멀티코어 CPU 또는 GPU를 활용하여 속도를 개선하고자 하는 병렬 처리 기법에 대한 연구가 중요한 이슈로 떠오르고 있으며, 이와 더불어 클라우드 컴퓨팅이나 빅데이터 처리를 위한 분산처리 시스템 분야에 있어서 여러 종류로 이루어진(heterogeneous) 컴퓨팅 환경이 발달함에 따라 CPU 및 GPU를 동시에 활용하는 연구가 활발히 진행되고 있다.Due to the recent development of computer architecture, general PC or mobile computing environment has multicore CPU / GPU structure. As a result, research on parallel processing techniques to improve the speed by using a multicore CPU or a GPU has become an important issue. In addition, there are various kinds of distributed processing systems for cloud computing and big data processing As the heterogeneous computing environment develops, researches utilizing CPU and GPU are being actively carried out.
한편, CPU와 GPU를 동시에 활용할 경우, GPU 가속기는 데이터 복사시간이 큰 오버헤드로 작용하고, CPU와 GPU를 동시에 처리할 때에는 CPU에서 GPU로 데이터를 복사해야 하며, 이러한 데이터 복사시간은 상대적으로 작은 태스크를 병렬화할 때 매우 큰 병렬 오버헤드로 작용한다는 특징을 가지고 있다. On the other hand, when CPU and GPU are used at the same time, GPU accelerator has a large overhead of copying data, and when CPU and GPU are processed at the same time, data must be copied from CPU to GPU. It features a very large parallel overhead when parallelizing tasks.
따라서, 멀티코어 CPU와 GPU를 동시에 이용할 경우, 태스크를 적절하게 나누어주고, 이에 대한 태스크를 처리하기 위해 CPU의 모든 코어를 이용하는 것이 일반적이다. 그러나, 태스크의 크기가 작은 경우에는 데이터 복사시간이 태스크를 처리하기 위한 시간보다 상대적으로 길다. 특히, 비디오 스트리밍의 경우, 비디오 영상의 크기에 따라 데이터 복사 비율이 달라지게 되며, 이에 따라 태스크의 크기를 고려하지 않고, 모든 코어를 이용할 경우 작업 수행시간이 길어지게 되는 문제가 있다. Therefore, when a multi-core CPU and a GPU are used at the same time, it is common to use all of the CPU's cores in order to appropriately divide tasks and process tasks therefor. However, when the size of the task is small, the data copying time is relatively longer than the time for processing the task. Particularly, in the case of video streaming, the data copying rate varies depending on the size of a video image. Accordingly, there is a problem that a task execution time becomes long when all cores are used without considering the size of a task.
이와 같은 오브젝트 태스킹은, 하나의 작업량은 작지만 스트리밍 서비스에 적용할 경우에는 많은 작업량을 갖게 되므로, 수행시간을 단축시킬 필요가 있다. 또한, 오브젝트 태스킹은 전 영상의 특징을 참조하기 때문에 각 프레임에서 데이터 종속성을 갖게 되므로, 반드시 작은 작업량을 갖는 태스크 레벨에서 병렬화를 해야 한다. 이와 같이 작은 태스크에 대하여, CPU 및 GPU를 동시에 활용할 경우, 효율적으로 병렬 처리하는 방법이 필요하다.Such object tasking requires a small amount of work but has a large amount of work when applied to a streaming service, so that it is necessary to shorten the execution time. In addition, object tasking has data dependency in each frame because it refers to the characteristics of the whole image, so parallelization must be performed at a task level having a small amount of work. When a CPU and a GPU are simultaneously used for such a small task, a method of efficiently performing parallel processing is required.
이와 관련하여, 한국공개특허공보 제2012-0091550호(발명의 명칭: 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 장치 및 방법)는 GPU가 탑재된 범용 비디오카드를 이용하여 병렬 처리함으로써 대용량의 데이터 변환에 소요되는 연산속도를 향상시키기 위한 기술을 개시하고 있다.In this connection, Korean Patent Laid-Open Publication No. 2012-0091550 (a high-speed image processing apparatus and method using a parallel processor of a general-purpose graphics processing apparatus) is applied to parallel processing using a general-purpose video card equipped with a GPU, Discloses a technique for improving the operation speed required for data conversion.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 본 발명의 일부 실시예는 CPU와 GPU를 동시에 활용하여 작은 태스크를 효율적으로 병렬처리하기 위한 CPU/GPU 기반 매니코어 시스템 및 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법을 제공하는 것을 그 목적으로 한다.SUMMARY OF THE INVENTION The present invention has been made in view of the above problems, and it is an object of the present invention to provide a CPU / GPU-based ManiCore system and a CPU / GPU for efficiently performing parallel processing of small tasks simultaneously using a CPU and a GPU And a method for determining the number of cores of a multicore CPU for simultaneous processing.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 CPU/GPU 기반 매니코어 시스템은 복수의 코어를 포함하는 CPU; GPU 및 상기 CPU와 GPU를 제어하는 제어부를 포함하되, 상기 제어부는, 상기 CPU에서 GPU로의 데이터 복사 시간에 기초하여 상기 CPU에 포함된 코어 중 작업을 수행할 코어를 선택하고, 상기 선택된 코어의 개수에 따라, 대응되는 코어에 작업을 할당하되, 상기 데이터 복사 시간이 기 설정된 임계값보다 작은 경우 상기 CPU에 포함된 전체 코어에 작업을 할당하고, 상기 기 설정된 임계값보다 큰 경우 상기 CPU에 포함된 전체 코어 중 상기 GPU로 데이터를 복사하기 위한 코어를 제외한 나머지 코어에 작업을 할당한다.According to a first aspect of the present invention, there is provided a Mannich system based on a CPU / GPU, comprising: a CPU including a plurality of cores; And a control unit for controlling the GPU and the CPU and the GPU, wherein the control unit selects a core to perform an operation among cores included in the CPU based on a data copy time from the CPU to the GPU, Assigns a task to a corresponding core according to a predetermined threshold value, and allocates a task to all of the cores included in the CPU when the data copy time is less than a predetermined threshold, All of the cores are allocated to the cores other than the core for copying data to the GPU.
또한, 본 발명의 제 2 측면에 따른 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법은 CPU에서 GPU로의 데이터 복사 시간에 기초하여 작업을 수행할 코어를 선택하는 단계 및 상기 선택된 코어의 개수에 따라, 대응되는 코어에 작업을 할당하는 단계를 포함하되, 상기 작업을 수행할 코어를 선택하는 단계는, 상기 데이터 복사 시간이 기 설정된 임계값보다 작은 경우 상기 CPU에 포함된 전체 코어를 작업을 수행할 코어로 선택하고, 상기 기 설정된 임계값보다 큰 경우 상기 CPU에 포함된 코어 중 상기 GPU로 데이터를 복사하기 위한 코어를 제외한 나머지 코어를 작업을 수행할 코어로 선택한다.According to a second aspect of the present invention, there is provided a method for determining the number of cores of a multicore CPU for simultaneous processing of a CPU / GPU, comprising: selecting a core to perform an operation based on a data copying time from a CPU to a GPU; Wherein the step of selecting a core to perform the task comprises: if the data copy time is less than a predetermined threshold value, allocating an entire core included in the CPU to the corresponding core, And selects, as a core to be executed, the remaining cores except the cores for copying data to the GPU among the cores included in the CPU when the threshold is greater than the preset threshold value.
전술한 본 발명의 과제 해결 수단의 어느 실시예에 의하면, GPU로 데이터를 복사하는데 소요되는 시간에 기초하여 작업을 수행할 CPU의 코어 개수를 결정함으로써 CPU의 작업 처리 속도를 향상시킬 수 있다.According to the above-described embodiments of the present invention, it is possible to improve the processing speed of the CPU by determining the number of cores of the CPU to perform a job based on the time required for copying data with the GPU.
도 1은 본 발명의 일 실시예에 따른 매니코어 시스템의 블록도이다.
도 2는 데이터 복사시간에 따라 코어의 개수를 결정하는 방법의 일 예시를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법의 순서도이다.
도 4는 이미지 프레임 크기에 따른 수행시간을 나타낸 그래프이다.
도 5는 CPU와 GPU의 동시처리 수행시 속도 향상 정도를 비교한 그래프이다.1 is a block diagram of a manifold system according to one embodiment of the present invention.
2 is a diagram showing an example of a method of determining the number of cores according to data copying time.
3 is a flowchart of a method for determining the number of cores of a multicore CPU for simultaneous processing of a CPU / GPU according to an embodiment of the present invention.
4 is a graph showing the execution time according to the image frame size.
FIG. 5 is a graph comparing speed enhancement levels when a CPU and a GPU are simultaneously processed.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only "directly connected" but also "electrically connected" with another part in between . Also, when an element is referred to as "comprising ", it means that it can include other elements as well, without departing from the other elements unless specifically stated otherwise.
도 1은 본 발명의 일 실시예에 따른 CPU/GPU 기반 매니코어 시스템(100)의 블록도이다.FIG. 1 is a block diagram of a Mann-
본 발명의 일 실시예에 따른 매니코어 시스템(100)은 CPU(110), GPU(120) 및 CPU(110)와 GPU(120)를 제어하는 제어부(130)를 포함한다. 이때, CPU(110)는 작업을 수행하기 위한 복수의 코어를 포함하고 있다.The
참고로, 본 발명의 실시예에 따른 도 1에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성 요소를 의미하며, 소정의 역할들을 수행한다.1 refers to a hardware component such as software or an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit), and performs predetermined roles .
그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.However, 'components' are not meant to be limited to software or hardware, and each component may be configured to reside on an addressable storage medium and configured to play one or more processors.
따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.Thus, by way of example, an element may comprise components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, Routines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables.
구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.The components and functions provided within those components may be combined into a smaller number of components or further separated into additional components.
제어부(130)는 CPU(110)에서 GPU(120)로의 데이터 복사 시간에 기초하여 CPU(110)에 포함된 코어 중 작업을 수행할 코어를 선택한다. 이때, 데이터 복사 시간은 비디오 스트리밍 서비스에 제공되는 영상의 크기에 기초하여 결정될 수 있다.The
제어부(130)는, 선택된 코어의 개수에 따라, 대응되는 코어에 작업을 할당한다. 이때, 데이터 복사 시간이 기 설정된 임계값보다 작은 경우, CPU(110)에 포함된 전체 코어에 작업을 할당한다.The
반대로, 데이터 복사 시간이 기 설정된 임계값보다 큰 경우, CPU(110)에 포함된 전체 코어 중 GPU(120)로 데이터를 복사하기 위한 코어를 제외한 나머지 코어에 작업을 할당한다. On the contrary, if the data copying time is greater than the predetermined threshold value, the
이때, 기 설정된 임계값은 코어의 수행시간에 기초하여 설정될 수 있다. 예를 들어, GPU(120)로 데이터를 복사하기 위한 코어에서 처리하는 일반 작업 수행시간을 임계값으로 설정하여 데이터 복사 시간과 비교할 수도 있다. 비교 결과, 데이터 복사 시간이 일반 작업 수행시간보다 작은 경우, CPU의 수행 속도에 거의 영향을 미치지 않으므로, 전체 코어에 작업을 할당한다. At this time, the predetermined threshold value can be set based on the execution time of the core. For example, it is also possible to compare the data execution time with a data execution time by setting a general task execution time to be processed by the core for copying data to the
제어부(130)는 데이터 복사시간의 비율에 따라 CPU(110)의 N개의 코어를 모두 이용할지, N-1개의 코어를 이용할지 결정해야 하며, 하기의 수학식 1을 이용하여 이를 결정할 수 있다.The
[수학식 1][Equation 1]
즉, 제어부(130)는 위 수학식, 즉 판별식을 통해 CPU(110)에서 처리하기 위한 전체 작업량을 CPU(110)에 포함된 코어의 개수인 N으로 나눈 값과 데이터 복사시간의 합이, 전체 작업량을 GPU(120)로 데이터를 복사하기 위한 코어를 제외한 나머지 코어의 개수인 N-1로 나눈 값보다 큰 경우, N-1개의 코어를 작업을 수행할 코어로 선택할 수 있다. 이하에서는 도 2를 참조하여, 코어의 개수를 선택하는 방법에 대하여 설명하도록 한다.That is, the
도 2는 데이터 복사시간에 따라 코어의 개수를 결정하는 방법의 일 예시를 도시한 도면이다.2 is a diagram showing an example of a method of determining the number of cores according to data copying time.
도 2를 참조하면, 수행시간은 데이터 복사시간(CPU-GPU data copy)에 따라 민감하게 영향을 받는 것을 확인할 수 있다. 예를 들어, 데이터 복사시간이 긴 경우, 도 2의 (a)보다 도 2의 (b)가 더 빠른 수행시간을 얻을 수 있다. 즉, 데이터 복사시간이 긴 경우, 도 2의 (a)처럼 CPU(110)의 코어 4개 각각에 동일한 작업량을 할당하면, CPU(110)의 수행시간은 ‘코어 4’가 수행하는 시간만큼 오래 걸리게 된다. 따라서, 도 2의 (b)의 경우처럼 ‘코어 4’에는 작업을 할당하지 않고, ‘코어 1’ 내지 ‘코어 3’에 ‘코어 4’가 수행할 작업을 분배할 경우, CPU(110)의 전체 수행시간을 단축할 수 있게 된다.Referring to FIG. 2, it can be seen that the execution time is sensitively affected by the data copy time (CPU-GPU data copy). For example, if the data copying time is long, a faster execution time can be obtained in FIG. 2 (b) than in FIG. 2 (a). That is, when the data copying time is long, if the same workload is allocated to each of the four cores of the
반면, 데이터 복사시간이 짧은 경우, 도 2의 (c)가 도 2의 (d)보다 더 빠른 수행시간을 얻을 수 있다. 즉, 데이터 복사 시간이 짧은 경우, 데이터를 복사하기 위한 코어에 작업을 할당하여도 전체 수행시간에 큰 영향을 미치지 않게 되므로 도 2의 (c)와 같이 전체 코어에 작업을 분배함으로써, 전체 수행시간을 단축할 수 있게 된다.On the other hand, if the data copying time is short, a faster execution time than that of FIG. 2 (d) can be obtained in FIG. 2 (c). That is, if the data copying time is short, even if a job is allocated to a core for copying data, the total execution time does not have a great influence. Therefore, Can be shortened.
한편, 작업을 수행할 코어를 선택하면, CPU(110) 및 GPU(120)에 최적의 작업량을 할당함으로써 전체 수행시간을 단축할 수 있는바, 이하에서 구체적으로 설명하도록 한다.Meanwhile, when selecting the core to perform the task, the optimal execution amount is allocated to the
먼저, 하나의 작업에 대해 CPU(110)와 GPU(120)에 할당하는 작업량을 WCPU 및 WGPU라 할 때, 전체 작업량(WTOTAL)을 아래의 수학식 2와 같이 나타낼 수 있다. First, when the amount of work to be allocated to the
[수학식 2]&Quot; (2) "
이때, WCPU 및 WGPU는 전체 작업량 대비 차지하는 비율로 표현될 수 있다. 예를 들어, 전체 작업량(WTOTAL)을 100%라 할 경우, WCPU 및 WGPU는 각각 80% 및 20%로 표현될 수 있다.At this time, the W CPU and the W GPU can be expressed as the ratio of the total workload. For example, if the total workload (W TOTAL ) is 100%, the W CPU and W GPU can be expressed as 80% and 20%, respectively.
다음으로, CPU(110)와 GPU(120)의 동시처리 수행시간(TTOTAL)은 수학식 3과 같이 나타낼 수 있다. Next, the simultaneous processing execution time (T TOTAL ) between the
[수학식 3]&Quot; (3) "
이때, TCPU(W)는 CPU(110)의 수행시간을 나타내고, TGPU(W)는 GPU(120)의 수행시간을 나타낸다. CPU(110)와 GPU(120)의 동시처리 수행시간(TTOTAL)은 산출된 CPU(110)의 수행시간(TCPU(WCPU)) 및 산출된 GPU(120)의 수행시간(TGPU(WGPU)) 중 더 긴 시간으로 결정된다.At this time, the T CPU (W) represents the execution time of the
한편, CPU(110)의 수행시간(TCPU(WCPU))은 CPU(110)의 순차처리 수행시간(TSEQ(WCPU))에 기초하여 산출된다. 그리고 GPU(120)의 수행시간(TGPU(WGPU))은 GPU(120)로 데이터를 복사하는 코어의 순차처리 수행시간(TSEQ(WGPU)) 및 GPU(120)의 데이터 복사시간(CP(WGPU))에 기초하여 산출된다. On the other hand, the execution time (T CPU (W CPU )) of the
이때, CPU(110)의 수행시간(TCPU(WCPU)) 및 GPU(120)의 수행시간(TGPU (WGPU))은 암달의 법칙에 의해 수학식 4 및 수학식 5와 같이 나타낼 수 있다. 한편, 제어부(130)는 CPU(110)의 순차처리 대비 상대적인 속도향상 정도(ESCPU, ESGPU)를 더 고려하여 CPU(110)의 수행시간(TCPU(WCPU)) 및 GPU(120)의 수행시간(TGPU(WGPU))을 산출할 수 있다. 수학식 4 및 5에서 ESCPU 및 ESGPU는 CPU(110)와 GPU(120) 각각의 CPU(110) 순차처리 대비 속도향상 정도를 의미한다.At this time, the execution time (T CPU (W CPU )) of the CPU 110 and the execution time (T GPU (W GPU )) of the GPU 120 can be represented by
[수학식 4]&Quot; (4) "
[수학식 5]&Quot; (5) "
CPU(110)의 순차처리 수행시간(TSEQ(W))은 선형 보간법을 이용하여 수학식 6과 같이 나타낼 수 있으며, GPU(120)의 데이터 복사시간(CP(W))은 수학식 7과 같이 나타낼 수 있다. The sequential processing execution time T SEQ (W) of the
[수학식 6]&Quot; (6) "
[수학식 7]&Quot; (7) "
이때, GPU(120)의 데이터 복사시간(CP(W))은 CPU(110)에서 GPU(120)로의 데이터 전송시간(HtoD(WGPU)) 및 GPU(120)에서 CPU(110)로의 데이터 전송시간(DtoH(W’GPU))에 기초하여 산출될 수 있다. 그리고, GPU(120)로의 데이터 전송시간 및 CPU(110)로의 데이터 전송시간은 각각 GPU(120)의 입력 데이터의 작업량(WGPU) 및 출력 데이터의 작업량(W’GPU)에 기초하여 산출될 수 있다.At this time, the data copying time CP (W) of the
한편, 각각의 파라미터인 α,β,γ,δ는 실험적으로 얻을 수 있으며, 이때, 각 파라미터는 상수에 해당한다. 이와 같이, 실험에 의해 구해진 파라미터를 통하여 CPU(110) 및 GPU(120)의 동시활용을 위한 최적의 작업량을 계산할 수 있다. 각각의 파라미터에 대한 일 예시로 아래의 표와 같은 수치를 얻을 수 있다. On the other hand, each parameter α, β, γ, and δ can be obtained experimentally, and each parameter corresponds to a constant. In this way, the optimum amount of work for simultaneous utilization of the
[표][table]
다음으로, 제어부(130)는 동시처리 수행시간(TTOTAL)이 최소가 되는 때의 작업량을 CPU(110) 및 GPU(120)에 각각 할당한다. 이때, 동시처리 수행시간이 최소가 되는 때는 CPU(110)와 GPU(120)의 수행시간이 같을 때를 의미하며, 이를 아래의 수학식 8과 같이 나타낼 수 있다. Next, the
[수학식 8]&Quot; (8) "
수학식 8을 통해 GPU(120)의 최적의 작업량 OWGPU와 CPU(110)의 최적의 작업량 OWCPU를 구할 수 있다.The optimal amount of work the CPU OW OW best effort GPU and CPU (110) of the GPU (120) through the equation (8) can be obtained.
최적의 작업량을 산출하여 CPU(110) 및 GPU(120)에 할당할 경우, CPU(110) 또는 GPU(120)의 단일 병렬화 방법에 비해 수행시간을 약 50%정도 단축시킬 수 있다는 효과를 기대할 수 있다.It is possible to expect an effect that the execution time can be shortened by about 50% as compared with the single parallelization method of the
도 3은 본 발명의 일 실시예에 따른 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법의 순서도이다.3 is a flowchart of a method for determining the number of cores of a multicore CPU for simultaneous processing of a CPU / GPU according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법은 먼저, CPU(110)에서 GPU(120)로의 데이터 복사 시간에 기초하여 작업을 수행할 코어를 선택한다(S110).The method for determining the number of cores of a multicore CPU for simultaneous processing of a CPU / GPU according to an embodiment of the present invention first selects a core to perform an operation based on a data copying time from the
다음으로, 데이터 복사시간에 기초하여 작업을 수행할 코어를 선택하게 된다(S120). 즉, 데이터 복사시간이 기 설정된 임계값보다 작은 경우, CPU(110)에 포함된 전체 코어를 작업을 수행할 코어로 선택한다. 반면, 데이터 복사시간이 기 설정된 임계값보다 큰 경우 CPU(110)에 포함된 코어 중 GPU(120)로 데이터를 복사하기 위한 코어를 제외한 나머지 코어를 작업을 수행할 코어로 선택한다. 한편, 기 설정된 임계값은 코어의 수행시간에 기초하여 설정될 수 있으며, 데이터 복사시간은 비디오 스트리밍 서비스에 제공되는 영상의 크기에 기초하여 결정될 수 있다.Next, a core to perform an operation is selected based on the data copying time (S120). That is, when the data copying time is smaller than the predetermined threshold value, the entire core included in the
구체적으로, 작업을 수행할 코어를 선택할 때, 전체 코어를 선택하거나 전체 코어에서 1개 적은 코어를 선택하여 작업을 수행하게 할 수 있다. 즉, 멀티코어 CPU(110)가 처리하기 위한 전체 작업량을 CPU(110)에 포함된 코어 개수인 N으로 나눈 값과 데이터 복사 시간의 합이, 전체 작업량을 GPU(120)로 데이터를 복사하기 위한 코어를 제외한 나머지 코어의 개수인 N-1로 나눈 값보다 큰 경우, 1개 더 적은 N-1개의 코어를 작업을 수행할 코어로 선택할 수 있다.Specifically, when selecting a core to perform an operation, it is possible to select the entire core or select one core in the entire core to perform the operation. That is, the sum of the total work amount for processing by the
이와 같은 방법에 의해 선택된 코어의 개수에 따라, 대응되는 코어에 작업을 할당한다.In accordance with the number of cores selected by this method, tasks are allocated to corresponding cores.
이하에서는 도 4 및 도 5를 참조하여, 본 발명에 따른 CPU/GPU 기반 매니코어 시스템(100) 및 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법에서의 수행시간 및 속도 향상 정도를 설명하도록 한다.4 and 5, the execution time and speed enhancement degree in the core number determination method of the multicore CPU for simultaneous processing of the CPU / GPU-based
도 4는 이미지 프레임 크기에 따른 수행시간을 나타낸 그래프이며, 도 5는 CPU(110)와 GPU(120)의 동시처리 수행시 속도 향상 정도를 비교한 그래프이다.FIG. 4 is a graph illustrating execution time according to an image frame size, and FIG. 5 is a graph comparing speed enhancement levels when the
CPU(110)와 GPU(120)의 동시 처리에 따른 수행시간 및 속도 향상 정도를 알아보기 위해 4개의 코어를 가지고 있는 인텔 코어 i5-3570 CPU와 GeForce GTX 660 GPU를 이용하였다. 그리고 3000×2000, 1440×1080, 1280×720, 800×600, 720×480 및 640×480의 이미지 크기를 갖는 120개의 이미지 프레임을 이용하였다. 또한, CPU(110)와 GPU(120)의 병렬적 특성을 추출하기 위하여 OpenMP와 OpenCL을 이용하였다.We used Intel Core i5-3570 CPU and GeForce GTX 660 GPU with four cores to determine execution time and speed improvement according to the simultaneous processing of
본 발명에 따른 특성을 예측하기 위하여, 수행시간의 예상치(Estimated)와 측정치(Measured) 비교하여 도 4에 도시하였다. 도 4를 참조하면, CPU(110)와 GPU(120)의 최적의 작업량 비율에 따른 수행시간의 예상치가 측정치와 근접함을 확인할 수 있다. CPU(110)와 GPU(120)의 최적의 작업량 비율은 3000×2000 크기의 이미지 프레임에서는 80%:20%이고, 640×480 크기의 이미지 프레임에서는 75%:25%임을 확인할 수 있다. In order to predict the characteristics according to the present invention, FIG. 4 shows the comparison of Estimated execution time and Measured value. Referring to FIG. 4, it can be confirmed that the estimated value of the execution time according to the optimum workload ratio of the
이와 같이 상대적으로 작은 크기의 이미지 프레임에서의 GPU(120)의 최적의 작업량 크기는 큰 이미지 프레임에서보다 증가하게 되며, 이는 GPU(120)의 데이터 복사 시간에 따른 오버헤드에 따른 영향을 감소시켜 더 향상된 성능을 제공하기 위함이다. Thus, the optimal amount of workload of the
도 5를 참조하면, GPU(120)는 데이터 복사 시간에 따른 오버헤드를 가지고 있기 때문에, 다양한 이미지 프레임 크기에서 GPU(120)만을 사용할 경우(GPU-Olny) CPU(110)만을 사용한 경우(CPU-Only)보다는 더 나은 성능을 가져올 수 있다. 반면, 본 발명에 따른 CPU/GPU 기반 매니코어 시스템(100) 및 CPU/GPU의 동시처리를 위한 멀티코어 CPU의 코어 개수 결정 방법은 CPU(110)와 GPU(120)를 동시에 사용함으로써(CPU/GPU(Proposed)), GPU(120)만을 사용한 경우보다 상대적으로 118%(3000×2000 이미지 프레임 크기의 경우)의 향상된 성능을 나타내며, CPU(110)만을 사용한 경우보다 상대적으로 141%(640×480 이미지 프레임 크기의 경우) 향상된 성능을 보여줌을 확인할 수 있다.Referring to FIG. 5, since the
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다. One embodiment of the present invention may also be embodied in the form of a recording medium including instructions executable by a computer, such as program modules, being executed by a computer. Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. In addition, the computer-readable medium may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically includes any information delivery media, including computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave, or other transport mechanism.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다. While the methods and systems of the present invention have been described in connection with specific embodiments, some or all of those elements or operations may be implemented using a computer system having a general purpose hardware architecture.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.It will be understood by those skilled in the art that the foregoing description of the present invention is for illustrative purposes only and that those of ordinary skill in the art can readily understand that various changes and modifications may be made without departing from the spirit or essential characteristics of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is defined by the appended claims rather than the detailed description and all changes or modifications derived from the meaning and scope of the claims and their equivalents are to be construed as being included within the scope of the present invention do.
100: 매니코어 시스템 110: CPU
120: GPU 130: 제어부100: Mania core system 110: CPU
120: GPU 130:
Claims (7)
복수의 코어를 포함하는 CPU;
GPU 및
상기 CPU와 GPU를 제어하는 제어부를 포함하되,
상기 제어부는,
상기 CPU에서 GPU로의 데이터 복사 시간에 기초하여 상기 CPU에 포함된 코어 중 작업을 수행할 코어를 선택하고,
상기 선택된 코어의 개수에 따라, 대응되는 코어에 작업을 할당하되, 상기 데이터 복사 시간이 기 설정된 임계값보다 작은 경우 상기 CPU에 포함된 전체 코어에 작업을 할당하고, 상기 기 설정된 임계값보다 큰 경우 상기 CPU에 포함된 전체 코어 중 상기 GPU로 데이터를 복사하기 위한 코어를 제외한 나머지 코어에 작업을 할당하는 것인 매니코어 시스템.In a Mannich system based on a CPU / GPU,
A CPU including a plurality of cores;
GPU and
And a controller for controlling the CPU and the GPU,
Wherein,
Selects a core to perform an operation among the cores included in the CPU based on a data copy time from the CPU to the GPU,
Allocating a job to a corresponding core according to the number of selected cores, allocating a job to all cores included in the CPU when the data copying time is less than a preset threshold value, And allocating a job to the cores other than the core for copying data to the GPU among the entire cores included in the CPU.
상기 기 설정된 임계값은 상기 코어의 수행시간에 기초하여 설정되는 것인 매니코어 시스템.The method according to claim 1,
Wherein the preset threshold value is set based on the execution time of the core.
상기 제어부는, 상기 CPU에서 처리하기 위한 전체 작업량을 상기 CPU에 포함된 코어의 개수인 N으로 나눈 값과 상기 데이터 복사 시간의 합이, 상기 전체 작업량을 상기 GPU로 데이터를 복사하기 위한 코어를 제외한 나머지 코어의 개수인 N-1로 나눈 값보다 큰 경우, N-1개의 코어를 작업을 수행할 코어로 선택하는 매니코어 시스템.The method according to claim 1,
Wherein the control unit determines whether the sum of the total work amount for processing by the CPU by the number N of cores included in the CPU and the data copy time exceeds the total work amount excluding the core for copying data to the GPU The number of remaining cores divided by the number of N-1, N-1 cores to be selected as the core to perform the task.
상기 데이터 복사 시간은 비디오 스트리밍 서비스에 제공되는 영상의 크기에 기초하여 결정되는 것인 매니코어 시스템.The method according to claim 1,
Wherein the data copying time is determined based on a size of an image provided to a video streaming service.
상기 매니코어 시스템의 제어부가, CPU에서 GPU로의 데이터 복사 시간에 기초하여 작업을 수행할 코어를 선택하는 단계 및
상기 제어부가 상기 선택된 코어의 개수에 따라, 대응되는 코어에 작업을 할당하는 단계를 포함하되,
상기 작업을 수행할 코어를 선택하는 단계는,
상기 데이터 복사 시간이 기 설정된 임계값보다 작은 경우 상기 CPU에 포함된 전체 코어를 작업을 수행할 코어로 선택하고,
상기 기 설정된 임계값보다 큰 경우 상기 CPU에 포함된 코어 중 상기 GPU로 데이터를 복사하기 위한 코어를 제외한 나머지 코어를 작업을 수행할 코어로 선택하는 것인 코어 개수 결정 방법.A method for determining the number of cores of a multicore CPU for simultaneous processing of a CPU / GPU performed by a Mann-Core system based on a CPU / GPU,
Wherein the control unit of the manifold system selects a core to perform an operation based on a data copy time from the CPU to the GPU,
And allocating a job to a corresponding core according to the number of the selected cores,
Wherein selecting a core to perform the operation comprises:
If the data copying time is less than a preset threshold value, selecting all of the cores included in the CPU as a core to perform an operation,
And selects a core other than a core for copying data to the GPU among the cores included in the CPU as a core to perform a task if the core is larger than the preset threshold value.
상기 기 설정된 임계값은 상기 코어의 수행시간에 기초하여 설정되는 것인 코어 개수 결정 방법.6. The method of claim 5,
And the predetermined threshold value is set based on the execution time of the core.
상기 작업을 수행할 코어를 선택하는 단계는,
상기 멀티코어 CPU가 처리하기 위한 전체 작업량을 상기 멀티코어 CPU에 포함된 코어 개수인 N으로 나눈 값과 상기 데이터 복사 시간의 합이, 상기 전체 작업량을 상기 GPU로 데이터를 복사하기 위한 코어를 제외한 나머지 코어의 개수인 N-1로 나눈 값보다 큰 경우, N-1개의 코어를 작업을 수행할 코어로 선택하는 것인 코어 개수 결정 방법.6. The method of claim 5,
Wherein selecting a core to perform the operation comprises:
Calculating a sum of a value obtained by dividing the total work amount for processing by the multicore CPU by N, the number of cores included in the multicore CPU, and the data copy time, excluding the core for copying the entire work amount to the GPU Wherein if the number of cores is greater than the number of cores divided by the number of N-1, then N-1 cores are selected as cores to perform the operation.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140089014A KR101568204B1 (en) | 2014-07-15 | 2014-07-15 | Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140089014A KR101568204B1 (en) | 2014-07-15 | 2014-07-15 | Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101568204B1 true KR101568204B1 (en) | 2015-11-11 |
Family
ID=54605874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140089014A KR101568204B1 (en) | 2014-07-15 | 2014-07-15 | Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101568204B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101721341B1 (en) | 2015-12-31 | 2017-04-10 | 전북대학교산학협력단 | Determination module of executing apparatus using in heterogeneous multi-core and method for the same |
KR102029711B1 (en) * | 2018-05-30 | 2019-10-08 | 한국항공대학교산학협력단 | Job assignment apparatus and method for multi-gpu based deep-running model parallelization |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012016043A (en) | 2011-08-25 | 2012-01-19 | Toshiba Corp | Graphics processing unit and information processor |
-
2014
- 2014-07-15 KR KR1020140089014A patent/KR101568204B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012016043A (en) | 2011-08-25 | 2012-01-19 | Toshiba Corp | Graphics processing unit and information processor |
Non-Patent Citations (1)
Title |
---|
Hong, S 외 2명, "Efficient Parallel Graph Exploration on Multi-Core CPU and GPU", 2011년 10월, Parallel Architectures and Compilation Techniques (PACT) 국제 컨퍼런스, pp. 78-88, DOI: 10.1109/PACT.2011.14 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101721341B1 (en) | 2015-12-31 | 2017-04-10 | 전북대학교산학협력단 | Determination module of executing apparatus using in heterogeneous multi-core and method for the same |
KR102029711B1 (en) * | 2018-05-30 | 2019-10-08 | 한국항공대학교산학협력단 | Job assignment apparatus and method for multi-gpu based deep-running model parallelization |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379272B2 (en) | Autoscaling using file access or cache usage for cluster machines | |
Kang et al. | Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks | |
US20120324454A1 (en) | Control Flow Graph Driven Operating System | |
KR20170139872A (en) | Multi-tenant based system and method for providing services | |
CN108205469B (en) | MapReduce-based resource allocation method and server | |
Jeon et al. | TPC: Target-driven parallelism combining prediction and correction to reduce tail latency in interactive services | |
EP4123467A1 (en) | Data transmission method and apparatus | |
JP6428476B2 (en) | Parallelizing compilation method and parallelizing compiler | |
CN103440167A (en) | Task scheduling method of self-learning feedback under Hadoop multi-job environment | |
US9471387B2 (en) | Scheduling in job execution | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
JP6778130B2 (en) | Virtual computer system and its resource allocation method | |
WO2016092856A1 (en) | Information processing device, information processing system, task processing method, and storage medium for storing program | |
Huang et al. | Novel heuristic speculative execution strategies in heterogeneous distributed environments | |
CN113391918A (en) | Method, apparatus and computer program product for processing a computing job | |
US9672063B2 (en) | Scheduling, interpreting and rasterising tasks in a multi-threaded raster image processor | |
JP2016001469A (en) | Image processing method and image processing apparatus | |
JP6477260B2 (en) | Method and resource manager for executing an application | |
KR101639003B1 (en) | Manicore system based cpu/gpu and method for distributing workload for cpu/gpu concurrent processing | |
JP2013149221A (en) | Control device for processor and method for controlling the same | |
KR20130080663A (en) | Method and apparatus for graphic processing using multi-threading | |
KR101568204B1 (en) | Manicore system based cpu/gpu and method for determining the number of cores of a multicore cpu for cpu/gpu concurrent processing | |
US9195515B1 (en) | Method and system for process load balancing | |
US20140068082A1 (en) | Collaborative method and system to balance workload distribution | |
US20240061718A1 (en) | Method and system for managing hybrid spark cluster for efficient spark job execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20191007 Year of fee payment: 5 |