KR102041960B1 - 병렬 처리 방법 및 병렬 처리 장치 - Google Patents

병렬 처리 방법 및 병렬 처리 장치 Download PDF

Info

Publication number
KR102041960B1
KR102041960B1 KR1020190032964A KR20190032964A KR102041960B1 KR 102041960 B1 KR102041960 B1 KR 102041960B1 KR 1020190032964 A KR1020190032964 A KR 1020190032964A KR 20190032964 A KR20190032964 A KR 20190032964A KR 102041960 B1 KR102041960 B1 KR 102041960B1
Authority
KR
South Korea
Prior art keywords
cells
parallel processing
grid
gpu
thread
Prior art date
Application number
KR1020190032964A
Other languages
English (en)
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 KR1020190032964A priority Critical patent/KR102041960B1/ko
Application granted granted Critical
Publication of KR102041960B1 publication Critical patent/KR102041960B1/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

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

본 발명은 병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상하고; 상기 셀들은 대기현상 모의를 위한 계산에 사용되고, 상기 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리에 재배치함으로써 상기 셀들을 패킹하고; 병렬계산하기 위해서 쓰레드 블록을 상기 수평격자 및 상기 연직격자 상의 셀들에 사상하는, 병렬 처리 방법을 제공한다.

Description

병렬 처리 방법 및 병렬 처리 장치{A parallel processing method and an parallel processing apparatus}
본 발명은 병렬 처리 방법, 병렬 처리 장치, 병렬 처리 프로그램을 저장하는 저장매체에 관한 것이다.
기상수치모델링은 복잡한 비선형 방정식 및 여러 모수화(Parameterization)과정으로 인하여 많은 양의 계산 자원을 요구한다.
물리모수화과정은 비정규격자체계를 사용하여 병렬 처리 계산을 수행할 수 있다. 많은 양의 데이터를 병렬 처리하기 위해서 효율적인 격자 사용 방법 등이 필요하다.
물리모수화과정은 격자 규모에서 표현되지 않는 아격자 규모의 작은 스케일(강우과정, 난류 등)을 모사하기 위해서 적용될 수 있다. 아격자 규모를 모사하기 위해서는 다른 접근 방법이 요구된다.
본 발명의 해결 과제는, MPAS 모델 물리과정의 비정규격자체계에 대한 효율적인GPU 병렬화 방법을 제안하는 것이다. 또한, MPAS 모델 물리과정의 비정규격자체계에 대한 효율적인 최적화 방법을 제안하는 것이 본 발명의 해결 과제이다.
본 발명의 해결 과제는 GPU 병렬 계산 방법의 특성과 MPAS 모델 물리과정의 계산 및 격자체계의 특성을 활용하여 GPU에서 좋은 성능을 갖는 병렬계산이 이루어지는 방법을 제안하는 것이다.
본 발명의 과제를 해결하기 위해서 본 발명은 다음과 같은 수단을 이용할 수 있다.
본 발명의 실시예들에 따른 병렬 처리 장치는, 병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상하는 사상부; 셀들은 대기현상 모의를 위한 계산에 사용되고, 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리에 재배치하는 패킹부; 병렬계산하기 위해서 쓰레드 블록을 수평격자 및 연직격자 상의 셀들에 사상하는 쓰레드 블록 사상부; 를 포함하는 장치를 제공한다.
본 발명의 실시예들에 따른 병렬 처리 장치는, GPU쓰레드는 단일 GPU 또는 다중 GPU에 의해 생성되고, 다중 GPU가 적용되는 경우, 셀들 중 인접한 셀들은 각 GPU에 할당되는 장치를 제공한다.
본 발명의 실시예들에 따른 병렬 처리 장치는, 특정 대기상태를 나타내는 셀들이 수평격자 및 연직격자 상에 재배치되는, 장치를 제공한다.
본 발명의 실시예들에 따른 병렬 처리 방법은, 여러 다양한 비정규격자 체계를 사용하여 모의를 처리할 수 있는 효과를 제공한다.
본 발명의 실시예들에 따른 병렬 처리 방법은, 비정규격자에서 사용가능한 병렬 처리를 제안하는 효과가 있다.
본 발명의 실시예들에 따른 병렬 처리 방법은, 기상수치예측모델의 특성과 GPU 아키텍처 및 프로그래밍 모델의 특징을 활용하여 좋은 성능을 갖도록 하는 GPU 병렬 방법을 제안하는 효과가 있다.
도1은 MPAS (Model for Prediction Across Scales) 모델 물리과정에 대한 CPU (Central Processing Unit) 코드 및 GPU (Graphics Processing Unit) 코드의 계산 비용을 나타낸다.
도2는 MPAS 모델의 격자 체계를 사용하여 GPU쓰레드를 사상하는 방법을 나타낸다.
도3은 MPAS격자를 다중GPU사용환경에서 할당하는 방법을 나타낸다.
도4는 특정 대기 현상이 발생하는 셀들을 묶어서 메모리를 재배치하는 방법을 나타낸다.
도5는 MPAS격자체계에 블록을 사상하는 방법을 나타낸다.
도6은 본 발명의 실시예들에 따른 병렬 처리 장치의 구성을 나타낸다.
도7은 본 발명의 실시예들에 따른 병렬 처리 방법을 나타낸다.
본 발명의 실시예들에 따른 병렬 처리 방법 또는 장치는 MPAS 모델 물리과정의 비정규격자체계에서 GPU 병렬화 및 최적화에 관한 것이다. 또한, 본 발명은 GPU 병렬 계산 방법의 특성과 MPAS 모델 물리과정의 계산 및 격자체계의 특성을 활용하여 GPU에서 좋은 성능을 갖는 병렬계산이 이루어지는 방법을 제안한다.
본 발명의 실시예들에 따른 병렬 처리 방법은 기상수치모델링에 적용될 수 있다. 기상수치모델링은 복잡한 비선형 방정식 및 여러 모수화(Parameterization)과정으로 인하여 많은 양의 계산 자원을 요구한다. 따라서 많은 양의 계산 자원을 필요로 하는 기상시뮬레이션을 보다 신속하게 계산하는 방법이 요구된다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 계산가속장치의 일종인 GPU에서 병렬계산을 처리하고, 그에 따라서 CPU에 비하여 좋은 성능을 제공할 수 있다.
본 발명의 실시예들에 따른 병렬 처리 방법은 MPAS 모델에 적용될 수 있다. MPAS 모델은 육각형 형태의 비정규 육각형 격자 체계를 통하여 수치모의를 수행한다. MPAS 모델은 크게 바람, 습도, 온도, 기압 등의 변수를 각 격자에서 예측방정식을 통하여 계산을 수행하는 역학과정과, 격자 규모에서 표현되지 않는 아격자 규모의 작은 스케일(강우과정, 난류 등)을 모사하기 위한 물리모수화 과정으로 구분된다. 역학과정과 물리과정은 계산을 수행하는 특성이 다르므로 GPU에서 병렬화를 수행하기 위해서는 각각 다른 방법으로 접근해야 한다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 MPAS 모델의 물리과정을 대상으로 한 병렬계산 방법을 제안한다.
이하에서, 본 발명의 다양한 실시예들을 도면을 참조하여 설명한다.
도1은 MPAS (Model for Prediction Across Scales) 모델 물리과정에 대한 CPU (Central Processing Unit) 코드 및 GPU (Graphics Processing Unit) 코드의 계산 비용을 나타낸다.
도1은 1 Pascal V100 및 Haswell CPUs (32cores)를 비교한 결과이다. PGI 18.3 버전의 컴파일러, 120Km resolution, 40962 Cells, dt=360s, 3days forecast 조건에서 CPU코드 및 GPU코드의 계산 비용을 비교하였다. Haswell 의 상세 조건은 E5-2698v3, 여미 socket 16-core이고 NVIDIA GPU의 상세 조건은 Tesla V100에 해당한다.
도1을 참조하면, MPAS 모델에서 사용되는 각 팩터들 (WSM6, YSU, NTIDTKE, YSU_GWDO, Monin-obukhov)에 대한, CPU(Haswell) 및 GPU(V100)의 계산 비용(Seconds)를 비교할 수 있다.
본 발명의 실시예들에 따른 MPAS 모델은 역학과정 및 물리과정을 포함할 수 있다. 물리과정은 격자 규묘에서 표현되지 않은 아격자 규모의 작은 스케일을 계산한다. 물리과정은 구름물리, 미세물리, 행성경계층 등을 포함할 수 있다. 도1의 가로축에 표시된 팩터 또는 변수는 물리과정을 나타낸다. 예를 들어, 도1은WSM6-미세물리과정, YSU-행성경계층과정, NTIEDTKE-적운모수화과정, YSU_GWDO-중력파항력과정, Monin-Obukhov-지면물리과정을 나타낸다.
따라서, 도1은 각 물리과정에서 CPU 및 GPU의 계산 시간을 나타내고, CPU를 사용하는 경우보다 GPU를 사용하는 경우가 계산 시간에서 이득을 제공할 수 있다. 결과적으로, 본 발명의 실시예들에 따른 병렬 처리 방법을 사용한 GPU 병렬 계산이 CPU 기반 계산보다 높은 성능을 보이는 것을 확인할 수 있다.
이하에서, 이와 같은 높은 성능을 가지는 GPU 병렬 계산을 위한 본 발명의 실시예들에 따른 병렬 처리 방법을 설명한다.
도2는 MPAS 모델의 격자 체계를 사용하여 GPU쓰레드를 사상하는 방법을 나타낸다.
MPAS모델의 격자 체계를 사용하여 GPU쓰레드를 사상하기 위해서는, MPAS모델을 좌표로 표현하는 방법을 고려해야 한다. 하지만, MPAS모델은 비정규격자체계를 가진다. MPAS모델이 비정규격자체계를 가지기 때문에, MPAS모델을 i, j, k(또는 x, y, z) 축을 가진 좌표로 표현하는 것이 곤란한다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 i및k좌표를 사용하여 격자체계를 표현할 수 있다.
도2는 MPAS모델의 격자체계를 나타낸다. 본 발명의 실시예들에 따른 병렬 처리 방법은 GPU의 병렬계산을 위해서 수천 개의 코어를 사용한다. 병렬 처리 방법은 수천 개의 코어를 사용하여 병렬 계산을 위해 생성된 쓰레드를 동시에 처리할 수 있다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 도2와 같이 각각의 셀에 GPU 쓰레드를 사상한다면 이론적으로 모든 격자의 계산을 동시에 처리할 수 있다.
구체적으로, 병렬 처리 방법은 i, j, k축에서 i, k 축을 사용하여 MPAS 모델의 격자를 표현한다. 병렬 처리 방법은 i 및 k를 사용하여 MPAS모델에 따른 셀들을 표현한다. 병렬 처리 방법은 i축에 기반하여 1st 쓰레드 내지 N Cell-th 쓰레드를 표현한다. 병렬 처리 방법은 각 i축의 쓰레드를 셀들에 사상한다. 병렬 처리 방법은 사상된 쓰레드를 사용하여 모든 격자의 셀들을 동시에 처리한다.
다시 말해, 본 발명의 실시예들에 따른 병렬 처리 방법 또는 장치는 MPAS 모델을 사용할 수 있다. MPAS 모델은 기상모델의 한 가지 타입이고, 본 발명의 실시예들에 따른 병렬 처리 방법 또는 장치는 MPAS모델 뿐만 아니라, 동일 또는 유사한 기능을 갖는 기상모델을 사용할 수 있다.
MPAS모델이 적용되는 경우를 설명하면, 본 발명의 실시예들에 따른 병렬 처리 방법 또는 장치는 MPAS 모델을 사용하고 격자에 기반하여 대기현상을 모의한다. MPAS 격자체계는 수평방향(도2의 i방향) 및 연직방향(도2의 k방향)으로 표현될 수 있다. 본 명세서에서 수평방향은 수평격자로 명명될 수 있다. 또한, 본 명세서에서 연직방향은 연직격자로 명명될 수 있다. 도2와 같이, 본 발명의 실시예들에 따른 병렬 처리 장치는 셀들을 병렬 처리 또는 병렬 계산하기 위해서 격자에 할당한다. 즉, 셀은 계산을 위한 격자에 대응될 수 있다.
또한, GPU쓰레드 또는 쓰레드는 병렬 계산의 기본 처리 단위이고, 처리 대상인 셀들을 GPU쓰레드에 할당 또는 사상하기 위해서 사용된다. GPU는 수천 내지 수만개의 쓰레드를 생성하여 병렬 계산을 수행할 수 있다. 병렬 계산의 처리 대상이 셀이다. 본 발명의 실시예들에 따른 병렬 처리 장치는 셀에 GPU 쓰레드를 사상하여 계산을 수행한다.
본 발명의 실시예들에 따른 병렬 처리 방법은 MPAS모델의 물리과정의 많은 루틴 과정 상에서 수평 격자의 병렬 계산을 할 수 있다. 또한, 병렬 처리 방법은 수평 격자의 병렬 계산 뿐만 아니라, 연직격자의 병렬 계산을 제공할 수 있다. 본 발명의 실시예들에 따른 병렬 처리 방법에 따른 MPAS 모델의 격자 체계를 위한 GPU 쓰레드 사상 방법은 GPU의 성능을 더욱 향상 시킬 수 있다.
도3은 MPAS격자를 다중GPU사용환경에서 할당하는 방법을 나타낸다.
본 발명의 실시예들에 따른 병렬 처리 방법은 단일 GPU 환경에서 적용될 수 있다. 또한, 병렬 처리 방법은 다중 GPU환경에서 적용될 수 있다. 병렬 처리 방법은 MPAS 격자를 다수의 구역으로 분리할 수 있다. 병렬 처리 방법은 분리된 각 구역마다 다중 GPU를 각각 할당할 수 있다. 도3를 참조하면, 병렬 처리 방법은 MPAS 격자를 4개의 구역으로 나눈다. 각 구역은 GPU0를 위한 구역, GPU1을 위한 구역, GPU2를 위한 구역, GPU3을 위한 구역에 해당한다. 또한, 다수의 GPU 간 불필요한 통신이 발생하지 않도록, 병렬 처리 방법은 인접한 셀들을 묶어서 나눠진 구역에 할당할 수 있다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 다중 GPU 환경에서 좋은 성능을 갖는 GPU 계산을 제공할 수 있다.
본 명세서에서 셀은 대기현상의 시뮬레이션 계산 또는 모의를 위해서 사용되는 격자에 대응될 수 있다. 본 발명의 실시예들에 따른 병렬 처리 장치는 대기 현상을 시뮬레이션하거나 대기현상을 모의할 수 있다. 본 발명의 실시예들에 따른 병렬 처리 장치는 병렬 계산을 통해서 다음 시간의 대기현상을 예측할 수 있다. 대기현상은 자연현상이므로, 계산과정이 복잡하고 많은 계산 자원이 요구된다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 장치는 슈퍼컴퓨터와 같은 병렬 컴퓨터를 통한 병렬 처리를 사용하여 계산 시간을 줄이는 효과를 제공할 수 있다. GPU는 병렬 처리(계산)에 뛰어난 계산 장치에 해당한다. 본 발명의 실시예들에 따른 병렬 처리 장치는 GPU에 기반한 기상 수치 시뮬레이션 연산을 병렬 계산하여, 계산 시간을 더욱 단축시킬 수 있다.
따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 기상 예측을 하기 위해서 기상 시뮬레이션을 수행하는 방법을 제안한다. 나아가, 병렬 처리 방법은GPU의 병렬 계산 시 많은 계산 양을 짧은 시간 내에 처리할 수 있는 방법을 제안한다.
도2내지3을 통해, 본 발명의 실시예들에 따른 병렬 처리 방법이 GPU 쓰레드를 사상하는 방법을 설명하였다. 이하에서, 본 발명의 실시예들에 따른 병렬 처리 방법이 패킹하는 방법을 설명한다.
도4는 특정 대기 현상이 발생하는 셀들을 묶어서 메모리를 재배치하는 방법을 나타낸다.
MPAS 모델의 물리모수화 과정은 아격자 규모의 현상을 계산할 수 있다. 하지만, 이러한 계산은 예측 방정식을 통한 계산이 불가능하다. 따라서, 아격자 규모의 현상을 계산하기 위해서 대기상태(condition)에 의한 진단방정식을 사용한다. 대기상태에 의한 진단방정식을 사용하기 때문에, 물리모수화 과정은 계산과정에서 대기상태에 의하여 여러 분기가 발생하는 구조를 가지고 있다.
본 발명의 실시예들에 따른 병렬 처리 방법의 GPU는 하나의 명령어로 다수의 쓰레드를 실행(SIMT, Single Instruction Multiple Threads)하는 구조로 병렬계산을 수행한다. 하나의 명령어로 수행되는 쓰레드 집단을 워프(Warp)라고 부르며, 워프 내에서 쓰레드 간의 분기가 발생한다면 GPU에서 큰 성능 저하가 발생할 수 있다. 앞서 서술했듯이, 물리모수화 과정은 대기 상태에 의한 분기가 잦은 구조를 갖고 있으며, 이러한 형태의 계산을 GPU에서 수행한다면 워프 내 분기에 의하여 심각한 성능저하가 발생할 수 있다.
따라서 성능 저하를 방지하기 위하여, 본 발명의 실시예들에 따른 병렬 처리 방법은 도 4와 같이 특정 대기 상태가 존재하는 셀들만 따로 묶어서 계산을 처리할 수 있다. 즉, 본 발명의 실시예들에 따른 병렬 처리 방법은 워프 내 분기를 사전에 방지하여 GPU 성능저하가 발생하지 않는 효과를 제공할 수 있다.
도4를 참조하면, n개의 셀들 중 액티브 셀들(active cells)이 있고, 인액티브 셀들(inactive cells)이 섞여서 배치되어 있다. 본 발명의 실시예들에 따른 병렬 처리 방법은 특정 대기 현상이 발생하는 셀들 묶어서 메모리 재배치할 수 있다. 따라서, 병렬 처리 방법은 액티브 셀들끼리 묶여서 배치하고, 인액티브 셀들끼리 묶어서 메모리 재배치할 수 있다.
상술한 바와 같이, 본 발명의 실시예들에 따른GPU는 동일 연산을 좋은 성능으로 병렬 처리할 수 있다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 동일 또는 유사한 대기현상이 발생하는 셀들을 묶어서 병렬 처리를 적용할 수 있다.
도3내지4 관련하여, 본 발명의 실시예들에 따른 병렬 처리 방법은 대기현상과 관련된 모든 셀들에 각 GPU쓰레드를 사상한다. 또한, 특정 대기 현상이 존재하는 셀들만 계산하는 과정에서 병렬 처리 방법은 도4의 패킹 방법을 사용하여 특정 셀들만 묶어서 GPU에 사상할 수 있다. 예를 들어, 신택스 상에서 if문과 같은 분기문을 통하여 특정 대기 현상이 존재하는 셀들이 있는 경우, 패킹 방법을 더 적용할 수 있다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 도3의 GPU쓰레드 사상 방법과 도4의 패킹 방법을 결합함으로써 많은 양의 병렬 처리를 짧은 시간 내에 효율적으로 처리할 수 있는 효과를 제공할 수 있다.
또한, GPU는 메모리에서 코어로 많은 양의 데이터를 전송한다. Memory Coalescing이란, GPU에서 효율적인 데이터 전송을 의미한다. 병렬 처리 장치가 특정 셀들을 묶어서 데이터를 전송한다면, 필요없는 데이터를 제외하고, 실제 연산에 필요한 특정 셀들의 묶음만 전송할 수 있다. 따라서, 전송 효율 및 메모리 효율이 증가하는 효과가 있다.
도5는 MPAS격자체계에 블록을 사상하는 방법을 나타낸다.
MPAS의 격자체계는 셀들을 포함하고, 블록(500)이 복수의 셀들을 포함할 수 있다. 점선 박스(510)는 병렬계산에 필요한 쓰레드의 양을 나타낸다. 색칠된 셀들을 포함하는 박스(520)는 블록 사상에 의하여 발생하는 불필요한 쓰레드를 나타낸다.
본 발명의 실시예들에 따른 병렬 처리 방법은 도5(a)와 같이 MPAS 격자체계 상에 블록을 사상할 수 있다. 또한, 본 발명의 실시예들에 따른 병렬 처리 방법은 도5(b)와 같이MPAS모델의 격자에 기반하여 블록을 사상할 수 있다.
본 발명의 실시예들에 따른 병렬 처리 방법은 쓰레드 블록 사상을 적용할 수 있다. 도5의 가로축은 수평격자 상의 셀들의 개수이고 세로축은 연직격자 상의 셀들의 개수이다. 따라서, 총 셀들의 개수는 수평 셀 수 및 연직 셀 수를 곱한 값이 해당한다. 또한, 연직 성분인 k level은 도2의 k축에 대응된다.
본 발명의 실시예들에 따른 병렬 처리 방법은 쓰레드 묶음을 설정할 수 있다. 본 명세서에서 쓰레드 묶음은 쓰레드 블록으로 명명될 수 있다. 본 발명의 실시예들에 따른 GPU 모델은 4X32 혹은 4X128과 같은 2차원 형태의 블록을 사용할 수 있다.
나아가, 본 발명의 실시예들에 따른 MAPS 모델은 사용자가 연직 격자의 개수를 설정할 수 있다. 한편, 2차원 블록 형태를 MPAS모델의 격자에 사상하는 경우 많은 양의 쓰레드 낭비가 발생할 수 있다.
도5는 2차원 블록 및 1차원 블록을 MPAS 격자에 사상하는 형태를 나타낸다. 구체적으로, 도5(a)는4X32의 형태를 갖는 2차원 블록을 MPAS 격자에 사상하는 것을 나타낸다. 도5(b)는1X128의 형태를 갖는 1차원 블록을 사상하는 것을 나타낸다.
도5 (a)의 경우, 연직격자 방향과 수평격자 방향 모두에서 불필요한 쓰레드가 생성된다.도5 (b)의 경우, 수평격자에서만 쓰레드 낭비가 나타난다. 따라서 1차원 형태를 갖는 쓰레드 블록을 생성하여 GPU에서 병렬계산을 하도록 한다면 불필요한 쓰레드 생성을 줄일 수 있으며 보다 효율적인 계산이 이루어진다.
다시 말해, 본 발명의 실시예들에 따른 병렬 처리 장치는 1차원 쓰레드 블록을 격자에 사상하는 경우, 1차원이기 때문에 격자 상의 1차원 성분의 셀들을 모두 포함할 수 있다. 즉, 수평격자 셀들 및 연직격자 셀들 중 적어도 하나의 격자의 셀들을 반드시 포함하기 때문에, 쓰레드 낭비를 효과적으로 제거할 수 있다. 실시예들에 따라, 수평격자에서만 쓰레드 낭비가 발생하거나 또는 연직격자에서만 쓰레드 낭비가 발생할 수 있다.
본 발명의 실시예들에 따른 병렬 처리 방법은 1차원 형태를 갖는 쓰레드 블록 또는 2차원 형태를 갖는 쓰레드 블록을 생성하여 쓰레드 블록을 격자에 사상할 수 있다. 상술한 바와 같이, 1차원 쓰레드 블록을 사용하는 경우 쓰레드 효율성 측면에서 더 좋은 성능을 제공할 수 있다.
도6은 본 발명의 실시예들에 따른 병렬 처리 장치의 구성을 나타낸다.
본 발명의 실시예들에 따른 병렬 처리 장치(600)는 사상부(610), 패킹부(620), 블록 사상부(630), 및/또는 메모리(640)를 포함한다.
사상부(610)는 병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상한다. 여기서, GPU쓰레드는 단일 GPU 또는 다중 GPU에 의해 생성되고, 상기 다중 GPU가 적용되는 경우, 셀들 중 인접한 셀들은 각 GPU에 할당된다. 인접할 셀들을 묶어서 GPU에 할당하는 방법은 다중 GPU간 불필요한 간섭을 제거할 수 있는 효과를 제공할 수 있다.
패킹부(620)는 대기현상 모의를 위한 계산에 사용되는 셀들을 패킹한다. 즉, 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리(640)에 재배치한다. 여기서, 특정 대기상태를 나타내는 셀들이 수평격자 및 연직격자 상에 재배치된다. 특정 대기상태를 나타내는 셀들을 수평/연직 격자 상에 묶는 방법은 워프 내 분기를 사전에 방지할 수 있고, GPU 성능이 저하되는 현상을 제거할 수 있는 효과를 제공한다.
블록 사상부(630)는 병렬계산하기 위해서 쓰레드 블록을 수평격자 및 연직격자 상의 셀들에 사상한다. 사상하는 단위 또는 묶음은 쓰레드 블록에 해당한다. 여기서, 쓰레드 블록은 1차원 블록의 형태 또는 2차원 블록의 형태를 가질 수 있다. 블록 사상부(630)는 1차원 쓰레드 블록을 격자 모델에 사상하여, 불필요한 쓰레드 낭비를 제거할 수 있다.
메모리(640)는 사상부(610), 패킹부(620), 블록 사상부(630)가 병렬 처리 또는 병렬 처리를 위한 과정을 처리하는데 필요한 메모리를 제공할 수 있다.
도7은 본 발명의 실시예들에 따른 병렬 처리 방법을 나타낸다.
본 발명의 실시예들에 따른 병렬 처리 방법은 병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상(S70010)하고, 셀들은 대기현상 모의를 위한 계산에 사용되고, 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리에 재배치함으로써 셀들을 패킹(S70020)하고, 병렬계산하기 위해서 쓰레드 블록을 수평격자 및 연직격자 상의 셀들에 사상(S70030)할 수 있다.
도1내지6에서 상술한 바에 따르면, 본 발명의 실시예들에 따른 병렬 처리 장치 또는 방법은 다음과 같은 효과를 제공할 수 있다. 일반적으로 기존의 수치모델은 x, y, z 좌표로 표현이 가능한 사각형 정규 격자를 통하여 모의를 수행한다. 하지만 정규격자체계는 극지방에서 격자가 줄어드는 현상과 고해상도 시뮬레이션에서 노이즈가 발생하는 문제 등으로 인하여, 여러 다양한 비정규격자 체계를 사용하는 모의 방법이 요구된다. 따라서, 본 발명의 실시예들에 따른 병렬 처리 방법은 비정규격자 체계의 모의 방법을 제공할 수 있다.
추가로, 기존의 정규격자체계에서 GPU 병렬화를 수행하는 방법 관련하여, 본 발명의 실시예들에 따른 병렬 처리 방법은 정규격자체계와 다른 방법으로 비정규격자체계에서 계산하기 때문에 효율적인 GPU 병렬계산이 가능한 이점(비정규격자에서 사용가능한 병렬 방법)이 있다.
또한, 본 발명의 실시예들에 따른 병렬 처리 방법은 기상수치예측모델의 특성과 GPU 아키텍처 및 프로그래밍 모델의 특징을 활용하여 좋은 성능을 갖는 GPU 병렬 방법에 해당한다. 따라서, MPAS 모델 물리과정의 육각형 비정규 격자에서 좋은 성능을 갖는 GPU 병렬 계산을 처리하는 것이 본 발명의 실시예들에 따른 병렬 처리 방법의 효과이다.
본 발명의 실시예들에 따른 모듈, 유닛 또는 블락은 메모리(또는 저장 유닛)에 저장된 연속된 수행과정들을 실행하는 프로세서/하드웨어일 수 있다. 전술한 실시예에 기술된 각 단계 또는 방법들은 하드웨어/프로세서들에 의해 수행될 수 있다. 또한, 본 발명이 제시하는 방법들은 코드로서 실행될 수 있다. 이 코드는 프로세서가 읽을 수 있는 저장매체에 쓰여질 수 있고, 따라서 본 발명의 실시예들에 따른 장치(apparatus)가 제공하는 프로세서에 의해 읽혀질 수 있다.
설명의 편의를 위하여 각 도면을 나누어 설명하였으나, 각 도면에 서술되어 있는 실시 예들을 병합하여 새로운 실시 예를 구현하도록 설계하는 것도 가능하다. 그리고, 당업자의 필요에 따라, 이전에 설명된 실시 예들을 실행하기 위한 프로그램이 기록되어 있는 컴퓨터에서 판독 가능한 기록 매체를 설계하는 것도 본 발명의 권리범위에 속한다.
본 발명에 따른 장치 및 방법은 상술한 바와 같이 설명된 실시 예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상술한 실시 예들은 다양한 변형이 이루어질 수 있도록 각 실시 예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
한편, 본 발명의 영상 처리 방법은 네트워크 디바이스에 구비된 프로세서가 읽을 수 있는 기록매체에 프로세서가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 프로세서가 읽을 수 있는 기록매체는 프로세서에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 프로세서가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한, 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.
그리고, 당해 명세서에서는 물건 발명과 방법 발명이 모두 설명되고 있으며, 필요에 따라 양 발명의 설명은 보충적으로 적용될 수가 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시 예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (17)

  1. 병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상하는 사상부;
    상기 셀들은 대기현상 모의를 위한 계산에 사용되고, 상기 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리에 재배치하는 패킹부;
    병렬계산하기 위해서 쓰레드 블록을 상기 수평격자 및 상기 연직격자 상의 셀들에 사상하는 쓰레드 블록 사상부; 를 포함하는,
    병렬 처리 장치.
  2. 제1항에 있어서,
    상기 GPU쓰레드는 단일 GPU 또는 다중 GPU에 의해 생성되고, 상기 다중 GPU가 적용되는 경우, 상기 셀들 중 인접한 셀들은 각 GPU에 할당되는,
    병렬 처리 장치.
  3. 제1항에 있어서,
    상기 특정 대기상태를 나타내는 셀들이 상기 수평격자 및 상기 연직격자 상에 재배치되는,
    병렬 처리 장치.
  4. 제1항에 있어서,
    상기 쓰레드 블록은 1차원 블록의 형태를 갖는,
    병렬 처리 장치.
  5. 제1항에 있어서,
    상기 수평격자 및 상기 연직격자는 MPAS모델의 격자에 대응되는,
    병렬 처리 장치.
  6. 제1항에 있어서,
    상기 특정 대기상태는 동일 또는 유사한 대기현상을 나타내고,
    상기 특정 대기상태를 나타내는 상기 셀들의 묶음은 액티브 셀들로 상기 메모리에 재배치되는,
    병렬 처리 장치.
  7. 제1항에 있어서,
    상기 쓰레드 블록이 1차원 블록인 경우,
    상기 쓰레드 블록은 상기 수평격자 및 상기 연직격자 중 적어도 하나의 격자 상의 셀들을 모두 포함하는,
    병렬 처리 장치.
  8. 병렬 처리 장치에 의해서 셀들을 병렬 처리하는 방법에 있어서,
    병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상하고;
    상기 셀들은 대기현상 모의를 위한 계산에 사용되고, 상기 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리에 재배치함으로써 상기 셀들을 패킹하고;
    병렬계산하기 위해서 쓰레드 블록을 상기 수평격자 및 상기 연직격자 상의 셀들에 사상하는,
    병렬 처리 방법.
  9. 제8항에 있어서,
    상기 GPU쓰레드는 단일 GPU 또는 다중 GPU에 의해 생성되고, 상기 다중 GPU가 적용되는 경우, 상기 셀들 중 인접한 셀들은 각 GPU에 할당되는,
    병렬 처리 방법.
  10. 제8항에 있어서,
    상기 특정 대기상태를 나타내는 셀들이 상기 수평격자 및 상기 연직격자 상에 재배치되는,
    병렬 처리 방법.
  11. 제8항에 있어서,
    상기 쓰레드 블록은 1차원 블록의 형태를 갖는,
    병렬 처리 방법.
  12. 제8항에 있어서,
    상기 수평격자 및 상기 연직격자는 MPAS모델의 격자에 대응되는,
    병렬 처리 방법.
  13. 제8항에 있어서,
    상기 특정 대기상태는 동일 또는 유사한 대기현상을 나타내고,
    상기 특정 대기상태를 나타내는 상기 셀들의 묶음은 액티브 셀들로 상기 메모리에 재배치되는,
    병렬 처리 방법.
  14. 제8항에 있어서,
    상기 쓰레드 블록이 1차원 블록인 경우,
    상기 쓰레드 블록은 상기 수평격자 및 상기 연직격자 중 적어도 하나의 격자 상의 셀들을 모두 포함하는,
    병렬 처리 방법.
  15. 병렬처리를 위한 수평격자 및 연직격자에 기초하여 셀들을 GPU(Graphics Processing Unit)쓰레드에 사상하고; 상기 셀들은 대기현상 모의를 위한 계산에 사용되고, 상기 셀들중 특정 대기상태를 나타내는 셀들을 묶어서 메모리에 재배치함으로써 상기 셀들을 패킹하고; 병렬계산하기 위해서 쓰레드 블록을 상기 수평격자 및 상기 연직격자 상의 셀들에 사상하는 것을 실행시키기 위한 프로그램을 저장하는 컴퓨터로 읽을 수 있는 저장매체.
  16. 제15항에 있어서,
    상기 GPU쓰레드는 단일 GPU 또는 다중 GPU에 의해 생성되고, 상기 다중 GPU가 적용되는 경우, 상기 셀들 중 인접한 셀들은 각 GPU에 할당되는,
    저장매체.
  17. 제15항에 있어서,
    상기 특정 대기상태를 나타내는 셀들이 상기 수평격자 및 상기 연직격자 상에 재배치되는,
    저장매체.


