KR102172866B1 - 라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링 - Google Patents

라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링 Download PDF

Info

Publication number
KR102172866B1
KR102172866B1 KR1020197033797A KR20197033797A KR102172866B1 KR 102172866 B1 KR102172866 B1 KR 102172866B1 KR 1020197033797 A KR1020197033797 A KR 1020197033797A KR 20197033797 A KR20197033797 A KR 20197033797A KR 102172866 B1 KR102172866 B1 KR 102172866B1
Authority
KR
South Korea
Prior art keywords
signal processing
radio signal
functional
hardware platform
dataflow graph
Prior art date
Application number
KR1020197033797A
Other languages
English (en)
Other versions
KR20200024764A (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 KR20200024764A publication Critical patent/KR20200024764A/ko
Application granted granted Critical
Publication of KR102172866B1 publication Critical patent/KR102172866B1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W16/00Network planning, e.g. coverage or traffic planning tools; Network deployment, e.g. resource partitioning or cells structures
    • H04W16/18Network planning tools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W16/00Network planning, e.g. coverage or traffic planning tools; Network deployment, e.g. resource partitioning or cells structures
    • H04W16/22Traffic simulation tools or models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링을 위한, 컴퓨터 저장 매체들 상에 인코딩된 컴퓨터 프로그램들을 포함한, 방법들, 시스템들, 및 장치들. 예시적인 방법은 연산들을 나타내는 노드들 및 데이터 흐름들을 나타내는 유향 에지들을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 제공한다. 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 노드들 및 유향 에지들은 파티셔닝되어, 타깃 하드웨어 플랫폼의 프로세싱 유닛들 상에서 실행될 때, 특정 최적화 목적을 달성하는 소프트웨어 커널 세트를 산출한다. 타깃 하드웨어 플랫폼의 프로세싱 유닛들 상에서 연산들을 효율적으로 실행하도록 소프트웨어 커널 세트 내의 개별 소프트웨어 커널들에 대한 데이터 배치를 포함한 런타임 리소스 스케줄링이 정의된다. 타깃 하드웨어 플랫폼 내의 프로세싱 유닛들의 리소스들이 이어서 정의된 런타임 리소스 스케줄링에 따라 할당된다.

Description

라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링
관련 출원의 상호 참조
본 출원은 2017년 4월 17일자로 출원된, 미국 가출원 제62/486,198호에 대한 우선권을 주장한다. 선행 출원의 개시내용은 본 출원의 개시내용의 일부로 간주되고 본 출원의 개시내용에 참고로 포함된다.
기술 분야
본 명세서는 타깃 하드웨어 플랫폼에서 실행하기 위한 라디오 신호 프로세싱 알고리즘들을 나타내는 계산 그래프 연산들을 표현하는 것, 배치하는 것, 및 스케줄링하는 것에 관한 것이다.
타깃 하드웨어 플랫폼은 단일 프로세서 또는 네트워크 접속들, 메모리들, 또는 버스들을 사용하여 접속된 다수의 프로세서들을 갖는 컴퓨팅 디바이스들을 포함할 수 있다. 타깃 하드웨어 플랫폼은 모바일 폰, 라디오 주파수(RF) 데이터를 프로세싱하는 소프트웨어 라디오 시스템 임베디드 프로세서 또는 필드 프로그래머블 게이트 어레이, 또는 대규모 데이터 센터일 수 있다. 타깃 하드웨어 플랫폼 내의 다수의 프로세서들은 계산 그래프 연산들을 포함하는 소프트웨어 커널들을 실행한다.
예컨대, 개별 라디오 신호 프로세싱 연산들 및 특정 타깃 하드웨어 플랫폼들에 필요한 계산 리소스 사용량, 전력 사용량, 처리량, 및 에너지 사용량의 차이들이 주어지면, 소프트웨어 커널들 내에서의 연산들의 분배 및 스케줄링과 타깃 하드웨어 플랫폼 내의 컴퓨팅 디바이스들에 걸친 소프트웨어 커널들의 분배를 결정하는 것이 어려울 수 있다.
본 명세서는 타깃 하드웨어 플랫폼의 컴퓨팅 디바이스들에서의 소프트웨어 커널들에 걸친 라디오 신호 프로세싱 계산 그래프 연산들을 표현하고 동적으로 할당 및 스케줄링하기 위한 기술들을 설명한다. 이 기술들은 일반적으로 특정 계산 환경 및 최적화 목표들이 주어지면 라디오 신호 계산 그래프 연산들에 대한 최적의 실행 배치 및 스케줄링을 결정하기 위한 방법들 및 시스템들을 포함한다.
일반적으로, 본 명세서에 설명된 주제(subject matter)의 하나의 혁신적인 양태는 라디오 신호 프로세싱 데이터플로 연산들을 배치 및 스케줄링하는 액션들을 포함하는 방법들로 구체화될 수 있다. 이 양태의 다른 실시예는, 각각이 방법들의 액션들을 수행하도록 구성된, 대응하는 컴퓨터 시스템들, 장치들, 및 하나 이상의 컴퓨터 저장 디바이스 상에 기록된 컴퓨터 프로그램들을 포함한다. 하나 이상의 컴퓨터의 시스템이 특정의 동작들 또는 액션들을 수행하도록 구성된다는 것은 시스템이 동작 중에 시스템으로 하여금 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 시스템 상에 설치하였음을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정의 동작들 또는 액션들을 수행하도록 구성된다는 것은 하나 이상의 프로그램이, 데이터 프로세싱 장치에 의해 실행될 때, 장치로 하여금 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다.
전술한 및 다른 실시예들 각각은, 임의로, 이하의 특징들 중 하나 이상을, 단독으로 또는 조합하여, 포함할 수 있다. 특히, 일 실시예는 이하의 특징들 전부를, 조합하여, 포함한다.
예시적인 구현은 연산들을 나타내는 노드들 및 데이터 흐름을 나타내는 유향 에지들(directed edges)을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 제공하는 단계를 포함하고, 프리미티브 라디오 신호 프로세싱 데이터플로 그래프는 기능적 라디오 신호 프로세싱 애플리케이션을 나타낸다. 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 노드들 및 유향 에지들은 파티셔닝되어(partitioned), 타깃 하드웨어 플랫폼의 프로세싱 유닛들 상에서 실행될 때, 특정 최적화 목적을 달성하는 소프트웨어 커널 세트를 산출한다. 소프트웨어 커널 세트 내의 개별 소프트웨어 커널들에 대한 데이터 배치(data placement)를 포함한 런타임 리소스 스케줄링은 타깃 하드웨어 플랫폼의 복수의 프로세싱 유닛들 상에서 연산들을 효율적으로 실행하도록 정의된다. 타깃 하드웨어 플랫폼 내의 복수의 프로세싱 유닛들의 리소스들은 정의된 런타임 리소스 스케줄링에 따라 할당된다.
일부 구현들에서, 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 제공하기 전에, 기능적 라디오 신호 프로세싱 애플리케이션을 구축하기 위해 기능적 라디오 신호 프로세싱 텐서 블록들이 제공된다. 기능적 라디오 신호 프로세싱 텐서 블록들은 심벌로 표시된(symbolic) 라디오 텐서 표현식들 및 데이터 흐름을 나타내는 유향 에지들을 나타낸다. 특정 기능적 라디오 신호 프로세싱 애플리케이션을 나타내는, 기능적 텐서 블록들을 포함하는 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프가 획득된다. 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프는 특정 기능적 라디오 신호 프로세싱 애플리케이션의 기능에 대응하는 특정 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프에 매핑된다. 특정 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프는 이어서 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프로서 사용된다.
일부 구현들에서, 리소스 런타임 스케줄링을 정의하는 것은 소프트웨어 커널들 사이의 버퍼 크기들을 결정하는 것, 주어진 때에 각각의 소프트웨어 커널이 실행하는 데이터의 양을 결정하는 것, 소프트웨어 커널들이 실행되는 순서를 결정하는 것, 및 커널 실행들 사이에서 매번마다 버스 또는 메모리 영역을 통해 전송되는 또는 프로세서 도메인들 사이에서 이동하는 정보의 양을 결정하는 것을 추가로 포함한다.
개별 소프트웨어 커널들은 정의된 리소스 런타임 스케줄링에 따라 타깃 하드웨어 플랫폼의 프로세싱 유닛들 상에서 실행될 수 있다.
일부 구현들에서, 연산들은 타깃 하드웨어 플랫폼의 프로세싱 유닛들에 걸쳐 파이프라이닝된다(pipelined). 부가적으로 또는 대안적으로, 연산들이 병렬로 실행된다.
기능적 라디오 신호 텐서 블록들은 입력 텐서 데이터에 작용하여 출력 텐서 데이터 흐름을 산출하는 통상적으로 사용되는 라디오 신호 프로세싱 연산들을 나타낼 수 있다. 통상적으로 사용되는 라디오 신호 프로세싱 연산들은 유한 임펄스 응답 필터, 고속 푸리에 변환, 무한 임펄스 응답 필터, 디지털 발진기 및 믹서, 자동 이득 제어 기능, 동기화 알고리즘, 심벌 변조기 또는 복조기, 에러 정정 인코더 또는 디코더, GNU 라디오 기능적 연산들, 또는 Matlab 기능적 연산들 중 하나 이상을 포함할 수 있다.
일부 구현들에서, 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 노드들 및 유향 에지들을 파티셔닝하여 소프트웨어 커널 세트를 산출하는 것은 프로세싱 유닛들의 총 리소스 사용량(aggregate resource use)을 최소화하는 초기 소프트웨어 커널 세트를 예측하는 것, 초기 소프트웨어 커널 세트를 갖는 프로세싱 유닛의 리소스 사용량을 측정하는 것, 및 측정된 리소스 사용량에 기초하여 최적화 목적을 달성하는 업데이트된 소프트웨어 커널 세트를 산출하도록 파티셔닝을 변경하는 것을 포함한다. 리소스 사용량을 측정하는 것은 프로세싱 유닛들이 초기 소프트웨어 커널 세트를 실행할 때 프로세싱 유닛들의 실제 리소스 사용량을 측정하는 것을 포함할 수 있다. 리소스 사용량을 측정하는 것은 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 내로 흐르는 데이터가 변하는 동안 실제 리소스 사용량을 측정하는 것을 포함할 수 있다. 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 내로 흐르는 데이터는: 라디오 주파수 데이터, 신호들, 신호 로딩들, 또는 콘텐츠 유형들을 포함할 수 있다.
측정된 리소스 사용량에 기초하여 최적화 목적을 달성하는 것은: 최적화 목적을 총 리소스 사용량을 최소화하는 것이라고 식별하는 것; 각각의 프로세싱 유닛의 메모리 액세스 시간을 예측하는 것; 프로세싱 유닛들 사이의 통신 시간을 예측하는 것; 및 예측된 프로세싱 용량, 예측된 메모리 액세스 시간, 및 예측된 통신 시간에 기초하여 총 리소스 사용량을 최소화하는 소프트웨어 커널 세트를 산출하기 위해 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 노드들 및 유향 에지들을 반복하여 파티셔닝하는 것을 포함한다.
최적화 목적은 모든 이용가능한 프로세싱 유닛들에 걸친 프로세싱 유닛 사용량을 최대화하는 것; 프로세싱 유닛들을 통한 그래프 프로세싱의 레이턴시를 최소화하는 것; 최대 처리량을 달성하는 것; 전력 소비를 최소화하는 것; 다른 실행 중인 소프트웨어 프로세스들과의 간섭을 최소화하는 것; 또는 고정 레이트 또는 레이턴시로 실행하기 위해 프로세서, 로직 게이트, 또는 메모리 요구사항들을 최소화하는 것일 수 있다.
일부 구현들에서, 연산들을 나타내는 노드들 및 종속성들을 나타내는 유향 에지들을 포함하는 제2 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프가 획득되고, 특정 최적화 목적은 제1 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 및 제2 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 둘 다를 실행할 때 프로세싱 유닛들의 총 리소스 사용량을 최소화하는 것이라고 식별된다.
타깃 하드웨어 플랫폼의 프로세싱 유닛들은 다수의 유형들의 프로세싱 유닛들을 포함할 수 있다.
타깃 하드웨어 플랫폼의 프로세싱 유닛들에 걸쳐 연산들을 효율적으로 분산시키기 위해 개별 소프트웨어 커널들에 대한 데이터 배치를 정의하는 것은: 타깃 하드웨어 플랫폼 내의 다수의 유형들의 프로세싱 유닛들로부터 적어도 하나의 소프트웨어 커널을 실행할 최적의 프로세싱 유닛 유형을 결정하는 것; 및 결정된 최적의 프로세싱 유닛 유형의 타깃 하드웨어 플랫폼 내의 프로세싱 유닛에 대한 소프트웨어 커널 세트 내의 적어도 하나의 소프트웨어 커널의 데이터 배치를 정의하는 것을 포함할 수 있다.
기능적 라디오 신호 프로세싱 애플리케이션은: 통신 모뎀을 구현하는 것; 셀룰러 기저대역 프로세싱 태스크를 수행하는 것; 라디오 감지, 라벨링, 분석, 또는 매핑을 수행하는 것; 간섭을 제거하거나 왜곡을 보정하기 위해 라디오 신호를 프로세싱하는 것; 또는 레이더 펄스들을 송신 또는 수신하는 것을 포함할 수 있다. 셀룰러 기저대역 프로세싱 태스크를 수행하는 것은 LTE, 5G, 또는 6G 파형을 송수신(예컨대, 전송 또는 수신)하는 것을 포함할 수 있다. 라디오 감지를 수행하는 것은 위협들, 이상들(anomalies), 하드웨어 고장들, 간섭들, 또는 매핑들을 식별하기 위해 라디오 신호들을 감지하는 것을 포함할 수 있다. 기능적 라디오 신호 프로세싱 애플리케이션은 간섭 또는 왜곡이 제거된 라디오 주파수 신호를 생성하기 위해 라디오 주파수 신호를 프로세싱하는 것을 포함할 수 있다. 기능적 라디오 신호 프로세싱 애플리케이션은 펄스들을 텐서들로서 생성하기 위해 그리고 펄스 응답들을 수신하여 반사 아이템들의 속성들을 추정하기 위해 레이더 신호들을 프로세싱하는 것을 포함할 수 있다.
일부 구현들에서, 타깃 하드웨어 플랫폼은 안테나들 및 아날로그-디지털 변환기들 및 컴퓨팅 디바이스들로부터의 입력 스트림들로부터 데이터를 수신하는 모뎀들을 갖는 대규모 데이터 센터를 포함한다. 타깃 하드웨어 플랫폼은: 단일 프로세서, 동일한 유형의 다수의 프로세서들, 다수의 유형들의 코프로세서들을 갖는 공유 메모리 아키텍처, 분산 메모리 아키텍처, 또는 각각이 개별적인 메모리 아키텍처들을 갖는 멀티-프로세서들(multi-processors) 또는 멀티-멀티-프로세서들(multi-multi-processors)의 네트워크 중 적어도 하나를 포함할 수 있다.
텐서 데이터는 디지털적으로 샘플링된 동위상(In-Phase) 및 직교위상(Quadrature) 시계열 숫자들, 디지털적으로 샘플링된 음향 시계열 정보, 스펙트로그램들(spectrograms)과 같은 전력 주파수 스펙트럼 정보, 펄스 적분과 같은 레이더 데이터 큐브 프로세싱 정보, 비트들, 패킷들, 메시지들, 샘플들, 또는 값들의 벡터들을 산출할 수 있는 다른 소프트웨어의 출력과 같은 라디오 신호들을 포함할 수 있다.
일부 구현들에서, 특정 기능적 라디오 신호 프로세싱 애플리케이션을 나타내는, 기능적 텐서 블록들을 포함하는 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 획득하는 것은 사용자가 기능적 신호 프로세싱 블록들을 선택하고 기능적 신호 프로세싱 블록들을 함께 접속시켜 기능적 라디오 신호 프로세싱 애플리케이션을 형성할 수 있게 해주는 사용자 인터페이스를 제공하는 것; 및 사용자 인터페이스로부터 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프의 형태로 기능적 라디오 신호 프로세싱 애플리케이션을 수신하는 것을 포함할 수 있다.
일부 구현들에서, 파티셔닝하는 것은 반복하여 파티셔닝하는 것을 포함할 수 있다.
일부 구현들에서, 기능적 라디오 신호 텐서 블록들은 입력 텐서 데이터에 작용하여 출력 텐서 데이터 흐름을 산출하는 하나 이상의 라디오 신호 프로세싱 연산들 및 머신 러닝 연산들의 조합을 나타낼 수 있다.
다른 구현에서, 배포된(deployed) 라디오 시스템에서 수행할 기능적 라디오 신호 프로세싱 애플리케이션이 식별될 수 있다. 연산들을 나타내는 노드들 및 데이터 흐름들을 나타내는 유향 에지들을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프가 획득될 수 있다. 이 그래프는 기능적 라디오 신호 프로세싱 애플리케이션을 나타낼 수 있으며, 배포된 라디오 시스템 내의 하드웨어 플랫폼 상에서의 실행 동안 특정 최적화 목적을 달성할 수 있다. 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프는 배포된 라디오 시스템 내의 하드웨어 플랫폼 상에서 실행될 수 있다.
다른 구현은 하나 이상의 컴퓨터 및, 하나 이상의 컴퓨터 상에서 실행될 때, 하나 이상의 컴퓨터로 하여금 위의 구현들 중 임의의 것을 수행하게 하도록 동작가능한 명령어들을 저장하는 하나 이상의 저장 디바이스를 포함하는 시스템일 수 있다.
또 다른 구현은 프로세싱 디바이스에 의해 실행가능하고 그러한 실행 시에 프로세싱 디바이스로 하여금 위의 구현들 중 임의의 것을 수행하게 하는 명령어들이 저장된 하나 이상의 비일시적 컴퓨터 판독가능 저장 매체일 수 있다.
본 명세서에서 설명된 주제는 이하의 장점들 중 하나 이상을 실현하기 위해 특정의 실시예들에서 구현될 수 있다.
이 문서에 설명된 바와 같은 연산 배치 및 스케줄링 기술은 다양한 최적화 목적들을 달성하도록 최적의 실행들을 제공하기 위한 다수의 상이한 구성들을 갖는 타깃 하드웨어 플랫폼들 상에서의 실행을 위해 라디오 신호 프로세싱 연산들을 동적으로 할당 및 스케줄링할 수 있다. 그러한 최적화 목적들은, 예를 들어, 리소스 사용량을 최소화하는 것, 처리량을 최대화하는 것, 레이턴시를 최소화하는 것, 계산들을 위한 프로세싱 요소들을 최대화하는 것, 및 전력 소비를 최소화하는 것을 포함한다.
종종, 종래의 기술들은 하이 레벨(high-level) 기능적 능력들과 로우 레벨(low-level) 계산 그래프 연산들을 구별하지 않아서, 소프트웨어 커널들에 대한 차선의(sub-optimal) 매핑들을 가져온다. 예를 들어, GNU 라디오에서, 기능적 능력들은 엄격한 미리 정의된 소프트웨어 커널들에 직접 대응한다.
종래의 기술들이 라디오 신호 프로세싱 알고리즘들이 표현되는 방식 및 특정 아키텍처에 배치하기 위해 알고리즘들이 프로세싱되는 방법들에서 제한되어 있지만, 본 명세서에 설명된 연산 배치 및 스케줄링 방법들 및 시스템들은 다수의 상이한 하드웨어 플랫폼 아키텍처 구성들에 걸쳐 연산들을 효율적으로 매핑하고 스케줄링하기 위해 기능적 능력들에 걸친 연산들을 조인시키는 것(joining)에 의해 라디오 신호 프로세싱 블록 그래프들을 세분화된 라디오 신호 프로세싱 연산 그래프들로 평탄화(flatten)할 수 있다. 조인된 연산들은 이어서, 라디오 신호 프로세싱 실행을 최적화하기 위해, 타깃 하드웨어 플랫폼에, 예컨대, 저전력, 소형, 모바일 라디오 디바이스들 내에 또는 대규모 엔터프라이즈 신호 프로세싱 환경들에 배치되고 스케줄링될 수 있다. 개시된 방법들 및 시스템들은 동종(homogenous)(예컨대, 동일한 유형의 프로세서의 다수의 코어들), 또는 이종(heterogeneous)(예컨대, 어떤 메모리 및/또는 버스에 의해 접속된 상이한 유형들의 프로세서들 및 코프로세서들의 집합체) 매니 코어(many core) 및 분산 메모리 아키텍처 프로세서들, 또는 둘 다 상에서 매우 효율적인 알고리즘 합성(algorithm synthesis)을 가져오는 것에 의해 선행 기술(the state of the art)을 개선시킨다. 라디오 신호 프로세싱 알고리즘들의 효율적인 표현 및 합성, 스케줄링, 및 실행을 결과하는, 개시된 기술들은 저전력, 소형, 모바일 라디오 디바이스들에서, 그리고, 그 중에서도, 많은 프로세서들 및 많은 파형들을 갖는 대규모 엔터프라이즈 신호 프로세싱 환경들에서 주요 응용분야들을 갖는다.
라디오 신호 프로세싱 연산들의 최적의 배치 및 스케줄링을 동적으로 추정하는 것에 의해, 개시된 시스템들 및 방법들은 리소스들, 예컨대, 다양한 프로세싱 유닛들의 계산 용량들, 버퍼들의 크기들, 메모리 및 캐시 아키텍처, 프로세서 도메인들 간의 처리량의 보다 효율적인 사용, 및 종래의 라디오 신호 프로세싱 연산 배치 및 스케줄링 기술들과 비교하여 정의된 최적화 목표들을 달성할 타깃 하드웨어 플랫폼에서의 연산들의 배치 및 스케줄링을 보장한다. 타깃 하드웨어 플랫폼은, 예를 들어, 애플리케이션의 확장 능력을 제한하는 병목지점들의 완화로 인해 개시된 기술을 사용하여 최적화된 연산들을 갖는 애플리케이션에 대해 보다 높은 총 처리량(aggregate throughput) 또는 보다 낮은 레이턴시를 달성할 수 있다. 개시된 기술을 사용함으로써, 타깃 하드웨어 플랫폼은 또한, 최소의 요구된 요소 클록 속도를 낮추는 것 또는 연산들의 최적의 런타임 스케줄링에 기초하여 주어진 고정 레이트 신호 프로세싱 애플리케이션에 필요한 버퍼링의 양을 감소시키는 것에 의해서와 같이, 리소스 소비를 감소시킬 수 있다. 이 능력은 종래의 시스템들에 비해 주요 전력 절감 장점들을 제공한다.
개시된 연산 배치 및 스케줄링 방법들 및 시스템들은, 트레이닝에 의해, 하드웨어 플랫폼 능력들로부터 최적화 목표들로 최적의 배치 및 스케줄링으로의 매핑을 학습할 수 있다. 예를 들어, 이 기술들은 프로세싱 요소 용량, 메모리 액세스, 및 통신 레이턴시의 총 비용을 최소화하기 위해 연산들을 물리 디바이스들에 매핑할 수 있다.
개시된 연산 배치 및 스케줄링 방법들 및 시스템들은 또한 계산 그래프들로서 표현되는 전통적인 라디오 신호 프로세싱을 계산 그래프들로서 또한 표현되는 머신 러닝 모델들과 혼합하여 양 유형의 프로세싱을 포함하는 애플리케이션들의 효율적인 배치 및 스케줄링을 결정할 수 있다.
부가적으로, 이러한 매핑을 통해 기능적 정의로부터 하드웨어 타깃 디바이스들로의 효율적이고 자동화된 매핑을 가능하게 해줌으로써, 개시된 연산 배치 및 스케줄링 방법들 및 시스템들은 애플리케이션들 및 파형들이 타깃 하드웨어 플랫폼 아키텍처들 간에 훨씬 더 이식가능(portable)하도록 보장한다.
본 명세서의 주제의 하나 이상의 실시예의 세부사항들이 첨부 도면들 및 아래의 설명에 기재되어 있다. 이 주제의 다른 특징들, 양태들, 및 장점들은 설명, 도면들, 및 청구범위로부터 명백하게 될 것이다.
도 1은 타깃 하드웨어 플랫폼의 프로세싱 유닛들 상에 라디오 신호 연산들을 최적으로 할당 및 스케줄링하기 위한 예시적인 연산 배치 및 스케줄링 시스템을 도시하는 전체 시스템 다이어그램이다.
도 2는 예시적인 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 예시한다.
도 3a는 디지털 신호 프로세싱 태스크들로서 완전히 정의되는 예시적인 라디오 신호 프로세싱 애플리케이션을 예시한다.
도 3b는 디지털 신호 프로세싱 태스크들 및 머신 러닝 모델들 둘 다에 의해 정의되는 예시적인 라디오 신호 프로세싱 애플리케이션을 예시한다.
도 3c는 완전히 학습된 시스템으로서 정의되는 예시적인 라디오 신호 프로세싱 애플리케이션을 예시한다.
도 4는 사용자 인터페이스를 통해 기능적 데이터 텐서 블록들을 사용하여 애플리케이션을 구축하는 능력을 사용자에게 제공하는 예시적인 연산 배치 및 스케줄링 시스템을 예시한다.
도 5는 도 2에 예시된 데이터플로 그래프와 같은 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 평탄화하는 것으로부터 결과되는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 예를 예시한다.
도 6은 타깃 하드웨어 플랫폼에서 계산 그래프 연산들을 실행하기 위한 최적의 런타임 리소스 스케줄링을 결정하기 위한 예시적인 프로세스의 흐름 다이어그램을 예시한다.
도 7은 타깃 하드웨어 플랫폼의 다수의 프로세싱 유닛들에 걸친 소프트웨어 커널들의 예시적인 분포를 예시한다.
도 8a는 연산들이 텐서 차원에서 데이터에 걸쳐 어떻게 병렬화될 수 있는지를 보여주는 연산들의 런타임 스케줄링의 예를 예시한다.
도 8b는 도 8a의 병렬화된 연산들이 2배의 작업 크기들에 대해 어떻게 실행될 수 있는지를 보여주는 연산들의 런타임 스케줄링의 예를 예시한다. 도 8b가 병렬로 실행되는 연산들을 예시하지만, 일부 구현들에서, 연산들은 타깃 하드웨어 플랫폼 내의 프로세서들에 걸쳐 파이프라이닝된다.
도 9a는 최적화된 실행을 달성하기 위해 타깃 플랫폼 상에서 연산들을 효율적으로 실행하기 위해 런타임 리소스 스케줄링에 의해 리소스들 및 커널 배치들이 정의되는 예시적인 라디오 수신기 시스템을 예시한다.
도 9b는 최적화된 실행을 달성하기 위해 타깃 플랫폼 상에서 연산들을 효율적으로 실행하기 위해 런타임 리소스 스케줄링에 의해 리소스들 및 커널 배치들이 정의되는 예시적인 라디오 송신기 시스템을 예시한다.
다양한 도면들에서의 유사한 참조 번호들 및 명칭들은 유사한 요소들을 지시한다.
본 명세서는 일반적으로 기능적 라디오 신호 애플리케이션들을 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 연산들로서 표현하고, 타깃 하드웨어 플랫폼에서의 연산들 및 다른 리소스들의 최적의 실행 배치 및 스케줄링을 결정하는 연산 배치 및 스케줄링 시스템들 및 방법들을 설명한다.
연산 배치 및 스케줄링 시스템들 및 방법들은 특정 애플리케이션들을 수행하는 라디오 신호 프로세싱 시스템들을 설계 및 배포하는 데 사용될 수 있다. 하나의 예시적인 라디오 신호 프로세싱 애플리케이션은 위협들, 이상들, 하드웨어 고장들, 및/또는 간섭들을 식별하기 위해 라디오 신호들을 감지할 수 있다. 다른 예시적인 라디오 신호 프로세싱 애플리케이션은 우주 통신 시스템들, 셀룰러 통신 시스템들, 백홀 통신 시스템들, 또는 군사 메시 네트워킹 통신 시스템들을 위한 라디오 통신 모뎀들을 합성할 수 있다. 부가의 예시적인 라디오 신호 프로세싱 애플리케이션은 간섭 또는 왜곡이 제거된 RF 신호를 생성하기 위해 라디오 주파수(RF) 신호를 프로세싱할 수 있다. 라디오 신호 프로세싱 애플리케이션은 셀룰러 기저대역 프로세싱 태스크를 수행하여 LTE, 5G, 또는 6G 파형을 송수신(예컨대, 전송 또는 수신)할 수 있다. 라디오 신호 프로세싱 애플리케이션은 또한, 셀룰러 대규모 MIMO 기저대역 프로세서에서와 같이, 다수의 사용자들로의 또는 다수의 사용자들로부터의 버스트들을 변조, 전송, 수신, 결합, 또는 복구하기 위해 기지국 또는 셀 타워에 있는 하나 이상의 안테나로부터의 신호들에 대한 프로세싱을 수행할 수 있다.
연산 배치 및 스케줄링 시스템들 및 방법들은 펄스들을 생성하고, 펄스 응답들을 수신하며, 반사 아이템들의 속성들을 추정하기 위해 레이더 신호들을 프로세싱하기 위한 라디오 신호 프로세싱 시스템을 생성하는 데 사용될 수 있다. 게다가, 연산 배치 및 스케줄링 시스템들 및 방법들은 대규모 데이터 센터 프로세싱에서의 시스템들을 설계 및 배포하는 데 사용될 수 있다. 예를 들어, 라디오 프로세싱 시스템은, 각각이 안테나들 및 아날로그-디지털 변환기들로부터의 50 X 40 MHz 입력 스트림들에 걸쳐 20 MHz의 대역폭을 전송 또는 수신하는, 모뎀 복잡성에 영향을 미치는 다양한 변조들 및 인코딩들을 갖는 100개의 모뎀을 운영하는 위성 인터넷 운업자를 포함하는 데이터 센터에 설치될(installed) 수 있다. 100개의 모뎀은 GPU들을 갖는 20개의 멀티코어 컴퓨터의 네트워크 환경에 걸쳐 작동될 수 있다. 연산 배치 및 스케줄링 시스템은 컴퓨터들에 걸쳐 있는 모뎀들 상에서 애플리케이션의 최적의 배치 및 스케줄링을 추정할 수 있다.
대규모 데이터 센터 플랫폼들에 부가하여, 라디오 신호 프로세싱 기능은 하나 이상의 라디오 수신기, 하나 이상의 레이더 프로세서, 하나 이상의 라디오 송신기, 또는 다른 하드웨어 플랫폼 또는 하드웨어 플랫폼들의 조합 상에 배포될 수 있다.
도 1은 예시적인 연산 배치 및 스케줄링 시스템(100)을 예시한다. 연산 배치 및 스케줄링 시스템(100)은, 아래에서 설명되는 시스템들, 컴포넌트들, 및 기술들이 구현될 수 있는, 하나 이상의 위치에 있는 하나 이상의 컴퓨터 상의 컴퓨터 프로그램들로서 구현되는 시스템의 예이다. 연산 배치 및 스케줄링 시스템(100)은 타깃 하드웨어 플랫폼(110) 내에서 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프(102)로서 표현된 애플리케이션에 대한 계산 그래프 연산들 및 리소스들의 최적의 배치 및 스케줄링을 결정한다. 연산 배치 및 스케줄링 모델(107)은 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프(102)로서 표현된 애플리케이션 및 애플리케이션이 스케줄링되고 배포될 타깃 하드웨어 플랫폼(106)에 관한 정보를 입력으로서 취한다.
프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프(102)는 유향 에지들에 의해 접속된 노드들을 포함한다. 계산 그래프에서의 각각의 노드는 연산을 나타낸다. 노드로 들어오는 에지는 노드로의 입력, 즉 노드에 의해 표현된 연산에 대한 입력의 데이터 흐름을 나타낸다. 노드로부터 나가는 에지는 다른 노드에 의해 표현된 연산에 대한 입력으로서 사용될 노드에 의해 표현된 연산의 출력의 흐름을 나타낸다. 따라서, 그래프에서의 제1 노드를 그래프에서의 제2 노드에 접속시키는 유향 에지는 제1 노드에 의해 표현된 연산에 의해 생성된 출력이 제2 노드에 의해 표현된 연산에 대한 입력으로서 사용된다는 것을 나타낸다. 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 내로 흐르는 데이터는: 라디오 주파수 환경 데이터, 신호들, 신호 로딩들, 데이터 패킷들, 또는 다른 콘텐츠 유형들을 포함할 수 있다.
타깃 하드웨어 플랫폼(110)은 단일 프로세서; 동일한 유형의 다수의 프로세서들; 다수의 유형들의 코프로세서들, 예컨대, 그래픽 코프로세서 카드와 같은 다수의 유형들의 다수의 프로세서들을 갖는 공유 메모리 아키텍처; 뉴로모픽 프로세서(neuromorphic processor), 필드 프로그래머블 게이트 어레이와 같은 프로그래머블 로직 디바이스; 각각의 프로세서에 대한 개별적인 메모리 영역들을 갖는 프로세서들과 같은 분산 메모리 아키텍처; 또는 각각이 멀티코어 및 파티셔닝된 또는 분할된 메모리 아키텍처를 가지는 다수의 프로세서들 또는 다수의 유형들의 프로세서들의 네트워크를 포함할 수 있다. 타깃 하드웨어 플랫폼은 셀룰러 폰, 핸드헬드 전화기, 임베디드 DSP 또는 임베디드 프로세서 상의 다수의 코어들, 또는 대규모 네트워크 구성 내의 그래픽 또는 다른 텐서 코프로세서들을 갖는 많은 수의 구별되는 멀티-프로세서 컴퓨터들일 수 있다.
타깃 하드웨어 플랫폼(106)에 관한 정보는 타깃 하드웨어 플랫폼에서 이용가능한 프로세싱 유닛들, 프로세싱 유닛들의 프로세싱 능력들, 타깃 하드웨어 플랫폼에서 이용가능한 메모리를 식별해주는 데이터; 타깃 하드웨어 플랫폼 내의 프로세서들을 접속시키는 버스 또는 네트워크에 관한 데이터, 예컨대, 타깃 하드웨어 플랫폼 내의 컴퓨팅 디바이스들의 대역폭, 통신의 레이턴시, 또는 속도, 가용 에너지 또는 배터리 수명 중 하나 이상, 및 타깃 하드웨어 플랫폼(106)에 관한 다른 정보(예컨대, 그 중에서도, 하나 이상의 프로세서 또는 디지털 로직 디바이스의 하드웨어 사양들, 이용가능한 명령어들 및 능력들, 컴파일 툴체인들(compilation toolchains), 그 상에서 실행되는 다른 소프트웨어, 버스 및 인터커넥트 정보, 메모리 용량들, 입력 정보의 레이트, 입력 및 출력 정보 스트림들에 대한 정보)를 포함할 수 있다.
일부 구현들에서, 이 시스템은 부가적으로, 임의로, 그래프의 프로세싱 동안 강조되어야 하는 하나 이상의 최적화 목적을 식별해주는 최적화 입력을, 예컨대, 사용자로부터, 수신할 수 있다. 최적화 입력은 하나 이상의 최적화 목적 기능에 대한 가중치들의 지정을 통해 사용자, 디자이너, 또는 오토메이터 컨트롤러에 의해 통신될 수 있다. 이러한 가중치들은, 예를 들어, 처리량, 전력 소비, 또는 레이턴시와 같은 성능 메트릭을 추정 또는 측정할 수 있거나, 그렇지 않으면 복수의 배치 및 스케줄링 후보들에 기초할 수 있다. 이 시스템은 선택된 목적들을 그들의 가중치에 비례하여 가장 잘 달성하는 구성을 선택할 수 있다.
예를 들어, 최적화 목적은 총 리소스 사용량을 최소화하는 것일 수 있다. 이 목표는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 소프트웨어 커널 세트로 파티셔닝할 때 타깃 하드웨어 플랫폼의 총 리소스 사용량을 최소화하는 것에 의해 달성될 수 있다. 시스템(100)은 어떻게 파티셔닝할지의 결정에서 타깃 하드웨어 플랫폼의 알려진 또는 예측된 리소스 사용량 및 능력들을 사용할 수 있다. 시스템(100)은 타깃 하드웨어 플랫폼의 각각의 프로세싱 유닛의 프로세싱 능력들 및 용량, 계산 그래프를 실행할 알려진 또는 예측된 메모리 액세스 시간, 프로세싱 유닛들 사이에서 정보를 통신하는 데 요구된 알려진 또는 예측된 통신 시간, 프로세서들에 의한 컨텍스트 스위칭에 소비되는 오버헤드 시간, 및 스케줄링된 애플리케이션의 성능에 영향을 미치는 다른 시스템 거동들 및 제약조건들을 결정할 수 있다.
다른 최적화 목적들은: 모든 이용가능한 프로세싱 유닛들에 걸친 유효 프로세싱 유닛 사용량을 최대화하는 것; 프로세싱 유닛들을 통한 그래프 프로세싱의 레이턴시를 최소화하는 것; 최대 처리량을 달성하는 것; 계산 그래프를 실행하는 동안 타깃 하드웨어 플랫폼 컴퓨팅 디바이스들의 전력 소비를 최소화하는 것; 다른 소프트웨어 프로세스들이 타깃 하드웨어 플랫폼 상에서 실행되고 있는 동안 계산 그래프의 간섭을 최소화하는 것; 고정 레이트로, 데이터 처리량 레이트(data throughput rate)의 엄격한 제약조건들(예컨대, 초당 18.72 메가 샘플(MSamples/sec))을 이용하여, 또는 특정 최소 레이턴시(예컨대, 10 ms 데드라인(deadline))로 그래프를 실행하기 위해 프로세서, 로직 게이트의 리소스 소비, 또는 메모리 요구사항들을 최소화하는 것일 수 있다. 이것은, 예를 들어, 요구된 처리량 또는 레이턴시를 달성하지 못하는 복수의 스케줄링 및 배치 후보들을 명시 적으로 고려에 넣지 않고(discounting), 이어서 이 목적들에 대한 가중치들에 의해 지정된 바와 같이 최상의 리소스 사용 메트릭들을 갖는 하나 이상의 후보를 선택하는 것에 의해, 달성될 수 있다.
연산 배치 및 스케줄링 모델(107)은 타깃 하드웨어 플랫폼 상에서 실행될 때 최적화 입력에 의해 지정된 최적화 목적 또는 목적들을 달성하는 소프트웨어 커널 세트를 산출하도록 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프(102)의 노드들 및 유향 에지들을 파티셔닝하기 위해 계산 그래프(102)의 입력, 타깃 하드웨어 플랫폼 정보(106), 및 임의로 최적화 입력을 사용한다. 소프트웨어 커널들을 산출하는 것에 부가하여, 모델(107)은 소프트웨어 커널들은 물론 타깃 하드웨어 플랫폼(110) 내의 다른 리소스들에 대한 런타임 리소스 스케줄링을 결정한다. 이 프로세스는 도 6과 관련하여 아래에서 보다 상세히 설명된다.
이 시스템은 이어서 타깃 하드웨어 플랫폼(110) 상에서의 특정 라디오 신호 프로세싱 애플리케이션(102)의 최적의 실행을 위해 런타임 리소스 스케줄링 정보(108)를 타깃 하드웨어 플랫폼(110)에 제공한다. 커널들의 프로세서 할당들, 버퍼 크기들, 커널들 간의 참조들 및 위치들, 분리된 메모리 도메인들 간의 메모리 전송 명령어들, 소프트웨어 커널들에 대한 작업의 크기(예컨대, 프로세싱되는 아이템들의 개수) 및/또는 순서들 등을 포함할 수 있는, 런타임 리소스 스케줄링 정보(108)는 효율적인 매핑/실현일 수 있다. 런타임 리소스 스케줄링 정보는 컴파일된 프로그램, 추상 신택스 트리(abstract syntax tree)와 같은 중간 언어 표현은 물론, 시스템을 설명하는 메타데이터 파일들 또는 데이터 구조들, 그의 배치 및 실행의 형태로 제공될 수 있다. 타깃 하드웨어 플랫폼(110)은 이어서 텐서들의 형태의 입력 정보 데이터플로(103)를 취하고 입력(103) 상의 계산 그래프(107)를 실행하여 출력(105)을 산출할 수 있다. 텐서는, 벡터(랭크 N-1 텐서), 매트릭스(랭크 N-2 텐서), 또는 보다 높은 차원 텐서와 같은, N 차원으로 조밀하게 배열된 숫자들의 집합체를 지칭한다. 이 입력 텐서 데이터는 디지털적으로 샘플링된 동위상 및 직교위상 시계열 숫자들, 디지털적으로 샘플링된 음향 시계열 정보, 스펙트로그램들과 같은 전력 주파수 정보, 펄스 적분과 같은 레이더 데이터 큐브 프로세싱 정보, 또는 비트들, 패킷들, 메시지들, 샘플들, 또는 값들의 벡터들을 산출할 수 있는 다른 소프트웨어 프로세스들의 출력과 같은 라디오 신호들을 포함할 수 있다. 출력(105)은 타깃 하드웨어 시스템에서 입력 데이터(103)에 대해 특정 애플리케이션 그래프를 실행한 결과이다.
연산 배치 및 스케줄링 시스템(100)은 도 2에 예시된 바와 같은 기능적 텐서 블록들(202a 내지 202c)을 사용하는 라디오 신호 프로세싱 애플리케이션을 나타낸다. 각각의 기능적 텐서 블록(202a 내지 202c)은 입력 텐서 데이터(201)에 작용하여 텐서 출력(203)을 산출하는 통상적으로 사용되는 신호 프로세싱 연산을 나타낸다. 선택된 기능적 텐서 블록들(202a 내지 202c)은 함께 라디오 신호 프로세싱 애플리케이션을 구축한다. 통상적으로 사용되는 신호 프로세싱 연산들은 유한 임펄스 응답 필터, 고속 푸리에 변환, 무한 임펄스 응답 필터, 자동 이득 제어, 동기화 또는 복조 알고리즘, 에러 정정 디코딩 알고리즘, 빔 스티어링 또는 다중 안테나 결합 알고리즘, 또는 다른 하이 레벨 신호 프로세싱 연산을 포함할 수 있다. 유사한 하이 레벨 기능적 신호 프로세싱 블록들의 세트의 일 예는 GNU 라디오 애플리케이션에 대한 블록들의 집합체이다. 하이 레벨 기능적 신호 프로세싱 블록들은 Matlab 기능을 또한 나타낼 수 있다.
예를 들어, 도 3a 내지 도 3c에 예시된 바와 같이, 라디오 신호 프로세싱 애플리케이션은 샘플들을 취하고, 동기화하며, 복조하고, 디코딩하며, 패킷들 또는 비트들을 출력하는 라디오 수신기일 수 있다. 라디오 신호 프로세싱 애플리케이션(300a)은 도 3a의 예에 의해 도시된 바와 같이 디지털 신호 프로세싱 태스크들로서 완전히 정의될 수 있다.
이 예에서, 라디오 수신기는 이득 제어 알고리즘(303)과 같은 상이한 디지털 신호 프로세싱 태스크들에게 송신되는 샘플들(301)을 취한다. 이득 제어 알고리즘 이후에, 입력은 동기화 알고리즘(305)을 사용하여 동기화되고, 복조 알고리즘(307)을 사용하여 복조되며, FEC 디코드 알고리즘(309)을 사용하여 디코딩된다. 이어서, 수신기는 디코딩된 패킷들(313)을 출력한다. 이 라디오 수신기 프로세싱 애플리케이션(300a)은 도 2에 예시된 바와 같은 기능적 데이터 텐서 블록들(202)을 사용하여 표현될 수 있는 디지털 신호 프로세싱 기능을 사용하여 정의될 수 있으며, 각각의 기능적 데이터 텐서 블록은 라디오 수신기 애플리케이션 프로세스에서의 하나의 단계를 나타낸다.
유사한 라디오 수신기 프로세싱 애플리케이션은 대안적으로 도 3b에서의 예에 의해 예시된 바와 같이 디지털 신호 프로세싱 태스크들 및 머신 러닝 모델들 둘 다에 의해 정의될 수 있다. 이 예시적인 구현에서, 라디오 수신기 프로세싱 애플리케이션(300b)은 301에서 샘플들을 취하여 이들을 이득 제어 알고리즘(303) 및 동기화 알고리즘(305)에게 송신하는 라디오 수신기를 포함한다. 라디오 수신기 프로세싱 애플리케이션(300b)은 이어서 복조 및 FEC 디코딩(311)의 디지털 신호 프로세싱 태스크들을 대체하기 위해 머신 러닝 기반 매핑 기능을 사용한다. 이어서, 수신기는 디코딩된 패킷들(313)을 출력한다. 모든 부분들의 배치 및 스케줄링이 공동으로(jointly) 컴퓨팅 리소스들에 걸쳐 효율적으로 최적화되도록, 전통적인 디지털 신호 프로세싱 태스크들 및 머신 러닝 모델 둘 다가 도 2에 예시된 바와 같은 기능적 데이터 텐서 블록들(202) 및 텐서 표현식들을 사용하여 정의될 수 있다.
일부 구현들에서, 라디오 수신기 프로세싱 애플리케이션은 도 3c에서의 예에 의해 예시된 바와 같이 완전히 학습된 시스템으로서 정의될 수 있다. 이 예시적인 구현에서, 라디오 수신기 프로세싱 애플리케이션(300c)은 라디오 수신기가 301에서 샘플들을 수신하는 것, 최소 프리-프로세싱 단계(302) 및 이어서 라디오 수신을 위한 전통적인 디지털 신호 프로세싱 체인 전체를 샘플 데이터로부터 트레이닝된 근사 솔루션들로 대체하는 머신 러닝 기반 매핑 기능(312)을 포함한다. 이 예에서, 머신 러닝 기반 매핑 기능은 이어서 디코딩된 패킷들(313)을 출력한다. 애플리케이션 프로세스 전체는 도 2에 예시된 바와 같은 기능적 데이터 텐서 블록들(202) 및 텐서 표현식들을 사용하여 정의될 수 있다.
일 구현에서, 사용자는 사용자 인터페이스를 통해, 예를 들어, 기능적 블록들을 나타내는 박스들로 제시되는 것 및 박스들을 박스들로의 및 박스들로부터의 데이터 흐름들을 나타내는 화살표들을 이용하여 접속시키는 것에 의해, 기능적 데이터 텐서 블록들(202)을 사용하여 라디오 신호 프로세싱 애플리케이션을 구축할 수 있는 능력을 가질 수 있다. 도 4는 이러한 능력을 사용자에게 제공하는 예시적인 연산 배치 및 스케줄링 시스템(400)을 예시한다. 시스템(400)은 기능적 라디오 신호 프로세싱 블록 유닛들(407)을 사용자에게 제시하는 사용자 인터페이스(405)를 제공한다. 사용자는, 사용자 인터페이스(405)를 통해, 기능적 라디오 신호 프로세싱 블록들(407)을 함께 접속시켜 기능적 라디오 신호 프로세싱 애플리케이션을 형성할 수 있고, 각각의 블록을 설명하는 하이 레벨 파라미터들(예컨대, 채널 인덱스, 프리앰블 값들, 필터 탭들, 또는 다른 사양들)을 입력할 수 있다. 이러한 하이 레벨 파라미터들은 결과적인 애플리케이션에 적절하게 매핑된다. 일부 예시적인 라디오 신호 프로세싱 애플리케이션들은: 라디오 수신기(예컨대, ATSC, LTE, Wi-Fi, 블루투스, 위성, 또는 다른 유사한 라디오 통신 시스템들), 레이더 프로세서(예컨대, 펄스 생성 및 적분, 분석, 및 상태 머신 또는 최적화 기반(optimization-driven) 동적 제어 거동), 라디오 송신기 또는 수신기, 레이더 또는 감지 애플리케이션, 통신 모뎀, 또는 간섭을 제거하거나 왜곡을 보정하기 위해 라디오 신호를 프로세싱하기 위한 애플리케이션, 또는 데이터의 기초가 되는 정보(예컨대, 대응하는 객체들, 거동들, 잠재적 위협들, 디바이스 고장들 또는 이상들 등)를 추론하기 위해 라디오 주파수 샘플 데이터를 프로세싱하는 애플리케이션을 포함한다.
시스템(400)은 사용자 인터페이스(405)를 통해 사용자의 기능적 라디오 신호 프로세싱 애플리케이션을 수신한다. 기능적 라디오 신호 프로세싱 애플리케이션은 도 2에 예시된 바와 같은 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프의 형태로 되어 있을 수 있다.
기능적 라디오 신호 프로세싱 블록 데이터플로 그래프는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 산출하기 위해 매핑 유닛(410)에 의해 평탄화된 데이터플로 그래프에 매핑될 수 있는 심벌로 표시된 텐서 표현식들로 표현된다. 매핑 유닛(410)은 다수의 기능적 블록들에 걸쳐 있는 프리미티브 연산들을 결합시켜 프리미티브 연산들의 큰 그래프를 형성하는 것에 의해 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 평탄화한다. 예를 들어, 기능적 블록들은 그들의 대응하는 프리미티브 그래프 형태로 이미 저장되어 있을 수 있거나, 절차적 프로그램이 연산들의 세트를 통해 데이터플로를 트래킹하는 프로세스를 통해 프리미티브 그래프 형태로 변환될 수 있다. 매핑 유닛(410)은 이어서 기능적 라디오 신호 프로세싱 블록들(407)의 경계 에지들에 의해 형성된 장벽들에 관계없이 연산들을 조인시키고, 예를 들어, 데이터 병렬처리(data parallelism)를 활용하기 위해, 상이한 프로세싱 데이터 세트들에 대해 그래프의 부분들을 반복(replicate)할 수 있다.
도 5는, 도 2에 예시된 데이터플로 그래프와 같은, 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 평탄화하는 것으로부터 결과되는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프(500)의 예를 예시한다. 데이터플로 그래프(500)에서, 기능적 텐서 블록들(202)은 기능적 텐서 블록들(202)의 기능적 경계들에 관계없이 몇 개의 텐서 연산(512)에 매핑된다. 예를 들어, 디지털 발진기 및 믹서에 의해 정의된 튜닝 연산, 그에 뒤이은 필터링 및 데시메이션 연산은, 각각의 기능적 블록을 포함하는 프리미티브 곱셈, 덧셈 및 다른 텐서 연산들을 결합시키는 것에 의해 단일 커널로 병합될 수 있거나, 최적화 목적들 및 타깃 하드웨어 플랫폼에 대해 보다 효율적인 것으로 간주되는 경우, 이 둘이 2개 초과의 소프트웨어 커널로 분할될 수 있다. 그래프는 원래의 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프와 동일한 텐서 입력(510)을 취하여 동일한 또는 유사한 출력(513)을 출력한다.
도 4를 다시 참조하면, 시스템(400)이 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프로 일단 평탄화하면, 연산 배치 및 스케줄링 시스템(400)은 도 1의 연산 배치 및 스케줄링 시스템(100)과 유사하게 기능한다.
도 6은 타깃 하드웨어 플랫폼에서 계산 그래프 연산들을 실행하기 위한 최적의 런타임 리소스 스케줄링을 결정하기 위한 예시적인 프로세스(600)의 흐름 다이어그램을 예시한다. 프로세스(600)는 하나 이상의 위치에 위치되고 본 명세서에 따라 적절하게 프로그래밍된 하나 이상의 컴퓨터의 시스템에 의해 수행된다. 예를 들어, 적절하게 프로그래밍된 연산 배치 및 스케줄링 시스템, 예컨대, 도 1의 연산 배치 및 스케줄링 시스템(100) 또는 도 4의 연산 배치 및 스케줄링 시스템(400)은 프로세스(600)를 수행할 수 있다.
도 6에 예시된 바와 같이, 타깃 하드웨어 플랫폼에서 계산 그래프 연산들을 실행하기 위한 최적의 런타임 리소스 스케줄링을 결정하기 위해, 이 시스템은 계산 그래프 연산들을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터 그래프를 제공한다(602). 일부 구현들에서, 위에서 설명된 바와 같이, 사용자는 하이 레벨 기능적 텐서 블록 그래프를 사용하여 라디오 신호 프로세싱 애플리케이션을 표현한다. 이 시스템은 그래프 연산 실행을 최적화하기 위해 하이 레벨 그래프를 로우 레벨 프리미티브 그래프로 평탄화한다. 이 시스템은 이어서 프리미티브 신호 프로세싱 계산 데이터플로 그래프를 파티셔닝하여 소프트웨어 커널 세트를 산출한다. 이 시스템은 소프트웨어 커널들을 어떻게 파티셔닝할지에 관한 초기 예측을 행한다. 이 시스템은 연산 병렬처리를 달성하기 위해 그래프에서의 연산들 및 그들의 에지들 둘 다를 세분한다(subdivides). 일부 경우들에서, 이 시스템은 또한, 예를 들어, 대응하는 서브그래프 영역들(subgraph regions)의 처리량이 주변 영역들보다 낮을 때, 부가의 병렬처리를 또한 달성하기 위해 상이한 데이터 세트들에 대해 동작하도록 다수의 프로세서들 상에서 그래프의 부분들을 반복할 수 있다. 이 시스템은 데이터 병렬처리 및 보다 효율적인 실행을 제공하기 위해 각각의 에지를 통과(traverse)해야 하는 데이터의 양을 또한 결정한다.
도 7은 타깃 하드웨어 플랫폼의 다수의 프로세싱 유닛들에 걸친 소프트웨어 커널들의 예시적인 분포를 예시한다. 이 예에서, 이 시스템은 프로세서 A, 예컨대, 프로세서 A1(740a)의 하나의 코어를 할당하여 커널 1(722a)을 실행한다. 프로세서 B는 소프트웨어 커널 커널 2(722b)를 프로세싱하는 다수의 코어들(760a 내지 760n)을 가질 수 있는 반면, 프로세서 A의 부가의 코어들(예컨대, 프로세서 코어들(780a 내지 780n))은 소프트웨어 커널 커널 3(722c)을 프로세싱한다.
도 6의 프로세스를 다시 참조하면, 이 시스템은 적어도 하나의 식별된 최적화 목적을 달성하는, 타깃 하드웨어 플랫폼 상에서 실행할 소프트웨어 커널들 및 매핑들의 최적의 세트를 결정하기 위해 프리미티브 신호 프로세싱 계산 데이터플로 그래프를 반복하여 파티셔닝할 수 있다(604).
최적의 파티셔닝을 결정하기 위해, 이 시스템은 초기 소프트웨어 커널 세트가 실행될 때 타깃 하드웨어 플랫폼 내의 프로세싱 유닛들의 리소스 사용량을 측정할 수 있다. 측정된 리소스 사용량은 실제 실행, 예측된 실행, 또는 시뮬레이션된 실행으로부터의 것일 수 있다. 실제 실행의 경우에, 타깃 하드웨어 플랫폼으로부터의 및 그래프의 실행으로부터의 정보 및 그의 측정된 상세한 성능 메트릭들이 연산 배치 및 스케줄링 모델에 피드백되어 이 모델이 소프트웨어 커널 실행의 효율성을 평가할 수 있다. 이 시스템은 이어서, 측정된 리소스 사용량이 주어지면, 초기 소프트웨어 커널 세트보다 적어도 하나의 최적화 목적을 더 잘 달성하는 업데이트된 소프트웨어 커널 세트를 산출하기 위해 파티셔닝을 반복하여 변경할 수 있다. 일부 구현들에서, 이 시스템은 파티셔닝을 개선시키기 위해 스케줄링 측정 정보를 사용한다. 부가적으로 또는 대안적으로, 이 시스템은 파티셔닝을 개선시키기 위해 상이한 프로세서들 및/또는 아키텍처에 대한 매핑을 사용할 수 있다.
이러한 반복적인 실행은 성능을 개선시킬 수 있는데, 예를 들어, 그 이유는, 특히 들어오는 정보 스트림의 속성들, 품질 및 콘텐츠(예컨대, 그 중에서도, 높은 대 낮은 신호대 잡음비, 유휴 또는 완전 로딩된(fully loaded) 통신 신호들, 다양한 샘플 레이트들, 다양한 채널 손상 복잡도)에 의존하는 동적 부하(dynamic load) 하에서, 대규모 매니-프로세서(many-processor) 소프트웨어 시스템들의 정확한 성능을 결정하기가 어려울 수 있기 때문이다.
예를 들어, 이 시스템은 타깃 하드웨어 플랫폼 내의 프로세싱 유닛들의 총 리소스 사용량을 최소화하는 초기 소프트웨어 커널 세트를 예측할 수 있다. 이 시스템은 이어서 초기 소프트웨어 커널 세트를 실행하는 프로세싱 유닛들의 예측된, 시뮬레이션된, 또는 실제 리소스 사용량을 측정할 수 있다. 이 시스템은 이어서 최적화 목적들을 보다 잘 달성하는 업데이트된 소프트웨어 커널 세트를 산출하기 위해 소프트웨어 커널들의 파티셔닝을 변경할 수 있다.
일부 구현들에서, 초기 소프트웨어 커널 세트 또는 업데이트된 소프트웨어 커널 세트를 식별하기 위해, 이 시스템은 계산, 메모리, 및 통신 하드웨어 비용들에 대한 모델들을 포함하는 예측 및 통계 모델들을 사용한다. 부가적으로 또는 대안적으로, 이 시스템은 하나 이상의 머신 러닝 모델을 사용할 수 있다.
머신 러닝 모델은 신경 네트워크, 베이지안 추론 모델, 또는 확률적 회귀 또는 분류 기술(예컨대, ARMA(autoregressive and moving average) 모델, SVM(support vector machine) 등)과 같은 다른 형태의 모델일 수 있다. 신경 네트워크들은 그의 입력에 대한 출력, 예컨대, 하나 이상의 분류 또는 회귀를 생성하기 위해 하나 이상의 뉴런 계층을 이용하는 머신 러닝 모델들이다. 신경 네트워크들은 출력 계층에 부가하여 하나 이상의 은닉 계층(hidden layers)을 포함할 수 있다. 각각의 은닉 계층의 출력은 네트워크에서의 다음 계층, 즉 다음 은닉 계층 또는 출력 계층에 대한 입력으로서 사용될 사용될 수 있고, 접속들은 또한 계층들을 바이패스할 수 있거나, 또는 순환적인(recurrent) 네트워크 유닛에서의 경우와 같이 동일한 계층 내로 복귀할 수 있다. 신경 네트워크의 각각의 계층은 네트워크 아키텍처 및 계층에 대한 각자의 파라미터 세트에 따라 그의 입력들로부터 출력을 생성한다.
머신 러닝 모델들은 시뮬레이션된 데이터로 또는 라디오 신호 프로세싱 애플리케이션을 나타내는 계산 그래프가 배포될 실제 타깃 하드웨어로 트레이닝될 수 있거나, 가중치들 또는 파라미터들을 조정하기 위한 피드백으로서 사용될 수 있는, 그들의 출력에 대한 적합성 메트릭(goodness metric)에 기초하여 동작 중인 동안 튜닝될 수 있다.
소프트웨어 커널 파티셔닝을 결정하는 것에 부가하여, 이 시스템은 타깃 하드웨어 플랫폼(606) 상에서 연산들을 효율적으로 실행하도록 런타임 리소스 스케줄링을 정의한다. 런타임 리소스 스케줄링을 정의하는 것은 타깃 하드웨어 플랫폼의 프로세싱 유닛들에 걸친 개별 소프트웨어 커널들에 대한 데이터 배치를 결정하는 것을 포함한다. 소프트웨어 커널들에 대한 배치를 결정하는 것에 부가하여, 이 시스템은 또한 커널들 간의 버퍼 크기들을 결정하고, 주어진 때에 각각의 소프트웨어 커널이 실행해야 하는 데이터의 양을 결정하며, 소프트웨어 커널들이 실행되어야 하는 순서, 또는 커널 실행들 간에 매번마다 버스 또는 메모리 영역을 통해 전송되어야 하는 또는 프로세서 도메인들 간에 이동하는 정보의 양을 결정할 수 있다. 런타임 스케줄링은 또한 스레드간(inter-thread) 통신을 위한 메모리 기입들이 얼마나 클 것인지, 스레드간 통신 사이의 프로세싱 시간이 얼마나 오래 걸릴 것인지, 및 캐시들이 얼마나 잘 작동할 것인지를 결정할 수 있다.
이러한 런타임 리소스 스케줄링은 커널 배치를 결정하는 데 사용되는 것들과 동일하거나 유사한 모델들을 사용하여 결정될 수 있다. 모델들은 최적의 스케줄링 및 리소스 할당 및 사용량을 예측하는 예측 및 통계 모델들 또는 머신 러닝 모델들일 수 있다. 부가적으로 또는 대안적으로, 모델들은 이전의 실행 정보에 기초한 성능의 측정에 기초할 수 있다. 이 모델들은 일반적으로 상이한 배치 및 실행 스케줄링 구성들의 성능을 예측하여, 복수의 후보들 중에서, 최적의 구성에 대한 최상의 추정치의 선택을 가능하게 해줄 수 있다. 반복 시에, 추정 및 측정에서 신뢰도를 증가시키는 것을 통해 이러한 추정치들의 정확도가 세분화될(refined) 수 있다.
도 8a 및 도 8b는 연산들이 텐서 차원에서 데이터에 걸쳐 어떻게 병렬화될 수 있는지를 보여주는 연산들의 런타임 스케줄링의 예들을 예시한다. 도 8a 및 도 8b에서 연산(804a1 및 804a2)에 의해 도시된 바와 같이, 연산들이 내부 상태를 갖지 않는 한, 연산들이 텐서 차원에서 데이터에 걸쳐 병렬화될 수 있다. 도 8a의 예시적인 런타임 스케줄링(800a)은 제1 입력 정보가 제1 텐서 차원에서 16개의 아이템을 포함하는 것을 도시한다. 연산 배치 및 스케줄링 시스템은 이 제1 차원에서 16개의 요소를 사용하여 연산 A(802a)의 실행을 예측 또는 시뮬레이션할 수 있다. 연산 B(804a)는 이 제1 차원에서 데이터에 걸쳐, 요소들의 절반이 연산 B(804a1)의 하나의 인스턴스화에 주어지고 요소들의 나머지 절반이 연산 B(804a2)의 제2 인스턴스화에 보내지는 것으로, 병렬화될 수 있다. 연산 B의 병렬화된 실행들로부터의 출력들은 연산 C(806a)로 보내지고, 여기서 연산 C는 제1 텐서 차원의 16개의 요소 전부 상에서 실행되고 결과적인 텐서가 출력된다.
도 8b는 2배의 작업 크기에 대한 도 8a의 연산들을 도시한다. 연산들이 한 번에 16개의 요소 상에서 실행되는 대신에, 연산들이 32개의 요소 상에서 실행된다. 도 8b의 예시적인 런타임 스케줄링(800b)은 제1 입력 정보가 제1 텐서 차원에서 32개의 아이템을 포함하는 것을 도시한다. 연산 배치 및 스케줄링 시스템은 이 제1 차원에서 32개의 요소를 사용하여 연산 A(802b)의 실행을 예측 또는 시뮬레이션할 수 있다. 연산 B(804b)는 이 제1 차원에서 데이터에 걸쳐, 요소들의 절반이 연산 B(804b1)의 하나의 인스턴스화에 주어지고 요소들의 나머지 절반이 연산 B(804b2)의 제2 인스턴스화에 보내지는 것으로, 병렬화될 수 있다. 연산 B의 병렬화된 실행들로부터의 출력들은 연산 C(806b)로 보내지고, 여기서 연산 C는 제1 텐서 차원의 32개의 요소 전부 상에서 실행되고 결과적인 텐서가 출력된다.
머신 러닝 또는 예측 및 통계 모델들 또는 둘 다의 조합을 사용하는, 이 시스템은 보다 긴 커널 실행들(kernel runs) 및 보다 큰 I/O 크기들을 요구하는 도 8b의 런타임 스케줄(800b)의 리소스 사용량이 실행당 작업의 절반을 수행하는 도 8a의 런타임 스케줄(800a)보다 런타임 시에 더 효율적인 성능을 결과하는지 여부를 결정한다. 이 시스템은 이어서 타깃 하드웨어 플랫폼에게 송신할 가장 효율적인 런타임 리소스 스케줄링을 선택한다.
효율적인 런타임 스케줄링을 정의하기 위해, 이 시스템은 또한 타깃 하드웨어 플랫폼 상에서 실행되고 있거나 타깃 시스템에 의해 동시에 실행될 다른 프로세스들을 고려할 수 있다. 일 구현에서, 다른 프로세스는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프로서 또한 나타내어지는 제2 애플리케이션일 수 있다. 이 경우에, 이 시스템은 양쪽 계산 데이터플로 그래프들이 타깃 시스템에서 실행되고 있을 때 특정된 최적화 목적들을 달성하는 양쪽 계산 데이터플로 그래프들에 대한 특정 런타임 스케줄링을 식별할 수 있다. 다른 경우들에서, 유사한 데이터플로 그래프로부터 명시적으로 도출되지 않은 소프트웨어는 계산 데이터플로 그래프와 공유되는 코어 상에서 실행되거나, 데이터플로 그래프 배치 알고리즘으로부터 배제된 코어 상에서 별개로 실행될 수 있다.
다른 구현에서, 이 시스템은 타깃 시스템 상에서 실행되고 있는 다른 프로세스 또는 프로세스들 및 사용되고 있는 리소스들만을 인식할 수 있다. 예를 들어, 타깃 시스템이 중단될(disrupted) 수 없는 고 우선순위 시스템 태스크를 실행하고 있을 수 있다. 연산 배치 및 스케줄링 시스템은 계산 그래프에 대한 런타임 리소스 스케줄링 및 배치를 결정할 때 리소스 이용가능성 및 사용량을 고려할 수 있다.
일부 구현들에서, 런타임 스케줄링을 정의하는 것은 소프트웨어 커널로부터의 연산들을 실행할 최적의 프로세싱 유닛 유형을 결정하는 것 및 소프트웨어 커널을 최적의 프로세싱 유형의 적어도 하나의 프로세싱 유닛에 할당하는 것을 포함한다. 예를 들어, CPU, GPU, DSP, 텐서 또는 벡터 수학 연산 코프로세서, 다른 뉴로모픽 프로세서 및/또는 FPGA에 걸쳐 계산 그래프들을 할당할 때, 그래프는 FPGA 상에서의 초기 고속 연산들, CPU 상에서의 부가의 하위 복잡도 연산들, 및 GPU 상에서의 상위 복잡도 연산들로 파티셔닝될 수 있다. FPGA가 이용가능하지 않은 일부 경우들에서, 고 처리량 및 고 복잡도 연산들은 GPU 상에 스케줄링될 수 있는 반면, 외부 인터페이스들 또는 변환들, 또는 하위 복잡도 연산들은 CPU 상에 배치될 수 있다. 일부 경우들에서, CPU만이 이용가능한 경우, 모든 유닛들이 그 상에 스케줄링될 수 있다. 이러한 배치 최적화는, 각각의 계산 플랫폼 상에서 이용가능한 리소스들을 고려하여, 이전에 설명된 바와 같은 후보 배치 및 실행 후보들에 대한 예측된 성능 메트릭들을 사용하여 행해진다.
도 6을 다시 참조하면, 타깃 하드웨어 플랫폼 상에서 연산들을 효율적으로 실행하도록 런타임 리소스 스케줄링을 정의한 후에, 프로세스(600)는 정의된 런타임 리소스 스케줄링(608)에 따라 타깃 하드웨어 플랫폼에서의 리소스들을 할당한다.
도 9a 및 도 9b는 최적화된 실행을 달성하기 위해 타깃 플랫폼 상에서 연산들을 효율적으로 실행하기 위해 런타임 리소스 스케줄링에 의해 리소스들 및 커널 배치들이 정의되는 예시적인 시스템들을 예시한다. 도 9a는 예시적인 텐서 데이터플로 기반 라디오 수신기 시스템(900a)을 예시하고 도 9b는 예시적인 텐서 데이터플로 기반 라디오 송신기 시스템(900b)을 예시한다. 이러한 시스템들 둘 다는 위에서 설명된 프로세스(600)를 사용하여 생성될 수 있다.
일부 구현들에서, 이 시스템은 시뮬레이션된 또는 예측된 데이터 및 특정 계산 그래프만을 사용하여 특정 타깃 하드웨어 구현에 대한 런타임 리소스 스케줄링 정보를 결정할 수 있다. 이 시스템은 다른 런타임 스케줄링 정보와 함께 그래프에 대한 고정된 구성을 결정하고, 실행을 위해, 고정된 구성을 특정 잠금된(locked down) 하드웨어 구성, 예컨대, 모바일 폰 기저대역 프로세서 또는 DSP에 제공할 수 있다.
다른 구현들에서, 이 시스템은 다른 런타임 스케줄링 정보와 함께 그래프에 대한 올바른 구성을 결정하기 위해 타깃 하드웨어 플랫폼 상에서 실행될 필요가 있다. 예를 들어, 타깃 하드웨어 플랫폼에 대한 계산 그래프의 구성을 올바르게 결정하기 위해 이 시스템은 상이한 입력 샘플 레이트들로 실행하거나 상이한 변조들을 사용할 필요가 있을 수 있다.
본 명세서에 설명된 주제 및 기능적 연산들의 실시예들은 디지털 전자 회로부로, 유형적으로 구체화된 컴퓨터 소프트웨어 또는 펌웨어로, 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함한, 컴퓨터 하드웨어로, 또는 이들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에 설명된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉, 데이터 프로세싱 장치에 의해 실행하기 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한, 유형적(tangible) 비일시적 저장 매체 상에 인코딩된, 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 저장 매체는 머신 판독가능 저장 디바이스, 머신 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다. 대안적으로 또는 그에 부가하여, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위해 적당한 수신기 장치로의 전송을 위한 정보를 인코딩하기 위해 생성되는 인위적으로 생성된 전파 신호(propagated signal), 예컨대, 머신 생성(machine-generated) 전기, 광학, 또는 전자기 신호 상에 인코딩될 수 있다.
용어 “데이터 프로세싱 장치"는 데이터 프로세싱 하드웨어를 지칭하고, 예로서, 프로그래밍가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한, 데이터를 프로세싱하기 위한 모든 종류의 장치들, 디바이스들, 및 머신들을 포괄한다. 이 장치는 또한 특수 목적 로직 회로부, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)일 수 있거나 이들을 추가로 포함할 수 있다. 이 장치는, 하드웨어에 부가하여, 컴퓨터 프로그램들에 대한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 임의로 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 스크립트, 또는 코드라고도 지칭될 수 있거나 서술될 수 있는, 컴퓨터 프로그램은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들, 또는 선언적(declarative) 또는 절차적(procedural) 언어들을 포함한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고; 컴퓨터 프로그램은, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 사용하기에 적당한 다른 유닛(unit)으로서를 포함한, 임의의 형태로 배포될 수 있다. 프로그램이 파일 시스템에서의 파일에 대응할 수 있지만 그럴 필요는 없다. 프로그램은 다른 프로그램들 또는 데이터, 예컨대, 마크업 언어 문서에 저장된 하나 이상의 스크립트를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files), 예컨대, 하나 이상의 모듈, 서브 프로그램(sub programs), 또는 코드 부분(portions of code)을 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치되거나 다수의 사이트들에 걸쳐 분산되고 데이터 통신 네트워크에 의해 상호접속되는 다수의 컴퓨터들 상에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스들 및 로직 흐름들은 입력 데이터를 조작하여 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능 컴퓨터에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 특수 목적 로직 회로부, 예컨대, FPGA 또는 ASIC에 의해, 또는 특수 목적 로직 회로부와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 또한 수행될 수 있다.
컴퓨터 프로그램의 실행에 적당한 컴퓨터들은 범용 또는 특수 목적 마이크로프로세서들 또는 둘 다, 또는 임의의 다른 종류의 중앙 프로세싱 유닛에 기초할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행 또는 실행하기 위한 중앙 프로세싱 유닛 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 중앙 프로세싱 유닛 및 메모리는 특수 목적 로직 회로부에 의해 보완되거나 그에 통합될 수 있다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예컨대, 자기, 자기 광학 디스크들, 또는 광학 디스크들을 포함하거나, 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 동작가능하게 커플링되거나, 둘 다일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 더욱이, 컴퓨터는, 몇 가지 예를 들면, 다른 디바이스, 예컨대, 모바일 전화, PDA(personal digital assistant), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기, 또는 휴대용 저장 디바이스, 예컨대, USB(universal serial bus) 플래시 드라이브에 임베딩될 수 있다.
컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적당한 컴퓨터 판독가능 매체들은, 예로서, 반도체 메모리 디바이스들, 예컨대, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대, 내장형 하드 디스크들 또는 이동식 디스크들; 자기 광학 디스크들; 그리고 CD ROM 및 DVD-ROM 디스크들을 포함한, 모든 형태들의 비휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 주제의 실시예들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터 및 사용자가 컴퓨터에 입력을 제공할 수 있는 포인팅 디바이스, 예컨대, 키보드 및 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스들도 사용될 수 있고; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각적 피드백, 예컨대, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있으며; 사용자로부터의 입력은, 음향, 음성, 또는 촉각적 입력을 포함한, 임의의 형태로 수신될 수 있다. 그에 부가하여, 컴퓨터는 사용자에 의해 사용되는 디바이스에게 문서들을 송신하고 그로부터 문서들을 수신하는 것에 의해; 예를 들어, 웹 브라우저로부터 수신된 요청들에 응답하여 웹 페이지들을 사용자의 디바이스 상의 웹 브라우저에게 송신하는 것에 의해 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지 또는 다른 형태들의 메시지를 개인 디바이스, 예컨대, 메시징 애플리케이션을 실행하는 스마트폰으로 송신하고 그에 응답하여 사용자로부터 응답 메시지들을 수신하는 것에 의해 사용자와 상호작용할 수 있다.
본 명세서에 설명된 주제의 실시예들은, 예컨대, 데이터 서버인, 백 엔드 컴포넌트(back end component)를 포함하거나, 또는 미들웨어 컴포넌트, 예컨대, 애플리케이션 서버를 포함하거나, 또는 프런트 엔드 컴포넌트, 예컨대, 사용자가 본 명세서에 설명된 주제의 구현과 상호작용할 수 있는 그래픽 사용자 인터페이스, 웹 브라우저, 또는 앱을 갖는 클라이언트 컴퓨터, 또는 하나 이상의 그러한 백 엔드, 미들웨어, 또는 프런트 엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터 통신, 예컨대, 통신 네트워크에 의해 상호접속될 수 있다. 통신 네트워크들의 예들은 LAN(local area network) 및 WAN(wide area network), 예컨대, 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있고 전형적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 각자의 컴퓨터들 상에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 생긴다. 일부 실시예들에서, 서버는, 예컨대, 클라이언트로서 기능하는, 디바이스와 상호작용하는 사용자에게 데이터를 디스플레이하고 그 사용자로부터 사용자 입력을 수신하는 목적들을 위해, 데이터, 예컨대, HTML 페이지를 사용자 디바이스에게 전송한다. 사용자 디바이스에서 생성된 데이터, 예컨대, 사용자 상호작용의 결과는 그 디바이스로부터 서버에 수신될 수 있다.
본 명세서가 많은 특정 구현 세부사항들을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되어서는 안되며, 오히려 특정의 발명들의 특정의 실시예들에 특정적일 수 있는 특징들에 대한 설명들로서 해석되어야 한다. 개별적인 실시예들의 맥락에서 본 명세서에 설명되는 특정한 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에 개별적으로 또는 임의의 적당한 서브콤비네이션(subcombination)으로 구현될 수 있다. 더욱이, 특징들이 특정한 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우들에서 그 조합으로부터 제거될 수 있고, 청구된 조합은 서브콤비네이션 또는 서브콤비네이션의 변형에 관한 것일 수 있다.
이와 유사하게, 연산들이 도면들에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 연산들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 연산들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안된다. 특정한 상황들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 더욱이, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트들 및 시스템들이 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다는 것이 이해되어야 한다.
주제의 특정의 실시예들이 설명되었다. 다른 실시예들이 이하의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에서 열거된 액션들은 상이한 순서로 수행될 수 있고 바람직한 결과들을 여전히 달성할 수 있다. 일 예로서, 첨부 도면들에 묘사된 프로세스들은, 바람직한 결과들을 달성하기 위해, 도시된 특정의 순서 또는 순차적 순서를 반드시 요구하지는 않는다. 일부 경우들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.

Claims (30)

  1. 하나 이상의 컴퓨팅 디바이스에 의해 수행되는 방법으로서,
    기능적 라디오 신호 프로세싱 애플리케이션을 구축하기 위해 기능적 라디오 신호 프로세싱 텐서 블록들을 제공하는 단계 - 상기 기능적 라디오 신호 프로세싱 텐서 블록들은 심벌로 표시된(symbolic) 라디오 텐서 표현식들 및 데이터 흐름을 나타내는 유향 에지들(directed edges)을 나타냄 -;
    특정 기능적 라디오 신호 프로세싱 애플리케이션을 나타내는, 기능적 텐서 블록들을 포함하는 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 획득하는 단계;
    상기 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를, 상기 특정 기능적 라디오 신호 프로세싱 애플리케이션의 기능에 대응하는 특정 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프에 매핑하는 단계;
    상기 특정 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 연산들을 나타내는 노드들 및 데이터 흐름을 나타내는 유향 에지들을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프로서 제공하는 단계 - 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프는 기능적 라디오 신호 프로세싱 애플리케이션을 나타냄 -;
    상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 상기 노드들 및 유향 에지들을 파티셔닝하여, 타깃 하드웨어 플랫폼의 복수의 프로세싱 유닛들 상에서 실행될 때, 특정 최적화 목적을 달성하는 커널 세트를 산출하는 단계;
    상기 타깃 하드웨어 플랫폼의 상기 복수의 프로세싱 유닛들 상에서 연산들을 효율적으로 실행하도록 상기 커널 세트 내의 개별 커널들에 대한 데이터 배치(data placement)를 포함한 런타임 리소스 스케줄링을 정의하는 단계; 및
    상기 타깃 하드웨어 플랫폼 내의 상기 복수의 프로세싱 유닛들의 리소스들을 상기 정의된 런타임 리소스 스케줄링에 따라 할당하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 리소스 런타임 스케줄링을 정의하는 단계는 커널들 사이의 버퍼 크기들을 결정하는 단계, 주어진 때에 각각의 커널이 실행하는 데이터의 양을 결정하는 단계, 상기 커널들이 실행되는 순서를 결정하는 단계, 또는 커널 실행들 사이에서 매번마다 버스 또는 메모리 영역을 통해 전송되는 또는 프로세서 도메인들 사이에서 이동하는 정보의 양을 결정하는 단계를 추가로 포함하는 방법.
  3. 제1항에 있어서,
    상기 개별 커널들을 상기 정의된 리소스 런타임 스케줄링에 따라 상기 타깃 하드웨어 플랫폼의 상기 프로세싱 유닛들 상에서 실행하는 단계를 추가로 포함하는 방법.
  4. 제3항에 있어서, 연산들은 상기 타깃 하드웨어 플랫폼의 상기 복수의 프로세싱 유닛들에 걸쳐 파이프라이닝되는(pipelined) 방법.
  5. 제3항에 있어서, 상기 연산들이 병렬로 실행되는 방법.
  6. 제1항에 있어서, 상기 기능적 라디오 신호 프로세싱 텐서 블록들은 입력 텐서 데이터에 작용하여 출력 텐서 데이터 흐름을 산출하는 통상적으로 사용되는 라디오 신호 프로세싱 연산들을 나타내는 방법.
  7. 제6항에 있어서, 통상적으로 사용되는 라디오 신호 프로세싱 연산들은 유한 임펄스 응답 필터, 고속 푸리에 변환, 무한 임펄스 응답 필터, 디지털 발진기 및 믹서, 자동 이득 제어 기능, 동기화 알고리즘, 심벌 변조기 또는 복조기, 에러 정정 인코더 또는 디코더, GNU 라디오 기능적 연산들, 또는 Matlab 기능적 연산들 중 하나 이상을 포함하는 방법.
  8. 제1항에 있어서, 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 상기 노드들 및 유향 에지들을 파티셔닝하여 커널 세트를 산출하는 단계는:
    상기 프로세싱 유닛들의 총 리소스 사용량(aggregate resource use)을 최소화하는 초기 커널 세트를 예측하는 단계;
    상기 초기 커널 세트를 갖는 상기 프로세싱 유닛들의 리소스 사용량(resource use)을 측정하는 단계; 및
    상기 측정된 리소스 사용량에 기초하여 최적화 목적을 달성하는 업데이트된 커널 세트를 산출하도록 상기 파티셔닝을 변경하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 초기 커널 세트를 갖는 상기 프로세싱 유닛들의 리소스 사용량을 측정하는 단계는:
    상기 프로세싱 유닛들이 상기 초기 커널 세트를 실행할 때 상기 프로세싱 유닛들의 실제 리소스 사용량을 측정하는 단계를 포함하는 방법.
  10. 제8항에 있어서, 상기 초기 커널 세트를 갖는 상기 프로세싱 유닛들의 리소스 사용량을 측정하는 단계는:
    상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 내로 흐르는 데이터가 변하는 동안 실제 리소스 사용량을 측정하는 단계를 포함하는 방법.
  11. 제10항에 있어서, 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 내로 흐르는 상기 데이터는: 라디오 주파수 데이터, 신호들, 신호 로딩들, 또는 콘텐츠 유형들을 포함하는 방법.
  12. 제8항에 있어서, 상기 측정된 리소스 사용량에 기초하여 최적화 목적을 달성하는 업데이트된 커널 세트를 산출하도록 상기 파티셔닝을 변경하는 단계는:
    상기 최적화 목적을 총 리소스 사용량을 최소화하는 것이라고 식별하는 단계;
    상기 타깃 하드웨어 플랫폼의 각각의 프로세싱 유닛의 프로세싱 용량을 예측하는 단계;
    각각의 프로세싱 유닛의 메모리 액세스 시간을 예측하는 단계;
    상기 프로세싱 유닛들 사이의 통신 시간을 예측하는 단계; 및
    상기 예측된 프로세싱 용량, 예측된 메모리 액세스 시간, 및 예측된 통신 시간에 기초하여 상기 총 리소스 사용량을 최소화하는 커널 세트를 산출하기 위해 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 상기 노드들 및 유향 에지들을 반복하여 파티셔닝하는 단계
    를 포함하는 방법.
  13. 제1항에 있어서, 상기 최적화 목적은: 모든 이용가능한 프로세싱 유닛들에 걸친 프로세싱 유닛 사용량을 최대화하는 것; 프로세싱 유닛들을 통한 그래프 프로세싱의 레이턴시를 최소화하는 것; 최대 처리량을 달성하는 것; 전력 소비를 최소화하는 것; 다른 실행 중인 소프트웨어 프로세스들과의 간섭을 최소화하는 것; 및 고정 레이트 또는 레이턴시로 실행하기 위해 프로세서, 로직 게이트, 또는 메모리 요구사항들을 최소화하는 것 중 하나 이상인 방법.
  14. 제1항에 있어서,
    연산들을 나타내는 노드들 및 종속성들을 나타내는 유향 에지들을 포함하는 제2 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 획득하는 단계; 및
    상기 특정 최적화 목적을, 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 및 상기 제2 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프 둘 다를 실행할 때 상기 프로세싱 유닛들의 총 리소스 사용량을 최소화하는 것이라고 식별하는 단계
    를 추가로 포함하는 방법.
  15. 제1항에 있어서, 상기 타깃 하드웨어 플랫폼의 상기 복수의 프로세싱 유닛들은 다수의 유형들의 프로세싱 유닛들을 포함하는 방법.
  16. 제15항에 있어서, 상기 타깃 하드웨어 플랫폼의 상기 복수의 프로세싱 유닛들에 걸쳐 연산들을 효율적으로 분산시키기 위해 상기 개별 커널들에 대한 데이터 배치를 정의하는 단계는:
    상기 타깃 하드웨어 플랫폼 내의 다수의 유형들의 프로세싱 유닛들로부터 적어도 하나의 커널을 실행할 최적의 프로세싱 유닛 유형을 결정하는 단계; 및
    상기 결정된 최적의 프로세싱 유닛 유형의 상기 타깃 하드웨어 플랫폼 내의 프로세싱 유닛에 대한 상기 커널 세트 내의 상기 적어도 하나의 커널의 데이터 배치를 정의하는 단계
    를 포함하는 방법.
  17. 제1항에 있어서, 상기 기능적 라디오 신호 프로세싱 애플리케이션은 통신 모뎀을 구현하는 것; 셀룰러 기저대역 프로세싱 태스크를 수행하는 것; 라디오 감지, 라벨링, 분석, 또는 매핑을 수행하는 것; 간섭을 제거하거나 왜곡을 보정하기 위해 라디오 신호를 프로세싱하는 것; 또는 레이더 펄스들을 송신 또는 수신하는 것을 포함하는 방법.
  18. 제17항에 있어서, 셀룰러 기저대역 프로세싱 태스크를 수행하는 것은 LTE, 5G, 또는 6G 파형을 송수신하는 것을 포함하는 방법.
  19. 제17항에 있어서, 라디오 감지를 수행하는 것은 위협들, 이상들(anomalies), 하드웨어 고장들, 간섭들, 또는 매핑들을 식별하기 위해 라디오 신호들을 감지하는 것을 포함하는 방법.
  20. 제1항에 있어서, 상기 기능적 라디오 신호 프로세싱 애플리케이션은 간섭 또는 왜곡이 제거된 라디오 주파수 신호를 생성하기 위해 라디오 주파수 신호를 프로세싱하는 것을 포함하는 방법.
  21. 제1항에 있어서, 상기 기능적 라디오 신호 프로세싱 애플리케이션은 펄스들을 텐서들로서 생성하기 위해 그리고 펄스 응답들을 수신하여 반사 아이템들의 속성들을 추정하기 위해 레이더 신호들을 프로세싱하는 것을 포함하는 방법.
  22. 제1항에 있어서, 상기 타깃 하드웨어 플랫폼은 안테나들 및 아날로그-디지털 변환기들 및 복수의 컴퓨팅 디바이스들로부터의 복수의 입력 스트림들로부터 데이터를 수신하는 복수의 모뎀들을 갖는 대규모 데이터 센터를 포함하는 방법.
  23. 제1항에 있어서, 상기 타깃 하드웨어 플랫폼은: 단일 프로세서, 동일한 유형의 다수의 프로세서들, 다수의 유형들의 코프로세서들을 갖는 공유 메모리 아키텍처, 분산 메모리 아키텍처, 또는 각각이 개별적인 메모리 아키텍처들을 갖는 멀티-프로세서들(multi-processors) 또는 멀티-멀티-프로세서들(multi-multi-processors)의 네트워크 중 적어도 하나를 포함하는 방법.
  24. 제6항에 있어서, 상기 텐서 데이터는 디지털적으로 샘플링된 동위상(In-Phase) 및 직교위상(Quadrature) 시계열 숫자들, 디지털적으로 샘플링된 음향 시계열 정보, 전력 주파수 스펙트럼 정보, 레이더 데이터 큐브 프로세싱 정보, 비트들, 패킷들, 메시지들, 샘플들, 또는 값들의 벡터들을 산출할 수 있는 소프트웨어의 출력 중 하나 이상을 포함하는 라디오 신호들을 포함하는 방법.
  25. 제1항에 있어서, 특정 기능적 라디오 신호 프로세싱 애플리케이션을 나타내는, 기능적 텐서 블록들을 포함하는 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 획득하는 단계는:
    사용자가 기능적 신호 프로세싱 블록들을 선택하고 상기 기능적 신호 프로세싱 블록들을 함께 접속시켜 기능적 라디오 신호 프로세싱 애플리케이션을 형성할 수 있게 해주는 사용자 인터페이스를 제공하는 단계; 및
    상기 사용자 인터페이스로부터 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프의 형태로 상기 기능적 라디오 신호 프로세싱 애플리케이션을 수신하는 단계
    를 포함하는 방법.
  26. 제1항에 있어서, 파티셔닝하는 것은 반복하여 파티셔닝하는 것을 포함하는 방법.
  27. 제1항에 있어서, 상기 기능적 라디오 신호 프로세싱 텐서 블록들은 입력 텐서 데이터에 작용하여 출력 텐서 데이터 흐름을 산출하는 하나 이상의 라디오 신호 프로세싱 연산들 및 머신 러닝 연산들의 조합을 나타내는 방법.
  28. 하나 이상의 컴퓨팅 디바이스에 의해 수행되는 방법으로서,
    연산들을 나타내는 노드들 및 데이터 흐름을 나타내는 유향 에지들을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 제공하는 단계 - 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프는 기능적 라디오 신호 프로세싱 애플리케이션을 나타냄 -;
    상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 상기 노드들 및 유향 에지들을 파티셔닝하여, 타깃 하드웨어 플랫폼 내의 다수의 유형들의 복수의 프로세싱 유닛들 상에서 실행될 때, 특정 최적화 목적을 달성하는 커널 세트를 산출하는 단계;
    상기 타깃 하드웨어 플랫폼 내의 다수의 유형들의 프로세싱 유닛들로부터 적어도 하나의 커널을 실행할 최적의 프로세싱 유닛 유형을 결정하고;
    상기 결정된 최적의 프로세싱 유닛 유형의 상기 타깃 하드웨어 플랫폼 내의 프로세싱 유닛에 대한 상기 커널 세트 내의 상기 적어도 하나의 커널의 데이터 배치를 정의하는 것에 의해
    상기 타깃 하드웨어 플랫폼의 상기 복수의 프로세싱 유닛들 상에서 연산들을 효율적으로 실행하도록 상기 커널 세트 내의 개별 커널들에 대한 데이터 배치를 포함한 런타임 리소스 스케줄링을 정의하는 단계; 및
    상기 타깃 하드웨어 플랫폼 내의 다수의 유형들의 상기 복수의 프로세싱 유닛들의 리소스들을 상기 정의된 런타임 리소스 스케줄링에 따라 할당하는 단계
    를 포함하는 방법.
  29. 시스템으로서,
    하나 이상의 프로세서들; 및
    명령어들을 저장하는 하나 이상의 저장 디바이스
    를 포함하며, 상기 명령어들은, 상기 하나 이상의 프로세서 상에서 실행될 때, 상기 하나 이상의 프로세서로 하여금:
    기능적 라디오 신호 프로세싱 애플리케이션을 구축하기 위해 기능적 라디오 신호 프로세싱 텐서 블록들을 제공하게 하고 - 상기 기능적 라디오 신호 프로세싱 텐서 블록들은 심벌로 표시된 라디오 텐서 표현식들 및 데이터 흐름을 나타내는 유향 에지들을 나타냄 -;
    특정 기능적 라디오 신호 프로세싱 애플리케이션을 나타내는, 기능적 텐서 블록들을 포함하는 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를 획득하게 하며;
    상기 기능적 라디오 신호 프로세싱 블록 데이터플로 그래프를, 상기 특정 기능적 라디오 신호 프로세싱 애플리케이션의 기능에 대응하는 특정 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프에 매핑하게 하고;
    상기 특정 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프를 연산들을 나타내는 노드들 및 데이터 흐름을 나타내는 유향 에지들을 포함하는 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프로서 제공하게 하며 - 상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프는 기능적 라디오 신호 프로세싱 애플리케이션을 나타냄 -;
    상기 프리미티브 라디오 신호 프로세싱 계산 데이터플로 그래프의 상기 노드들 및 유향 에지들을 파티셔닝하여, 타깃 하드웨어 플랫폼의 복수의 프로세싱 유닛들 상에서 실행될 때, 특정 최적화 목적을 달성하는 커널 세트를 산출하게 하고;
    상기 타깃 하드웨어 플랫폼의 상기 복수의 프로세싱 유닛들 상에서 연산들을 효율적으로 실행하도록 상기 커널 세트 내의 개별 커널들에 대한 데이터 배치를 포함한 런타임 리소스 스케줄링을 정의하게 하며;
    상기 타깃 하드웨어 플랫폼 내의 상기 복수의 프로세싱 유닛들의 리소스들을 상기 정의된 런타임 리소스 스케줄링에 따라 할당하게 하도록 동작가능한 시스템.
  30. 제 24항에 있어서, 상기 전력 주파수 스펙트럼 정보는 스펙트로그램들(spectrograms)을 포함하고 상기 레이더 데이터 큐브 프로세싱 정보는 펄스 적분을 포함하는, 방법.
KR1020197033797A 2017-04-17 2018-04-17 라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링 KR102172866B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762486198P 2017-04-17 2017-04-17
US62/486,198 2017-04-17
PCT/US2018/028030 WO2018195120A1 (en) 2017-04-17 2018-04-17 Placement and scheduling of radio signal processing dataflow operations

Publications (2)

Publication Number Publication Date
KR20200024764A KR20200024764A (ko) 2020-03-09
KR102172866B1 true KR102172866B1 (ko) 2020-11-02

Family

ID=63791085

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033797A KR102172866B1 (ko) 2017-04-17 2018-04-17 라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링

Country Status (5)

Country Link
US (3) US10200875B2 (ko)
EP (1) EP3612931A4 (ko)
KR (1) KR102172866B1 (ko)
CN (2) CN111247513B (ko)
WO (1) WO2018195120A1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3612931A4 (en) 2017-04-17 2021-01-13 Deepsig Inc. PLACEMENT AND PLANNING OF RADIO SIGNAL PROCESSING DATA FLOW OPERATIONS
US10749594B1 (en) * 2017-08-18 2020-08-18 DeepSig Inc. Learning-based space communications systems
US10802489B1 (en) 2017-12-29 2020-10-13 Apex Artificial Intelligence Industries, Inc. Apparatus and method for monitoring and controlling of a neural network using another neural network implemented on one or more solid-state chips
FI130232B (en) * 2018-04-18 2023-05-03 Meeshkan Oy Procedure for distributed processing of information and distributed information processing system
US20200257985A1 (en) * 2019-02-08 2020-08-13 DeepSig Inc. Adversarially generated communications
US11448721B2 (en) * 2019-06-25 2022-09-20 Infineon Technologies Ag In device interference mitigation using sensor fusion
EP3987394A1 (en) * 2019-08-22 2022-04-27 Google LLC Sharding for synchronous processors
US11544105B2 (en) 2019-09-11 2023-01-03 Google Llc Recommendations for scheduling jobs on distributed computing devices
US10956807B1 (en) 2019-11-26 2021-03-23 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks utilizing predicting information
US11367290B2 (en) 2019-11-26 2022-06-21 Apex Artificial Intelligence Industries, Inc. Group of neural networks ensuring integrity
US11366434B2 (en) 2019-11-26 2022-06-21 Apex Artificial Intelligence Industries, Inc. Adaptive and interchangeable neural networks
CN111190741B (zh) * 2020-01-03 2023-05-12 深圳鲲云信息科技有限公司 基于深度学习节点计算的调度方法、设备及存储介质
US11429299B2 (en) 2020-02-13 2022-08-30 Samsung Electronics Co., Ltd. System and method for managing conversion of low-locality data into high-locality data
US11442643B2 (en) 2020-02-13 2022-09-13 Samsung Electronics Co., Ltd. System and method for efficiently converting low-locality data into high-locality data
CN111597211B (zh) * 2020-05-14 2023-10-20 腾讯科技(深圳)有限公司 一种数据流图处理方法、装置、设备以及可读存储介质
US11553354B2 (en) * 2020-06-29 2023-01-10 At&T Intellectual Property I, L.P. Apparatuses and methods for enhancing network controls based on communication device information
US20220066834A1 (en) * 2020-09-01 2022-03-03 Qualcomm Incorporated Memory-bound scheduling
US20230370901A1 (en) * 2020-09-18 2023-11-16 Sony Group Corporation Communication device and communication method
EP3971659A1 (en) * 2020-09-21 2022-03-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Radar resource management system, apparatus to train an agent in a radar system using reinforcement learning, method for managing radar resources, and method to train an agent in a radar system using reinforcement learning
KR102257028B1 (ko) * 2020-10-06 2021-05-27 주식회사 딥이티 컴퓨팅 플랫폼 기반의 적응형 딥러닝 작업 할당 장치 및 방법
US11847491B1 (en) * 2021-04-22 2023-12-19 Habana Labs Ltd. Low latency execution of a machine learning model
CN113360531B (zh) * 2021-06-07 2023-06-09 王希敏 信号处理系统并行计算数据流的结构
CN113961267B (zh) * 2021-10-15 2023-08-25 杭州海康威视数字技术股份有限公司 一种业务处理方法、装置及设备
US20220107793A1 (en) * 2021-12-14 2022-04-07 Intel Corporation Concept for Placing an Execution of a Computer Program
US20220114137A1 (en) * 2021-12-22 2022-04-14 Intel Corporation Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry
WO2023163453A1 (ko) * 2022-02-23 2023-08-31 주식회사 에너자이 임베디드 장치에서 실행될 신경망 모델 최적화 방법, 신경망 모델 최적화 장치, 및 신경망 모델 최적화 시스템
EP4235416A1 (en) * 2022-02-24 2023-08-30 HENSOLDT Sensors GmbH Apparatus and method for managing resources of a multifunctional radio frequency system
KR20230169755A (ko) * 2022-06-09 2023-12-18 서울대학교산학협력단 스케줄링을 수행하는 방법 및 단말기
US11811681B1 (en) 2022-07-12 2023-11-07 T-Mobile Usa, Inc. Generating and deploying software architectures using telecommunication resources
CN115149998B (zh) * 2022-09-06 2022-11-08 天津先进技术研究院 一种用于同时接收多种信号体制的方法和装置
CN115373858B (zh) * 2022-10-26 2023-01-24 北京城建智控科技股份有限公司 一种基于计算部恒定功率的错峰调节方法与系统
CN115665350A (zh) * 2022-10-28 2023-01-31 四川长虹电器股份有限公司 智能电视软件适配多个数字功放硬件平台的处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070054684A1 (en) 2005-09-03 2007-03-08 Mayflower Communications Company, Inc. Multimode wireless radio access network with distributed processing
US20100325621A1 (en) 2009-06-23 2010-12-23 International Business Machines Corporation Partitioning operator flow graphs
US20120166646A1 (en) 2010-12-27 2012-06-28 Nokia Corporation Method and apparatus for providing multi-level distributed computations
US20160041833A1 (en) 2014-05-21 2016-02-11 Societal Innovations Ipco Limited System and method for fully configurable real time processing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418953A (en) * 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5808580A (en) * 1997-02-06 1998-09-15 Andrews, Jr.; Grealie A. Radar/sonar system concept for extended range-doppler coverage
JP3186630B2 (ja) * 1997-02-14 2001-07-11 株式会社デンソー データ通信方法および車載用通信装置ならびに路上用通信装置
US6701431B2 (en) 2000-01-28 2004-03-02 Infineon Technologies Ag Method of generating a configuration for a configurable spread spectrum communication device
US7698430B2 (en) * 2005-03-16 2010-04-13 Adaptive Computing Enterprises, Inc. On-demand compute environment
CN100562850C (zh) * 2005-11-30 2009-11-25 迈普通信技术股份有限公司 多处理器负载分配调整方法
JP5316128B2 (ja) 2009-03-17 2013-10-16 トヨタ自動車株式会社 故障診断システム、電子制御ユニット、故障診断方法
SG189304A1 (en) * 2010-10-08 2013-05-31 Lumi Technologies Ltd Multi-phased and partitioned content preparation and delivery
WO2012079633A1 (en) * 2010-12-16 2012-06-21 Nokia Siemens Networks Oy Key performance indicator for operator performance evaluation in communication network resource sharing
US8650577B2 (en) * 2011-05-30 2014-02-11 Lg Electronics Inc. Mobile terminal and controlling method thereof
WO2013154380A1 (ko) * 2012-04-12 2013-10-17 한양대학교 산학협력단 소프트웨어 정의 라디오 어플리케이션의 동작 방법
US9262222B2 (en) * 2013-12-03 2016-02-16 International Business Machines Corporation Lazy initialization of operator graph in a stream computing application
US9577936B2 (en) 2014-02-27 2017-02-21 Kratos Integral Holdings, Llc Packetized radio frequency transport system
CN207440765U (zh) * 2017-01-04 2018-06-01 意法半导体股份有限公司 片上系统和移动计算设备
EP3612931A4 (en) 2017-04-17 2021-01-13 Deepsig Inc. PLACEMENT AND PLANNING OF RADIO SIGNAL PROCESSING DATA FLOW OPERATIONS

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070054684A1 (en) 2005-09-03 2007-03-08 Mayflower Communications Company, Inc. Multimode wireless radio access network with distributed processing
US20100325621A1 (en) 2009-06-23 2010-12-23 International Business Machines Corporation Partitioning operator flow graphs
US20120166646A1 (en) 2010-12-27 2012-06-28 Nokia Corporation Method and apparatus for providing multi-level distributed computations
US20160041833A1 (en) 2014-05-21 2016-02-11 Societal Innovations Ipco Limited System and method for fully configurable real time processing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Nicholas D. Sidiropoulos et al. 'Tensor Decomposition for Signal Processing and Machine Learning', IEEE Transactions on Signal Processing, Vol.65, Issue 13, 2017, pp.3551-3582.

Also Published As

Publication number Publication date
KR20200024764A (ko) 2020-03-09
CN113791907A (zh) 2021-12-14
US20210136596A1 (en) 2021-05-06
CN111247513A (zh) 2020-06-05
US11871246B2 (en) 2024-01-09
US10200875B2 (en) 2019-02-05
CN113791907B (zh) 2022-11-22
WO2018195120A1 (en) 2018-10-25
EP3612931A4 (en) 2021-01-13
EP3612931A1 (en) 2020-02-26
US20180302800A1 (en) 2018-10-18
CN111247513B (zh) 2021-10-08
US20190239085A1 (en) 2019-08-01
US10841810B2 (en) 2020-11-17

Similar Documents

Publication Publication Date Title
KR102172866B1 (ko) 라디오 신호 프로세싱 데이터플로 연산들의 배치 및 스케줄링
US8479181B2 (en) Interactive capacity planning
US20200257968A1 (en) Self-learning scheduler for application orchestration on shared compute cluster
WO2021026481A1 (en) Methods, systems, articles of manufacture and apparatus to improve job scheduling efficiency
Malakar et al. Optimal scheduling of in-situ analysis for large-scale scientific simulations
Nawrocki et al. Adaptable mobile cloud computing environment with code transfer based on machine learning
WO2020009652A1 (en) Methods and systems for dynamic service performance prediction using transfer learning
Shen et al. Look before you leap: Using the right hardware resources to accelerate applications
Nigade et al. Jellyfish: Timely inference serving for dynamic edge networks
Naqvi et al. Mascot: self-adaptive opportunistic offloading for cloud-enabled smart mobile applications with probabilistic graphical models at runtime
Goel et al. Infer: Interference-aware estimation of runtime for concurrent cnn execution on dpus
Tripathi et al. Computation and communication co-design for real-time monitoring and control in multi-agent systems
Goscinski et al. Special issue on Distributed Intelligence at the Edge for the Future Internet of Things
Sun et al. Cognn: efficient scheduling for concurrent gnn training on gpus
Ali et al. Energy efficient task mapping & scheduling on heterogeneous noc-mpsocs in iot based smart city
Kain et al. Multi-step prediction of worker resource usage at the extreme edge
Ngo et al. Move based algorithm for runtime mapping of dataflow actors on heterogeneous MPSoCs
Tangherloni et al. GPU-powered multi-swarm parameter estimation of biological systems: A master-slave approach
Li et al. Value of service maximization in integrated localization and communication system through joint resource allocation
Dibak et al. Towards Quality-aware Simulations on Mobile Devices.
Tuli Ai and co-simulation driven resource management in fog computing environments
Epicoco et al. Performance and results of the high-resolution biogeochemical model PELAGOS025 v1. 0 within NEMO v3. 4
Liu et al. GA-DRL: Graph Neural Network-Augmented Deep Reinforcement Learning for DAG Task Scheduling over Dynamic Vehicular Clouds
Mei et al. GPU Occupancy Prediction of Deep Learning Models Using Graph Neural Network
Venkataramani et al. The DASH SoC: Enabling the Next Generation of Multi-Function RF Systems

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant