KR20190120509A - 부하분산 처리장치 및 그 방법 - Google Patents
부하분산 처리장치 및 그 방법 Download PDFInfo
- Publication number
- KR20190120509A KR20190120509A KR1020180043789A KR20180043789A KR20190120509A KR 20190120509 A KR20190120509 A KR 20190120509A KR 1020180043789 A KR1020180043789 A KR 1020180043789A KR 20180043789 A KR20180043789 A KR 20180043789A KR 20190120509 A KR20190120509 A KR 20190120509A
- Authority
- KR
- South Korea
- Prior art keywords
- matrix calculation
- matrix
- deep learning
- learning program
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000011159 matrix material Substances 0.000 claims abstract description 206
- 238000004364 calculation method Methods 0.000 claims abstract description 163
- 230000008569 process Effects 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 28
- 238000003672 processing method Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004904 shortening Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 229940050561 matrix product Drugs 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Artificial Intelligence (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
본 발명은 메인 프로세서의 부하를 분산하여 처리하기 위한 장치에 관한 것으로, 특히 행렬계산이 수반되는 프로그램의 수행시간을 단축시키고자 하는 부하분산 처리장치 및 그 방법에 관한 것으로, 메인 메모리에 저장된 딥 러닝 프로그램을 수행하기 위한 메인 프로세서와, 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 분산 수행하기 위한 행렬계산 처리부가 실장된 하나 이상의 확장보드;를 포함하되, 상기 메인 프로세서는 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 반복루프 개시 이전에 상기 행렬계산 처리부로 전송함을 특징으로 한다.
Description
본 발명은 메인 프로세서의 부하를 분산하여 처리하기 위한 장치에 관한 것으로, 특히 행렬계산이 수반되는 프로그램의 수행시간을 단축시키고자 하는 부하분산 처리장치 및 그 방법에 관한 것이다.
인공지능 특히 딥러닝 프로그램은 크게 학습과정(learning phase)과 추론과정(inference phase)으로 구분되고, 추론과정에서의 행렬계산은 학습과정에서 결정된 파라미터와 입력 데이터를 곱하는 과정이다.
학습과정에서 결정된 파라미터와 입력 데이터를 곱하는 행렬곱셈은 도 1에서와 같이 두 개의 행렬 A와 B를 곱하여 C를 얻는다. M×K 행렬과 K×N 행렬을 곱하면, M×K×N번의 곱셈과 M×K×N 번의 덧셈을 해야 하며, 행렬의 각 요소가 부동소수점 값이기 때문에 계산량이 매우 많다.
행렬곱셈은 곱셈기와 덧셈기를 반복적으로 사용하며 이를 통칭하여 도 2에 도시한 바와 같이 MAC(Multiplier and Accumulator)이라 한다. 도 2에서 로 표시된 것은 이전 값을 의미한다. 즉, 두 개의 행렬에서 두 개의 요소값을 곱하고, 그 값을 계속 누적하여 결과값을 계산하는 방식이다.
일 예로 물체인식을 위한 딥러닝 프로그램 중 하나인 다크넷-욜로(Darknet YOLO)의 추론과정을 수행한 경우, 도 3의 첫 번째 칸(%로 구분한 열)에서 알 수 있듯이 78% 정도의 시간을 GEMM(General Matrix-Matrix Multiplication gemm_nn())함수를 수행하는데 사용한다. 참고적으로 도 3은 프로그램 수행의 성능을 분석하는 GPROG라는 프로그램을 활용하여 얻은 성능 자료이다.
도 3의 두 번째 칸(calls로 구분한 열)은 해당 함수를 몇 번 수행했는지를 나타내는데 다크넷-욜로의 경우 총 23번의 호출이 이루어진 것을 알 수 있다. 이러한 23번의 호출에서 사용한 행렬의 크기를 도 4에 정리하였다.
도 4는 다크넷-욜로의 추론과정에서 행렬곱셈을 어떻게 사용했는지를 정리한 것이다. 각 행렬곱셈에서 사용한 행렬의 크기는 MK와 KN으로 표시할 수 있고, 이들 대부분이 매우 크지만 가장 큰 것은 26,615,808이 된다.
따라서 행렬곱셈에 필요한 계산량과 행렬을 저장하기 위한 메모리 공간이 매우 크다는 것을 알 수 있다. 이러한 대용량의 계산을 위해 일반적으로 도 5와 도 6에 도시한 바와 같이 프로세서와는 별도의 GPU(Graphical Processing Unit)를 이용하거나 FPGA(Field Programmable Gate Array)를 이용한다.
행렬곱셈과 같이 많은 계산시간과 계산량을 필요로 하는 부하처리를 도 5 혹은 도 6에 도시한 바와 같이 별도의 GPU 혹은 FPGA에서 분산처리되도록 구성된 시스템에서도, 행렬곱셈에 이용되는 값, 즉 학습에 의해 미리 결정되어 있는 파라미터를 프로그램이 수행되는 과정에서 메인보드에서 복사하여 GPU 혹은 FPGA로 전송해 행렬곱셈하기 때문에 프로그램 수행시간을 단축시키는데 있어 한계가 따른다. 특히 행렬곱셈을 위해 복사되는 파라미터의 용량이 크다면 그만큼 프로그램 수행시간은 늘어나기 때문에 프로그램 수행시간을 단축시키기 위한 방안이 필요하다.
이에 본 발명은 상술한 필요성에 따라 창안된 발명으로써, 본 발명의 주요 목적은 행렬계산이 요구되는 프로그램의 수행시간을 단축시킬 수 있는 부하분산 처리장치 및 그 방법을 제공함에 있으며,
더 나아가 본 발명의 또 다른 목적은 메인 프로세서가 장착된 범용 컴퓨터와 재설정 가능 반도체(FPGA)가 연동하는 시스템에서 행렬계산이 요구되는 프로그램을 수행함에 있어 통신량을 줄이고 메모리 참조를 효율적으로 지원하여 프로그램의 수행시간을 단축시킬 수 있는 부하분산 처리장치 및 그 방법을 제공함에 있다.
더 나아가 본 발명의 또 다른 목적은 메모리 종류에 따라 행렬 계산에 필요한 행렬 데이터의 행과 열을 트랜스포즈하여 읽기 및 쓰기 동작의 효율성을 높일 수 있는 부하분산 처리장치 및 그 방법을 제공함에 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 부하분산 처리장치는,
메인 메모리에 저장된 딥 러닝 프로그램을 수행하기 위한 메인 프로세서와;
상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 분산 수행하기 위한 행렬계산 처리부가 실장된 하나 이상의 확장보드;를 포함하되,
상기 메인 프로세서는 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 반복루프 개시 이전에 상기 행렬계산 처리부로 전송함을 특징으로 한다.
더 나아가 상술한 부하분산 처리장치의 행렬계산 처리부는,
상기 메인 프로세서측과 상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 DMA 전송하기 위한 인터페이스부와;
상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 저장하기 위한 행렬계산용 메모리와;
행렬계산을 수행하기 위한 하나 이상의 행렬 계산기와;
상기 행렬계산용 메모리와 상기 행렬 계산기 사이에 연결되어 행렬 계산 및 행렬계산 결과 데이터의 입출력을 제어하는 메모리 컨트롤러;를 포함함을 또 다른 특징으로 하며,
상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 한다.
더 나아가 상기 메인 프로세서는,
상기 딥 러닝 프로그램의 로딩 중 혹은 상기 딥 러닝 프로그램의 로딩 완료후 즉시 상기 메인 메모리에서 상기 행렬계산용 파라미터 데이터를 복사하여 상기 행렬계산 처리부로 전송함을 특징으로 하며,
상기 행렬계산용 메모리가 DRAM인 경우 상기 메모리 컨트롤러는,
상기 행렬계산용 파라미터 데이터와 상기 행렬계산용 입력 데이터 중 어느 하나의 행렬을 구성하는 행과 열을 트랜스포즈하여 상기 DRAM에 저장하고, 행렬계산을 위해 상기 행렬계산용 파라미터 데이터 행렬과 상기 행렬계산용 입력 데이터 행렬을 연속하는 주소로 리드(read)함을 특징으로 한다.
한편 본 발명의 또 다른 실시예에 따른 부하분산 처리방법은 범용 컴퓨터의 메인 프로세서에 의해 실행되는 부하분산 처리방법으로서,
메인 메모리에 저장된 딥 러닝 프로그램을 로딩하는 단계와;
상기 딥 러닝 프로그램의 로딩 중 혹은 로딩 완료후에 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 수행하기 위해 필요한 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 처리부로 전송하는 단계와;
행렬계산용 입력 데이터를 상기 행렬계산 처리부로 복사하여 전송하고 상기 행렬계산 처리부로부터 행렬계산 결과 데이터를 전송받아 행렬계산 외 코드를 수행하는 과정을 반복하는 행렬계산 반복루프 실행 단계;를 포함함을 특징으로 하며,
상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 하며,
상기 행렬계산 반복루프 실행 단계는 상기 딥 러닝 프로그램 종료 전까지 수행됨을 특징으로 한다.
상술한 과제 해결 수단에 따르면, 본 발명은 행렬계산 반복루프 수행중에 행렬계산용 파라미터 데이터를 복사하여 행렬계산 처리부로 전송하는 종전의 방식에 비해, 행렬계산 반복루프 개시 이전에 행렬계산용 파라미터 데이터를 복사하여 행렬계산 처리부로 우선 전송하기 때문에 상대적으로 행렬계산 반복루프 처리시간을 단축시킬 수 있는 효과가 있다. 이러한 효과는 행렬계산용 파라미터 데이터의 양이 클수록 더욱 더 현저하게 차이가 난다. 따라서 본 발명은 립 러닝 프로그램 수행시간을 단축시킬 수 있는 효과를 얻을 수 있는 것이다.
더 나아가 본 발명은 행렬계산 처리부에서 이용되는 메모리가 DRAM으로 구현된 경우 행렬 계산에 이용되는 어느 하나의 행렬에 대해 행과 열을 트랜스포즈하여 라이팅해 놓음으로써, 추후 행렬 계산기에서 모든 행렬을 행 순서로 편리하게 액세스할 수 있는 장점이 있다.
도 1은 행렬곱셈의 일 예시도.
도 2는 행렬곱셈에 이용되는 MAC(Multiplier and Accumulator)의 구성 예시도.
도 3은 다크넷-욜로 프로그램 수행 분석표.
도 4는 다크넷-욜로 프로그램의 행렬 계산량 예시도.
도 5와 도 6은 부하분산 처리를 위해 메인 프로세서가 장착된 범용 컴퓨터와 재설정 가능 반도체(FPGA)가 연동하는 시스템의 예시도.
도 7은 본 발명의 일 실시예에 따른 부하분산 처리장치의 구성 예시도.
도 8은 본 발명의 일 실시예에 따른 부하분산 처리 흐름 예시도.
도 9는 본 발명의 일 실시예에 따른 행렬곱을 부연 설명하기 위한 도면.
도 2는 행렬곱셈에 이용되는 MAC(Multiplier and Accumulator)의 구성 예시도.
도 3은 다크넷-욜로 프로그램 수행 분석표.
도 4는 다크넷-욜로 프로그램의 행렬 계산량 예시도.
도 5와 도 6은 부하분산 처리를 위해 메인 프로세서가 장착된 범용 컴퓨터와 재설정 가능 반도체(FPGA)가 연동하는 시스템의 예시도.
도 7은 본 발명의 일 실시예에 따른 부하분산 처리장치의 구성 예시도.
도 8은 본 발명의 일 실시예에 따른 부하분산 처리 흐름 예시도.
도 9는 본 발명의 일 실시예에 따른 행렬곱을 부연 설명하기 위한 도면.
이하 본 발명의 바람직한 실시예를 첨부 도면을 참조하여 상세히 설명하기로 한다. 본 발명을 설명함에 있어 관련된 공지 기능 혹은 구성과 같은 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
우선 도 7은 본 발명의 일 실시예에 따른 부하분산 처리장치의 구성도를 예시한 것이다.
도 7에 도시한 메인 프로세서(100)는 메인 메모리(110)에 저장된 딥 러닝 프로그램을 수행하는 주체로서, 범용 컴퓨터의 전반적인 동작을 제어한다.
또한 메인 프로세서(100)는 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산용 파라미터 데이터를 상기 메인 메모리(110)에서 복사하여 행렬계산 반복루프 개시 이전에 후술할 행렬계산 처리부(200)로 전송함을 특징으로 한다.
메인 메모리(120)는 상기 메인 프로세서(100)에 의해 액세스 제어되며, 딥 러닝 프로그램(예를 들면 물체인식 딥 러닝 프로그램)을 수행하기 위한 프로그램 코드와 데이터, 그리고 딥 러닝 프로그램의 학습과정에서 결정된 행렬계산용 파라미터 데이터가 저장된다. 참고적으로 상기 행렬계산용 파라미터 데이터는 하기 설명에서 도 8에 도시된 것과 같이 행렬 A(A)의 값을 가지는 것으로 가정하였다.
한편 메인 프로세서(100)와 메인 메모리(110)는 메인보드에 실장 가능하며, 메인 보드는 도 7에서와 같이 시스템 버스를 통해 확장보드와 연결 가능하다. 물론 후술할 확장보드에 실장되는 구성들이 단순히 메인보드에 실장되어 부하분산을 처리할 수도 있다.
시스템 버스를 통해 상술한 메인보드에 연결 가능한 하나 이상의 확장보드에는 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 분산 수행하기 위한 행렬계산 처리부(200)가 실장된다.
행렬계산 처리부(200)는 상기 메인 프로세서(100)측과 행렬계산용 파라미터 데이터(A), 행렬계산용 입력 데이터(B), 행렬계산 결과 데이터(C)를 DMA 전송하기 위한 인터페이스부(210)와,
상기 행렬계산용 파라미터 데이터(A), 행렬계산용 입력 데이터(B), 행렬계산 결과 데이터(C)를 저장하기 위한 행렬계산용 메모리(220)와,
행렬계산을 수행하기 위한 하나 이상의 행렬 계산기(예를 들면 MAC((Multiplier and Accumulator))과 같은)(230)와,
상기 행렬계산용 메모리(220)와 상기 행렬 계산기(230) 사이에 연결되어 행렬 계산 및 행렬계산 결과 데이터(C)의 입출력을 제어하는 메모리 컨트롤러(캐시 포함, 230)를 포함한다.
상기 행렬계산용 메모리(220)가 램이 아닌 DRAM인 경우 비연속적인 주소에 대한 참조가 매우 비효율적이어서 캐시가 제대로 효과를 내지 못한다. 보통 행렬 데이터에서 행우선(row-major) 방식으로 메모리에 저장할 경우 각 행을 읽는 과정에서 주소는 단순하게 증가하지만 각 열을 리드(read)하는 과정에서는 주소가 연속적이지 않기 때문에, 예를 들어 행렬 A에 곱해지는 행렬 B의 행과 열을 바꾸어(transpose) 저장하고, 뒷단의 행렬 계산기에서 행렬 A와 B를 연속한 주소로 리드한다면 상술한 비효율적인 문제가 해결될 수 있다.
이에 행렬계산용 메모리(220)가 DRAM이라면 메모리 컨트롤러(230)는 메인보드에서 전송된 행렬계산용 파라미터 데이터(A)와 행렬계산용 입력 데이터(B) 중 어느 하나의 행렬을 구성하는 행과 열을 트랜스포즈하여 DRAM에 저장하고, 행렬계산을 위해 상기 행렬계산용 파라미터 데이터(A) 행렬과 상기 행렬계산용 입력 데이터(B) 행렬을 연속하는 주소로 리드(read)하도록 설계하는 것이 바람직하다.
이하 상술한 구성을 가지는 부하분산 처리장치에서의 부하분산 처리방법을 보다 구체적으로 설명하기로 한다.
도 8은 본 발명의 일 실시예에 따른 부하분산 처리 흐름도를 예시한 것이며, 도 9는 본 발명의 일 실시예에 따른 행렬곱을 부연 설명하기 위한 도면을 각각 도시한 것이다.
우선 인공지능, 특히 딥 러닝 프로그램은 크게 학습과정과 추론과정으로 구분되고, 두 단계 모두 대량의 행렬곱셈이 필요하다. 다크넷-욜로의 추론단계에 행렬곱셈의 경우를 이미 서두에서 설명하였다.
추론과정에서는 입력 데이터(이를 B로 표기)를 일련의 네트워크 레이어를 통과하면서 결과를 출력하며, 각 네트워크 레이어에서는 학습과정에서 결정된 파라미터 데이터(이를 A로 표기)와 상기 입력 데이터를 행렬곱셈한다.
이하 딥 러닝 프로그램을 수행하는 주체인 메인 프로세서(100)가 행렬계산과 같은 부하를 분산 처리하는 방법을 도 8을 참조하여 부연 설명하면,
범용 컴퓨터의 메인 프로세서(100)는 딥 러닝 프로그램 실행 명령에 따라 메인 메모리(110)에 저장된 딥 러닝 프로그램을 우선적으로 로딩(S10단계)한다.
상기 딥 러닝 프로그램의 로딩 중 혹은 로딩 완료 후에 메인 프로세서(100)는 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 수행하기 위해 필요한 행렬계산용 파라미터 데이터(A)를 메인 메모리(110)에서 복사(S20단계)하여 시스템 버스를 통해 행렬계산 처리부(200)로 DMA 전송(S30단계)한다. 앞서 언급하였듯이 행렬계산용 파라미터 데이터(A)는 딥 러닝 프로그램의 학습과정에서 얻어진 데이터로서 학습과정 이후에 고정된 값을 가지는 데이터이다. 물론 새로운 학습과정을 또다시 거친다면 그에 따라 변경될 것이다.
DMA 전송된 행렬계산용 파라미터 데이터(A)는 메모리 컨트롤러(230)의 개입에 의해 행렬계산용 메모리(220) 내의 행렬 A용 메모리 영역에 저장(S40단계)된다.
행렬계산용 파라미터 데이터(A)를 복사 전송한 메인 프로세서(100)는 S50단계로 진행하여 행렬계산 외의 코드를 수행하고, 이러한 행렬계산 외의 코드 수행중에 입력되는 행렬계산용 입력 데이터(B)를 복사(S60단계)하여 다시 행렬계산 처리부(200)로 DMA 전송한다.
이에 행렬계산용 입력 데이터(B)가 행렬계산용 메모리(220) 내의 행렬 B용 메모리 영역에 저장(S70단계)된다. 앞서 설명하였듯이 행렬계산용 메모리(220)가 램이 아닌 DRAM으로 구현된 시스템이라면 메모리 컨트롤러(230)는 행렬 B의 행과 열을 트랜스포즈하여 라이팅 저장하는 것이 바람직하다.
행렬계산을 위해 필요한 행렬계산용 파라미터 데이터(A)와 행렬계산용 입력 데이터(B)를 전송한 메인 프로세서(100)는 행렬계산 처리부(200)와의 약정 프로토콜에 따라 행렬계산의 시작을 확인(S80단계)한다.
행렬계산 처리부(200)에서는 메인 프로세서(100) 측으로 행렬계산의 시작을 알리고 행렬계산을 수행(S90단계)한다. 행렬계산, 보다 구체적으로 행렬곱셈은 도 2에 도시한 바와 같은 MAC(240)에 의해 이루어진다.
메모리 컨트롤러(230)는 MAC(240)에 의해 행렬계산용 파라미터 데이터(A)와 행렬계산용 입력 데이터(B)의 행렬곱셈이 이루어지면 그 결과, 즉 행렬계산 결과 데이터(C)를 복사(S90단계)하여 행렬계산용 메모리(220) 내의 행렬 C용 메모리 영역에 저장하며 메인 프로세서(100)측으로 행렬계산 결과 데이터(C)를 전송(S100단계)한다.
이에 메인 프로세서(100)는 행렬계산 결과 데이터(C)를 복사하고 재차 행렬계산 외 코드를 수행(S120단계)하면서 딥 러닝 프로그램이 종료되는가를 체크(S130)한다.
딥 러닝 프로그램을 종료할 단계가 아니라고 판단되면, 메인 프로세서(100)는 상술한 S50, S60, S110, S120단계를 반복 수행(이를 행렬계산 반복루프 실행 단계로 가정한다)한다. 물론 이에 연동하여 행렬계산 처리부(200)에서도 S70, S80, S90, S100단계가 반복 수행된다.
만약 S130단계의 판단결과 딥 러닝 프로그램을 종료할 단계라고 판단되면 메인 프로세서(100)는 본 발명의 실시예에 따른 부하분산 처리방법을 종료한다.
이상에서 설명한 본 발명의 실시예에 따르면, 본 발명은 행렬계산 반복루프 수행중에 행렬계산용 파라미터 데이터(A)를 복사하여 행렬계산 처리부로 전송하는 종전의 방식에 비해, 행렬계산 반복루프 개시 이전에 행렬계산용 파라미터 데이터를 복사하여 행렬계산 처리부로 우선 전송하기 때문에 상대적으로 행렬계산 반복루프 처리시간을 단축시킬 수 있는 효과가 있다. 이러한 효과는 행렬계산용 파라미터 데이터의 양이 클수록 더욱 더 현저하게 차이가 난다.
따라서 본 발명은 립 러닝 프로그램 수행시간을 단축시킬 수 있는 효과를 얻을 수 있는 것이다.
더 나아가 본 발명은 행렬계산 처리부에서 이용되는 메모리가 DRAM으로 구현된 경우 행렬 계산에 이용되는 어느 하나의 행렬에 대해 행과 열을 트랜스포즈하여 라이팅해 놓음으로써, 추후 행렬 계산기에서 모든 행렬을 행 순서로 편리하게 액세스할 수 있는 장점이 있다.
이상은 도면에 도시된 실시예들을 참고로 설명되었으나 이는 예시적인 것에 불과하며, 당해 기술분야에서 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.
Claims (8)
- 메인 메모리에 저장된 딥 러닝 프로그램을 수행하기 위한 메인 프로세서와;
상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 분산 수행하기 위한 행렬계산 처리부가 실장된 하나 이상의 확장보드;를 포함하되,
상기 메인 프로세서는 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 반복루프 개시 이전에 상기 행렬계산 처리부로 전송함을 특징으로 하는 부하분산 처리장치. - 청구항 1에 있어서, 상기 행렬계산 처리부는,
상기 메인 프로세서측과 상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 DMA 전송하기 위한 인터페이스부와;
상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 저장하기 위한 행렬계산용 메모리와;
행렬계산을 수행하기 위한 하나 이상의 행렬 계산기와;
상기 행렬계산용 메모리와 상기 행렬 계산기 사이에 연결되어 행렬 계산 및 행렬계산 결과 데이터의 입출력을 제어하는 메모리 컨트롤러;를 포함함을 특징으로 하는 부하분산 처리장치. - 청구항 1 또는 청구항 2에 있어서, 상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 하는 부하분산 처리장치.
- 청구항 1 또는 청구항 2에 있어서, 상기 메인 프로세서는,
상기 딥 러닝 프로그램의 로딩 중 혹은 상기 딥 러닝 프로그램의 로딩 완료후 즉시 상기 메인 메모리에서 상기 행렬계산용 파라미터 데이터를 복사하여 상기 행렬계산 처리부로 전송함을 특징으로 하는 부하분산 처리장치. - 청구항 2에 있어서, 상기 행렬계산용 메모리가 DRAM인 경우 상기 메모리 컨트롤러는,
상기 행렬계산용 파라미터 데이터와 상기 행렬계산용 입력 데이터 중 어느 하나의 행렬을 구성하는 행과 열을 트랜스포즈하여 상기 DRAM에 저장하고, 행렬계산을 위해 상기 행렬계산용 파라미터 데이터 행렬과 상기 행렬계산용 입력 데이터 행렬을 연속하는 주소로 리드(read)함을 특징으로 하는 부하분산 처리장치. - 범용 컴퓨터의 메인 프로세서에 의해 실행되는 부하분산 처리방법에 있어서,
메인 메모리에 저장된 딥 러닝 프로그램을 로딩하는 단계와;
상기 딥 러닝 프로그램의 로딩 중 혹은 로딩 완료후에 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 수행하기 위해 필요한 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 처리부로 전송하는 단계와;
행렬계산용 입력 데이터를 상기 행렬계산 처리부로 복사하여 전송하고 상기 행렬계산 처리부로부터 행렬계산 결과 데이터를 전송받아 행렬계산 외 코드를 수행하는 과정을 반복하는 행렬계산 반복루프 실행 단계;를 포함함을 특징으로 하는 부하분산 처리방법. - 청구항 6에 있어서, 상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 하는 부하분산 처리방법.
- 청구항 6에 있어서, 상기 행렬계산 반복루프 실행 단계는 상기 딥 러닝 프로그램 종료 전까지 수행됨을 특징으로 하는 부하분산 처리방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180043789A KR20190120509A (ko) | 2018-04-16 | 2018-04-16 | 부하분산 처리장치 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180043789A KR20190120509A (ko) | 2018-04-16 | 2018-04-16 | 부하분산 처리장치 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190120509A true KR20190120509A (ko) | 2019-10-24 |
Family
ID=68423369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180043789A KR20190120509A (ko) | 2018-04-16 | 2018-04-16 | 부하분산 처리장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20190120509A (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010089593A (ko) | 1999-11-17 | 2001-10-06 | 이데이 노부유끼 | 디지털 신호 처리 장치 및 시스템 및 확장 기능 제공 방법 |
KR20140145216A (ko) | 2013-05-28 | 2014-12-23 | 윤동구 | 멀티 디바이스 베이 및 디바이스에 따른 pci express 스위치의 인터페이스 변환설정 방법 및 장치 |
-
2018
- 2018-04-16 KR KR1020180043789A patent/KR20190120509A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010089593A (ko) | 1999-11-17 | 2001-10-06 | 이데이 노부유끼 | 디지털 신호 처리 장치 및 시스템 및 확장 기능 제공 방법 |
KR20140145216A (ko) | 2013-05-28 | 2014-12-23 | 윤동구 | 멀티 디바이스 베이 및 디바이스에 따른 pci express 스위치의 인터페이스 변환설정 방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7016942B2 (ja) | 演算アクセラレータ | |
US10338925B2 (en) | Tensor register files | |
EP3631623B1 (en) | Tensor processor instruction set architecture | |
US11151442B2 (en) | Convolutional neural network processing method and device | |
CN109165728B (zh) | 一种卷积神经网络的基本计算单元及计算方法 | |
US20180107630A1 (en) | Processor and method for executing matrix multiplication operation on processor | |
CN108573305B (zh) | 一种数据处理方法、设备及装置 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
WO2020177577A1 (zh) | 一种控制器加载多核固件的方法、装置及计算机设备 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
KR20210033757A (ko) | 메모리 장치 및 그 동작 방법 | |
WO2023065983A1 (zh) | 计算装置、神经网络处理设备、芯片及处理数据的方法 | |
US20220253668A1 (en) | Data processing method and device, storage medium and electronic device | |
JP2022188301A (ja) | 情報処理装置、情報処理方法 | |
US20230161835A1 (en) | Matrix operation method and accelerator | |
KR20190120509A (ko) | 부하분산 처리장치 및 그 방법 | |
US20220004855A1 (en) | Convolution processing engine and control method, and corresponding convolutional neural network accelerator | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
US20230102296A1 (en) | Decomposing matrices for processing at a processor-in-memory | |
EP3073387A1 (en) | Controlling data flow between processors in a processing system | |
US20230169144A1 (en) | Operation method, processor, and related product | |
CN116225532A (zh) | 一种支持加速向量运算的通用处理器 | |
US9823841B2 (en) | Associating keys with data and compute objects in a storage compute device | |
CN116862750A (zh) | 电力矩阵lu分解加速方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |