KR101867423B1 - 이미지 처리 장치 및 방법 - Google Patents

이미지 처리 장치 및 방법 Download PDF

Info

Publication number
KR101867423B1
KR101867423B1 KR1020160082233A KR20160082233A KR101867423B1 KR 101867423 B1 KR101867423 B1 KR 101867423B1 KR 1020160082233 A KR1020160082233 A KR 1020160082233A KR 20160082233 A KR20160082233 A KR 20160082233A KR 101867423 B1 KR101867423 B1 KR 101867423B1
Authority
KR
South Korea
Prior art keywords
image processing
size
image
execution time
processing function
Prior art date
Application number
KR1020160082233A
Other languages
English (en)
Other versions
KR20180003003A (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 주식회사 한글과컴퓨터
Priority to KR1020160082233A priority Critical patent/KR101867423B1/ko
Publication of KR20180003003A publication Critical patent/KR20180003003A/ko
Application granted granted Critical
Publication of KR101867423B1 publication Critical patent/KR101867423B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

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

Abstract

본 발명은 이미지 처리 장치 및 방법에 관한 것이다. 본 발명의 제1 측면에 따르면, 이미지 처리의 조건을 설정하여, 설정된 조건으로 이미지를 병렬 처리하는 이미지 처리 장치는, 병렬화된 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 워크 그룹 크기 설정부 및 병렬 처리를 적용할 이미지의 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬 처리하게 하는 이미지 크기 기준 설정부를 포함하여, 빠르게 이미지를 처리할 수 있다.

Description

이미지 처리 장치 및 방법{APPARATUS FOR PROCESSING IMAGE AND METHOD THEREOF}
본 발명은 이미지 처리 장치 및 방법에 관한 것이다. 보다 상세하게는 이미지의 병렬 처리에 효율적인 조건을 설정하여, 설정된 조건으로 이미지 처리를 하는 이미지 처리 장치 및 방법에 관한 것이다.
사진이나 영상 프레임 같은 이미지에 일련의 연산을 이용하여 새로운 이미지로 창작하거나 수정하는 작업과정을 이미지 처리라고 한다. 이미지 처리기술은 적용시키는 효과와 처리하는 이미지의 크기에 따라 이미지 처리 시간이 상이하다.
예를 들어, 이미지 처리 시간은 여러 효과를 차례로 적용한다든지 픽셀 개수가 많은 이미지를 처리할 경우 더 많은 시간이 걸리게 된다.
근래에는 이렇게 여러 효과를 적용한다든지 픽셀 개수가 많은 이미지를 처리함에 있어서, 처리 시간을 줄이기 위한 방법으로 이미지 처리의 병렬화에 많은 관심이 쏠리고 있다.
이러한 병렬화에 대한 종래기술로는 한국 공개특허 제10-2016-0003502호가 있다.
특히 병렬화는 병렬 컴퓨팅을 이용하여 수행되는데, 이러한 병렬 컴퓨팅은 여러 개의 프로세서를 이용하여 한 번에 여러 연산을 동시에 수행한다. 병렬화는 멀티코어 CPU를 통해 수행되기도 하며, 이종 시스템을 통해 수행되기도 한다. 이종 시스템은 통상 범용 CPU와 고속의 병렬 계산에 특화된 가속기(accelerator)를 함께 사용하여 높은 성능과 전력효율을 달성할 수 있는 시스템을 일컫는다. 널리 사용되는 대표적인 가속기로는 GPU, Intel Xeon Phi 코프로세서, DSP, FPGA 등이 있으며, 최근에는 CPU와 GPU가 하나의 칩에 집적되고 메모리를 공유하는 APU(Accelerated Processing Unit)도 많이 출시되어 있다.
이렇게 여러 종류의 하드웨어를 통해 병렬화가 가능하므로, 개발자는 여러 종류의 하드웨어마다 갖고 있는 다양한 특성들을 파악하여 사용하려는 하드웨어에 맞춰 OpenCL코드를 작성해야 한다. OpenCL은 다양한 멀티코어 CPU 및 가속기에서 실행되는 병렬 프로그램을 작성하기 위한 국제 표준 프로그래밍 모델이다. 현재 AMD, ARM, Altera, Apple, IBM, Intel, NVIDIA, Samsung, TI, Qualcomm, Xilinx 등 전 세계 주요 하드웨어 벤더들이 모두 OpenCL을 지원하고 있다.
이미지 처리의 경우 동영상 재생프로그램이나 사진편집기능이 들어간 문서 편집 프로그램 같이 일반 사용자가 사용하는 프로그램에 많이 적용되며, 이 경우 특정한 시스템에 맞춰 OpenCL코드를 작성하는 방식은 적합하지 않다.
또한 개발자가 사용자의 다양한 시스템을 고려하여 OpenCL코드를 작성하기에는 시중에 판매되는 여러 하드웨어를 구매하여 테스트해봐야 하는 금전적, 시간적 한계가 존재하였다.
이와 관련하여 최근에는 이러한 문제점을 해결하기 위한 장치 및 방법이 요구되고 있는 실정이다.
본 발명의 일실시예는 이미지 처리 장치 및 방법을 제공하는데 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따르면, 이미지 처리의 조건을 설정하여, 설정된 조건으로 이미지를 병렬 처리하는 이미지 처리 장치는 병렬화된 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 워크 그룹 크기 설정부 및 병렬 처리를 적용할 이미지 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬화 처리하게 하는 이미지 크기 기준 설정부를 포함한다.
본 발명의 제 2 측면에 따르면, 이미지 처리의 조건을 설정하여, 설정된 조건으로 이미지를 병렬 처리하는 이미지 처리 장치가 이미지를 처리하는 방법은, 병렬화된 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 단계 및 병렬 처리를 적용할 이미지 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬화 처리하게 하는 단계를 포함한다.
본 발명의 제 3 측면에 따르면, 본 발명은 이미지 처리 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체이며, 상기 이미지 처리 방법은 병렬 처리를 위한 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 단계 및 병렬화된 이미지 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬 처리하게 하는 단계를 포함한다.
본 발명의 제 4 측면에 따르면, 본 발명은 이미지 처리 장치에 의해 수행되며, 이미지 처리 방법을 수행하기 위한 기록매체이며, 상기 이미지 처리 방법은 병렬 처리를 위한 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 단계 및 병렬화된 이미지 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬 처리하게 하는 단계를 포함한다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일실시예는 이미지 처리 장치 및 방법을 제공할 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 이미지 병렬 처리에 효율적인 조건을 설정하고, 설정된 조건으로 이미지 처리하여 보다 빠르게 이미지를 처리할 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 하드웨어의 상황에 맞춰 이미지 병렬 처리에 효율적인 조건이 설정되므로, 하드웨어의 종류 및 이미지의 크기와 관계없이 빠르게 이미지를 처리할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일실시예에 따른 이미지 처리 장치를 개략적으로 도시한 구성도이다.
도 2는 본 발명의 실시예에 따른 이미지 처리 장치의 블록도이다.
도 3은 본 발명의 실시예에 따른 이미지 처리 방법을 설명하기 위한 흐름도이다.
도 4는 최적의 워크 그룹의 크기를 설정하는 방법을 설명하기 위한 흐름도이다.
도 5는 병렬화 방법으로 처리할 이미지 크기의 기준을 설정하는 방법을 설명하기 위한 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
먼저 도 1 및 도 2를 참조하여 본 발명의 실시예에 따른 이미지 처리 장치에 대하여 설명한다. 도 1은 본 발명의 일실시예에 따른 이미지 처리 장치(100)를 개략적으로 도시한 구성도이고, 도 2는 본 발명의 실시예에 따른 이미지 처리 장치(100)의 블록도이다.
OpenCL을 이용하여 작성된 프로그램, 함수 또는 코드는 OpenCL 플랫폼에서 수행된다. 본 발명의 실시예에 따른 이미지 처리 장치(100)는 OpenCL 플랫폼일 수 있다. 이미지 처리 장치(100)는 OpenCL로 작성된 이미지 처리 함수를 실행함으로써 이미지를 병렬 처리할 수 있다. 한편 이미지 처리 장치(100)는 복수의 계산 유닛을 이용하여 이미지를 병렬 처리한다.
도 1을 참조하면, 이미지 처리 장치(100)는 호스트 프로세서(host processor) 및 이와 연결된 하나 이상의 계산 디바이스(compute device)를 포함한다.
한편 계산 디바이스에는 하나 이상의 계산 유닛(CU; compute unit)이 포함되며, 각 계산 유닛에는 다시 하나 이상의 PE(processing element)가 포함된다.
계산 디바이스는 세 종류의 메모리 영역 구체적으로 디바이스 메모리(device memory), 로컬 메모리(local memory), 프라이빗 메모리(private memory)를 포함한다.
디바이스 메모리 영역은 모든 PE가 공유할 수 있다. 또한 로컬 메모리 영역은 각 계산 유닛마다 독립적으로 하나씩 존재하며, 계산 유닛 안의 PE들이 공유할 수 있다. 한편 프라이빗 메모리 영역은 각 PE마다 독립적으로 하나씩 존재할 수 있다.
또한 각각의 메모리 영역은 꼭 물리적으로 분리된 메모리 하나에 대응될 필요는 없다. 즉 하나의 메모리가 여러 메모리 영역으로 논리적으로 구분되나, 여러 메모리가 하나의 메모리 영역으로 논리적으로 결합되거나, 혹은 여러 메모리가 여러 메모리 영역으로 논리적으로 재구성된 경우에도 본 발명의 적용이 가능하다.
본 발명의 실시예에 따르면, 호스트 프로세서의 실시예로 CPU를 들 수 있다. 한편 계산 디바이스의 실시예로는 멀티코어 CPU 또는 가속기(GPU, Intel Xeon Phi 코프로세서, FPGA 등)를 들 수 있다.
본 발명의 실시예에 따르면, OpenCL로는 호스트 프로그램 및 OpenCL 프로그램이 작성될 수 있다. 특히 OpenCL 프로그램은 하나 이상의 커널 함수를 포함할 수 있다. 커널 함수란 계산 디바이스가 수행해야 할 코드이다.
호스트 프로그램은 커널을 실행하라는 명령을 내릴 때 NDRange라는 N차원(1 ≤N ≤ 3) 인덱스 공간을 정의한다. 인덱스 공간의 각 점은 워크 아이템(work-item)이라 부른다. 워크 아이템(work-item)이란 하나의 커널 함수를 실행하는 스레드라고 할 수 있다. 또한 다수의 워크 아이템은 묶여 하나의 워크 그룹(work-group)을 구성할 수 있다.
도 1을 참조하면, 12x9 크기의 2차원 NDRange가 정의되어 있고 워크 아이템이 3x3개씩 묶여 워크 그룹이 형성되어 있는 것을 볼 수 있다. 워크 그룹 크기(work-group size)는 하나의 워크 그룹에 속한 워크 아이템의 개수를 말한다. NDRange에 속한 여러 워크 그룹은 디바이스 안의 여러 계산 유닛들로 나눠져 실행된다. 한편 워크 그룹에 속한 각각의 워크 아이템은 하나의 계산 유닛 안의 각각의 PE로 나눠져 수행된다.
워크 그룹의 크기는 계산 디바이스의 계산 유닛과 연관이 깊다. 계산 유닛 안의 각 PE는 일련의 워크 아이템을 처리하는데, 워크 아이템 하나는 PE 하나에서만 처리된다.
다음은 도 2를 참조하여, 본 발명의 실시예에 따른 이미지 처리 장치(100)의 각 구성에 대해서 설명하겠다.
본 발명의 실시예에 따른 이미지 처리 장치(100)는 워크 그룹 크기 설정부(110)를 포함할 수 있다.
워크 그룹 크기 설정부(110)는 이미지를 처리함에 있어서, 최적의 워크 그룹 크기를 설정할 수 있다. 워크 그룹의 크기를 결정하는 것은 이미지 처리의 속도와 연관이 있을 수 있다.
앞서 설명하였듯 워크 아이템 하나는 PE 하나에서만 처리되므로, 워크 그룹 안의 워크 아이템 개수 즉, 워크 그룹 크기가 계산 유닛 안의 PE개수와 일치하거나 배수관계를 유지했을 때 모든 PE가 놀지 않고 일을 하게 된다. 예를 들어, 하나의 계산 유닛이 32개의 PE로 구성되어 있는 경우, 워크 그룹 크기를 32 또는 그 배수로 설정하였을 때 모든 PE를 충분히 활용될 수 있다.
하지만 계산 유닛 안의 자원이 제한적이기 때문에 워크 그룹 크기가 큰 것이 항상 좋은 것은 아니다. 예를 들어 어떤 이미지 처리 장치(100)는, 각각의 계산 유닛마다 물리적으로 8 MB 크기의 레지스터를 가지고 있고, 이를 논리적으로 구분하여 여러 개의 프라이빗 메모리 영역을 구성할 수도 있다. 워크 아이템 하나가 필요로 하는 프라이빗 메모리 크기가 1 MB라고 가정할 때, 워크 그룹 크기가 8 이하이면 이미지 처리 장치(100)는 모든 프라이빗 메모리 영역을 레지스터만 사용해 구성할 수 있다. 하지만 만약 워크 그룹 크기가 8보다 크면, 레지스터만으로 모든 프라이빗 메모리 영역을 구성할 수 없다. 대신 이미지 처리 장치(100)는 프라이빗 메모리 영역의 일부를 더 속도가 느린 메모리(예를 들면, 오프 칩 메모리)에 할당해야 하며, 이로 인해 워크 그룹 내 워크 아이템 전체의 동작이 느려질 수 있다.
위에서 설명한 바와 같이, 따라서 최적의 워크 그룹 크기는 각각의 상황에 따라 다를 수 있으므로, 상황에 맞는 최적의 워크 그룹 크기를 찾는 것은 이미지 처리 속도에 있어서 중요하다.
본 발명의 실시예에 따른 워크 그룹 크기 설정부(110)는 OpenCL로 병렬화된 특정 이미지 처리 함수의 수행시간에 기초하여 이미지 처리를 위한 워크 그룹의 크기를 설정할 수 있다.
워크 그룹 크기 설정부(110)는 적어도 하나의 워크 그룹 크기 후보를 설정하고, 설정된 워크 그룹 크기 후보 각각에 대해서 특정 이미지 처리 함수를 수행시킬 수 있다. 이때 특정 이미지 처리 함수는 병렬 처리를 위해 OpenCL로 작성된 함수 일 수 있다. 나아가, 특정 이미지 처리 함수는 OpenCL 프로그램 안의 커널 함수일 수도 있다. 또한 이때 이미지 처리 함수는 워크 그룹 크기를 설정하기 위해 별도로 마련된 이미지 처리 함수일 수도 있으며, 뒤에서 설명할 병렬화 방법 설정부(120)에 의해 설정될 이미지 처리 함수 중 하나일 수도 있다.
워크 그룹 크기 설정부(110)는 워크 그룹 크기 후보 각각에 대해서 특정 이미지 처리 함수의 수행시간을 측정하고, 측정된 수행시간 중 가장 짧은 평균 수행시간에 해당하는 워크 그룹 크기를 이미지 처리의 워크 그룹 크기로 설정할 수 있다.
본 발명의 실시예에 따른 이미지 처리 장치(100)는 이미지 처리를 위한 병렬화 방법을 설정하는 병렬화 방법 설정부(120)를 더 포함할 수 있다. 이 경우 이미지 처리를 위한 병렬화 방법은 이미지 처리 함수에 의해 구현될 수 있다. 한편 이미지 처리 함수는 병렬 처리를 위해 OpenCL로 작성된 함수일 수 있다. 나아가, 이미지 처리 함수는 OpenCL 프로그램 안의 커널 함수일 수도 있다. 또한 이미지 처리 장치(100)가 수행 가능한 이미지 처리 함수는 하나 이상일 수 있다. 본 발명의 일실시예에 따르면 이미지 처리 함수의 수는 이미지 처리의 병렬화 방법의 수와 대응할 수도 있다.
병렬화 방법 설정부(120)는 기 설정된 적어도 하나의 병렬화 방법 후보로 이미지 처리를 수행하고, 각각의 병렬화 방법 후보에 의한 수행 속도 중 가장 빠른 수행 속도에 해당하는 병렬화 방법을 이미지 처리를 위한 병렬화 방법으로 설정할 수 있다. 본 발명의 일실시예에 따르면 병렬화 방법 설정부(120)는 설정된 병렬화 방법 후보 각각에 대하여 이에 대응하는 이미지 처리 함수의 수행시간을 측정하고, 측정된 수행시간 중 가장 짧은 평균 수행시간에 해당하는 병렬화 방법을 이미지 처리를 위한 병렬화 방법으로 설정할 수 있다.
OpenCL을 사용하여 이미지 처리를 병렬화할 때에는 여러 가지 방법이 있다. 예를 들면 NDRange를 몇 차원으로 수행하는지 또는 커널 코드에서 백터화를 하는지 등이 있다. 이미지 처리를 위해 사용되는 아키텍쳐마다 특성이 다르기 때문에 최적의 병렬화 방법을 설정하는 것은 이미지 처리 속도를 높이는 데에 있어서 중요하다.
본 발명의 실시예에 따른 병렬화 방법 설정부(120)는 최적의 병렬화 방법을 설정하기 위해, 각각의 병렬화 방법을 수행하고, 가장 빠른 수행 결과를 가져오는 병렬화 방법을 이미지 처리를 위한 병렬화 방법으로 설정할 수 있다.
병렬화 방법의 예로는 하나는 워크 아이템 하나가 하나의 픽셀을 처리하는 것과 다른 하나는 하나의 워크 아이템이 인접한 여러 픽셀을 같이 처리하는 것을 포함할 수 있다.
본 발명의 실시예에 따른 이미지 처리 장치(100)는 병렬화된 이미지 처리 함수를 사용할 이미지 크기의 기준을 설정하는 이미지 크기 기준 설정부(130)를 더 포함할 수 있다.
이미지 처리를 수행함에 있어서, 항상 병렬 처리하는 것이 빠른 것은 아니다. 병렬 처리가 유리한 것은 이미지의 크기에 따라 결정될 수도 있다. 본 발명의 실시예에 따르면 이미지 크기가 커질수록 병렬 처리하는 것이 이미지 처리 속도면에서 유리할 수 있다. 반대로 이미지 크기가 일정 기준 이하이면 병렬 처리하였을 때 이미지 처리 속도가 더 느려질 수도 있다. 본 발명의 실시예에 따른 이미지 크기 기준 설정부(130)는 병렬 처리가 유리한 이미지 크기 기준을 설정할 수 있다. 이미지 크기 기준 설정부(130)는 이미지 크기 기준이 설정되면, 기준 크기 이상의 이미지에 대해서만 병렬 처리하도록 할 수 있다.
이미지 처리 장치(100)는 기준 크기 이상의 이미지에 대해서는 병렬화 처리 할 수 있다. 한편 이미지 처리 장치(100)는 기준 크기를 미만의 이미지에 대해서는 병렬 처리의 방법이 아닌 별도의 방법으로 이미지 처리할 수도 있다. 예를 들어 이미지 처리 장치(100)는 기준 크기를 초과하지 않는 이미지에 대해서는 순차코드를 이용하여 이미지 처리할 수도 있다.
다시 말해 이미지 크기 기준 설정부(130)는 OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 가지기 시작하는 이미지 크기를 찾으면 그 값을 해당 이미지 처리 함수의 이미지 크기 threshold값으로 설정할 수 있다.
본 발명의 일실시예에 따르면, 이미지 크기 기준 설정부(130)는 서로 다른 크기의 시험 이미지를 설정하고, 설정된 시험 이미지 중 가장 작은 크기의 시험 이미지부터 순차적으로 증가시켜가며, OpenCL로 작성된 이미지 처리 함수의 수행시간 및 순차코드의 수행시간을 측정할 수 있다. 이때 이미지 크기 기준 설정부(130)는 각각의 시험 이미지마다 각각의 수행시간을 측정하여 OpenCL로 작성된 이미지 처리 함수의 평균 수행시간 및 순차코드의 평균 수행시간을 측정할 수 있다.
본 발명의 또 다른 일실시예에 따르면, 이미지 크기 기준 설정부(130)는 바이너리 서치(binary search)를 사용하여 OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 갖는 지점의 이미지 크기를 찾을 수도 있다.
본 발명은 위에서 설명한 방법뿐만 아니라, OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 갖는 지점의 이미지 크기를 찾는 모든 경우에 적용이 가능하다. 예를 들어 일부의 시험 이미지를 선택하고, 해당 시험 이미지에서 OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 갖는 지점의 이미지 크기를 찾는 경우에도 본 발명의 적용이 가능하다.
이후, 이미지 크기 기준 설정부(130)는 측정된 OpenCL로 작성된 이미지 처리 함수의수행시간이 순차코드의 수행시간보다 작아지는 시점의 시험 이미지의 크기를 이미지 크기의 기준으로 설정할 수 있다. 이미지 크기 기준 설정부(130)는 OpenCL로 작성된 이미지 처리 함수의 평균수행시간 및 순차코드의 평균 수행시간을 비교하여 이미지 크기 기준을 설정할 수도 있다.
이미지 크기 기준 설정부(130)는 이미지 처리 장치(100)의 이미지 처리 과정 중에 이미지 크기 기준을 설정할 수도 있으며, 이미지 처리 과정 전에 미리 이미지 크기 기준을 설정할 수도 있다.
다음은 도 3 내지 도 5를 참조하여 본 발명의 실시예에 따른 이미지 처리 방법을 설명하겠다.
도 3은 본 발명의 실시예에 따른 이미지 처리 방법을 설명하기 위한 흐름도이고, 도 4는 최적의 워크 그룹의 크기를 설정하는 방법을 설명하기 위한 흐름도이고, 도 5는 병렬화 방법으로 처리할 이미지 크기의 기준을 설정하는 방법을 설명하기 위한 흐름도이다.
도 3 내지 도 5에 도시된 실시예에 따른 이미지 처리 방법은 도 2에 도시된 장치에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 2에 도시된 장치에 관하여 이상에서 기술한 내용은 도 3 내지 도 5에 도시된 실시예에 따른 이미지 처리 방법에도 적용될 수 있다.
이미지 처리의 조건을 설정하여, 설정된 조건으로 이미지를 병렬화 처리하는 이미지 처리 장치(100)는 워크 그룹의 크기를 설정한다(S301). 이미지 처리 장치(100)는 이미지를 처리함에 있어서, 최적의 워크 그룹 크기를 설정할 수 있다. 위에서 언급하였듯, 워크 그룹의 크기를 결정하는 것은 이미지 처리의 속도와 연관이 있을 수 있다.
도 4를 참조하여, S301을 자세히 설명하면, 이미지 처리 장치(100)는 워크 그룹의 크기 후보를 선정한다(S401). 워크 그룹의 크기 후보를 선정하는 방법은 기 설정되어 있을 수도 있다. 예를 들어 워크 그룹의 크기를 소정의 크기부터 소정의 배수만큼 증가시켜가며 선정할 수도 있다.
이미지 처리 장치(100)는 선정된 크기 후보 각각에서 이미지 처리 함수의 수행시간을 측정할 수 있다(S403). 이때 이미지 처리 장치(100)는 이미지 처리 함수의 평균 수행시간을 측정할 수도 있다.
이미지 처리 장치(100)는 측정된 수행시간이 가장 짧은 크기 후보를 워크 그룹의 크기로 선정할 수 있다(S405). 이때 이미지 처리 장치(100)는 측정된 평균 수행시간이 가장 짧은 크기 후보를 워크 그룹의 크기로 선정할 수도 있다.
다시 도 3을 참조하여 이미지 처리 방법을 설명한다.
이미지 처리 장치(100)는 S301과 동시 또는 이시에 이미지 처리 함수 및 이미지 처리 함수를 수행할 병렬화 방법을 설정할 수 있다(S303).
본 발명의 실시예에 따른 이미지 처리 장치(100)는 최적의 병렬화 방법을 설정하기 위해, 각각의 이미지 처리 함수 및 각각의 병렬화 방법을 조합하여 수행하고, 가장 빠른 수행 결과를 가져오는 이미지 처리 함수 및 병렬화 방법의 조합을 이미지 처리를 위한 병렬화 방법으로 설정할 수 있다.
병렬화 방법의 예로는 하나는 워크 아이템 하나가 하나의 픽셀을 처리하는 것과 다른 하나는 하나의 워크 아이템이 인접한 여러 픽셀을 같이 처리하는 것을 포함할 수 있다.
이미지 처리 장치(100)는 S301 또는 S303과 동시 또는 이시에 이미지 처리 함수를 적용할 이미지의 크기의 기준을 설정할 수 있다(S305). 즉 이미지 처리 장치(100)는 병렬 처리를 할 이미지 크기의 기준을 설정할 수 있다.
도 5를 참조하여, S305를 자세히 설명하면, 이미지 처리 장치(100)는 서로 다른 크기의 시험 이미지를 생성한다(S501).
이미지 처리 장치(100)는 현재 시험 이미지에서 OpenCL로 작성된 이미지 처리 함수 및 순차코드를 수행시킨다(S503). 이때 이미지 처리 장치(100)는 OpenCL로 작성된 이미지 처리 함수 및 순차코드의 수행시간을 측정할 수 있다. 또한 이미지 처리 장치(100)는 OpenCL로 작성된 이미지 처리 함수 및 순차코드를 수회 수행시켜, 평균 수행시간을 측정할 수도 있다.
이미지 처리 장치(100) 현재 시험 이미지에서 측정된 OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드 수행시간보다 작은지를 판단한다(S505).
OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드 수행시간보다 작지 않은 경우, 현재 시험 이미지보다 한 단계 큰 시험 이미지에서 OpenCL로 작성된 이미지 처리 함수 및 순차코드를 각각 수행시키고, 각각의 수행시간을 측정한다(S507).
OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드 수행시간보다 작은 경우, 이미지 처리 장치(100)는 현재 시험 이미지의 크기를 기준으로 설정한다(S509).
S501 내지 S509를 요약하면, 이미지 처리 장치(100)는 서로 다른 크기의 시험 이미지를 설정하고, 설정된 시험 이미지 중 가장 작은 크기의 시험 이미지부터 순차적으로 증가시켜가며, OpenCL로 작성된 이미지 처리 함수의 수행시간 및 순차코드의 수행시간을 측정할 수 있다. 이때 이미지 처리 장치(100)는 각각의 시험 이미지마다 각각의 수행시간을 측정하여 OpenCL로 작성된 이미지 처리 함수의 평균 수행시간 및 순차코드의 평균 수행시간을 측정할 수 있다.
앞서 설명한 바와 같이, S305 단계는 S501 내지 S509에서 설명한 방법 이외에도 본 발명의 적용이 가능하다. 본 발명의 또 다른 일실시예에 따르면, 크기 기준 설정부(130)는 바이너리 서치(binary search)를 기준으로 OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 갖는 지점의 이미지 크기를 찾을 수도 있다.
본 발명은 위에서 설명한 방법뿐만 아니라, OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 갖는 지점의 이미지 크기를 찾는 모든 경우에 적용이 가능하다. 예를 들어 일부의 시험 이미지를 선택하고, 해당 시험 이미지에서 OpenCL로 작성된 이미지 처리 함수가 순차코드보다 더 짧은 수행시간을 갖는 지점의 이미지 크기를 찾는 경우에도 본 발명의 적용이 가능하다.
이미지 처리 장치(100)는 측정된 OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드의 수행시간보다 작아지는 시점의 시험 이미지의 크기를 이미지 크기의 기준으로 설정할 수 있다. 이때 이미지 처리 장치(100)는 OpenCL로 작성된 이미지 처리 함수의 평균 수행시간 및 순차코드의 평균 수행시간을 비교하여 이미지 크기 기준을 설정할 수도 있다.
이미지 처리 장치(100)는 이미지 처리 과정 중에 이미지 크기 기준을 설정할 수도 있으며, 이미지 처리 과정 전에 미리 이미지 크기 기준을 설정할 수도 있다.
본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다
도 3을 통해 설명된 실시예에 따른 이미지 처리 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한 본 발명의 일실시예에 따르는 이미지 처리 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 본 발명의 일실시예에 따르는 이미지 처리 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 이미지 처리 장치 110: 워크 그룹 크기 설정부
120: 병렬화 방법 설정부 130: 이미지 크기 기준 설정부

Claims (16)

  1. 이미지 처리의 조건을 설정하여, 설정된 조건으로 이미지를 병렬 처리하는 이미지 처리 장치에 있어서,
    병렬화된 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 워크 그룹 크기 설정부;
    병렬 처리를 적용할 이미지 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬 처리하게 하는 이미지 크기 기준 설정부; 및
    이미지 처리 함수 및 이미지 처리 함수가 수행될 병렬화 방법을 설정하는 병렬화 방법 설정부를 포함하는, 이미지 처리 장치.
  2. 제1항에 있어서,
    상기 워크 그룹 크기 설정부는,
    상기 적어도 하나의 워크 그룹 크기 후보 각각에 대해서 상기 이미지 처리 함수의 수행시간을 측정하고, 측정된 수행시간 중 가장 짧은 수행시간에 해당하는 워크 그룹 크기를 이미지 처리의 워크 그룹 크기로 설정하는, 이미지 처리 장치.
  3. 삭제
  4. 제1항에 있어서,
    상기 병렬화 방법 설정부는,
    적어도 하나의 이미지 처리 함수 및 적어도 하나의 병렬화 방법을 조합하여 수행하고, 각각의 조합 중 수행 속도 중 가장 빠른 수행 속도에 해당하는 이미지 처리 함수 및 병렬화 방법의 조합을 이미지 처리 함수를 수행할 병렬화 방법으로 설정하는, 이미지 처리 장치.
  5. 제4항에 있어서,
    상기 병렬화 방법 설정부는,
    각각의 이미지 처리 함수를 수행함에 있어서, 워크 아이템 하나가 하나의 픽셀을 처리하는 방법 또는 하나의 워크 아이템이 인접한 여러 픽셀을 같이 처리하는 방법으로 수행하는, 이미지 처리 장치.
  6. 제1항에 있어서,
    상기 이미지 크기 기준 설정부는,
    측정된 OpenCL로 작성된 이미지 처리 함수의수행시간이 순차코드의 수행시간보다 작아지는 시점의 시험 이미지의 크기를 이미지 크기의 기준으로 설정하는, 이미지 처리 장치.
  7. 제6항에 있어서,
    상기 이미지 크기 기준 설정부는,
    서로 다른 크기의 시험 이미지 중 가장 작은 크기의 시험 이미지부터 순차적으로 증가시켜가며, OpenCL로 작성된 이미지 처리 함수의 수행시간 및 순차코드의 수행시간을 측정하고, 측정된 OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드의 수행시간보다 작아지는 시점의 시험 이미지의 크기를 이미지 크기의 기준으로 설정하는, 이미지 처리 장치.
  8. 이미지 처리의 조건을 설정하여, 설정된 조건으로 이미지를 병렬 처리하는 이미지 처리 장치가 이미지를 처리하는 방법에 있어서,
    병렬화된 이미지 처리 함수의 수행시간에 기초하여, 적어도 하나의 워크 그룹의 크기 후보 중 어느 한 워크 그룹의 크기를 이미지 처리의 워크 그룹 크기로 설정하는 단계;
    병렬 처리를 적용할 이미지 크기의 기준을 설정하여, 설정된 이미지 크기의 기준 이상의 이미지를 병렬 처리하게 하는 단계; 및
    이미지 처리 함수 및 이미지 처리 함수가 수행될 병렬화 방법을 설정하는 단계를 포함하는, 이미지 처리 방법.
  9. 제8항에 있어서,
    상기 워크 그룹 크기로 설정하는 단계는,
    상기 적어도 하나의 워크 그룹 크기 후보 각각에 대해서 이미지 처리 함수의 수행시간을 측정하는 단계; 및
    측정된 수행시간 중 가장 짧은 수행시간에 해당하는 워크 그룹 크기를 이미지 처리의 워크 그룹 크기로 설정하는 단계를 포함하는, 이미지 처리 방법.
  10. 삭제
  11. 제8항에 있어서,
    상기 병렬화 방법을 설정하는 단계는,
    적어도 하나의 이미지 처리 함수 및 적어도 하나의 병렬화 방법을 조합하여 수행하는 단계; 및
    각각의 조합 중 수행 속도 중 가장 빠른 수행 속도에 해당하는 이미지 처리 함수 및 병렬화 방법의 조합을 이미지 처리 함수를 수행할 병렬화 방법으로 설정하는 단계를 포함하는, 이미지 처리 방법.
  12. 제11항에 있어서,
    상기 적어도 하나의 이미지 처리 함수 및 적어도 하나의 병렬화 방법을 조합하여 수행하는 단계는, 각각의 이미지 처리 함수를 수행함에 있어서, 워크 아이템 하나가 하나의 픽셀을 처리하는 방법 또는 하나의 워크 아이템이 인접한 여러 픽셀을 같이 처리하는 방법으로 수행하는, 이미지 처리 방법.
  13. 제8항에 있어서,
    상기 이미지를 병렬 처리하게 하는 단계는,
    측정된 OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드의 수행시간보다 작아지는 시점의 시험 이미지의 크기를 이미지 크기의 기준으로 설정하는 단계를 포함하는, 이미지 처리 방법.
  14. 제13항에 있어서,
    상기 이미지 크기의 기준으로 설정하는 단계는,
    서로 다른 크기의 시험 이미지 중 가장 작은 크기의 시험 이미지부터 순차적으로 증가시켜가며, OpenCL로 작성된 이미지 처리 함수의 수행시간 및 순차코드의 수행시간을 측정하는 단계; 및
    측정된 OpenCL로 작성된 이미지 처리 함수의 수행시간이 순차코드의 수행시간보다 작아지는 시점의 시험 이미지의 크기를 이미지 크기의 기준으로 설정하는 단계를 포함하는, 이미지 처리 방법.
  15. 제8항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
  16. 이미지 처리 장치에 의해 수행되며, 제8항에 기재된 방법을 수행하기 위해 기록매체에 저장된 컴퓨터 프로그램.
KR1020160082233A 2016-06-30 2016-06-30 이미지 처리 장치 및 방법 KR101867423B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160082233A KR101867423B1 (ko) 2016-06-30 2016-06-30 이미지 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160082233A KR101867423B1 (ko) 2016-06-30 2016-06-30 이미지 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180003003A KR20180003003A (ko) 2018-01-09
KR101867423B1 true KR101867423B1 (ko) 2018-06-18

Family

ID=61000534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160082233A KR101867423B1 (ko) 2016-06-30 2016-06-30 이미지 처리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101867423B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140093593A (ko) * 2013-01-18 2014-07-28 서울대학교산학협력단 워크 그룹 크기 결정 방법, 시스템 및 컴퓨터 판독가능 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140093593A (ko) * 2013-01-18 2014-07-28 서울대학교산학협력단 워크 그룹 크기 결정 방법, 시스템 및 컴퓨터 판독가능 기록매체

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Seo et al. Automatic OpenCL work-group size selection for multicore CPUs. IEEE PACT, 2013년 10월, pp. 387-398. *
Seo et al. Automatic OpenCL work-group size selection for multicore CPUs. IEEE PACT, 2013년 10월, pp. 387-398. 1부. *
Seo et al. Automatic OpenCL work-group size selection for multicore CPUs. IEEE PACT, 2013년 10월, pp. 387-398.*
이아름 외 2명. 내장형 GPU 를 활용한 병렬 이미지 필터의 워크그룹 할당 기법. 한국통신학회 학술대회논문집, 2016년 1월, pp. 905-906. *
이아름 외 2명. 내장형 GPU 를 활용한 병렬 이미지 필터의 워크그룹 할당 기법. 한국통신학회 학술대회논문집, 2016년 1월, pp. 905-906. 1부. *
이아름 외 2명. 내장형 GPU 를 활용한 병렬 이미지 필터의 워크그룹 할당 기법. 한국통신학회 학술대회논문집, 2016년 1월, pp. 905-906.*

Also Published As

Publication number Publication date
KR20180003003A (ko) 2018-01-09

Similar Documents

Publication Publication Date Title
US11704553B2 (en) Neural network system for single processing common operation group of neural network models, application processor including the same, and operation method of neural network system
US10613871B2 (en) Computing system and method employing processing of operation corresponding to offloading instructions from host processor by memory's internal processor
US8200735B2 (en) Multi-core processor for performing matrix operations
CN101436121B (zh) 用于使用并行处理器架构执行扫描操作的方法及设备
US8676874B2 (en) Data structure for tiling and packetizing a sparse matrix
CN110046704B (zh) 基于数据流的深度网络加速方法、装置、设备及存储介质
US9740659B2 (en) Merging and sorting arrays on an SIMD processor
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
US10614148B2 (en) Reconfigurable convolution accelerator
KR20200002027A (ko) 최적화된 딥 네트워크 처리를 위한 그래프 매칭
US11308171B2 (en) Apparatus and method for searching linked lists
US9817753B2 (en) Flash memory management
KR20190013162A (ko) 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법
US9830731B2 (en) Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
US20180173460A1 (en) Contention reduction scheduler for nand flash array with raid
KR101867423B1 (ko) 이미지 처리 장치 및 방법
Kim et al. Optimizing seam carving on multi-GPU systems for real-time content-aware image resizing
US11126535B2 (en) Graphics processing unit for deriving runtime performance characteristics, computer system, and operation method thereof
Soroushnia et al. Heterogeneous parallelization of Aho-Corasick algorithm
US20160253775A1 (en) Methods and systems for designing correlation filter
KR101737785B1 (ko) 프로그램 컴파일 장치 및 프로그램 컴파일 방법
JP2021018711A (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
CN117437451B (zh) 图像匹配方法、装置、设备及存储介质
Kamasaka et al. FPGA implementation of a graph cut algorithm for stereo vision

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)