KR20190120509A - 부하분산 처리장치 및 그 방법 - Google Patents

부하분산 처리장치 및 그 방법 Download PDF

Info

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
Application number
KR1020180043789A
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 KR1020180043789A priority Critical patent/KR20190120509A/ko
Publication of KR20190120509A publication Critical patent/KR20190120509A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference 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

부하분산 처리장치 및 그 방법{APPARATUS AND METHOD FOR DISTRIBUTING A LOAD}
본 발명은 메인 프로세서의 부하를 분산하여 처리하기 위한 장치에 관한 것으로, 특히 행렬계산이 수반되는 프로그램의 수행시간을 단축시키고자 하는 부하분산 처리장치 및 그 방법에 관한 것이다.
인공지능 특히 딥러닝 프로그램은 크게 학습과정(learning phase)과 추론과정(inference phase)으로 구분되고, 추론과정에서의 행렬계산은 학습과정에서 결정된 파라미터와 입력 데이터를 곱하는 과정이다.
학습과정에서 결정된 파라미터와 입력 데이터를 곱하는 행렬곱셈은 도 1에서와 같이 두 개의 행렬 A와 B를 곱하여 C를 얻는다. M×K 행렬과 K×N 행렬을 곱하면, M×K×N번의 곱셈과 M×K×N 번의 덧셈을 해야 하며, 행렬의 각 요소가 부동소수점 값이기 때문에 계산량이 매우 많다.
행렬곱셈은 곱셈기와 덧셈기를 반복적으로 사용하며 이를 통칭하여 도 2에 도시한 바와 같이 MAC(Multiplier and Accumulator)이라 한다. 도 2에서
Figure pat00001
로 표시된 것은 이전 값을 의미한다. 즉, 두 개의 행렬에서 두 개의 요소값을 곱하고, 그 값을 계속 누적하여 결과값을 계산하는 방식이다.
일 예로 물체인식을 위한 딥러닝 프로그램 중 하나인 다크넷-욜로(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로 전송해 행렬곱셈하기 때문에 프로그램 수행시간을 단축시키는데 있어 한계가 따른다. 특히 행렬곱셈을 위해 복사되는 파라미터의 용량이 크다면 그만큼 프로그램 수행시간은 늘어나기 때문에 프로그램 수행시간을 단축시키기 위한 방안이 필요하다.
대한민국 공개특허공보 제10-2014-0145216호 대한민국 공개특허공보 특2001-0089593호
이에 본 발명은 상술한 필요성에 따라 창안된 발명으로써, 본 발명의 주요 목적은 행렬계산이 요구되는 프로그램의 수행시간을 단축시킬 수 있는 부하분산 처리장치 및 그 방법을 제공함에 있으며,
더 나아가 본 발명의 또 다른 목적은 메인 프로세서가 장착된 범용 컴퓨터와 재설정 가능 반도체(FPGA)가 연동하는 시스템에서 행렬계산이 요구되는 프로그램을 수행함에 있어 통신량을 줄이고 메모리 참조를 효율적으로 지원하여 프로그램의 수행시간을 단축시킬 수 있는 부하분산 처리장치 및 그 방법을 제공함에 있다.
더 나아가 본 발명의 또 다른 목적은 메모리 종류에 따라 행렬 계산에 필요한 행렬 데이터의 행과 열을 트랜스포즈하여 읽기 및 쓰기 동작의 효율성을 높일 수 있는 부하분산 처리장치 및 그 방법을 제공함에 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 실시예에 따른 부하분산 처리장치는,
메인 메모리에 저장된 딥 러닝 프로그램을 수행하기 위한 메인 프로세서와;
상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 분산 수행하기 위한 행렬계산 처리부가 실장된 하나 이상의 확장보드;를 포함하되,
상기 메인 프로세서는 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 반복루프 개시 이전에 상기 행렬계산 처리부로 전송함을 특징으로 한다.
더 나아가 상술한 부하분산 처리장치의 행렬계산 처리부는,
상기 메인 프로세서측과 상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 DMA 전송하기 위한 인터페이스부와;
상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 저장하기 위한 행렬계산용 메모리와;
행렬계산을 수행하기 위한 하나 이상의 행렬 계산기와;
상기 행렬계산용 메모리와 상기 행렬 계산기 사이에 연결되어 행렬 계산 및 행렬계산 결과 데이터의 입출력을 제어하는 메모리 컨트롤러;를 포함함을 또 다른 특징으로 하며,
상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 한다.
더 나아가 상기 메인 프로세서는,
상기 딥 러닝 프로그램의 로딩 중 혹은 상기 딥 러닝 프로그램의 로딩 완료후 즉시 상기 메인 메모리에서 상기 행렬계산용 파라미터 데이터를 복사하여 상기 행렬계산 처리부로 전송함을 특징으로 하며,
상기 행렬계산용 메모리가 DRAM인 경우 상기 메모리 컨트롤러는,
상기 행렬계산용 파라미터 데이터와 상기 행렬계산용 입력 데이터 중 어느 하나의 행렬을 구성하는 행과 열을 트랜스포즈하여 상기 DRAM에 저장하고, 행렬계산을 위해 상기 행렬계산용 파라미터 데이터 행렬과 상기 행렬계산용 입력 데이터 행렬을 연속하는 주소로 리드(read)함을 특징으로 한다.
한편 본 발명의 또 다른 실시예에 따른 부하분산 처리방법은 범용 컴퓨터의 메인 프로세서에 의해 실행되는 부하분산 처리방법으로서,
메인 메모리에 저장된 딥 러닝 프로그램을 로딩하는 단계와;
상기 딥 러닝 프로그램의 로딩 중 혹은 로딩 완료후에 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 수행하기 위해 필요한 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 처리부로 전송하는 단계와;
행렬계산용 입력 데이터를 상기 행렬계산 처리부로 복사하여 전송하고 상기 행렬계산 처리부로부터 행렬계산 결과 데이터를 전송받아 행렬계산 외 코드를 수행하는 과정을 반복하는 행렬계산 반복루프 실행 단계;를 포함함을 특징으로 하며,
상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 하며,
상기 행렬계산 반복루프 실행 단계는 상기 딥 러닝 프로그램 종료 전까지 수행됨을 특징으로 한다.
상술한 과제 해결 수단에 따르면, 본 발명은 행렬계산 반복루프 수행중에 행렬계산용 파라미터 데이터를 복사하여 행렬계산 처리부로 전송하는 종전의 방식에 비해, 행렬계산 반복루프 개시 이전에 행렬계산용 파라미터 데이터를 복사하여 행렬계산 처리부로 우선 전송하기 때문에 상대적으로 행렬계산 반복루프 처리시간을 단축시킬 수 있는 효과가 있다. 이러한 효과는 행렬계산용 파라미터 데이터의 양이 클수록 더욱 더 현저하게 차이가 난다. 따라서 본 발명은 립 러닝 프로그램 수행시간을 단축시킬 수 있는 효과를 얻을 수 있는 것이다.
더 나아가 본 발명은 행렬계산 처리부에서 이용되는 메모리가 DRAM으로 구현된 경우 행렬 계산에 이용되는 어느 하나의 행렬에 대해 행과 열을 트랜스포즈하여 라이팅해 놓음으로써, 추후 행렬 계산기에서 모든 행렬을 행 순서로 편리하게 액세스할 수 있는 장점이 있다.
도 1은 행렬곱셈의 일 예시도.
도 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. 메인 메모리에 저장된 딥 러닝 프로그램을 수행하기 위한 메인 프로세서와;
    상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 분산 수행하기 위한 행렬계산 처리부가 실장된 하나 이상의 확장보드;를 포함하되,
    상기 메인 프로세서는 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 반복루프 개시 이전에 상기 행렬계산 처리부로 전송함을 특징으로 하는 부하분산 처리장치.
  2. 청구항 1에 있어서, 상기 행렬계산 처리부는,
    상기 메인 프로세서측과 상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 DMA 전송하기 위한 인터페이스부와;
    상기 행렬계산용 파라미터 데이터, 행렬계산용 입력 데이터, 행렬계산 결과 데이터를 저장하기 위한 행렬계산용 메모리와;
    행렬계산을 수행하기 위한 하나 이상의 행렬 계산기와;
    상기 행렬계산용 메모리와 상기 행렬 계산기 사이에 연결되어 행렬 계산 및 행렬계산 결과 데이터의 입출력을 제어하는 메모리 컨트롤러;를 포함함을 특징으로 하는 부하분산 처리장치.
  3. 청구항 1 또는 청구항 2에 있어서, 상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 하는 부하분산 처리장치.
  4. 청구항 1 또는 청구항 2에 있어서, 상기 메인 프로세서는,
    상기 딥 러닝 프로그램의 로딩 중 혹은 상기 딥 러닝 프로그램의 로딩 완료후 즉시 상기 메인 메모리에서 상기 행렬계산용 파라미터 데이터를 복사하여 상기 행렬계산 처리부로 전송함을 특징으로 하는 부하분산 처리장치.
  5. 청구항 2에 있어서, 상기 행렬계산용 메모리가 DRAM인 경우 상기 메모리 컨트롤러는,
    상기 행렬계산용 파라미터 데이터와 상기 행렬계산용 입력 데이터 중 어느 하나의 행렬을 구성하는 행과 열을 트랜스포즈하여 상기 DRAM에 저장하고, 행렬계산을 위해 상기 행렬계산용 파라미터 데이터 행렬과 상기 행렬계산용 입력 데이터 행렬을 연속하는 주소로 리드(read)함을 특징으로 하는 부하분산 처리장치.
  6. 범용 컴퓨터의 메인 프로세서에 의해 실행되는 부하분산 처리방법에 있어서,
    메인 메모리에 저장된 딥 러닝 프로그램을 로딩하는 단계와;
    상기 딥 러닝 프로그램의 로딩 중 혹은 로딩 완료후에 상기 딥 러닝 프로그램의 추론과정에서 요구되는 행렬계산을 수행하기 위해 필요한 행렬계산용 파라미터 데이터를 상기 메인 메모리에서 복사하여 행렬계산 처리부로 전송하는 단계와;
    행렬계산용 입력 데이터를 상기 행렬계산 처리부로 복사하여 전송하고 상기 행렬계산 처리부로부터 행렬계산 결과 데이터를 전송받아 행렬계산 외 코드를 수행하는 과정을 반복하는 행렬계산 반복루프 실행 단계;를 포함함을 특징으로 하는 부하분산 처리방법.
  7. 청구항 6에 있어서, 상기 행렬계산용 파라미터 데이터는 상기 딥 러닝 프로그램의 학습과정에서 결정되어 상기 메인 메모리에 저장된 데이터임을 특징으로 하는 부하분산 처리방법.
  8. 청구항 6에 있어서, 상기 행렬계산 반복루프 실행 단계는 상기 딥 러닝 프로그램 종료 전까지 수행됨을 특징으로 하는 부하분산 처리방법.
KR1020180043789A 2018-04-16 2018-04-16 부하분산 처리장치 및 그 방법 KR20190120509A (ko)

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)

* Cited by examiner, † Cited by third party
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 스위치의 인터페이스 변환설정 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
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