KR1020190032964A 2019-03-22 2019-03-22 병렬 처리 방법 및 병렬 처리 장치 KR102041960B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190032964A KR102041960B1 (ko) 2019-03-22 2019-03-22 병렬 처리 방법 및 병렬 처리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190032964A KR102041960B1 (ko) 2019-03-22 2019-03-22 병렬 처리 방법 및 병렬 처리 장치

Publications (1)

Publication Number Publication Date
KR102041960B1 true KR102041960B1 (ko) 2019-11-07

Family

ID=68578849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190032964A KR102041960B1 (ko) 2019-03-22 2019-03-22 병렬 처리 방법 및 병렬 처리 장치

Country Status (1)

Country Link
KR (1) KR102041960B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110555616A (zh) * 2019-09-05 2019-12-10 中国气象局广州热带海洋气象研究所 一种数值天气模式同化系统的稠密观测资料优化调度方法
CN112416353A (zh) * 2020-08-10 2021-02-26 上海幻电信息科技有限公司 渠道包打包方法、装置及计算机设备
CN112988402A (zh) * 2021-05-11 2021-06-18 南京云信达科技有限公司 一种基于并行的网格化数据安全处理系统、方法及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160027541A (ko) * 2014-09-01 2016-03-10 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
KR101885211B1 (ko) * 2012-01-27 2018-08-29 삼성전자 주식회사 Gpu의 자원 할당을 위한 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101885211B1 (ko) * 2012-01-27 2018-08-29 삼성전자 주식회사 Gpu의 자원 할당을 위한 방법 및 장치
KR20160027541A (ko) * 2014-09-01 2016-03-10 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
김재엽 외 2명. ‘차세대 전지구 기상/기후 수치예측모델 MPAS의 GPU 초병렬 코드 구현 및 검증 연구’. 한국기상학회 학술대회 논문집, 2018.10., p.165.* *
김재엽 외 2명. 'GPU를 이용한 전구 기상/기후 예측모델 MPAS의 물리모수화 과정 계산 가속화 연구'. 한국기상학회 학술대회 논문집, 2017.10., pp.234-235. *
김재엽 외 2명. 'MPAS 모델 미세물리 모수화 과정 WSM6의 가속기 기반 코드 개발'. 한국기상학회 학술대회 논문집, 2016.10., pp.339-341. *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110555616A (zh) * 2019-09-05 2019-12-10 中国气象局广州热带海洋气象研究所 一种数值天气模式同化系统的稠密观测资料优化调度方法
CN110555616B (zh) * 2019-09-05 2021-12-14 中国气象局广州热带海洋气象研究所 一种数值天气模式同化系统的稠密观测资料优化调度方法
CN112416353A (zh) * 2020-08-10 2021-02-26 上海幻电信息科技有限公司 渠道包打包方法、装置及计算机设备
CN112988402A (zh) * 2021-05-11 2021-06-18 南京云信达科技有限公司 一种基于并行的网格化数据安全处理系统、方法及介质

