KR20150145167A - 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 - Google Patents

단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 Download PDF

Info

Publication number
KR20150145167A
KR20150145167A KR1020140192137A KR20140192137A KR20150145167A KR 20150145167 A KR20150145167 A KR 20150145167A KR 1020140192137 A KR1020140192137 A KR 1020140192137A KR 20140192137 A KR20140192137 A KR 20140192137A KR 20150145167 A KR20150145167 A KR 20150145167A
Authority
KR
South Korea
Prior art keywords
graphics processor
data
processor thread
data blocks
thread groups
Prior art date
Application number
KR1020140192137A
Other languages
English (en)
Other versions
KR101687081B1 (ko
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 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드
Publication of KR20150145167A publication Critical patent/KR20150145167A/ko
Application granted granted Critical
Publication of KR101687081B1 publication Critical patent/KR101687081B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20182Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

본 개시에서는, 단채널 컨볼루션 레이어를 위한 처리 방법 및 처리 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 처리 장치가 제공된다. 단채널 컨볼루션 레이어를 위한 처리 방법은 다음의 단계들을 포함한다. 처리될 데이터가 복수의 데이터 블럭으로 분할되고, 복수의 데이터 블럭이 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독되며, 복수의 필터가 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독되고, 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들이 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 동시에 계산된다.

Description

단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치{PROCESSING METHOD AND APPARATUS FOR SINGLE-CHANNEL CONVOLUTION LAYER, AND PROCESSING METHOD AND APPARATUS FOR MULTI-CHANNEL CONVOLUTION LAYER}
본 출원은 2014년 6월 18일자로 중국 특허청에 출원된 중국 특허출원 제CN201410274196.3호에 대한 우선권 및 그 이익을 주장하는 것으로, 그 전체 내용이 참조로 본 명세서에 포함된다.
본 개시의 실시예들은 일반적으로 정보 처리 기술 분야에 관한 것으로, 보다 구체적으로 단채널 컨볼루션 레이어를 위한 처리 방법 및 처리 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 처리 장치에 관한 것이다.
컨볼루션 신경망(convolution neural network)은 다양한 응용 분야에서, 특히 이미지 및 비디오 응용 분야에서 광범위하게 사용되고 있다. 컨볼루션 레이어는 컨볼루션 신경망에서 필수 연산부이다. 컨볼루션 레이어에서, 이미지를 예로 들면, 복수의 필터는 컨볼루션을 계산하도록 각각 이미지에 작용한다. 관련 기술 분야에서, 컨볼루션 계산은 다음과 같은 2개의 모드로 구현된다. (1) 필터는 컨볼루션을 계산하도록 직접 이미지에 작용하며, 그래픽 프로세서 스레드(thread) 그룹이 2차원(X 및 Y) 모드에 있고, X 차원은 모든 이미지의 수로 분할되고 Y 차원은 모든 필터의 수로 분할되며, 각 그래픽 프로세서 스레드는 복수의 이미지에 대한 복수의 필터의 컨볼루션들을 계산하지만, 하나의 데이터 포인트에 대응하는 컨볼루션 커널(kernel)만을 계산하고; (2) 모든 이미지 데이터는 컨볼루션 계산이 복잡한 행렬 곱셈으로 이송되도록 필터의 사이즈에 따라 하나의 데이터 포인트씩(one data point by one data point) 언폴딩된다(unfolded).
그러나, 관련 기술 분야에서는 다음의 결점들이 있다. 제1 모드에서, 인접하는 출력 데이터 포인트들에 대응하는 입력 데이터 포인트들이 서로 중첩된다. 예를 들면, 1의 스텝 길이 및 5*5 필터를 갖는 컨볼루션 커널에 대하여, 인접하는 출력 데이터 포인트들에 대응하는 입력 데이터 포인트들 간의 중첩된 데이터는, 다수의 데이터가 로컬 메모리로 반복해서 판독되도록 80%의 비율을 가지고 있고, 이에 따라 빈약한 성능을 초래한다. 제2 모드에서, 이미지를 저장하기 위해서, 우선 언폴딩되고, 이에 따라 필요한 메모리 공간이 컨볼루션 커널의 사이즈에 정비례한다. 예를 들면, 5*5 필터는 25배의 추가 메모리를 필요로 하고, 9*9 필터는 81배의 추가 메모리를 필요로 한다. 실제 응용 분야에서, 필터는 보다 큰 사이즈를 가질 수 있고 그래픽 프로세서의 글로벌 메모리 비용이 크게 증가되고 있다.
본 개시의 실시예들은 적어도 어느 정도 관련 기술 분야에 존재하는 적어도 하나의 문제점을 해결하려고 한다.
따라서, 본 개시의 제1 목적은, 메모리 공간의 사용을 양호하게 하고, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 전력 소비에 대한 성능비를 향상시키는, 단채널 컨볼루션 레이어를 위한 처리 방법을 제공하는 것이다.
본 개시의 제2 목적은, 단채널 컨볼루션 레이어를 위한 방법을 처리하기 위한 장치를 제공하는 것이다.
본 개시의 제3 목적은 다채널 컨볼루션 레이어를 위한 처리 방법을 제공하는 것이다.
본 개시의 제4 목적은 다채널 컨볼루션 레이어를 위한 처리 장치를 제공하는 것이다.
상기 목적들을 달성하기 위해서, 본 개시의 제1 양태의 실시예들은 단채널 컨볼루션 레이어를 위한 처리 방법을 제공하며, 이 처리 방법은, 처리될 데이터를 복수의 데이터 블럭으로 분할하는 단계; 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하는 단계; 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하는 단계; 및 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 복수의 필터 및 복수의 데이터 블럭 내의 대응하는 데이터 포인트들의 컨볼루션들을 동시에 계산하는 단계를 포함한다.
단채널 컨볼루션 레이어를 위한 처리 방법에 의하면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
상기 목적들을 달성하기 위해서, 본 개시의 제2 양태의 실시예들은 단채널 컨볼루션 레이어를 위한 처리 장치를 제공하고, 이 처리 장치는, 처리될 데이터를 복수의 데이터 블럭으로 분할하도록 구성된 분할 모듈; 복수의 그래픽 프로세서 스레드 그룹을 통하여 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하도록 구성된 제1 판독 모듈; 복수의 그래픽 프로세서 스레드 그룹을 통하여 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하도록 구성된 제2 판독 모듈; 및 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산하도록 구성된 계산 모듈을 포함한다.
본 개시의 실시예들에 따른 단채널 컨볼루션 레이어를 위한 처리 장치에 따르면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
상기 목적들을 달성하기 위해서, 본 개시의 제3 양태의 실시예들은 다채널 컨볼루션 레이어를 위한 처리 방법을 제공하며, 이 처리 방법은, 각 채널 내의 처리될 데이터를 복수의 데이터 블럭으로 분할하는 단계; 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하는 단계; 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하는 단계; 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 하나의 채널 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산하는 단계; 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 각 채널의 컨볼루션 결과를 얻도록 각 채널 내의 컨볼루션들을 하나씩 계산하고 최종 컨볼루션 결과를 얻도록 각 채널의 컨볼루션 결과를 축적하는 단계; 및 최종 컨볼루션 결과를 복수의 그래픽 프로세서 스레드 그룹의 글로벌 메모리 내에 기록하는 단계를 포함한다.
본 개시의 실시예들에 따른 다채널 컨볼루션 레이어를 위한 처리 방법에 따르면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이 데이터 이동 수를 더욱 감소시켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
상기 목적들을 달성하기 위해서, 본 개시의 제4 양태의 실시예들은 다채널 컨볼루션 레이어를 위한 처리 장치를 제공하고, 이 처리 장치는, 각 채널 내의 처리될 데이터를 복수의 데이터 블럭으로 분할하도록 구성된 분할 모듈; 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하도록 구성된 제1 판독 모듈; 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하도록 구성된 제2 판독 모듈; 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 하나의 채널 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산하도록 구성된 계산 모듈; 각 채널의 컨볼루션 결과를 얻도록 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 각 채널 내의 컨볼루션들을 하나씩 계산하고 최종 컨볼루션을 얻도록 각 채널의 컨볼루션 결과를 축적하도록 구성된 축적 모듈; 및 최종 컨볼루션 결과를 복수의 그래픽 프로세서 스레드 그룹의 글로벌 메모리 내에 기록하도록 구성된 기록 모듈을 포함한다.
본 개시의 실시예들에 따른 다채널 컨볼루션 레이어를 위한 처리 장치에 따르면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
본 개시의 부가적인 양태들 및 이점들은 다음의 설명 부분에서 주어지거나, 다음의 설명 부분으로부터 명백해지거나, 본 개시의 실시예들의 실행으로부터 학습될 것이다.
본 개시의 실시예들의 이들 및 다른 양태들 및 이점들은 첨부된 도면을 참조하여 이루어지는 다음의 설명으로부터 분명해지고 더욱 용이하게 인식될 것이다.
도 1은 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 방법의 플로 차트.
도 2는 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 방법의 개략도.
도 3은 본 개시의 다른 실시예예에 따른 단채널 컨볼루션 레이어를 위한 처리 방법의 플로 차트.
도 4는 본 개시의 실시예에 따른 비정규 데이터 블럭들을 판독하는 개략도.
도 5는 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 장치의 블럭도.
도 6은 본 개시의 다른 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 장치의 블럭도.
도 7은 본 개시의 실시예에 따른 다채널 컨볼루션 레이어를 위한 처리 방법의 플로 차트.
도 8은 본 개시의 실시예에 따른 다채널 컨볼루션 레이어를 위한 처리 방법의 개략도.
도 9는 본 개시의 실시예에 따른 다채널 컨볼루션 레이어를 위한 처리 장치의 블럭도.
본 개시의 실시예들에 대하여 상세히 참조가 이루어질 것이다. 본 개시의 실시예들을 도면에 나타낼 것이고, 동일 또는 유사한 구성요소들 및 동일하거나 유사한 기능을 갖는 구성요소들에 대해서는 설명 전반에 걸쳐서 동일한 참조번호로 표기되어 있다. 도면에 따라 본 명세서에서 설명되는 실시예들은 예시적이고, 본 개시를 한정하고자 하는 것이 아니다.
설명에서, "제1" 및 "제2" 등의 용어는 설명을 위해 본 명세서에서 사용되고 비교적 중요도 또는 중요성을 표시하거나 암시하고자 하는 것이 아니다. 또한, 특정되거나 한정되지 않는 한, 용어 "탑재", "접속" 및 " 결합" 및 그들의 변형들이 광범위하게 사용되며 기계적 또는 전기적 탑재들, 접속들 및 결합들 등을 망라하며, 또한 내부 탑재들, 2개의 컴포넌트의 접속들 및 결합들일 수도 있고, 더욱이는 직접 및 간접 탑재들, 접속들, 및 결합들일 있고, 본 개시의 상세한 실시예에 따라 당업자에게 이해될 수 있음을 이해하여야 한다. 본 개시의 설명에서, 용어 "복수의"란 특정하지 않는 한, 2개 이상을 의미한다.
플로 차트로 설명되거나 본 명세서에서 다른 방식으로 설명되는 임의의 프로세스 또는 방법은, 프로세스 내의 특정한 논리 기능들 또는 단계들을 달성하기 위해서 하나 이상의 모듈, 세그먼트 또는 실행 가능한 명령들의 코드들의 일부분을 포함하는 것이 이해될 수 있고, 본 개시의 바람직한 실시예의 범주가 다른 실시들을 포함하며, 이는 당업자가 이해하여야 한다.
본 개시의 실시예들에 따른 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치에 대하여 도면을 참조하여 설명할 것이다.
도 1은 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 방법의 플로 차트이다. 도 2는 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 방법의 개략도이다.
도 1에 나타낸 바와 같이, 단채널 컨볼루션 레이어를 위한 처리 방법은 다음의 단계들을 포함한다.
단계 S101에서, 처리될 데이터가 복수의 데이터 블럭으로 분할된다.
본 개시의 실시예에서, 처리될 데이터는 이미지, 비디오, 오디오 및 워드 등의 컴퓨터 판독 가능한 데이터일 수 있다. 일부 실시예에서, 이미지 데이터의 예를 들면, 이미지는 그래픽 프로세서 스레드 그룹의 사이즈 및 이미지의 사이즈에 따라 복수의 데이터 블럭으로 분할될 수 있고, 그래픽 프로세서 스레드 그룹은 복수의 스레드를 포함한다. 예를 들면, 도 2에 나타낸 바와 같이, 그래픽 프로세서 스레드 그룹의 사이즈가 32*16이고 이미지(즉, image0)의 사이즈가 64*64(즉, Width=64 및 Height=64)인 경우, 이미지는 8개의 데이터 블럭(즉, Block0 내지 Block7)으로 분할될 수 있고, 각 데이터 블럭의 사이즈는 32*16(Size A=32 및 Size B=16)이다. 물론, 각 그래픽 프로세서 스레드 그룹이 분할된 데이터 블럭들을 처리할 수 있는 한, 이미지는 평균적으로 분할되지 않을 수 있고, 이에 한정되지 않는다. 도 2에 나타낸 실시예는 예시적일 뿐이며, 본 개시는 또한 다른 실시예들에 의해서도 구현될 수 있고 다른 실시예에 적용될 수도 있음을 이해하여야 한다. 당업자는 도 2의 실시예를 사용하여 임의의 사이즈의 데이터 및 임의의 사이즈의 그래픽 프로세서 스레드 그룹에 따라 데이터를 복수의 데이터 블럭으로 분할할 수 있고, 데이터를 복수의 데이터 블럭으로 분할하는 것의 이러한 확장들 및 변형들은 본 개시의 보호 범주 내에 속해야 한다.
단계 S102에서, 복수의 그래픽 프로세서 스레드 그룹은 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독한다.
본 개시의 실시예에서, 각 그래픽 프로세서 스레드 그룹은 대응하는 데이터 블럭을 각 그래픽 프로세서 스레드 그룹의 로컬 메모리로 각각 판독한다.
단계 S103에서, 복수의 그래픽 프로세서 스레드 그룹은 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독한다.
본 개시의 실시예에서, 각 그래픽 프로세서 스레드 그룹은 복수의 필터를 각 그래픽 프로세서 스레드 그룹의 로컬 메모리로 각각 판독한다.
본 개시의 실시예에서, 단계 S103은 단계 S102 전에 실행될 수 있거나, 또는 단계 S102 및 단계 S103은 동시에 실행될 수 있고, 이에 한정되지 않는다.
단계 S104에서, 복수의 그래픽 프로세서 스레드 그룹의 복수의 스레드는 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산한다.
본 개시의 실시예에서, 데이터 포인트는 단위 데이터이다. 각 그래픽 프로세서 스레드 그룹은 대응하는 데이터 블럭 및 복수의 필터를 각 그래픽 프로세서 스레드 그룹의 로컬 메모리 내에 저장하고, 각 그래픽 프로세서 스레드 그룹 내의 복수의 스레드는 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 계산한다.
본 개시의 실시예들에 따른 단채널 컨볼루션 레이어를 위한 처리 방법에 의하면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
본 개시의 실시예에서, 복수의 데이터 블럭은 비정규 데이터 블럭들이다. 물론, 복수의 데이터 블럭은 정규 데이터 블럭들일 수 있고, 이에 한정되지 않는다.
도 3은 본 개시의 다른 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 방법의 플로 차트이다. 도 4는 본 개시의 실시예에 따른 비정규 데이터 블럭들을 판독하는 개략도이다.
도 3에 나타낸 바와 같이, 단채널 컨볼루션 레이어를 위한 처리 방법은 다음의 단계들을 포함한다.
단계 S301에서, 처리될 데이터가 복수의 데이터 블럭으로 분할된다.
본 개시의 실시예에서, 처리될 데이터는 이미지, 비디오, 오디오 및 워드 등의 컴퓨터 판독 가능한 데이터일 수 있다. 일부 실시예에서, 이미지 데이터의 예를 들면, 이미지는 그래픽 프로세서 스레드 그룹의 사이즈 및 이미지의 사이즈에 따라 복수의 데이터 블럭으로 분할될 수 있고, 그래픽 프로세서 스레드 그룹은 복수의 스레드를 포함한다. 예를 들면, 도 2에 나타낸 바와 같이, 그래픽 프로세서 스레드 그룹의 사이즈가 32*16이고 이미지(즉, image0)의 사이즈가 64*64(즉, Width=64 및 Height=64)인 경우, 이미지는 8개의 데이터 블럭(즉, Block0 내지 Block7)으로 분할될 수 있고, 각 데이터 블럭의 사이즈는 32*16(Size A=32 및 Size B=16)이다. 물론, 각 그래픽 프로세서 스레드 그룹이 분할된 데이터 블럭들을 처리할 수 있는 한, 이미지는 평균적으로 분할되지 않을 수 있고, 이에 한정되지 않는다. 도 2에 나타낸 실시예는 예시적일 뿐이며, 본 개시는 또한 다른 실시예들에 의해서도 구현될 수 있고 다른 실시예에 적용될 수도 있음을 이해하여야 한다. 당업자는 도 2의 실시예를 사용하여 임의의 사이즈의 데이터 및 임의의 사이즈의 그래픽 프로세서 스레드 그룹에 따라 데이터를 복수의 데이터 블럭으로 분할할 수 있고, 데이터를 복수의 데이터 블럭으로 분할하는 것의 이러한 확장들 및 변형들이 본 개시의 보호 범주 내에 속해야 한다.
단계 S302에서, 각 데이터 블럭은 복수의 서브 데이터 블럭으로 분할되고, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭된다.
본 개시의 실시예에서, 복수의 그래픽 프로세서 스레드 그룹이 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독할 때에, 복수의 데이터 블럭에 대응하는 패딩(padding) 데이터가 로컬 메모리들로 판독될 수 있다. 패딩 데이터로 인하여, 데이터 블럭 내의 데이터 포인트들의 수가 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수보다 많다. 데이터 포인트들과 복수의 스레드 간에 일대일 매핑이 설정되는 경우, 복잡한 서브스크립 동작을 초래하여, 데이터 전송 지연을 증가시킨다. 비정규 데이터를 판독하기 위해서, 간단한 그래픽 프로세서 스레드 그룹을 사용하여 비정규 데이터 블럭들과 매핑한다. 일부 실시예에서, 각 데이터 블럭은 복수의 서브 데이터 블럭으로 분할되고, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭된다.
예를 들면, 도 4에 나타낸 바와 같이, 데이터 블럭은 Block load 0, Block load 1, Block load 2 및 Block load 3과 같이 4개의 서브 데이터 블럭으로 분할된다.
단계 S303에서, 대응하는 그래픽 프로세서 스레드 그룹은 복수의 서브 데이터 블럭을 대응하는 그래픽 프로세서 스레드 그룹의 로컬 메모리로 하나씩 판독한다.
본 개시의 실시예에서, 도 4에 나타낸 바와 같이 회색 음영 영역은 최초로 대응하는 그래픽 프로세서 스레드 그룹에 의해 판독된 처리될 데이터를 표현한다. 그러면, 회색 음영 영역의 우측에 있는 영역 내의 데이터가 판독될 수 있고 나머지가 두번째로 순차적으로 판독될 수 있다. 따라서, 데이터 블럭을 판독하는 것은 4회로 마무리된다. 대부분의 스레드가 제1 내지 제3 판독 시에 아이들이지만, 복잡한 서브스크립 동작은 회피된다.
단계 S304에서, 복수의 그래픽 프로세서 스레드 그룹은 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독한다.
본 개시의 실시예에서, 각 그래픽 프로세서 스레드 그룹은 복수의 필터를 각 그래픽 프로세서 스레드 그룹의 로컬 메모리로 각각 판독한다.
본 개시의 실시예에서, 단계 S304는 단계 S302 전에 실행될 수 있거나, 또는 단계 S304는 단계 S302 및 단계 S303과 동시에 실행될 수 있고, 이에 한정되지 않는다.
단계 S305에서, 복수의 그래픽 프로세서 스레드 그룹의 복수의 스레드는 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산한다.
본 개시의 실시예에서, 데이터 포인트는 단위 데이터이다. 각 그래픽 프로세서 스레드 그룹은 대응하는 데이터 블럭 및 복수의 필터를 각 그래픽 프로세서 스레드 그룹의 로컬 메모리 내에 저장하고, 각 그래픽 프로세서 스레드 그룹 내의 복수의 스레드는 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 계산한다.
본 개시의 실시예들에 따른 단채널 컨볼루션 레이어를 처리하기 위한 방법에 의하면, 데이터 블럭이 판독되었을 때, 각 데이터 블럭은 복수의 서브 데이터 블럭으로 분할되고, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭되며, 그러면 대응하는 그래픽 프로세서 스레드 그룹이 복수의 서브 데이터 블럭을 대응하는 그래픽 프로세서 스레드 그룹의 로컬 메모리로 하나씩 판독한다. 이 방법은 비정규 데이터 블럭들을 판독하는데 상당히 적용할 수 있어, 복잡한 서브스크립 동작이 회피될 수 있고 데이터 전송 지연이 감소될 수 있다.
상기 실시예들을 달성하기 위해서, 단채널 컨볼루션 레이어를 위한 처리 장치가 본 개시의 실시예들에 의해 제공된다.
도 5는 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 장치의 블럭도이다.
도 5에 나타낸 바와 같이, 장치(100)는 분할 모듈(110), 제1 판독 모듈(120), 제2 판독 모듈(130) 및 계산 모듈(140)을 포함한다.
분할 모듈(110)은 처리될 데이터를 복수의 데이터 블럭으로 분할하도록 구성된다. 일부 실시예에서, 처리될 데이터는 이미지, 비디오, 오디오 및 워드 등의 컴퓨터 판독 가능한 데이터일 수 있다. 일부 실시예에서, 이미지 데이터의 예를 들면, 분할 모듈(110)은 이미지를 그래픽 프로세서 스레드 그룹의 사이즈 및 이미지의 사이즈에 따라 복수의 데이터 블럭으로 분할할 수 있고, 그래픽 프로세서 스레드 그룹은 복수의 스레드를 포함한다. 예를 들면, 도 2에 나타낸 바와 같이, 그래픽 프로세서 스레드 그룹의 사이즈가 32*16이고 이미지(즉, image0)의 사이즈가 64*64(즉, Width=64 및 Height=64)인 경우, 이미지는 8개의 데이터 블럭(즉, Block0 내지 Block7)으로 분할될 수 있고, 각 데이터 블럭의 사이즈는 32*16(Size A=32 및 Size B=16)이다. 물론, 각 그래픽 프로세서 스레드 그룹이 분할된 데이터 블럭들을 처리할 수 있는 한, 이미지는 평균적으로 분할되지 않을 수 있고, 이에 한정되지 않는다. 도 2에 나타낸 실시예는 예시적일 뿐이며, 본 개시는 또한 다른 실시예들에 의해서도 구현될 수 있고 다른 실시예에 적용될 수도 있음을 이해하여야 한다. 당업자는 도 2의 실시예를 사용하여 임의의 사이즈의 데이터 및 임의의 사이즈의 그래픽 프로세서 스레드 그룹에 따라 데이터를 복수의 데이터 블럭으로 분할할 수 있고, 데이터를 복수의 데이터 블럭으로 분할하는 것의 이러한 확장들 및 변형들이 본 개시의 보호 범주 내에 속해야 한다.
제1 판독 모듈(120)은 복수의 그래픽 프로세서 스레드 그룹을 통하여 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하도록 구성된다. 일부 실시예에서, 각 그래픽 프로세서 스레드 그룹은 대응하는 데이터 블럭을 각 그래픽 프로세서 스레드 그룹의 로컬 메모리로 각각 판독한다.
제2 판독 모듈(130)은 복수의 그래픽 프로세서 스레드 그룹을 통하여 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하도록 구성된다. 일부 실시예에서, 각 그래픽 프로세서 스레드 그룹은 복수의 필터를 각 그래픽 프로세서 스레드 그룹의 로컬 메모리로 각각 판독한다.
계산 모듈(140)은 복수의 그래픽 프로세서 스레드 그룹의 복수의 스레드를 통하여 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산하도록 구성된다. 본 개시의 실시예에서, 데이터 포인트는 단위 데이터이다. 각 그래픽 프로세서 스레드 그룹은 대응하는 데이터 블럭 및 복수의 필터를 각 그래픽 프로세서 스레드 그룹의 로컬 메모리 내에 저장하고, 각 그래픽 프로세서 스레드 그룹 내의 복수의 스레드는 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 계산한다.
본 개시의 실시예들에 따른 단채널 컨볼루션 레이어를 위한 처리 장치에 의하면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
본 개시의 실시예에서, 복수의 데이터 블럭은 비정규 데이터 블럭들이다. 물론, 복수의 데이터 블럭은 정규 데이터 블럭들일 수 있고, 이에 한정되지 않는다.
도 6은 본 개시의 실시예에 따른 단채널 컨볼루션 레이어를 위한 처리 장치의 블럭도이다.
도 6에 나타낸 바와 같이, 장치(100)는, 분할 모듈(110), 제1 판독 모듈(120), 제2 판독 모듈(130) 및 계산 모듈(140)을 포함하고, 제1 판독 모듈(120)은 분할 유닛(121) 및 판독 유닛(122)을 포함한다.
일부 실시예에서, 분할 유닛(121)은 각 데이터 블럭을 복수의 서브 데이터 블럭으로 분할하도록 구성된다. 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈는 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭된다.
본 개시의 실시예에서, 복수의 그래픽 프로세서 스레드 그룹이 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독할 때에, 제1 판독 모듈은 또한 복수의 데이터 블럭에 대응하는 패딩 데이터를 로컬 메모리들로 판독하도록 구성된다. 패딩 데이터로 인하여, 데이터 블럭 내의 데이터 포인트들의 수가 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수보다 많다. 데이터 포인트들과 복수의 스레드 간에 일대일 매핑이 설정되는 경우, 복잡한 서브스크립 동작을 초래하여, 데이터 전송 지연을 증가시킨다. 비정규 데이터를 판독하기 위해서, 간단한 그래픽 프로세서 스레드 그룹을 사용하여 비정규 데이터 블럭들과 매핑한다. 일부 실시예에서, 각 데이터 블럭은 복수의 서브 데이터 블럭으로 분할되고, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭된다.
예를 들면, 도 4에 나타낸 바와 같이, 데이터 블럭은 Block load 0, Block load 1, Block load 2 및 Block load 3과 같이 4개의 서브 데이터 블럭으로 분할된다.
판독 유닛(122)은, 대응하는 그래픽 프로세서 스레드 그룹을 통하여 복수의 서브 데이터 블럭을 대응하는 그래픽 프로세서 스레드 그룹의 로컬 메모리로 하나씩 판독하도록 구성된다. 도 4에 나타낸 바와 같이 본 개시의 실시예에서, 회색 음영 영역은 최초로 대응하는 그래픽 프로세서 스레드 그룹에 의해 판독된 처리될 데이터를 표현한다. 그러면, 회색 음영 영역의 우측에 있는 영역 내의 데이터가 판독될 수 있고 나머지가 두번째로 순차적으로 판독될 수 있다. 따라서, 데이터 블럭을 판독하는 것은 4회로 마무리된다. 대부분의 스레드가 제1 내지 제3 판독 시에 아이들이지만, 복잡한 서브스크립 동작은 회피된다.
본 개시의 실시예들에 따른 단채널 컨볼루션 레이어를 위한 처리 장치에 의하면, 데이터 블럭이 판독되었을 때, 각 데이터 블럭은 복수의 서브 데이터 블럭으로 분할되고, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭되며, 그러면 대응하는 그래픽 프로세서 스레드 그룹이 복수의 서브 데이터 블럭을 대응하는 그래픽 프로세서 스레드 그룹의 로컬 메모리로 하나씩 판독한다. 이 방법은 비정규 데이터 블럭들을 판독하는데 상당히 적용할 수 있어, 복잡한 서브스크립 동작이 회피될 수 있고 데이터 전송 지연이 감소될 수 있다.
본 개시의 실시예들은 다채널 컨볼루션 레이어를 처리하기 위한 방법을 제공한다.
도 7은 본 개시의 실시예에 따른 다채널 컨볼루션 레이어를 위한 처리 방법의 플로 차트이다.
도 7에 나타낸 바와 같이, 다채널 컨볼루션 레이어를 위한 처리 방법은 다음의 단계들을 포함한다.
단계 S701에서, 처리될 데이터 및 필터는 복수의 채널을 포함하며 각 채널 내의 처리될 데이터는 복수의 데이터 블럭으로 분할된다.
일부 실시예에서, 처리될 데이터는 이미지, 비디오, 오디오 및 워드 등의 컴퓨터 판독 가능한 데이터일 수 있다. 본 개시의 실시예에서, 이미지 데이터의 예를 들면, 다채널 컨볼루션 레이어 내의 처리될 입력 데이터(처리될 데이터)는 복수의 이미지 및 복수의 필터를 포함하고, 각 이미지 및 각 필터는 복수의 채널을 포함한다. 도 8에 나타낸 바와 같이, 입력 이미지는 64개의 이미지(즉, Image 0 내지 Image 63) 및 64개의 필터(즉, Filter 0 내지 Filter 63)를 포함하고, 각 이미지는 3개의 채널(Channel 10, Channel 11 및 Channel 12)을 갖고 각 필터는 3개의 채널(Channel 10, Channel 11 및 Channel 12)을 갖는다. 도 8에서의 실시예는 예시적일 뿐이며, 본 개시는 또한 다른 실시예들에 의해 구현될 수도 있고 다른 실시예들에 적용될 수도 있음을 이해하여야 한다. 당업자는 도 8에서의 실시예에 따라 임의 수량의 채널들을 갖는 임의 수량의 데이터 및 필터들을 처리할 수 있다.
또한, 각 채널 내의 처리될 데이터를 복수의 데이터 블럭으로 분할하기 위한 방법은 본 개시의 상기 실시예들에 의해 제공된 단채널 컨볼루션 레이어를 위한 처리 방법에서의 것을 인용할 수 있어 여기서는 생략된다.
단계 S702에서, 복수의 그래픽 프로세서 스레드 그룹은 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독한다.
단계 S703에서, 복수의 그래픽 프로세서 스레드 그룹은 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독한다.
본 개시의 실시예에서, 이미지 데이터의 예를 들면, 복수의 그래픽 프로세서 스레드 그룹이 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하기 전에, 복수의 이미지 및 복수의 필터는 그래픽 프로세서의 글로벌 메모리로 판독된다. 대안으로, 복수의 이미지 및 복수의 필터는 중앙 처리 유닛(CPU) 메모리(즉, 호스트 메모리) 내에 저장된다. 우선, 복수의 이미지 및 복수의 필터가 주변 컴포넌트 인터페이스 익스프레스(PCIE)를 통하여 CPU로부터 그래픽 프로세서의 글로벌 메모리로 이송되고, 그러면 그래픽 프로세서의 각 연산 유닛 내의 복수의 스레드가 협동하여 복수의 이미지 및 복수의 필터를 글로벌 메모리로부터 로컬 메모리로 로딩한다.
본 개시의 실시예에서, 단계 S703은 단계 S702 전에 실행될 수 있거나, 단계 S702 및 단계 S703이 동시에 실행될 수 있고, 이에 한정되지 않는다.
단계 S704에서, 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드는 하나의 채널 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산한다.
본 개시의 실시예에서, 데이터 포인트는 단위 데이터이다. 그래픽 프로세서 내의 각 연산 유닛은 그래픽 프로세서 스레드 그룹을 포함하고, 각 연산 유닛 내의 각 스레드는 로컬 메모리 내의 처리될 데이터 및 필터들의 컨볼루션들을 계산한다. 예를 들면, 대응하는 스레드는 Channel 10 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 계산하고, 각 데이터 포인트는 Channel 10 내의 복수의 필터와 컨볼루션된다.
단계 S705에서, 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드는 각 채널 내의 컨볼루션들을 하나씩 계산하여 각 채널의 컨볼루션 결과를 얻고 각 채널의 컨볼루션 결과를 축적하여 최종 컨볼루션 결과를 얻는다.
단계 S706에서, 최종 컨볼루션 결과가 복수의 그래픽 프로세서 스레드 그룹의 글로벌 메모리 내에 기록된다.
도 8에 나타낸 바와 같이, 최종 컨볼루션 결과가 글로벌 메모리에 다시 기록된다.
본 개시의 실시예들에 따른 다채널 컨볼루션 레이어를 위한 처리 방법에 의하면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
본 개시의 실시예에서, 복수의 그래픽 프로세서 스레드 그룹이 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독할 때에, 복수의 데이터 블럭에 대응하는 패딩 데이터가 로컬 메모리들로 판독될 수 있다. 복수의 패딩된 데이터 블럭은 비정규 데이터 블럭들이다. 물론, 복수의 데이터 블럭은 또한 정규 데이터 블럭들일 수도 있고, 이에 한정되지 않는다.
패딩 데이터로 인하여, 데이터 블럭 내의 데이터 포인트들의 수가 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수보다 많다. 데이터 포인트들과 복수의 스레드 간에 일대일 매핑이 설정되는 경우, 복잡한 서브스크립 동작을 초래하여, 데이터 전송 지연을 증가시킨다. 비정규 데이터를 판독하기 위해서, 간단한 그래픽 프로세서 스레드 그룹을 사용하여 비정규 데이터 블럭들과 매핑한다. 일부 실시예에서, 단계 S702는 다음의 단계들을 더 포함한다: 각 데이터 블럭은 복수의 서브 데이터 블럭으로 분할되고, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭되고; 대응하는 그래픽 프로세서 스레드 그룹은 복수의 서브 데이터 블럭을 대응하는 그래픽 프로세서 스레드 그룹의 로컬 메모리로 하나씩 판독한다. 이들 단계는 상기 실시예들에서 설명한 단채널 컨볼루션 레이어를 위한 처리 방법에서의 것과 유사하여 여기서는 생략된다. 따라서, 복잡한 서브스크립 동작이 회피되고 데이터 전송 지연이 감소된다.
본 개시의 실시예에서, 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 하나의 채널 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 계산하는 것은, 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들에 대한 레지스터 분할 처리를 수행하는 것을 포함한다.
본 개시의 상기 실시예들을 달성하기 위해서, 다채널 컨볼루션 레이어를 위한 처리 장치가 본 개시의 실시예들에 의해 제공된다.
도 9는 본 개시의 실시예에 따른 다채널 컨볼루션 레이어를 위한 처리 장치의 블럭도이다.
도 9에 나타낸 바와 같이, 장치(200)는 분할 모듈(210), 제1 판독 모듈(220), 제2 판독 모듈(230), 제3 판독 모듈(240), 계산 모듈(250), 축적 모듈(260) 및 기록 모듈(270)을 포함한다.
일부 실시예에서, 처리될 데이터는 이미지, 비디오, 오디오 및 워드 등의 컴퓨터 판독 가능한 데이터일 수 있다. 본 개시의 실시예에서, 이미지 데이터의 예를 들면, 처리될 데이터 및 필터는 복수의 채널을 가지며, 즉 다채널 컨볼루션 레이어 내의 처리될 입력 데이터(처리될 데이터)는 복수의 이미지 및 복수의 필터를 포함하고, 각 이미지 및 각 필터는 복수의 채널을 포함한다. 도 8에 나타낸 바와 같이, 입력 이미지는 64개의 이미지(즉, Image 0 내지 Image 63) 및 64개의 필터(즉, Filter 0 내지 Filter 63)를 포함하고, 각 이미지는 3개의 채널(Channel 10, Channel 11 및 Channel 12)을 갖고 각 필터는 3개의 채널(Channel 10, Channel 11 및 Channel 12)을 갖는다. 도 8에서의 실시예는 예시적일 뿐이며, 본 개시는 또한 다른 실시예들에 의해 구현될 수도 있고 다른 실시예들에 적용될 수도 있음을 이해하여야 한다. 당업자는 도 8에서의 실시예에 따라 임의 수량의 채널들을 갖는 임의 수량의 데이터 및 필터들을 처리할 수 있다.
분할 유닛(210)은 각 채널 내의 처리될 데이터를 복수의 데이터 블럭으로 분할하도록 구성되고, 상기 실시예들에서 설명한 단채널 컨볼루션 레이어를 위한 처리 방법에서의 것을 인용할 수 있다.
제1 판독 모듈(220)은 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하도록 구성된다. 제2 판독 모듈(230)은 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하도록 구성된다.
본 개시의 실시예에서, 이미지 데이터의 예를 들면, 복수의 그래픽 프로세서 스레드 그룹이 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하기 전에, 제3 판독 모듈(230)은 복수의 이미지 및 복수의 필터를 그래픽 프로세서의 글로벌 메모리로 판독한다. 대안으로, 복수의 이미지 및 복수의 필터는 중앙 처리 유닛(CPU) 메모리(즉, 호스트 메모리) 내에 저장된다. 우선, 제3 판독 모듈(240)은 복수의 이미지 및 복수의 필터를 주변 컴포넌트 인터페이스 익스프레스(PCIE)를 통하여 CPU로부터 그래픽 프로세서의 글로벌 메모리로 이송하고, 그러면 그래픽 프로세서의 각 연산 유닛 내의 복수의 스레드가 협동하여, 복수의 이미지 및 복수의 필터를 글로벌 메모리로부터, 즉 제1 판독 모듈(220) 및 제2 판독 모듈(230)을 통하여, 로컬 메모리로 로딩한다.
계산 모듈(250)은 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 하나의 채널 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 동시에 계산하도록 구성된다. 본 개시의 실시예에서, 데이터 포인트는 단위 데이터이다. 그래픽 프로세서 내의 각 연산 유닛은 그래픽 프로세서 스레드 그룹을 포함하고, 각 연산 유닛 내의 각 스레드는 로컬 메모리 내의 처리될 데이터 및 필터들의 컨볼루션들을 계산한다. 예를 들면, 대응하는 스레드는 Channel 10 내의 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들을 계산한다.
축적 모듈(260)은 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 각 채널 내의 컨볼루션들을 하나씩 계산하여 각 채널의 컨볼루션 결과를 얻고 각 채널의 컨볼루션 결과를 축적하여 최종 컨볼루션 결과를 얻도록 구성된다. 기록 모듈(270)은 최종 컨볼루션 결과를 복수의 그래픽 프로세서 스레드 그룹의 글로벌 메모리 내에 기록하도록 구성된다.
본 개시의 실시예에 따른 다채널 컨볼루션 레이어를 위한 처리 장치에 의하면, 다음과 같은 효과들이 있다. (1) 컨볼루션이 데이터를 하나의 데이터 포인트씩 언폴딩하지 않고 직접 입력 데이터 상에서 계산되고, 이에 따라 추가 메모리가 필요하지 않으며 메모리 공간이 양호하게 사용될 수 있고; (2) 동일한 그래픽 프로세서 스레드 그룹 내의 그래픽 프로세서 스레드들이, 시리얼 출력 데이터 포인트들을 계산하고 시리얼 입력 데이터 포인트들을 사용하여, 로컬 메모리 내의 데이터의 재사용을 증가시키며, 그래픽 프로세서 스레드들이, 고속의 그래픽 프로세서의 로컬 메모리 내의 처리될 데이터 및 컨볼루션 커널 데이터를 임시로 저장하여, 저속의 그래픽 프로세서 스레드의 글로벌 메모리의 판독 수를 감소시키고, 이에 따라 우수한 성능을 초래하며, 그래픽 프로세서 스레드들이, 데이터 이동 수를 더욱 감소시켜, 전력 소비를 감소시키고 전력 소비에 대한 성능비를 증가시키며; (3) 데이터를 복수의 데이터 블럭으로 분할하는 중에, 메모리 액세스 계산 비율이 레지스터 분할 방법을 사용함으로써 감소되고, 레지스터 분할 방법이 관련 기술 분야에서 사용될 수도 있지만, 그의 데이터 구조화 모드에 의한 효과를 취하기는 어렵다.
본 개시의 실시예에서, 복수의 그래픽 프로세서 스레드 그룹이 복수의 데이터 블럭을 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독할 때에, 제1 판독 모듈(220)은 또한 복수의 데이터 블럭에 대응하는 패딩 데이터를 로컬 메모리들로 판독하도록 구성된다. 복수의 패딩된 데이터 블럭은 비정규 데이터 블럭들이다. 물론, 복수의 데이터 블럭은 또한 정규 데이터 블럭들일 수도 있고, 이에 한정되지 않는다.
패딩 데이터로 인하여, 데이터 블럭 내의 데이터 포인트들의 수가 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수보다 많다. 데이터 포인트들과 복수의 스레드 간에 일대일 매핑이 설정되는 경우, 복잡한 서브스크립 동작을 초래하여, 데이터 전송 지연을 증가시킨다. 비정규 데이터를 판독하기 위해서, 간단한 그래픽 프로세서 스레드 그룹을 사용하여 비정규 데이터 블럭들과 매핑한다. 일부 실시예에서, 제1 판독 모듈(220)은 분할 유닛(221) 및 판독 유닛(222)을 포함한다. 분할 유닛(221)은 각 데이터 블럭을 복수의 서브 데이터 블럭으로 분할하도록 구성되며, 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭되고, 판독 유닛(222)은 대응하는 그래픽 프로세서 스레드 그룹을 통하여 복수의 서브 데이터 블럭을 대응하는 그래픽 프로세서 스레드 그룹의 로컬 메모리로 하나씩 판독하도록 구성되며, 상기 실시예들에서 설명한 단채널 컨볼루션 레이어를 위한 처리 장치에서의 것과 유사하여 여기서는 생략된다. 따라서, 복잡한 서브스크립 동작이 회피되고 데이터 전송 지연이 감소된다.
본 개시의 실시예에서, 계산 모듈(250)은 또한 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 복수의 필터의 컨볼루션들에 대한 레지스터 분할 처리를 수행하도록 구성된다.
본 개시의 각 부분은 하드웨어, 소프트웨어, 펌웨어 또는 그들의 조합에 의해 구현될 수 있음을 이해하여야 한다. 상기 실시예들에서, 복수의 단계 또는 방법은 컴퓨터 메모리 내에 저장되어 적절한 명령 실행 시스템에 의해 실행되는 소프트웨어 또는 펌웨어에 의해 실현될 수 있다. 예를 들면, 하드웨어에 의해 실현되고 있는 경우, 다른 실시예에서와 같이, 단계들 또는 방법들은 다음과 같은 본 기술 분야에서 공지된 기술들, 즉 데이터 신호의 논리 기능을 실현하기 위한 논리 게이트 회로를 갖는 이산 논리 회로, 적절한 조합의 논리 게이트 회로를 갖는 ASIC(Application Specific Integrated Circuit), PGA(Programmable Gate Array), FPGA(Field Programmable Gate Array) 등 중 하나 또는 조합에 의해 실현될 수 있다.
본 명세서 전반에 걸친 "실시예", "일부 실시예", "일 실시예", "다른 예", "예", "특정예", 또는 "일부 예"에 대한 참조는 실시예 또는 예와 관련하여 설명된 특정한 특징, 구조, 물질, 또는 특성이 본 개시의 적어도 하나의 실시예 또는 예에 포함되는 것을 의미한다. 따라서, 본 명세서 전반에 걸쳐서 다양한 곳에서 "일부 실시예에서", "일 실시예에서", "실시예에서, "다른 예에서", "예에서", "특정예에서", 또는 "일부 예에서" 등의 문구의 출현이 반드시 본 개시의 동일 실시예 또는 예를 언급하는 것은 아니다. 또한, 특정한 특징, 구성, 물질 또는 특성은 하나 이상의 실시예 또는 예에서 임의의 적절한 방식으로 조합될 수 있다.
예시적인 실시예들을 나타내고 설명했지만, 상기 실시예들이 본 개시를 한정하는 것으로 이해될 수 없고, 본 개시의 사상, 원리 및 범주를 이탈하지 않고 변경, 대체 및 변형이 이루어질 수 있음이 당업자에게는 자명할 것이다.

Claims (18)

  1. 단채널 컨볼루션 레이어(single-channel convolution layer)를 위한 처리 방법으로서,
    처리될 데이터를 복수의 데이터 블럭으로 분할하는 단계;
    복수의 그래픽 프로세서 스레드(thread) 그룹에 의해 상기 복수의 데이터 블럭을 상기 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하는 단계;
    상기 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 상기 복수의 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리들로 판독하는 단계; 및
    상기 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 컨볼루션들을 동시에 계산하는 단계
    를 포함하는 단채널 컨볼루션 레이어를 위한 처리 방법.
  2. 제1항에 있어서,
    상기 복수의 데이터 블럭은 비정규 데이터 블럭들인 단채널 컨볼루션 레이어를 위한 처리 방법.
  3. 제1항에 있어서,
    상기 복수의 그래픽 프로세서 스레드 그룹에 의해 상기 복수의 데이터 블럭을 상기 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하는 단계는,
    각 데이터 블럭을 복수의 서브 데이터 블럭으로 분할하는 단계 - 상기 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 상기 복수의 스레드의 수와 매칭됨 -; 및
    상기 대응하는 그래픽 프로세서 스레드 그룹에 의해 상기 복수의 서브 데이터 블럭을 상기 대응하는 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리로 하나씩 판독하는 단계
    를 포함하는 단채널 컨볼루션 레이어를 위한 처리 방법.
  4. 제1항에 있어서,
    상기 복수의 데이터 블럭에 대응하는 패딩(padding) 데이터를 상기 로컬 메모리들로 판독하는 단계를 더 포함하는 단채널 컨볼루션 레이어를 위한 처리 방법.
  5. 단채널 컨볼루션 레이어를 위한 처리 장치로서,
    처리될 데이터를 복수의 데이터 블럭으로 분할하도록 구성된 분할 모듈;
    복수의 그래픽 프로세서 스레드 그룹을 통하여 복수의 데이터 블럭을 상기 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 판독하도록 구성된 제1 판독 모듈;
    상기 복수의 그래픽 프로세서 스레드 그룹을 통하여 복수의 필터를 상기 복수의 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리들로 판독하도록 구성된 제2 판독 모듈; 및
    상기 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 컨볼루션들을 동시에 계산하도록 구성된 계산 모듈
    을 포함하는 단채널 컨볼루션 레이어를 위한 처리 장치.
  6. 제5항에 있어서,
    상기 복수의 데이터 블럭은 비정규 데이터 블럭들인 단채널 컨볼루션 레이어를 위한 처리 장치.
  7. 제5항에 있어서,
    상기 제1 판독 모듈은,
    각 데이터 블럭을 복수의 서브 데이터 블럭으로 분할하도록 구성된 분할 유닛 - 상기 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 상기 복수의 스레드의 수와 매칭됨 -; 및
    상기 대응하는 그래픽 프로세서 스레드 그룹을 통하여 상기 복수의 서브 데이터 블럭을 상기 대응하는 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리로 하나씩 판독하도록 구성된 판독 유닛
    을 포함하는 단채널 컨볼루션 레이어를 위한 처리 장치.
  8. 제5항에 있어서,
    상기 제1 판독 모듈은 또한 상기 복수의 데이터 블럭에 대응하는 패딩 데이터를 상기 로컬 메모리들로 판독하도록 구성되는 단채널 컨볼루션 레이어를 위한 처리 장치.
  9. 처리될 데이터 및 필터가 복수의 채널을 포함하는, 다채널(multi-channel) 컨볼루션 레이어를 위한 처리 방법으로서,
    각 채널 내의 상기 처리될 데이터를 복수의 데이터 블럭으로 분할하는 단계;
    복수의 그래픽 프로세서 스레드 그룹에 의해 상기 복수의 데이터 블럭을 상기 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하는 단계;
    상기 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 상기 복수의 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리들로 동시에 판독하는 단계;
    상기 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 하나의 채널 내의 상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 컨볼루션들을 동시에 계산하는 단계;
    상기 복수의 그래픽 프로세서 스레드 그룹 내의 상기 복수의 스레드에 의해 각 채널의 컨볼루션 결과를 얻도록 각 채널 내의 컨볼루션들을 하나씩 계산하고 최종 컨볼루션 결과를 얻도록 각 채널의 상기 컨볼루션 결과를 축적하는 단계; 및
    상기 최종 컨볼루션 결과를 상기 복수의 그래픽 프로세서 스레드 그룹의 글로벌 메모리 내에 기록하는 단계
    를 포함하는 다채널 컨볼루션 레이어를 위한 처리 방법.
  10. 제9항에 있어서,
    상기 복수의 데이터 블럭에 대응하는 패딩 데이터를 상기 로컬 메모리들로 판독하는 단계를 더 포함하고,
    상기 복수의 패딩된 데이터 블럭은 비정규 데이터 블럭들인 다채널 컨볼루션 레이어를 위한 처리 방법.
  11. 제10항에 있어서,
    상기 처리될 데이터는 이미지 데이터이고,
    상기 방법은,
    복수의 이미지 및 상기 복수의 필터를 상기 복수의 그래픽 프로세서 스레드 그룹의 상기 글로벌 메모리로 판독하는 단계를 더 포함하는 다채널 컨볼루션 레이어를 위한 처리 방법.
  12. 제9항에 있어서,
    상기 복수의 그래픽 프로세서 스레드 그룹에 의해 상기 복수의 데이터 블럭을 상기 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하는 단계는,
    각 데이터 블럭을 복수의 서브 데이터 블럭으로 분할하는 단계 - 상기 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 복수의 스레드의 수와 매칭됨 -; 및
    상기 대응하는 그래픽 프로세서 스레드 그룹에 의해 상기 복수의 서브 데이터 블럭을 상기 대응하는 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리로 하나씩 판독하는 단계
    를 포함하는 다채널 컨볼루션 레이어를 위한 처리 방법.
  13. 제9항에 있어서,
    상기 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드에 의해 하나의 채널 내의 상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 컨볼루션들을 동시에 계산하는 단계는,
    상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 상기 컨볼루션들에 대한 레지스터 분할 처리를 수행하는 단계
    를 포함하는 다채널 컨볼루션 레이어를 위한 처리 방법.
  14. 처리될 데이터 및 필터가 복수의 채널을 포함하는, 다채널 컨볼루션 레이어를 위한 처리 장치로서,
    각 채널 내의 상기 처리될 데이터를 복수의 데이터 블럭으로 분할하도록 구성된 분할 모듈;
    복수의 그래픽 프로세서 스레드 그룹에 의해 상기 복수의 데이터 블럭을 상기 복수의 그래픽 프로세서 스레드 그룹의 로컬 메모리들로 동시에 판독하도록 구성된 제1 판독 모듈;
    상기 복수의 그래픽 프로세서 스레드 그룹에 의해 복수의 필터를 상기 복수의 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리들로 동시에 판독하도록 구성된 제2 판독 모듈;
    상기 복수의 그래픽 프로세서 스레드 그룹 내의 복수의 스레드를 통하여 하나의 채널 내의 상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 컨볼루션들을 동시에 계산하도록 구성된 계산 모듈;
    각 채널의 컨볼루션 결과를 얻도록 상기 복수의 그래픽 프로세서 스레드 그룹 내의 상기 복수의 스레드를 통하여 각 채널 내의 상기 컨볼루션들을 하나씩 계산하고 최종 컨볼루션을 얻도록 각 채널의 상기 컨볼루션 결과를 축적하도록 구성된 축적 모듈; 및
    상기 최종 컨볼루션 결과를 상기 복수의 그래픽 프로세서 스레드 그룹의 글로벌 메모리 내에 기록하도록 구성된 기록 모듈
    을 포함하는 다채널 컨볼루션 레이어를 위한 처리 장치.
  15. 제14항에 있어서,
    상기 제1 판독 모듈은 또한 상기 복수의 데이터 블럭에 대응하는 패딩 데이터를 상기 로컬 메모리들로 판독하도록 구성되며, 상기 복수의 패딩된 데이터 블럭은 비정규 데이터 블럭들인 다채널 컨볼루션 레이어를 위한 처리 장치.
  16. 제15항에 있어서,
    상기 처리될 데이터는 이미지 데이터이고,
    상기 장치는,
    복수의 이미지 및 상기 복수의 필터를 상기 복수의 그래픽 프로세서 스레드 그룹의 상기 글로벌 메모리로 판독하도록 구성된 제3 판독 모듈
    을 더 포함하는 다채널 컨볼루션 레이어를 위한 처리 장치.
  17. 제14항에 있어서,
    싱기 제1 판독 모듈은,
    각 데이터 블럭을 복수의 서브 데이터 블럭으로 분할하도록 구성된 분할 유닛 - 상기 복수의 서브 데이터 블럭 중 적어도 하나의 데이터 사이즈가 대응하는 그래픽 프로세서 스레드 그룹 내의 상기 복수의 스레드의 수와 매칭됨 -; 및
    상기 대응하는 그래픽 프로세서 스레드 그룹을 통하여 상기 복수의 서브 데이터 블럭을 상기 대응하는 그래픽 프로세서 스레드 그룹의 상기 로컬 메모리로 하나씩 판독하도록 구성된 판독 유닛
    을 포함하는 다채널 컨볼루션 레이어를 위한 처리 장치.
  18. 제14항에 있어서,
    상기 계산 모듈은 상기 복수의 데이터 블럭 내의 대응하는 데이터 포인트들 및 상기 복수의 필터의 컨볼루션들에 대한 레지스터 분할 처리를 수행하도록 구성되는 다채널 컨볼루션 레이어를 위한 처리 장치.
KR1020140192137A 2014-06-18 2014-12-29 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치 KR101687081B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201410274196.3 2014-06-18
CN201410274196.3A CN104077233B (zh) 2014-06-18 2014-06-18 多通道卷积层处理方法和装置

Publications (2)

Publication Number Publication Date
KR20150145167A true KR20150145167A (ko) 2015-12-29
KR101687081B1 KR101687081B1 (ko) 2016-12-28

Family

ID=51598501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140192137A KR101687081B1 (ko) 2014-06-18 2014-12-29 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치

Country Status (5)

Country Link
US (1) US9367892B2 (ko)
EP (1) EP2958048A3 (ko)
JP (1) JP6147244B2 (ko)
KR (1) KR101687081B1 (ko)
CN (1) CN104077233B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180005241A (ko) * 2016-01-12 2018-01-15 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 Cnn 처리 방법 및 디바이스
KR20180050928A (ko) * 2016-11-07 2018-05-16 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US11915119B2 (en) 2016-12-22 2024-02-27 Samsung Electronics Co., Ltd. Convolutional neural network (CNN) processing method and apparatus performing high speed and precision convolution operations

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106056529B (zh) * 2015-04-03 2020-06-02 阿里巴巴集团控股有限公司 一种对用于图片识别的卷积神经网络训练的方法与设备
US9582726B2 (en) 2015-06-24 2017-02-28 Qualcomm Incorporated Systems and methods for image processing in a deep convolution network
US10452971B2 (en) 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
WO2017031630A1 (zh) * 2015-08-21 2017-03-02 中国科学院自动化研究所 基于参数量化的深度卷积神经网络的加速与压缩方法
US20190073582A1 (en) * 2015-09-23 2019-03-07 Yi Yang Apparatus and method for local quantization for convolutional neural networks (cnns)
US10346351B2 (en) * 2015-10-08 2019-07-09 Via Alliance Semiconductor Co., Ltd. Neural network unit with output buffer feedback and masking capability with processing unit groups that operate as recurrent neural network LSTM cells
KR20180012439A (ko) 2016-07-27 2018-02-06 삼성전자주식회사 회선 신경망에서 가속기 및 이의 동작 방법
CN106250103A (zh) * 2016-08-04 2016-12-21 东南大学 一种卷积神经网络循环卷积计算数据重用的系统
US10242311B2 (en) 2016-08-11 2019-03-26 Vivante Corporation Zero coefficient skipping convolution neural network engine
EP3282397A1 (en) * 2016-08-11 2018-02-14 Vivante Corporation Zero coefficient skipping convolution neural network engine
CN107742150B (zh) 2016-10-31 2020-05-12 腾讯科技(深圳)有限公司 一种卷积神经网络的数据处理方法和装置
CN106779057B (zh) * 2016-11-11 2020-04-17 北京旷视科技有限公司 基于gpu的计算二值神经网络卷积的方法及装置
CN110073329B (zh) * 2016-12-16 2021-06-22 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
CN106874219B (zh) * 2016-12-23 2018-11-02 深圳云天励飞技术有限公司 一种卷积神经网络的数据调度方法、系统及计算机设备
CN108268931B (zh) * 2016-12-30 2022-10-25 华为技术有限公司 数据处理的方法、装置和系统
JP7020485B2 (ja) * 2017-06-22 2022-02-16 日本電気株式会社 演算装置、演算方法及びプログラム
CN107885464B (zh) * 2017-11-28 2021-11-02 北京小米移动软件有限公司 数据存储方法、装置及计算机可读存储介质
CN111247527B (zh) * 2017-12-20 2023-08-22 华为技术有限公司 在卷积神经网络模型中确定特征图像的方法和装置
CN109993273B (zh) * 2017-12-29 2021-05-11 深圳云天励飞技术有限公司 卷积神经网络的卷积实现方法及相关产品
CN107885700B (zh) * 2017-12-29 2021-05-14 中国人民解放军国防科技大学 一种大规模矩阵卷积的多核实现方法
CN108710941A (zh) * 2018-04-11 2018-10-26 杭州菲数科技有限公司 用于电子设备的神经网络模型的硬加速方法和装置
CN109664620B (zh) * 2018-12-07 2020-03-13 森大(深圳)技术有限公司 打印数据处理方法、装置及设备
WO2020153513A1 (ko) * 2019-01-23 2020-07-30 전자부품연구원 딥러닝 가속 하드웨어 장치
KR102185668B1 (ko) 2019-01-30 2020-12-02 스노우 주식회사 이미지 파일의 픽셀 변환을 통한 압축율 향상 방법 및 시스템
KR102152346B1 (ko) * 2019-01-30 2020-09-04 스노우 주식회사 이미지 파일의 블록 간 차이를 통한 압축율 향상 방법 및 시스템
US11341210B2 (en) 2019-02-15 2022-05-24 Apple Inc. Two-dimensional multi-layer convolution for deep learning
CN109829868B (zh) * 2019-02-28 2023-04-21 华南理工大学 一种轻量级深度学习模型图像去雾方法、电子设备及介质
CN109885407B (zh) * 2019-03-05 2021-09-21 上海商汤智能科技有限公司 数据处理方法和装置、电子设备、存储介质
CN112541565B (zh) * 2019-09-20 2023-08-29 腾讯科技(深圳)有限公司 一种卷积计算数据流映射方法及装置
CN111062473B (zh) * 2019-12-16 2023-05-23 腾讯科技(深圳)有限公司 神经网络模型中的数据计算方法、图像处理方法及装置
TWI733334B (zh) 2020-02-15 2021-07-11 財團法人工業技術研究院 卷積神經網路運算裝置及其運算的方法
CN111583095B (zh) * 2020-05-22 2022-03-22 浪潮电子信息产业股份有限公司 图像数据存储方法、图像数据处理方法、系统及相关装置
WO2021248433A1 (en) * 2020-06-12 2021-12-16 Moffett Technologies Co., Limited Method and system for dual-sparse convolution processing and parallelization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004112825A (ja) * 1995-10-25 2004-04-08 Sarnoff Corp ビデオ画像符号化方法
JP2011128978A (ja) * 2009-12-18 2011-06-30 Sony Corp 情報処理装置、情報処理方法、及びプログラム
JP2013016192A (ja) * 2008-03-24 2013-01-24 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7128266B2 (en) * 2003-11-13 2006-10-31 Metrologic Instruments. Inc. Hand-supportable digital imaging-based bar code symbol reader supporting narrow-area and wide-area modes of illumination and image capture
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
CN103136725B (zh) * 2011-12-05 2016-08-03 方正国际软件有限公司 一种图像重采样方法及系统
CN103530224A (zh) * 2013-06-26 2014-01-22 郑州大学 一种基于GPU的Harris角点检测软件系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004112825A (ja) * 1995-10-25 2004-04-08 Sarnoff Corp ビデオ画像符号化方法
JP2013016192A (ja) * 2008-03-24 2013-01-24 Nvidia Corp 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令
JP2011128978A (ja) * 2009-12-18 2011-06-30 Sony Corp 情報処理装置、情報処理方法、及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180005241A (ko) * 2016-01-12 2018-01-15 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 Cnn 처리 방법 및 디바이스
KR20180050928A (ko) * 2016-11-07 2018-05-16 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US11915119B2 (en) 2016-12-22 2024-02-27 Samsung Electronics Co., Ltd. Convolutional neural network (CNN) processing method and apparatus performing high speed and precision convolution operations

Also Published As

Publication number Publication date
CN104077233A (zh) 2014-10-01
CN104077233B (zh) 2017-04-05
JP6147244B2 (ja) 2017-06-14
KR101687081B1 (ko) 2016-12-28
US20150371359A1 (en) 2015-12-24
EP2958048A2 (en) 2015-12-23
EP2958048A3 (en) 2016-03-30
JP2016004572A (ja) 2016-01-12
US9367892B2 (en) 2016-06-14

Similar Documents

Publication Publication Date Title
KR101687081B1 (ko) 단채널 컨볼루션 레이어를 위한 처리 방법 및 장치, 및 다채널 컨볼루션 레이어를 위한 처리 방법 및 장치
US10140123B2 (en) SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations
US20200264892A1 (en) Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit
CN111199273B (zh) 卷积计算方法、装置、设备及存储介质
US11347964B2 (en) Hardware circuit
US9697176B2 (en) Efficient sparse matrix-vector multiplication on parallel processors
CN102906726B (zh) 协处理加速方法、装置及系统
US11249721B2 (en) Multiplication circuit, system on chip, and electronic device
US8321492B1 (en) System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm
CN111209232B (zh) 访问静态随机存取存储器的方法、装置、设备和存储介质
US20230041850A1 (en) Adaptive matrix multiplication accelerator for machine learning and deep learning applications
CN111124995A (zh) 通过人工智能处理器处理一维复数数组的方法和设备
US20120124260A1 (en) CLOSED LOOP DYNAMIC INTERCONNECT BUS ALLOCATION METHOD AND ARCHITECTURE FOR A MULTI LAYER SoC
US10572969B2 (en) Method and device for processing data
US11467973B1 (en) Fine-grained access memory controller
US9767054B2 (en) Data transfer control device and memory-containing device
EP3736765A1 (en) Data processing method and apparatus
US10303484B2 (en) Method for implementing a line speed interconnect structure
KR101688435B1 (ko) 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법
JP2023513608A (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
US10355737B2 (en) Touch screen controller for increasing data processing speed and touch system including the same
CN112395216A (zh) 用于存储管理的方法、装置、设备和计算机可读存储介质
US11354038B2 (en) Providing random access to variable-length data
US20230059970A1 (en) Weight sparsity in data processing engines
US10726516B2 (en) Arithmetic logic unit (ALU)-centric operations in graphics processing units (GPUs)

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20191125

Year of fee payment: 4