KR102471553B1 - 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체 - Google Patents

컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체 Download PDF

Info

Publication number
KR102471553B1
KR102471553B1 KR1020200045444A KR20200045444A KR102471553B1 KR 102471553 B1 KR102471553 B1 KR 102471553B1 KR 1020200045444 A KR1020200045444 A KR 1020200045444A KR 20200045444 A KR20200045444 A KR 20200045444A KR 102471553 B1 KR102471553 B1 KR 102471553B1
Authority
KR
South Korea
Prior art keywords
vector
configurable
vector operation
operation parameter
computing device
Prior art date
Application number
KR1020200045444A
Other languages
English (en)
Other versions
KR20210012886A (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 KR20210012886A publication Critical patent/KR20210012886A/ko
Application granted granted Critical
Publication of KR102471553B1 publication Critical patent/KR102471553B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

본 개시의 실시예에 따르면, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법, 장치, 기기 및 저장 매체가 제공된다. 당해 방법은, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하는 단계 - 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보는 구성 가능 백터 연산 파라미터의 유형 및 값을 나타냄 - ; 및 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성함으로써, 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되며 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산이 수행될 수 있도록 하는 단계; 를 포함한다. 당해 방법은 컴퓨팅이 복잡한 벡터 연산을 지원하도록 하고, 또한 하나의 하드웨어에서 복수의 벡터 연산 격식을 실행하는 것을 구현하며, 벡터 연산 격식의 유연한 설계를 구현한다.

Description

컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체{METHOD, APPARATUS, DEVICE AND COMPUTER-READABLE STORAGE MEDIUM EXECUTED BY COMPUTING DEVICES}
본 개시의 실시예는 주로 컴퓨터 분야에 관한 것으로, 더 구체적으로, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 것 및 컴퓨팅 기기에 의해 수행되는 벡터 연산을 위한 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체에 관한 것이다.
인공 지능 기술(Artificial Intelligence, AI)이 발전됨에 따라 심층 학습 분야가 현재 연구의 핫이슈로 되어있다. 심층 학습 과정에는 대량의 벡터 연산이 적용된다. 비록 현재 이미 심층 학습에 관한 일부 하드웨어, 예를 들면 그래픽 처리 장치(GPU) 또는 일부의 주문형 집적회로(ASIC)가 개발 되었으나 이러한 하드웨어는 벡터 연산을 지원하지만 지원되는 벡터 연산이 수행 성능과 벡터 연산의 유연성 측면에 있어서 나아가 더 향상되어야 한다. 따라서 벡터 연산을 구현하는 수행 성능 및 유연성을 향상시켜 심층 학습 기술의 요구를 충족시키는 것은 현재 해결해야할 핵심 문제이다.
본 개시의 예시적인 실시예에 따르면, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방안 및 컴퓨팅 기기에 의해 수행되는 벡터 연산 방안이 제공된다.
본 개시의 제1 측면으로, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법이 제공된다. 당해 방법은, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하는 단계 - 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보는 구성 가능 백터 연산 파라미터의 유형 및 값을 나타냄 - ; 및 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성함으로써, 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되며 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산이 수행될 수 있도록 하는 단계; 를 포함한다.
본 개시의 제2 측면으로, 컴퓨팅 기기에 의해 수행되는 벡터 연산 방법이 제공되는바, 컴퓨팅 기기는 복수의 벡터 연산 유닛을 포함한다. 당해 방법은, 연산할 벡터 데이터를 획득하는 단계; 및 획득된 벡터 데이터에 대하여, 복수의 벡터 연산 유닛이 벡터 연산을 수행하여 벡터 연산 결과를 출력하는 단계; 를 포함하고, 여기서 벡터 연산은 본 개시의 제1 측면의 방법에 따라 구성된다.
본 개시의 제3 측면으로, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 장치가 제공된다. 당해 장치는, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하도록 구성되는 제어기 - 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보는 구성 가능 백터 연산 파라미터의 유형 및 값을 나타냄 - ; 및 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성함으로써, 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되며 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산이 수행될 수 있도록 구성되는 컴퓨팅 유닛; 을 포함한다.
본 개시의 제4 측면으로, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 하는 장치가 제공된다. 당해 장치는, 복수의 벡터 연산 유닛을 포함하는 컴퓨팅 유닛을 포함하고, 상기 컴퓨팅 유닛은, 연산할 벡터 데이터를 획득하고, 획득된 벡터 데이터에 대하여, 상기 복수의 벡터 연산 유닛을 동작시켜 벡터 연산이 수행되어 벡터 연산 결과가 출력되도록 구성되는바, 여기서 상기 벡터 연산은 본 발명의 제1 측면의 방법에 따라 구성된다.
본 개시의 제5 측면으로, 전자 기기가 제공되는바, 이는 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램을 저장하는 저장 장치; 를 포함하고, 하나 또는 복수의 프로그램이 하나 또는 복수의 프로세서에 의해 실행될 경우, 하나 또는 복수의 프로세서가 본 개시의 제1 측면의 방법을 구현한다.
본 개시의 제6 측면으로, 컴퓨팅 기기 프로그램이 저장되어 있는 컴퓨팅 기기 판독가능 저장 매체가 제공되는바, 당해 프로그램이 프로세서에 의해 실행될 경우 본 개시의 제1 측면의 방법이 구현된다.
본 개시의 제7 측면으로, 전자 기기가 제공되는바, 이는 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램을 저장하는 저장 장치;를 포함하고, 하나 또는 복수의 프로그램이 하나 또는 복수의 프로세서에 의해 실행될 경우, 하나 또는 복수의 프로세서가 본 개시의 제2 측면의 방법을 구현한다.
본 개시의 제8 측면으로, 컴퓨팅 기기 프로그램이 저장되어 있는 컴퓨팅 기기 판독가능 저장 매체가 제공되는바, 당해 프로그램이 프로세서에 의해 실행될 경우 본 개시의 제2 측면의 방법이 구현된다.
발명 내용 부분에서 설명하는 내용은 본 개시의 실시예의 핵심적인 또는 중요한 특징을 한정하고자 하는 것이 아니며, 본 개시의 범위를 한정하고자 하는 것도 아님을 이해하여야 한다. 본 개시의 기타의 특징은 아래 설명으로 이해하기 수월해질 것이다.
첨부 도면을 결부하고 아래의 상세한 설명을 참조하면 본 개시의 각 실시예의 상술한 및 기타의 특징, 이점 및 측면이 더욱 명확해질것이다. 첨부 도면에서 동일한 또는 유사한 도면 부호는 동일한 또는 유소한 요소를 가리키는바, 여기서
도1은 본 개시의 복수의 실시예에 따른 컴퓨팅 기기에 의해 수행되는 방안의 예시 환경의 개략도를 도시한다.
도2는 본 개시의 일부 예시적인 실시예에 따른 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법의 흐름도를 도시한다.
도3은 본 개시의 일부 예시적인 실시예에 따른 컴퓨팅 기기의 구조의 개략적인 블록도를 도시한다.
도4는 본 개시의 일부 예시적인 실시예에 따른 컴퓨팅 기기에 의해 수행되는 벡터 연산 방법의 흐름도를 도시한다.
도5는 본 개시의 실시예에 따른 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방안의 장치의 개략적인 블록도를 도시한다.
도6은 본 개시의 실시예에 따른 컴퓨팅 기기에 의해 수행되는 벡터 연산을 하는 장치의 개략적인 블록도를 도시한다
도7은 본 개시의 복수의 실시예를 실시 가능한 컴퓨팅 기기의 블록도를 도시한다.
아래, 첨부 도면을 참조하여 본 개시의 실시예를 더욱 상세히 설명하고자 한다. 비록, 첨부 도면에 본 개시의 일부 실시예를 도시하였으나 본 개시는 다양한 형식으로 구현 가능한바, 이를 여기서 서술하는 실시예에 한정되는 것으로 해석하여서는 안되며, 반대로, 이러한 실시예를 제공하는 것은 본 개시를 더욱 투철하고 완전하게 이해하기 위한 것임을 이해하여야 한다. 본 개시의 첨부 도면 및 실시예는 예시적인 작용을 위한 것일 뿐, 본 개시의 보호 범위를 한정하기 위한 것이 아님을 이해하여야 한다.
본 개시의 실시예의 설명에서, 용어 '포함하다' 및 이의 유사한 용어는 개방형 포함, 즉 '포함하나 이에 한정되지 않는다'로 이해되어야 한다. 용어 '에 따라'는 '적어도 부분적으로 ...에 따라'로 이해되어야 한다. 용어 '일 실시예' 또는 '당해 실시예'는 '적어도 일 실시예'로 이해되어야 한다. 용어 '제1', '제2' 등은 서로 다른 또는 동일한 대상을 지칭할 수 있다. 후술에는 또한 기타의 명확한 및 암묵적인 정의가 포함될 수 있다.
본 명세서에서 사용한 바와 같이, 용어 '기본 벡터 연산'은 벡터 연산의 기본 연산 단위를 지칭하는바, 예를 들면, 2개의 벡터 사이의 사칙 연산(즉 덧셈, 뺄셈, 곱셈 및 나눗셈), 하나의 벡터와 스칼라 사이의 연산(예를 들면 스칼라와 벡터 사이의 곱셉 연산)이다. 설명적이고 비한정적인 예시를 위한 것으로, 길이가 n인 2개의 입력 벡터a=[a1, a2, a3, ..., an] 및 b=[b1, b2, b3, ..., bn]에 있어서, a와 b사이의 벡터 덧셈은 [a1+b1, a2+b2, a3+b3, ..., an+bn]로 정의되고, a와 b 사이의 벡터 뺄셈은 a-b = [al-bl, a2-b2, ..., an-bn]로 정의되고, a와 b 사이의 벡터 곱셈은 [al*bl, a2*b2, ..., an*bn]로 정의되고, a와 b 사이의 벡터 나눗셈은 [al/bl, a2/b2, ..., an/bn]로 정의된다. 설명적이고 비한정적인 예시를 위한 것으로, 길이가 n인 2개의 입력 벡터 a=[a1, a2, a3, ..., an]에 있어서, 벡터와 스칼라 파라미터A 사이의 곱셈 연산은 [A*al, A*a2, ..., A*an]로 정의된다. 하나 또는 복수의 기본 벡터 연산의 조합은 복합적인 벡터 연산을 구성할 수 있다. 본 명세서에서, 각별한 설명이 있지 않은 한, 용어 '벡터 연산'은 '복합 벡터 연산'을 가리킨다.
본 명세서에서 설명한 바와 같이, 본 명세서에서 사용된 용어 '벡터 연산 유닛'은 컴퓨팅 기기에서 벡터 연산을 구현하는 컴퓨팅 유닛을 지칭하는바, 하드웨어(예를 들면, 복수의 전기 소자)로 구현될 수도 있고 소프트웨어의 방식으로 구현될 수도 있다. 일부 응용 시나리오에서, 이는 칩(예를 들면, CPU, GPU, ASIC 등)에 집적될 수 있다.
상기에서 설명한 바와 같이, 벡터 연산을 구현하는 성능 및 유연성을 향상시키는 것은 현재 해결해야 할 핵심 문제이다. 전통적인 컴퓨팅 기기에 의해 수행되는 벡터 연산 방안은 처리 유닛(CPU)에 대한 제어를 통해 벡터 연산을 구현한다. 당해 방안에서 CPU는 통상적으로 스칼라 컴퓨팅을 수행하도록 설계되므로 벡터 연산에 있어서는 복수의 스칼라 컴퓨팅으로 분할하는 것이 필요한바, 입력되는 벡터 연산 명령어의 길이가 매우 길어지고 벡터 연산을 수행하는 과정에 또한 순환, 판단을 제어하기 위한 분기, 점프 등의 많은 제어 명령어가 필요하므로, 벡터 연산의 전체적인 수행 성능이 저하된다.
컴퓨팅 기기에 의해 수행되는 벡터 연산의 다른 전통적인 방안은 GPU 또는 단일 명령 다중 데이터 기술(SIMD) 기능을 가지는 CPU를 적용하여 구현되는바, 이러한 기술에서 벡터 연산의 성능이 일정 정도 향상된다. 그러나 발명자가 유의하게 된 점은, 당해 방안에는 여전히 많은 결함이 존재하는바, 주로 하기를 포함한다.
온칩 캐싱 공간은 유한한 것이고, 벡터 연산을 수행하는 과정에서 빈번하게 오프칩 메모리로부터 데이터를 옮겨야 하고 특히 보다 큰 규모의 벡터 연산에 있어서는 오프칩 저장 디바이스와의 대역폭이 벡터 연산의 수행 성능을 저하시킨다.
기본 벡터 연산만을 지원 가능하고, 복수의 기본 벡터 연산을 포함하는 복잡한 벡터 연산에 있어서는 복수의 기본적인 벡터 연산 명령어로 나아가 더 분할되어야 하므로 벡터 연산 명령어가 보다 길어진다.
또한, 비록 근년래 심층 학습 분야에 대한 ASIC도 출현하였으나 이는 여전히 기본 벡터 연산에 대한 지원에 국한될 뿐, 조금 복잡한 일부 벡터 연산 격식에 있어서도 여전히 복수의 기본 벡터 연산으로 분할되어 구현되어야 하는바, 예를 들면, 벡터 연산 격식 y=A*a+b에 있어서 A 및 B는 입력된 벡터 데이터이고, y는 벡터 결과이고, A는 스칼라 유형 파라미터이고, 상술한 격식은 2개의 기본 벡터 연산, 즉, 벡터와 스칼라의 곱셈 및 벡터의 덧셈 연산으로 분할되어야 한다.
따라서, 전통적인 컴퓨팅 기기에 의해 수행되는 벡터 연산방안은 복잡한 벡터 연산을 지원하지 않으며 벡터 연산의 수행 성능이 높지 않은바, 인공 지능 분야에서의 심층 학습 수요를 충족시킬 수 없다.
본 개시의 실시예에 따르면, 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법이 제공된다. 컴퓨팅 기기는 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산을 지원 가능하고, 벡터 연산의 파라미터는 구성 가능한 것이다. 더 나아가, 본 개시의 실시예에 따르면, 컴퓨팅 기기에 의해 수행되는 벡터 연산 방법이 제공된다. 컴퓨팅 기기는 본 개시의 벡터 연산 구성 방법이 응용되어 구성된 벡터 연산으로 벡터 데이터를 판독하고 벡터 연산을 수행한다. 이러한 방식에 따르면, 복잡한 벡터 연산을 지원하는 것이 구현되고, 또한 벡터 연산 포맷의 유연성이 구현된다.
더 나아가, 벡터 연산을 더욱 유연하게 구성하는 것을 구현하고자, 본 개시의 일부 실시예에 따르면, 구성 가능 백터 연산 파라미터의 유형은 스칼라 유형 또는 벡터 유형일 수 있다. 또한, 구성 가능 백터 연산 파라미터의 유형에 따라 구성 가능 백터 연산 파라미터를 서로 다른 저장 기기에 저장하는바, 예를 들면, 스칼라 유형의 구성 가능 백터 연산 파라미터는 스칼라 메모리(예를 들어 레지스터)에 저장될 수 있고, 벡터 유형의 구성 가능 백터 연산 파라미터는 벡터메모리(예를 들어 저장 유닛)에 저장될 수 있다. 이러한 방식에 따르면, 서로 다른 유형의 구성 가능 백터 연산 파라미터가 서로 다른 저장 기기에 저장되므로 구성 가능 백터 연산 파라미터의 유지 및 관리가 더욱 합리적이고 고효율적이다.
더 나아가, 본 개시의 일부 실시예에 따르면, 스칼라 저장 기기 및/또는 벡터 저장 기기는 컴퓨팅 기기 내에 내장될 수 있고, 예를 들면 스칼라 저장 기기 및/또는 벡터 저장 기기는 컴퓨팅 기기와 함께 하나의 칩에 집적될 수 있다. 이러한 방식에 따르면, 벡터 연산 유닛을 구성하고 벡터 연산 조작을 수행하는 과정에서, 컴퓨팅 기기는 오프칩(off-chip)으로부터 구성 파라미터 및/또는 벡터 데이터를 판독할 필요가 없으므로 컴퓨팅 기기의 수행 성능이 향상되고 컴퓨팅 기기와 외부 저장 기기 사이의 대역폭에 따른 성능 병목이 회피된다.
도1은 본 개시의 복수의 실시예가 구현될 수 있는 예시 환경(100)의 개략도를 도시한다. 당해 예시 환경(100)에서, 컴퓨팅 기기(130)는 구성 가능 백터 연산 파라미터의 정보(110-1), 구성 가능 백터 연산 파라미터의 정보(110-2) 내지 구성 가능 백터 연산 파라미터의 정보(110-I)를 획득할 수 있다. 설명의 편의를 위해, 복수의 구성 가능 백터 연산 파라미터의 정보(110-1, 110-2 내지 110-I)는 구성 가능 백터 연산 파라미터의 정보(110)로 총칭될 수 있다. 본 개시의 일부 예시적인 실시예에서, 구성 가능 백터 연산 파라미터의 정보(110)는 구성 가능 백터 연산 파라미터의 정보를 지시 가능한바, 더 구체적으로, 구성 가능 백터 연산 파라미터의 정보(110)는 구성 가능 백터 연산 파라미터의 유형 및 값을 지시할 수 있다. 본 개시의 일부 예시적인 실시예에서, 구성 가능 백터 연산 파라미터의 정보(110)는 유선 통신 또는 무선 통신의 방식으로 컴퓨팅 기기(130)에 전송될 수 있다. 본 개시의 일부 예시적인 실시예에서, 컴퓨팅 기기(130)는 컴퓨팅 기기(130)에 커플링되는 입력 기기(예를 들면, 마우스, 키보드, 터치펜, 터치 스크린 등을 포함하나 이에 한정되지 않음)를 통하여 사용자에 의해 입력된 구성 가능 백터 연산 파라미터의 정보(110)를 수신할 수도 있다. 본 개시의 다른 일부 실시예에서, 컴퓨팅 기기(130)는 스크립트, 구성 파일 또는 명령 파일을 판독하는 방식으로 구성 가능 백터 연산 파라미터의 정보(110)를 획득할 수도 있다.
컴퓨팅 기기(130)는 컴퓨팅 능력을 가지는 임의의 기기일 수 있다. 본 개시의 일부 예시적인 실시예에서 컴퓨팅 기기(130)는 컴퓨팅 능력을 가지는 칩일 수 있고 CPU, GPU, ACIS 등을 포함하나 이에 한정되지 않는다.
컴퓨팅 기기(130)는 복수의 벡터 연산 유닛(150-1), 벡터 연산 유닛(150-2) 내지 벡터 연산 유닛(150-L)을 포함한다. 설명의 편의를 위해, 복수의 벡터 연산 유닛(150-1), 벡터 연산 유닛(150-2) 내지 벡터 연산 유닛(150-L)은 벡터 연산 유닛(150)으로 총칭될 수 있다. 벡터 연산 유닛(150)은 복합 벡터 연산을 지원하도록 설계되는바, 예를 들면, 벡터a 및 벡터b에 대한 벡터 연산에 있어서, 구성 가능 백터 연산 파라미터를 포함하는 복합 벡터 연산 y=A*a+B*b+C를 정의할 수 있고, 여기서 A, B 및 C는 구성 가능 백터 연산 파라미터이고, 구성 가능 백터 연산 파라미터A, B 및 C의 유형(스칼라 유형 또는 벡터 유형일 수 있음) 및 값은 구성 가능하다. 본 개시의 일부 예시적인 실시예에서 복합 벡터 연산은 2개 또는 더 많은(3개 이상) 기본 벡터 연산을 포함하고, 이에 포함되는 기본 벡터 연산은 임의의 형식으로 조합될 수 있다. 상술한 복합 벡터 연산은 예시를 위한 것일 뿐, 기타의 일부 실시예에서 복합 벡터 연산은 임의의 필요한 형식으로 정의될 수 있음을 이해하여야 한다. 본 개시의 일부 예시적인 실시예에서, 벡터 연산 유닛(150)은 예를 들면, 집적된 전기 소자(예를 들면 낸드 케이트, 증폭기 등)에 의해 구현되거나 또는 구성 가능 백터 연산 파라미터를 가지는 복합 벡터 연산을 구성할 수 있다.
컴퓨팅 기기(130)는 수신된 구성 가능 백터 연산 파라미터의 정보(110)에 따라 복수의 벡터 연산 유닛(150)을 구성함으로써 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되는 벡터 연산이 수행될 수 있도록 할 수 있다. 예를 들면, 상술한 구성 가능 백터 연산 파라미터A, B 및 C에 있어서, A는 스칼라 유형이고 값은 1이며; B는 스칼라 유형이고 값은 2이며; C는 벡터 유형이고 값은 [0, ..., 0];인 것으로 구성될 수 있고, 여기서 구성 가능 백터 연산 파라미터C의 차원은 컴퓨팅 기기(130) 내부에 배치된 벡터 연산 유닛(150)의 수량에 의해 결정되는바, 이에 관해서는 도3에 대한 설명에서 상세히 설명하고자 한다. 상술한 구성에 따르면, 벡터 연산 유닛(150)에 의해 지원되는, 구성 가능 백터 연산 파라미터를 포함하는 복합 벡터 연산 y=A*a+B*b+C는 구체적인 벡터 연산(본 명세서에서, 설명의 편의를 위해, 이를 '목표 벡터 연산'으로 칭함), 즉 y=a+2b로 결정된다.
컴퓨팅 기기(130)는 목표 벡터 연산을 수행할 수 있다. 구체적으로, 벡터 연산을 수행하는 것이 필요한 경우, 컴퓨팅 기기(130)는 연산할 벡터 데이터(120-1), 벡터 데이터(120-2) 내지 벡터 데이터(120-N)를 획득한다. 설명의 편의를 위해, 복수의 벡터 데이터(120-1, 120-2 내지 120-N)는 벡터 데이터(120)로 총칭될 수 있다. 본 개시의 일부 예시적인 실시예에서, 컴퓨팅 기기(130)는, 컴퓨팅 기기(130) 내에 있고 벡터 데이터(120)를 저장하는 데이터베이스/메모리로부터 벡터 데이터(120)를 획득하거나 또는 컴퓨팅 기기(130) 외에 있고 벡터 데이터(120)를 저장하는 데이터베이스/메모리로부터 벡터 데이터(120)를 획득할 수 있다. 본 개시의 일부 예시적인 실시예에서, 벡터 데이터(120)를 저장하는 데이터베이스/메모리는 전용의 벡터 저장 기기일 수 있는바, 예를 들면 독립적인 또는 집적적인 저장 유닛 등이다.
컴퓨팅 기기(130)는 구성 가능 백터 연산 파라미터의 정보(110)에 따라 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하여 수행할 목표 벡터 연산을 결정한다. 목표 벡터 연산이 결정된 후, 컴퓨팅 기기(130)는 벡터 데이터(120)를 판독하여 벡터 연산을 수행하고 벡터 연산 결과(140-1), 벡터 연산 결과(140-2) 내지 벡터 연산 결과(140-M)를 출력한다. 설명의 편의를 위해, 복수의 벡터 연산 결과(140-1, 140-2 내지 140-M)는 벡터 연산 결과(140)로 총칭될 수 있다.
본 개시의 일부 예시적인 실시예에서, 벡터 연산 결과는 컴퓨팅 기기(130)에 의해 컴퓨팅 기기(130) 내에 있고 벡터 연산 결과(140)를 저장하는 데이터베이스/메모리에 저장되거나 또는 컴퓨팅 기기(130) 외에 있고 벡터 연산 결과(140)를 저장하는 데이터베이스/메모리에 저장될 수 있다. 본 개시의 일부 예시적인 실시예에서, 벡터 연산 결과(140)는 벡터 데이터(120)와 동일한 저장 기기에 저장될 수 있다.
여기에 도시한 바와 같은 구성 가능 백터 연산 파라미터, 벡터 데이터, 벡터 연산 유닛 및 벡터 연산 결과의 수량은 예시를 위해 제공되는 것일 뿐, 실제 상황에 따라, 구성 가능 백터 연산 파라미터, 벡터 데이터, 벡터 연산 유닛 및 벡터 연산 결과의 수량은 변화될 수 있음을 이해하여야 한다. 본 개시의 범위는 이러한 측면에서 한정받지 않는다. 또한, 여기에 도시한 바와 같은 복합 벡터 연산과 목표 벡터 연산의 형식, 및 구성 가능 백터 연산 파라미터의 값과 유형은 예시를 위해 제공되는 것일 뿐, 실제 상황에 따라, 복합 벡터 연산과 목표 벡터 연산의 형식, 및 구성 가능 백터 연산 파라미터의 값과 유형은 변화될 수 있다. 본 개시의 범위는 이러한 측면에서 한정받지 않는다.
아래 도2 내지 도3을 참조하여 컴퓨팅 기기(130)에 의해 수행되는 벡터 연산을 구성하는 과정을 더 상세히 설명하고자 한다. 도2는 본 개시의 일부 예시적인 실시예에 따른 컴퓨팅 기기(130)에 의해 수행되는 벡터 연산을 구성하는 과정(200)의 흐름도를 도시한다. 도3은 본 개시의 일부 예시적인 실시예에 따른 컴퓨팅 기기(130)의 구조의 개략적인 블록도를 도시한다. 과정(200)은 도1의 컴퓨팅 기기(130)에 의해 구현 가능하다. 설명의 편의를 위해, 도1 및 도3을 결부하여 과정(200)을 설명하고자 한다.
과정(200)을 더욱 명확하게 설명하기 위하여, 우선 도3을 참조하여 본 개시의 일부 예시적인 실시예의 컴퓨팅 기기(130)의 내부 구조에 대해 요약하여 소개하고자 한다. 도3에서, 컴퓨팅 기기(130)는 제어기(360), 스칼라 저장 기기(350), 벡터 저장 기기(340) 및 컴퓨팅 유닛(370)을 포함한다. 제어기(360)는 핵심 제어 모듈인바, 컴퓨팅 기기(130)의 인터페이스로서 사용자와 인터랙션하여 구성 가능 백터 연산 파라미터의 정보(110) 및 기타의 사용자 명령을 획득할 수 있다. 제어기(360)는 동시에 스칼라 저장 기기(350), 벡터 저장 기기(340) 및 컴퓨팅 유닛(370)에 연결되어 스칼라 저장 기기(350), 벡터 저장 기기(340) 및 컴퓨팅 유닛(370)을 제어한다. 스칼라 저장 기기(350)는 스칼라 유형의 구성 가능 백터 연산 파라미터를 저장하고, 또한, 스칼라 저장 기기(350)는 벡터 연산 과정에서의 기타의 제어 파라미터를 보관하는바, 예를 들면 벡터 길이, 저장 유닛에서의 입력/출력 벡터의 주소 등이다. 본 개시의 일부 예시적인 실시예에서, 스칼라 저장 기기(350)는 레지스터일 수 있다. 벡터 저장 기기(340)는 벡터 유형의 구성 가능 백터 연산 파라미터 및 벡터 데이터(120)를 저장한다. 컴퓨팅 유닛(370)은 2개의 병렬되는 벡터 연산 유닛(150-1) 및 벡터 연산 유닛(150-2)(벡터 연산 유닛(150)으로 총칭할 수 있음), 각각 벡터 연산 유닛(150-1) 및 벡터 연산 유닛(150-2)에 대응되는 선택기(310-1) 및 선택기(310-2)(선택기(310)로 총칭할 수 있음), 및 스칼라/벡터 파라미터 구성 모듈(320-1) 및 스칼라/벡터 파라미터 구성 모듈(320-2)(스칼라/벡터 파라미터 구성 모듈(320)로 총칭할 수 있음)을 포함한다. 선택기(310) 및 스칼라/벡터 파라미터 구성 모듈(320)은 구성 가능 백터 연산 파라미터의 유형에 따라 구성 가능 백터 연산 파라미터의 값을 획득하여 벡터 연산 유닛(150)을 구성하는 것을 구현한다.
도3에 도시한 바와 같은 컴퓨팅 기기(130)는 설명을 위한 것일 뿐 한정적인 것이 아니며 도에서의 부품은 실제 필요에 따라 추가되거나 또는 감소될 수 있고 각 부품은 또한 임의로 조합될 수 있며 각 부품의 수량도 필요에 따라 추가되거나 감소될 수 있는바, 본 개시의 범위는 이러한 측면에서 한정받지 않음을 당업자라면 이해하여야 한다.
하기에서, 도2를 참조하여, 본 개시의 컴퓨팅 기기(130)에 의해 수행되는 벡터 연산을 구성하는 과정(200)에 대해 상세히 설명하고자 한다.
단계210에서, 컴퓨팅 기기(130)는 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)를 획득하는바, 여기서 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보(110)는 벡터 연산 유닛(150)에 의해 지원되는 복합 벡터 연산에 관련된다. 여전히 벡터 연산 유닛(150)이 복합 벡터 연산 y=A*a+B*b+C를 지원하는 경우를 예로 들어 설명하면, 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보(110)는 구성 가능 백터 연산 파라미터A, B 및 C를 지시할 수 있다. 벡터 연산 유닛(150)에 의해 지원되는 서로 다른 복합 벡터 연산에 따라, 구성 가능 백터 연산 파라미터의 정보(110)는 하나일 수도 있고 복수일 수도 있음을 이해하여야 한다. 또한, 구성 가능 백터 연산 파라미터의 정보(110)는 임의의 방식으로 획득 가능한바, 이는 사용자에 의해 입력되는 방식 또는 스크립트/구성 파일/명령 파일을 판독하는 방식을 포함하나 이에 한정되지 않는다. 또한, 구성 가능 백터 연산 파라미터의 정보(110)를 획득하는 조작은 하나 또는 복수의 단계로 완성될 수 있다.
본 개시의 일부 예시적인 실시예에서, 컴퓨팅 기기(130) 내에 있는 또는 컴퓨팅 기기(130) 외에 있는 제어기(360)(도3에 도시한 바와 같이)에 의해 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)를 획득하는 조작을 수행할 수 있는바, 예를 들면, 제어기(360)에 의해 사용자 명령어를 수신하거나 또는 스크립트/구성 파일/명령을 판독하고, 해석 조작에 의해 구성 가능 백터 연산 파라미터의 정보(110)를 획득한다.
이러한 방식에 따르면, 컴퓨팅 기기(130)는 복잡한 벡터 연산을 지원 가능하다. 또한, 컴퓨팅 기기(130)의 벡터 연산 유닛(150)이 적어도 하나의 구성 가능 백터 연산 파라미터를 지원하므로 단일한 물리 개체(physical entity)에서 복수의 목표 벡터 연산을 구현 가능하고 컴퓨팅 기기(130)의 범용성이 향상된다. 또한, 당해 방식에 따르면, 사용자는 복잡한 벡터 연산 명령어의 작성 없이 간단한 조작만으로 복잡한 벡터 연산을 구현할 수 있는바, 벡터 연산의 복잡도가 낮아진다.
본 개시의 일부 예시적인 실시예에서, 구성 가능 백터 연산 파라미터의 유형은 스칼라 유형 또는 벡터 유형일 수 있다. 예를 들면, 상술한 구성 가능 백터 연산 파라미터A 및 구성 가능 백터 연산 파라미터B는 스칼라 유형으로 구성될 수 있고 구성 가능 백터 연산 파라미터C는 벡터 유형으로 구성될 수 있다. 아래, 스칼라 유형 및 벡터 유형 파라미터를 획득하는 것에 대하여 각각 설명하고자 한다.
스칼라 유형
본 개시의 일부 예시적인 실시예에서, 스칼라 유형의 구성 가능 백터 연산 파라미터에 있어서, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)는 구성 가능 백터 연산 파라미터의 수치를 포함한다. 예를 들면, 구성 가능 백터 연산 파라미터A 및 구성 가능 백터 연산 파라미터B에 있어서, 구성 가능 백터 연산 파라미터의 정보(110)는 A=1이고 B=2임을 지시할 수 있다.
추가적으로 또는 대안적으로, 본 개시의 일부 예시적인 실시예에서, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)는, 제1 지시를 더 포함할 수 있는바, 당해 제1 지시는 구성 가능 벡터 연산 파라미터의 유형이 스칼라 유형임을 지시한다. 본 개시의 일부 예시적인 실시예에서, 당해 제1 지시는 명시적인 것일 수 있는바, 예를 들면 1비트의 정보에 의해 지시되고, 당해 비트가 '0'인 경우, 이는 당해 구성 가능 백터 연산 파라미터의 유형이 스칼라 유형임을 지시한다. 다른 일부 실시예에서, 당해 제1 지시는 암묵적인 것일 수도 있는바, 예를 들면, 구성 가능 백터 연산 파라미터의 디폴트 유형이 스칼라 유형이거나, 또는 구성 가능 백터 연산 파라미터의 값의 범위에 의해 당해 구성 가능 백터 연산 파라미터의 유형이 획득된다. 상술한 예시는 설명적이고 비한정적인 예시일 뿐, 제1 지시의 구현 형식은 이에 한정받지 않으며 본 개시의 범위는 이러한 측면에서 한정받지 않음을 이해하여야 한다.
본 개시의 일부 예시적인 실시예에서, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)가 획득된 후, 획득된 구성 가능 백터 연산 파라미터의 벡터 값을 스칼라 저장 기기(350)에 저장한다(도3에 도시한 바와 같음). 예를 들면 본 개시의 설명적인 예시에서, 제어기(360)는 구성 가능 백터 연산 파라미터가 A=1 및 B=2임을 지시하는 정보를 획득한 후, 구성 가능 백터 연산 파라미터A 및 구성 가능 백터 연산 파라미터B의 수치 '1' 및 '2'를 스칼라 저장 기기(350)에 저장한다.
벡터 유형
벡터 유형의 구성 가능 백터 연산 파라미터를 획득하는 것에 대해 구체적으로 설명하기 전에, 우선 벡터 유형 파라미터의 기본 개념을 요약하여 소개하고자 한다. 심층 학습에서의 벡터 연산에서, 오프셋의 추가는 종종 필요한 조작인바, 이때 컴퓨팅 기기(130)가 병렬로 수행되는 복수의 벡터 연산 유닛(150), 예를 들면 도1의 벡터 연산 유닛(150-1), 벡터 연산 유닛(150-2) 내지 벡터 연산 유닛(150-L), 도3의 벡터 연산 유닛(150-1) 및 벡터 연산 유닛(150-2)을 지원하는 것이 필요하다. 본 개시의 일부 예시적인 실시예에서, 벡터 유형의 구성 가능 백터 연산 파라미터의 차원은 벡터 연산 유닛(150)의 수량에 대응된다(동일하다). 예를 들면, 컴퓨팅 기기가 2개의 벡터 연산 유닛인 벡터 연산 유닛(150-1) 및 벡터 연산 유닛(150-2)을 포함하는 경우, 구성 가능 백터 연산 파라미터C는 [C1, C2]일 수 있고, 여기서 C1은 벡터 연산 유닛(150-1)에 응용되고 C2는 벡터 연산 유닛(150-2)에 응용된다. 오프셋의 추가는 단지 예시적인 응용 시나리오일 뿐, 벡터 유형의 구성 가능 백터 연산 파라미터에 적용되는 시나리오는 이에 한정되지 않는다는 것을 이해하여야 한다.
본 개시의 일부 예시적인 실시예에서, 벡터 유형의 구성 가능 백터 연산 파라미터는 미리 구성되어 벡터 저장 기기(340)에 저장될 수 있다(도3에 도시한 바와 같음). 본 개시의 일부 예시적인 실시예에서, 컴퓨팅 기기(130)는 구성 가능 백터 연산 파라미터의 벡터 값을 획득하여 이를 벡터 저장 기기(340)에 저장한 후, 구성 가능 백터 연산 파라미터의 벡터 값에 관련되는 저장 정보, 예를 들어 저장 주소를 생성한다. 컴퓨팅 기기(130)가 다양한 방식으로 구성 가능 백터 연산 파라미터의 벡터 값을 획득할 수 있다는 것을 이해하여야 하는바, 예를 들면, 벡터 저장 기기(340)는 자체의 입력/출력 인터페이스를 통해 외부 기기로부터 구성 가능 백터 연산 파라미터의 벡터 값을 판독할 수도 있고, 제어기(360)에 의해 사용자 입력 명령어를 수신하거나 또는 스크립트/구성 파일/명령 파일을 판독하는 방식으로 구성 가능 백터 연산 파라미터의 벡터 값을 획득하며, 제어기(360)에 의해 벡터 값을 벡터 저장 기기(340)에 저장할 수도 있는바, 본 개시의 범위는 이러한 측면에서 한정받지 않는다.
본 개시의 일부 예시적인 실시예에서, 구성 가능 벡터 연산 파라미터가 벡터 유형인 경우, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)는 저장 정보를 포함한다. 예를 들면, 구성 가능 백터 연산 파라미터C에 대하여 구성 가능 백터 연산 파라미터의 정보(110)는 벡터 저장 기기(340)에서의 구성 가능 백터 연산 파라미터C의 저장 정보, 예를 들면 저장 주소(&C)를 지시할 수 있다.
추가적으로 또는 대안적으로, 본 개시의 일부 예시적인 실시예에서, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)는 구성 가능 벡터 연산 파라미터의 저장 정보(예를 들면, &C)를 포함하는 외에도, 제2 지시를 더 포함하는바, 당해 제2 지시는 구성 가능 벡터 연산 파라미터의 유형이 벡터 유형임을 지시한다.
본 개시의 일부 예시적인 실시예에서, 당해 제2 지시는 명시적인 것일 수 있는바, 예를 들면 1비트의 정보를 통하여 지시하고, 당해 비트가 '1'인 경우, 당해 구성 가능 백터 연산 파라미터의 유형이 벡터 유형임을 지시한다. 다른 일부 실시예에서, 당해 제2 지시는 암묵적인 것일 수도 있는바, 예를 들면, 구성 가능 백터 연산 파라미터의 디폴트 유형이 벡터 유형이거나 또는 구성 가능 백터 연산 파라미터의 값(예를 들어, 값이 하나의 주소 유형으로 판단되는 경우)에 의해 당해 구성 가능 백터 연산 파라미터의 유형이 획득된다. 상술한 예시는 단지 설명을 위한 것일 뿐, 한정적인 예시가 아니고, 제2 지시의 구현 형식은 이에 한정받지 않으며 본 개시의 범위는 이러한 측면에서 한정받지 않음을 이해하여야 한다.
컴퓨팅 기기(130)는 구성 가능 백터 연산 파라미터를 포함하는 정보(110)에서의 구성 가능 벡터 연산 파라미터의 저장 정보에 따라 벡터 값을 획득할 수 있는바, 예를 들면 제어기(360)는 구성 가능 벡터 연산 파라미터의 저장 정보(예를 들면, &C)에 따라 벡터 저장 기기(340)로부터 구성 가능 벡터 연산 파라미터의 벡터 값(예를 들면, [C1, C2])을 판독한다.
계속하여 도2를 참조하면, 단계220에서, 컴퓨팅 기기(130)는 단계210에서 획득된 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛(150)을 구성한다. 본 개시의 일부 예시적인 실시예에서, 벡터 연산 유닛(150)을 구성할 때, 선택기(310)(도3에 도시한 바와 같이)는 구성 가능 백터 연산 파라미터의 유형에 따라 각각 스칼라 저장 기기(350) 또는 벡터 저장 기기(340)로부터 구성 가능 백터 연산 파라미터를 획득한다. 구체적으로, 구성 가능 백터 연산 파라미터가 스칼라 유형인 경우, 선택기(310)는 스칼라 저장 기기(350)로부터 구성 가능 백터 연산 파라미터의 수치를 획득하는바, 예를 들면 스칼라 저장 기기(350)로부터 A=1, B=2를 판독하고; 구성 가능 백터 연산 파라미터가 백터 유형인 경우, 선택기(310)는 벡터 저장 기기(340)로부터 구성 가능 백터 연산 파라미터의 벡터 값을 획득하는바, 예를 들면 벡터 저장 기기(340)로부터 C=[C1, C2]를 판독한다. 본 개시의 일부 예시적인 실시예에서, 선택기(310-1) 및 선택기(310-2)는 각각 복수의 파라미터 선택기를 포함할 수 있는바, 파라미터 선택기의 수량은 벡터 연산 유닛(150)에 의해 지원되는 복합 벡터 연산의 구성 가능 백터 연산 파라미터의 수량에 대응된다(동일하다). 예를 들면, 복합 벡터 연산y=A*a+B*b+C에 있어서, 선택기(310-1) 및 선택기(310-2)는 각각 3개의 파라미터 선택기를 가질 수 있고, 3개의 파라미터 선택기는 각각 구성 가능 백터 연산 파라미터A, B 및 C에 대응되는바, 이로써 구성 가능 백터 연산 파라미터A, B 및 C의 값을 획득하는 것이 구현된다.
본 개시의 일부 예시적인 실시예에서, 획득된 벡터 연산 파라미터A, B 및 C의 값은 스칼라/벡터 파라미터 구성 모듈(320)에 의해 벡터 연산 유닛에 응용될 수 있다.
본 개시의 일부 예시적인 실시예에서, 스칼라 유형의 구성 가능 백터 연산 파라미터는 복수의 벡터 연산 유닛(150) 중의 각 벡터 연산 유닛에 응용되고, 벡터 유형의 구성 가능 백터 연산 파라미터의 서로 다른 차원의 값은 복수의 벡터 연산 유닛(150) 중의 각 벡터 연산 유닛에 각각 응용된다.
여전히, 복합 벡터 연산이 y=A*a+B*b+C인 예시적인 실시예를 참조하면, 구성 가능 백터 연산 파라미터A가 스칼라 유형인 경우에 값은 '1'이고, 구성 가능 백터 연산 파라미터B가 스칼라 유형인 경우에 값은 '2'이고, 구성 가능 백터 연산 파라미터C가 벡터 유형인 경우에 값은 '[C1,C2]'인바, 여기서 C1, C2는 벡터 상수이다. 이때 벡터 연산 유닛(150-1)에 대응되는 목표 벡터 연산은 y=a+2b+C1이고, 벡터 연산 유닛(150-2)에 대응되는 목표 벡터 연산은 y=a+2b+C2이다.
상술한 방식에 따르면, 컴퓨팅 기기(130)는 복잡한 벡터 연산을 구현 가능하고 사용자는 간단한 구성으로 하나의 하드웨어기기에서 복수의 벡터 연산 포맷을 유연하게 구현할 수 있다.
아래, 도4를 참조하여 컴퓨팅 기기(130)에 의해 수행되는 벡터 연산 과정에 대해 더 상세히 설명하고자 한다. 도4는 본 개시의 일부 예시적인 실시예에 따른 컴퓨팅 기기(130)에 의해 수행되는 벡터 연산 과정(400)의 흐름도를 도시한다. 과정(400)은 도1의 컴퓨팅 기기(130)에 의해 구현 가능하다. 설명의 편의를 위해, 도1 및 도3을 결부하여 과정(400)을 설명하고자 한다.
단계410에서, 컴퓨팅 기기(130)는 연산할 벡터 데이터(120)를 획득한다. 일부 예시적인 구현 방식에서, 연산할 벡터 데이터(120)는 벡터 저장 기기(340)에 미리 캐싱될 수 있다. 이러한 조작으로, 컴퓨팅 기기(130)는 벡터 연산을 수행할 때, 외부 저장 기기와 인터랙션할 필요가 없으므로 컴퓨팅 기기(130)와 외부 기기 사이의 대역폭에 따른 수행 성능의 병목이 회피되고 벡터 연산의 수행 성능이 향상된다.
단계420에서, 컴퓨팅 기기(130)는 획득된 벡터 데이터(120)에 대하여 벡터 연산을 수행하여 벡터 연산 결과(140)를 출력한다. 예를 들면, 도3을 참조하면, 벡터 연산 유닛(150)은 벡터 저장 기기(340)로부터 벡터 데이터(120)를 판독하여 벡터 연산을 수행하는바, 벡터 연산 유닛(150)에 의해 수행되는 벡터 연산은 본 개시의 임의의 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법에 따라 구성된다.
당업자라면 알 수 있는바, 벡터 연산을 수행하는 조작은 벡터 연산을 구성하는 조작과 각각 트리거링되거나 또는 함께 트리거링될 수 있다. 예를 들면, 본 개시의 일부 예시적인 실시예에서, 벡터 연산을 수행하는 조작 및 벡터 연산을 구성하는 조작은 서로 다른 사용자 명령어에 따라 트리거링될 수 있다. 다른 일부 실시예에서, 벡터 연산을 수행하는 조작과 벡터 연산을 구성하는 조작의 사용자 명령어는 하나의 명령어로 트리거링되거나 또는 벡터 연산을 구성하는 조작 이후 벡터 연산을 수행하는 것이 자동으로 트리거링되어 수행될 수 있는바, 본 개시의 범위는 이러한 측면에서 한정받지 않는다.
상술한 방식에 따르면, 유연하게 벡터 연산을 구성하고, 벡터 연산의 수행 성능을 향상시킬 수 있다. 도5는 본 개시의 실시예에 따른 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 장치의 개략적인 블록도를 도시한다. 장치(500)는 도1의 컴퓨팅 기기(130) 내에 포함되거나 또는 컴퓨팅 기기(130)로 구현될 수 있다. 도5에 도시한 바와 같이, 장치(500)는, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)를 획득하도록 구성되는 제어기(360) - 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보(110)는 구성 가능 백터 연산 파라미터의 유형 및 값을 지시함 - ; 및 복수의 벡터 연산 유닛(150)을 포함하는 컴퓨팅 유닛(370) - 당해 컴퓨팅 유닛(370)은 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성함으로써 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되며 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산이 수행될 수 있도록 구성됨 - ; 을 포함한다.
본 개시의 일부 예시적인 실시예에서, 구성 가능 백터 연산 파라미터의 유형은 스칼라 유형 및 벡터 유형을 포함한다.
본 개시의 일부 예시적인 실시예에서, 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)는, 구성 가능 백터 연산 파라미터의 유형이 스칼라 유형임을 명시적으로 또는 암묵적으로 지시하는 제1 지시 및 구성 가능 벡터 연산 파라미터의 수치; 를 지시한다.
본 개시의 일부 예시적인 실시예에서, 장치(500)는 구성 가능 백터 연산 파라미터의 수치를 저장하도록 구성되는 스칼라 저장 기기를 더 포함하는바, 여기서 제어기는, 구성 가능 백터 연산 파라미터의 수치를 획득하고, 획득된 구성 가능 백터 연산 파라미터의 수치를 스칼라 저장 기기(350)에 저장하도록 구성된다.
본 개시의 일부 예시적인 실시예에서, 컴퓨팅 유닛(520)은, 구성 가능 백터 연산 파라미터의 수치를 획득하도록 구성되는 선택기(310); 및 선택기(310)에 의해 획득된 구성 가능 백터 연산 파라미터의 수치를 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 응용하도록 구성되는 스칼라 파라미터 구성 모듈(320); 을 포함한다.
본 개시의 일부 예시적인 실시예에서, 장치(500)는, 구성 가능 백터 연산 파라미터의 벡터 값을 저장하도록 구성되는 벡터 저장 기기(340); 및 구성 가능 백터 연산 파라미터의 벡터 값을 획득하고, 구성 가능 백터 연산 파라미터의 벡터 값을 벡터 저장 기기(340)에 저장하며, 구성 가능 백터 연산 파라미터의 벡터 값의 저장 정보를 생성하도록 구성되는 벡터 파라미터 획득 모듈 - 적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보(110)는 저장 정보를 포함함 - ; 을 더 포함한다.
본 개시의 일부 예시적인 실시예에서, 구성 가능 백터 연산 파라미터의 벡터 값의 차원은 복수의 벡터 연산 유닛의 수량에 대응된다.
본 개시의 일부 예시적인 실시예에서, 구성 가능 백터 연산 파라미터를 지시하는 정보(110)는, 구성 가능 벡터 연산 파라미터의 유형이 벡터 유형임을 명시적으로 또는 암묵적으로 지시하는 제2 지시를 더 포함한다.
본 개시의 일부 예시적인 실시예에서, 제어기는 또한, 구성 가능 벡터 연산 파라미터의 저장 정보를 획득하도록 구성되고, 연산 유닛은, 구성 가능 벡터 연산 파라미터의 저장 정보에 따라 구성 가능 백터 연산 파라미터의 벡터 값을 획득하도록 구성되는 선택기(310); 및 선택기(310)에 의해 획득된 구성 가능 백터 연산 파라미터의 벡터 값의 서로 다른 차원의 값을 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 각각 응용하도록 구성되는 벡터 파라미터 구성 모듈(320); 을 포함한다.
도6은 본 개시의 실시예에 따른 컴퓨팅 기기에 의해 수행되는 벡터 연산을 하는 장치의 개략적인 블록도를 도시한다. 장치(600)는 도1의 컴퓨팅 기기(130) 내에 포함되거나 또는 컴퓨팅 기기(130)로 구현될 수 있다. 도6에 도시한 바와 같이, 장치(600)는 컴퓨팅 유닛(370)을 포함하고 컴퓨팅 유닛(370)은 복수의 벡터 연산 유닛을 포함하며, 컴퓨팅 유닛은, 연산할 벡터 데이터를 획득하고 획득된 벡터 데이터에 대하여 복수의 벡터 연산 유닛을 동작시켜 벡터 연산이 수행되어 벡터 연산 결과가 출력되도록 구성되는바, 여기서 벡터 연산은 본 개시의 제1 측면의 방법에 따라 구성된다.
본 개시의 일부 예시적인 실시예에서, 장치(600)는, 연산할 벡터 데이터를 저장하도록 구성되는 벡터 저장 기기(340); 및 벡터 저장 기기(340)에 벡터 데이터를 캐싱하도록 구성되는 벡터 데이터 획득 모듈; 을 더 포함한다.
도7은 본 개시의 실시예를 실시 가능한 예시적인 기기(700)의 개략적인 블록도를 도시한다. 기기(700)는 도1의 컴퓨팅 기기(130)를 구현할 수 있다. 도에 도시한 바와 같이, 기기(700)는 컴퓨팅 유닛(701)를 포함하는바, 이는 판독 전용 메모리(ROM)(702)에 저장되는 컴퓨터 프로그램 명령어 또는 저장 유닛(708)으로 부터 랜덤 액세스 메모리(RAM)(703)로 로딩되는 컴퓨터 프로그램 명령어에 따라 여러 가지 적합한 동작 및 처리를 수행한다. RAM(703)에는, 기기(700) 조작에 필요한 여러 가지 프로그램 및 데이터가 저장될 수도 있다. 컴퓨팅 유닛(701), ROM(702) 및 RAM(703)은 버스(704)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(705)도 버스(704)에 연결된다.
기기(700) 내의 복수의 부품은 I/O 인터페이스(705)에 연결되는바, 입력 유닛(706), 예를 들면 키보드, 마우스 등; 출력 유닛(707), 예를 들면 여러 가지 유형의 디스플레이, 스피커 등; 저장 유닛(708), 예를 들면 자기 디스크, 광 디스크 등; 및 통신 유닛(709), 예를 들면 너트워크 카드, 모뎀, 무선 통신 송수신기 등을 포함한다. 통신 유닛(709)은 기기(700)가 인터넷과 같은 컴퓨터 네트워크 및/또는 여러 가지 전기 통신망을 통해 기타의 기기와 정보/데이터를 교환하도록 허용한다.
컴퓨팅 유닛(701)은 처리 및 컴퓨팅 능력을 가지는 여러 가지 범용의 및/또는 전용의 처리 컴포넌트일 수 있다. 컴퓨팅 유닛(701)의 일부 예시는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 여러 가지 전용의 인공 지능 (AI) 컴퓨팅 칩, 기계 학습 모델 알고리즘을 실행하는 여러 가지 컴퓨팅 유닛, 디지털 신호 프로세서(DSP) 및 임의의 적합한 프로세서, 제어기, 마이크로 제어기 등을 포함하나 이에 한정되지 않는다. 컴퓨팅 유닛(701)은 상술한 각 방법과 처리,예를 들면 과정(200)을 처리한다. 예를 들어 본 개시의 일부 예시적인 실시예에서, 과정(200)은 컴퓨터 소프트웨어 프로그램으로 구현될 수 있고, 기계 판독가능 매체, 예를 들면 저장 유닛(708)에 유형적으로(tangibly) 포함될 수 있다. 일부 실시예에서, 컴퓨터 프로그램의 일부 또는 전부가 ROM(702) 및/또는 통신 유닛(709)을 거쳐 기기(700)에 로딩되거나 및/또는 설치될 수 있다. 컴퓨터 프로그램이 RAM(703)에 로딩되어 컴퓨팅 유닛(701)에 의해 실행될 경우, 상술한 과정(200)의 하나 또는 복수의 단계가 실행될 수 있다. 대안적으로, 기타의 실시예에서, 컴퓨팅 유닛(701)는 기타의 임의의 적합한 방식으로(예를 들면 펌웨어에 의해)과정(200)을 수행하도록 구성될 수 있다.
본 명세서에서 상술한 기능은 적어도 일부가 하나 또는 복수의 하드웨어 논리 부품에 의해 수행된다. 예를 들면 비제한적으로, 사용 가능한 시범 유형의 하드웨어 논리 부품은 필드 프로그램 가능 게이트 어레이(FPGA), 주문형 집적회로(ASIC), 특정 용도 표준 제품(ASSP), 시스템-온-칩의 시스템(SOC), 복합 프로그램 가능 논리 소자(CPLD) 등을 포함한다.
본 개시의 방법을 실시하기 위한 프로그램 코드는 하나 또는 복수의 프로그래밍 언어의 임의의 조합을 적용하여 작성할 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 기타의 프로그램 가능 데이터 처리 장치의 프로세서 또는 제어기에 제공됨으로써 프로그램 코드가 프로세서 또는 제어기에 의해 실행될 경우, 흐름도 및/또는 블록도에서 규정하는 기능/조작이 실시되도록 할 수 있다. 프로그램 코드는 완전히 기계에서 실행될 수도 있고 부분적으로 기계에서 실행될 수도 있고 독립적인 소프트웨어 패키지로서 일부가 기계에서 실행되고 일부가 원격 기계에서 실행되거나 또는 완전히 원격 기계나 서버에서 실행될 수도 있다.
본 개시의 명세서에서, 기계 판독가능 매체는 유형의(tangible) 매체일 수 있고, 이는 명령어 실행 시스템, 장치 또는 기기에 의하여 사용되거나 또는 명령어 실행 시스템, 장치 또는 기기에 결합되어 사용되는 프로그램을 포함하거나 저장할 수 있다. 기계 판독가능 매체는 기계 판독가능 신호 매체 또는 기계 판독가능 저장 매체일 수 있다. 기계 판독가능 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체의 시스템, 장치 또는 기기거나 또는 상술한 내용의 임의의 적합한 조합을 포함할 수 있으나 이에 한정되지 않는다. 기계 판독가능 저장 매체의 더 구체적인 예시는 하나 또는 복수의 선에 기반하는 전기 연결, 휴대용 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 및 프로그램 가능 판독 전용 메모리(EPROM 또는 플래시 EPROM), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 기기, 자기 저장 기기 또는 상술한 내용의 임의의 적합한 조합을 포함한다.
이 외에도, 비록 특정 순서로 각 조작을 설명하였으나 이에 대하여서는, 기대하는 결과를 얻고자 이러한 조작들이 도시한 특정 순서 또는 순차적인 순서로 수행되도록 요구되거나 또는 모든 도시한 조작이 수행되도록 요구되는 것으로 이해하여야 한다. 일정한 환경에서는 멀티 태스크 및 병렬 처리가 유리할 수도 있다. 마찬가지로, 비록 상기의 설명에서 몇몇 구체적인 구현 세부 내용을 포함하나 이는 본 개시의 범위에 대한 한정으로 해석되어서는 안된다. 단일 실시예에서 설명되는 일부 특징은 단일 구현에서 조합되어 구현될 수 있다. 반대로, 단일 구현에서 설명되는 다양한 특징도 단독으로 또는 임의의 적합한 서브 조합의 방식으로 복수의 구현에서 구현될 수 있다.
비록 구조적 특징 및/또는 방법 논리 동작에 특정된 언어로 본 주제를 설명하였으나 첨부되는 특허청구범위에서 한정하는 주제는 상기에서 설명한 특정 특징 또는 동작에 한정되지 않음을 이해하여야 한다. 반대로, 상기에서 설명한 특정 특징 및 동작은 특허청구범위를 구현하는 예시 형식일 뿐이다.

Claims (26)

  1. 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법에 있어서,
    적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하는 단계 - 상기 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보는 상기 구성 가능 백터 연산 파라미터의 유형 및 값을 나타냄 - ; 및
    상기 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성함으로써, 상기 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 상기 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되며 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산이 수행될 수 있도록 하는 단계; 를 포함하고,
    구성 가능 백터 연산 파라미터가 스칼라 유형인 경우, 구성 가능 백터 연산 파라미터의 수치를 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 응용하고, 구성 가능 백터 연산 파라미터가 백터 유형인 경우, 구성 가능 백터 연산 파라미터의 벡터 값의 서로 다른 차원의 값을 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 각각 응용하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 구성 가능 백터 연산 파라미터를 지시하는 상기 정보는,
    상기 구성 가능 백터 연산 파라미터의 유형이 스칼라 유형임을 명시적으로 또는 암묵적으로 지시하는 제1 지시; 및
    상기 구성 가능 백터 연산 파라미터의 수치; 를 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  3. 제2항에 있어서,
    적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하는 단계는,
    상기 구성 가능 백터 연산 파라미터의 상기 수치를 획득하는 단계; 및
    획득된 상기 구성 가능 백터 연산 파라미터의 수치를 스칼라 저장 기기에 저장하는 단계; 를 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  4. 제2항에 있어서,
    상기 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성하는 단계는,
    선택기를 통해 상기 구성 가능 백터 연산 파라미터의 상기 수치를 획득하고, 상기 구성 가능 백터 연산 파라미터의 상기 수치를 상기 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 응용하는 단계를 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  5. 제1항에 있어서,
    상기 구성 가능 백터 연산 파라미터의 벡터 값을 획득하는 단계;
    상기 구성 가능 백터 연산 파라미터의 벡터 값을 벡터 저장 기기에 저장하는 단계; 및
    상기 구성 가능 백터 연산 파라미터의 벡터 값의 저장 정보를 생성하는 단계 - 상기 적어도 하나의 구성 가능 백터 연산 파라미터를 지시하는 상기 정보에 상기 저장 정보가 포함됨 - ; 를 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  6. 제5항에 있어서,
    상기 구성 가능 백터 연산 파라미터의 벡터 값의 차원은 상기 복수의 벡터 연산 유닛의 수량에 대응되는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  7. 제5항에 있어서,
    상기 구성 가능 백터 연산 파라미터를 지시하는 상기 정보는,
    상기 구성 가능 연산 파라미터의 유형이 벡터 유형임을 명시적으로 또는 암묵적으로 지시하는 제2 지시를 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  8. 제5항에 있어서,
    상기 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 복수의 벡터 연산 유닛을 구성하는 단계는,
    상기 구성 가능 벡터 연산 파라미터의 상기 저장 정보를 획득하는 단계; 및
    상기 구성 가능 벡터 연산 파라미터의 상기 저장 정보에 따라, 선택기를 통해 상기 구성 가능 백터 연산 파라미터의 상기 벡터 값을 획득하고, 상기 구성 가능 백터 연산 파라미터의 상기 벡터 값의 서로 다른 차원의 값을 각각 상기 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 응용하는 단계; 를 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산을 구성하는 방법.
  9. 컴퓨팅 기기에 의해 수행되는 벡터 연산 방법에 있어서,
    상기 컴퓨팅 기기는 복수의 벡터 연산 유닛을 포함하고
    상기 방법은,
    연산할 벡터 데이터를 획득하는 단계; 및
    획득된 벡터 데이터에 대하여, 상기 복수의 벡터 연산 유닛에 의해 벡터 연산을 수행하여 벡터 연산 결과를 출력하는 단계; 를 포함하고
    상기 벡터 연산은 제1항 내지 제8항 중 어느 한 항의 방법에 따라 구성되는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산 방법.
  10. 제9항에 있어서,
    상기 방법은,
    벡터 저장 기기에 벡터 데이터를 캐싱하는 단계를 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기에 의해 수행되는 벡터 연산 방법.
  11. 컴퓨팅 기기에 있어서,
    적어도 하나의 구성 가능 벡터 연산 파라미터를 지시하는 정보를 획득하도록 구성되는 제어기 - 상기 적어도 하나의 구성 가능 벡터 연산 파라미터의 정보는 상기 구성 가능 백터 연산 파라미터의 유형 및 값을 나타냄 - ; 및
    복수의 벡터 연산 유닛을 포함하는 컴퓨팅 유닛 - 상기 컴퓨팅 유닛은 상기 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 상기 복수의 벡터 연산 유닛을 구성함으로써, 상기 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 의해, 상기 구성 가능 백터 연산 파라미터의 유형 및 값에 따라 정의되며 2개 또는 더 많은 기본 벡터 연산으로 이루어지는 목표 벡터 연산이 수행될 수 있도록 구성됨 - ; 을 포함하고,
    구성 가능 백터 연산 파라미터가 스칼라 유형인 경우, 구성 가능 백터 연산 파라미터의 수치를 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 응용하고, 구성 가능 백터 연산 파라미터가 백터 유형인 경우, 구성 가능 백터 연산 파라미터의 벡터 값의 서로 다른 차원의 값을 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 각각 응용하는,
    것을 특징으로 하는 컴퓨팅 기기.
  12. 제11항에 있어서,
    상기 적어도 하나의 구성 가능 백터 연산 파라미터를 지시하는 상기 정보는,
    상기 구성 가능 벡터 연산 파라미터의 유형이 스칼라 유형임을 명시적으로 또는 암묵적으로 지시하는 제1 지시; 및
    상기 구성 가능 백터 연산 파라미터의 수치; 를 포함하는,
    것을 특징으로 하는 컴퓨팅 기기.
  13. 제12항에 있어서,
    상기 컴퓨팅 기기는,
    상기 구성 가능 백터 연산 파라미터의 상기 수치를 저장하도록 구성되는 스칼라 저장 기기를 더 포함하고,
    제어기는,
    상기 구성 가능 백터 연산 파라미터의 상기 수치를 획득하고,
    획득된 상기 구성 가능 백터 연산 파라미터의 상기 수치를 상기 스칼라 저장 기기에 저장하도록 구성되는,
    것을 특징으로 하는 컴퓨팅 기기.
  14. 제12항에 있어서,
    상기 컴퓨팅 유닛은,
    상기 구성 가능 백터 연산 파라미터의 수치를 획득하도록 구성되는 선택기; 및
    상기 선택기에 의해 획득된 상기 구성 가능 백터 연산 파라미터의 수치를 상기 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 응용하도록 구성되는 스칼라 파라미터 구성 모듈; 을 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기.
  15. 제11항에 있어서,
    상기 구성 가능 백터 연산 파라미터의 벡터 값을 저장하도록 구성되는 벡터 저장 기기; 및
    상기 구성 가능 백터 연산 파라미터의 상기 벡터 값을 획득하고, 상기 구성 가능 백터 연산 파라미터의 상기 벡터 값을 상기 벡터 저장 기기에 저장하며, 상기 구성 가능 백터 연산 파라미터의 벡터 값의 저장 정보를 생성하도록 구성되는 벡터 파라미터 획득 모듈 - 상기 적어도 하나의 구성 가능 백터 연산 파라미터를 지시하는 상기 정보에 상기 저장 정보가 포함됨 - ; 을 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기.
  16. 제15항에 있어서,
    상기 구성 가능 백터 연산 파라미터의 벡터 값의 차원은 상기 복수의 벡터 연산 유닛의 수량에 대응되는,
    것을 특징으로 하는 컴퓨팅 기기.
  17. 제15항에 있어서,
    상기 구성 가능 백터 연산 파라미터를 지시하는 상기 정보는,
    상기 구성 가능 벡터 연산 파라미터의 유형이 벡터 유형임을 명시적으로 또는 암묵적으로 지시하는 제2 지시를 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기.
  18. 제15항에 있어서,
    상기 제어기는 또한,
    상기 구성 가능 벡터 연산 파라미터의 저장 정보를 획득하도록 구성되고,
    상기 연산 유닛은,
    상기 구성 가능 벡터 연산 파라미터의 저장 정보에 따라 상기 구성 가능 백터 연산 파라미터의 벡터 값을 획득하도록 구성되는 선택기; 및
    상기 선택기에 의해 획득된 상기 구성 가능 백터 연산 파라미터의 상기 벡터 값의 서로 다른 차원의 값을 상기 복수의 벡터 연산 유닛 중의 각 벡터 연산 유닛에 각각 응용하도록 구성되는 벡터 파라미터 구성 모듈; 을 포함하는,
    것을 특징으로 하는 컴퓨팅 기기.
  19. 컴퓨팅 기기에 있어서,
    복수의 벡터 연산 유닛을 포함하는 컴퓨팅 유닛을 포함하고,
    상기 컴퓨팅 유닛은,
    연산할 벡터 데이터를 획득하고,
    획득된 벡터 데이터에 대하여, 상기 복수의 벡터 연산 유닛을 동작시켜 벡터 연산이 수행되어 벡터 연산 결과가 출력되도록 구성되고,
    상기 벡터 연산은 제1항 내지 제8항 중 어느 한 항의 방법에 따라 구성되는,
    것을 특징으로 하는 컴퓨팅 기기.
  20. 제19항에 있어서,
    상기 컴퓨팅 기기는,
    상기 연산할 벡터 데이터를 저장하도록 구성되는 벡터 저장 기기; 및
    벡터 저장 기기에 벡터 데이터를 캐싱하도록 구성되는 벡터 데이터 획득 모듈; 을 더 포함하는,
    것을 특징으로 하는 컴퓨팅 기기.
  21. 전자 기기에 있어서,
    하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램을 저장하는 저장 장치; 를 포함하고,
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제8항 중 어느 한 항의 방법을 구현하는,
    것을 특징으로 하는 전자 기기.
  22. 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독가능 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행될 경우, 제1항 내지 제8항 중 어느 한 항의 방법이 구현되는,
    것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  23. 전자 기기에 있어서,
    하나 또는 복수의 프로세서; 및
    하나 또는 복수의 프로그램을 저장하는 저장 장치; 를 포함하고
    상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제9항의 방법을 구현하는,
    것을 특징으로 하는 전자 기기.
  24. 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독가능 저장 매체에 있어서,
    상기 프로그램이 프로세서에 의해 실행될 경우, 제9항의 방법이 구현되는,
    것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  25. 삭제
  26. 삭제
KR1020200045444A 2019-07-25 2020-04-14 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체 KR102471553B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910677739.9A CN112286578A (zh) 2019-07-25 2019-07-25 由计算设备执行的方法、装置、设备和计算机可读存储介质
CN201910677739.9 2019-07-25

Publications (2)

Publication Number Publication Date
KR20210012886A KR20210012886A (ko) 2021-02-03
KR102471553B1 true KR102471553B1 (ko) 2022-11-28

Family

ID=70008361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200045444A KR102471553B1 (ko) 2019-07-25 2020-04-14 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체

Country Status (5)

Country Link
US (1) US11221851B2 (ko)
EP (1) EP3770756B1 (ko)
JP (1) JP7042870B2 (ko)
KR (1) KR102471553B1 (ko)
CN (1) CN112286578A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489506B (zh) * 2022-01-21 2024-02-27 杭州海康存储科技有限公司 存储访问控制装置、方法及存储设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189424A1 (en) * 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Tool to create a reconfigurable interconnect framework

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59114677A (ja) * 1982-12-22 1984-07-02 Hitachi Ltd ベクトル処理装置
JPH02176971A (ja) * 1988-12-28 1990-07-10 Koufu Nippon Denki Kk ベクトル演算装置
JPH04181373A (ja) * 1990-11-15 1992-06-29 Koufu Nippon Denki Kk ベクトル処理装置
JP2970512B2 (ja) * 1995-12-28 1999-11-02 日本電気株式会社 ベクトルプロセッサ
US20020133688A1 (en) * 2001-01-29 2002-09-19 Ming-Hau Lee SIMD/MIMD processing on a reconfigurable array
US20040193837A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
DE602005014636D1 (de) * 2005-08-22 2009-07-09 Panasonic Corp Dynamisch rekonfigurierbare und geteilte Vorrichtung für die Basisband-Verarbeitung
KR101259133B1 (ko) * 2009-11-11 2013-04-30 삼성중공업 주식회사 동작 중 재구성이 가능한 제어 시스템 및 그 방법
KR101699910B1 (ko) * 2010-03-04 2017-01-26 삼성전자주식회사 재구성 가능 프로세서 및 그 제어 방법
GB2489914B (en) * 2011-04-04 2019-12-18 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector operations
US10762164B2 (en) * 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
GB2553783B (en) * 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US11586907B2 (en) * 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
US10628162B2 (en) * 2018-06-19 2020-04-21 Qualcomm Incorporated Enabling parallel memory accesses by providing explicit affine instructions in vector-processor-based devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189424A1 (en) * 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Tool to create a reconfigurable interconnect framework

Also Published As

Publication number Publication date
CN112286578A (zh) 2021-01-29
JP7042870B2 (ja) 2022-03-28
JP2021022370A (ja) 2021-02-18
US11221851B2 (en) 2022-01-11
KR20210012886A (ko) 2021-02-03
US20210026630A1 (en) 2021-01-28
EP3770756A1 (en) 2021-01-27
EP3770756B1 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
JP7401171B2 (ja) 行列処理回路、システム、非一時的機械アクセス可能記憶媒体および方法
US20230251861A1 (en) Accelerating linear algebra kernels for any processor architecture
Li et al. GPU-accelerated preconditioned iterative linear solvers
CN111310910A (zh) 一种计算装置及方法
CN117349584A (zh) 实行16位浮点矩阵点积指令的系统和方法
EP3407182A1 (en) Vector computing device
KR102275561B1 (ko) 모턴 좌표 조정 프로세서, 방법, 시스템 및 명령어
KR102287677B1 (ko) 데이터 액세스 방법, 장치, 기기 및 저장 매체
KR102283947B1 (ko) 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어
US20110302394A1 (en) System and method for processing regular expressions using simd and parallel streams
CN110647291A (zh) 硬件辅助的页面调度机制
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
CN105700956A (zh) 用于处理分布式作业的方法和系统
CN111164580B (zh) 用于缓存一致性的可重构的缓存架构及方法
KR102471553B1 (ko) 컴퓨팅 기기에 의해 수행되는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체
JP2014164667A (ja) リストベクトル処理装置、リストベクトル処理方法、プログラム、コンパイラ、及び、情報処理装置
US10459703B2 (en) Systems and methods for task parallelization
US11030714B2 (en) Wide key hash table for a graphics processing unit
US20230367599A1 (en) Vector Gather with a Narrow Datapath
Ciznicki et al. Elliptic solver performance evaluation on modern hardware architectures
KR102359073B1 (ko) 저장을 관리하는 방법, 장치, 기기 및 컴퓨터 판독가능 저장 매체
Sakai et al. Towards automating multi-dimensional data decomposition for executing a single-GPU code on a multi-GPU system
CN113011577B (zh) 处理单元、处理器核、神经网络训练机及方法
US20210042111A1 (en) Efficient encoding of high fanout communications

Legal Events

Date Code Title Description
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