Similar Documents

Publication Publication Date Title
KR102041960B1 (ko) 병렬 처리 방법 및 병렬 처리 장치
CN103617150B (zh) 一种基于gpu的大规模电力系统潮流并行计算的系统及其方法
De La Asunción et al. Simulation of one-layer shallow water systems on multicore and CUDA architectures
US20190385046A1 (en) Parallel computational architecture with reconfigurable core-level and vector-level parallelism
US9990766B2 (en) Method and system for predicting collision probability of space objects via graphics processing unit
CN103761215B (zh) 基于图形处理器的矩阵转置优化方法
CN110275733A (zh) 基于有限体积法求解声子玻尔兹曼方程的gpu并行加速方法
CN110209353B (zh) 区域耦合预报系统中roms模式的i/o并行加速方法、装置及介质
CN108460195B (zh) 海啸数值计算模型基于gpu并行的快速执行方法
Hugues et al. Sparse matrix formats evaluation and optimization on a GPU
KR101101992B1 (ko) 코어스 그레인드 재구성 어레이에서의 애플리케이션 매핑 최적화 방법 및 그 장치
CN105373432A (zh) 一种基于虚拟资源状态预测的云计算资源调度方法
US20140257769A1 (en) Parallel algorithm for molecular dynamics simulation
CN114970803A (zh) 对数系统中的机器学习训练
CN103699716A (zh) 一种个性化三维医学图像驱动的器官虚拟显示方法
CN112035995A (zh) 基于gpu计算技术的非结构网格潮汐潮流数值模拟方法
Martineau et al. The arch project: physics mini-apps for algorithmic exploration and evaluating programming environments on HPC architectures
Liu et al. Improving parallel performance of a finite-difference AGCM on modern high-performance computers
CN115756605A (zh) 一种基于多gpu的浅积云对流参数化方案异构计算方法
Khokhlov et al. Applying OpenCL technology for modelling seismic processes using grid-characteristic methods
CN112836872B (zh) 一种基于多gpu的污染物对流扩散方程高性能数值求解方法
Marshall et al. Performance evaluation and enhancements of a flood simulator application for heterogeneous hpc environments
CN111104765B (zh) 基于神威架构的气体动理学算法优化方法
Ho et al. Multi-agent simulation on multiple GPUs
Zhang et al. GPU-accelerated parallel algorithms for map algebra

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant