KR20220140694A - 데이터 세트들의 희소도 증가 - Google Patents

데이터 세트들의 희소도 증가 Download PDF

Info

Publication number
KR20220140694A
KR20220140694A KR1020227019715A KR20227019715A KR20220140694A KR 20220140694 A KR20220140694 A KR 20220140694A KR 1020227019715 A KR1020227019715 A KR 1020227019715A KR 20227019715 A KR20227019715 A KR 20227019715A KR 20220140694 A KR20220140694 A KR 20220140694A
Authority
KR
South Korea
Prior art keywords
data
data sets
subset
neural network
sparsity
Prior art date
Application number
KR1020227019715A
Other languages
English (en)
Inventor
제프리 마이클 풀
총 유
파울리우스 미시케비시우스
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20220140694A publication Critical patent/KR20220140694A/ko

Links

Images

Classifications

    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Quality & Reliability (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

데이터 세트들, 이를테면, 신경망들의 계층들을 표현하는 행렬들을 변환하여, 상기 데이터 세트들의 희소도 및/또는 다른 특성들을 증가시킴으로써 신경망 계산들과 같은 계산들에서 성능을 개선하는 장치들, 시스템들, 및 기법들. 적어도 하나의 실시예에서, 하나 이상의 데이터 세트 내의 하나 이상의 데이터 서브세트는, 하나 이상의 하나 이상의 구조적 희소도 제약을 충족시키도록 상기 하나 이상의 데이터 세트의 희소도를 증가시키는 프로세스의 일부로서 재배열된다.

Description

데이터 세트들의 희소도 증가
적어도 하나의 실시예는, 데이터 세트들, 이를테면, 신경망들의 계층들을 표현하는 행렬들을 변환하여 상기 데이터 세트들의 희소도(sparsity)를 증가시킴으로써 다양한 계산들의 성능을 개선하는 데 사용되는 처리 리소스들에 관한 것이다. 예컨대, 적어도 하나의 실시예는, 본원에 설명된 다양한 신규한 기법들에 따른, 계산 성능을 개선하기 위해 데이터 희소도를 증가시키는 프로세스의 일부로서 전정(prune)될 데이터 값 클래스를 최대화하기 위해 하나 이상의 데이터 세트 내의 하나 이상의 데이터 서브세트를 재배열하는 데 사용되는 프로세서들 또는 컴퓨팅 시스템들에 관한 것이다.
희소 신경망들은, 각각의 신경망 계층의 몇몇 개의 가중치들이 영(zero) 값들을 갖는 신경망들이다. 각각의 계층을 표현하는 행렬들은 이러한 영 값들로 구성된다. 희소 신경망들에 의해 부여되는 잠재적 이점들은, 감소된 저장 요건들 및 증가된 성능이다. 컴퓨팅 하드웨어에 대한 최근의 개선들은, 희소 신경망들을 표현하는 행렬들과 함께 작동하도록 특별히 구성되는 처리 코어들을 포함했다. 이러한 하드웨어는, 신경망들의 계층들에 대응하는 행렬들이 특정 구조적 희소도 제약들을 충족시키는 한 컴퓨팅 속도에서 상당한 진보들을 제공한다.
도 1은 적어도 하나의 실시예에 따른, 각각의 계층이 행렬들을 사용하여 표현되는 신경망 아키텍처를 예시하는 블록도이다.
도 2는 적어도 하나의 실시예에 따른, 계층이 희소 행렬에 의해 표현되는 희소 신경망의 계층들 사이의 연결들을 예시하는 블록도이다.
도 3은 적어도 하나의 실시예에 따른, 하나 이상의 희소 텐서 코어를 포함하는 병렬 처리 유닛 아키텍처를 예시하는 블록도이다.
도 4는 적어도 하나의 실시예에 따른, 희소 행렬의 행 내의 2:4 구조화된 희소도를 예시하는 블록도이다.
도 5는 적어도 하나의 실시예에 따른, 신경망 내의 계층을 표현하는 행렬의 행에서의 치환들을 예시하는 블록도이다.
도 6은 적어도 하나의 실시예에 따른, 2:4 구조화된 희소도를 충족시키기 위해 전정될 데이터 값 클래스를 증가시키기 위한 행렬의 열들에 대한 예시적인 치환을 예시하는 블록도이다.
도 7은 적어도 하나의 실시예에 따른, 2:4 구조화된 희소도를 충족시키기 위해 전정될 데이터 값 클래스를 증가시키기 위한 행렬에 대한 하나 이상의 가중치 치환을 결정하기 위한 프로세스를 예시한다.
도 8a는 적어도 하나의 실시예에 따른 추론 및/또는 훈련 로직을 예시한다.
도 8b는 적어도 하나의 실시예에 따른 추론 및/또는 훈련 로직을 예시한다.
도 9는 적어도 하나의 실시예에 따른, 신경망의 훈련 및 배치를 예시한다.
도 10은 적어도 하나의 실시예에 따른 예시적인 데이터 센터 시스템을 예시한다.
도 11a는 적어도 하나의 실시예에 따른 자율 차량의 예를 예시한다.
도 11b는 적어도 하나의 실시예에 따른, 도 11a의 자율 차량에 대한 카메라 위치들 및 시야들의 예를 예시한다.
도 11c는 적어도 하나의 실시예에 따른, 도 11a의 자율 차량에 대한 예시적인 시스템 아키텍처를 예시하는 블록도이다.
도 11d는 적어도 하나의 실시예에 따른, 도 11a의 자율 차량과 클라우드 기반 서버(들) 사이의 통신을 위한 시스템을 예시하는 도면이다.
도 12는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시하는 블록도이다.
도 13은 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시하는 블록도이다.
도 14는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 15는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 16a는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 16b는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 16c는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 16d는 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 16e 및 도 16f는 적어도 하나의 실시예에 따른 공유 프로그래밍 모델을 예시한다.
도 17은 적어도 하나의 실시예에 따른, 예시적인 집적 회로들 및 연관된 그래픽 프로세서들을 예시한다.
도 18a 내지 도 18b는 적어도 하나의 실시예에 따른, 예시적인 집적 회로들 및 연관된 그래픽 프로세서들을 예시한다.
도 19a 내지 도 19b는 적어도 하나의 실시예에 따른 부가적인 예시적인 그래픽 프로세서 로직을 예시한다.
도 20은 적어도 하나의 실시예에 따른 컴퓨터 시스템을 예시한다.
도 21a는 적어도 하나의 실시예에 따른 병렬 프로세서를 예시한다.
도 21b는 적어도 하나의 실시예에 따른 파티션 유닛을 예시한다.
도 21c는 적어도 하나의 실시예에 따른 처리 클러스터를 예시한다.
도 21d는 적어도 하나의 실시예에 따른 그래픽 멀티프로세서를 예시한다.
도 22는 적어도 하나의 실시예에 따른 멀티-그래픽 처리 유닛(GPU) 시스템을 예시한다.
도 23은 적어도 하나의 실시예에 따른 그래픽 프로세서를 예시한다.
도 24는 적어도 하나의 실시예에 따른, 프로세서에 대한 프로세서 마이크로아키텍처를 예시하는 블록도이다.
도 25는 적어도 하나의 실시예에 따른 심층 학습 애플리케이션 프로세서를 예시한다.
도 26은 적어도 하나의 실시예에 따른 예시적인 뉴로모픽(neuromorphic) 프로세서를 예시하는 블록도이다.
도 27은 하나 이상의 실시예에 따른 그래픽 프로세서의 적어도 일부분들을 예시한다.
도 28은 하나 이상의 실시예에 따른 그래픽 프로세서의 적어도 일부분들을 예시한다.
도 29는 하나 이상의 실시예에 따른 그래픽 프로세서의 적어도 일부분들을 예시한다.
도 30은 적어도 하나의 실시예에 따른 그래픽 프로세서의 그래픽 처리 엔진의 블록도이다.
도 31은 적어도 하나의 실시예에 따른 그래픽 프로세서 코어의 적어도 일부분들의 블록도이다.
도 32a 내지 도 32b는 적어도 하나의 실시예에 따른, 그래픽 프로세서 코어의 처리 요소들의 어레이를 포함하는 스레드 실행 로직을 예시한다.
도 33은 적어도 하나의 실시예에 따른 병렬 처리 유닛("PPU")을 예시한다.
도 34는 적어도 하나의 실시예에 따른 일반 처리 클러스터("GPC")를 예시한다.
도 35는 적어도 하나의 실시예에 따른 병렬 처리 유닛("PPU")의 메모리 파티션 유닛을 예시한다.
도 36은 적어도 하나의 실시예에 따른 스트리밍 멀티프로세서를 예시한다.
도 37은 적어도 하나의 실시예에 따른, 진보된 컴퓨팅 파이프라인에 대한 예시적인 데이터 흐름도이다.
도 38은 적어도 하나의 실시예에 따른, 진보된 컴퓨팅 파이프라인에서 기계 학습 모델을 훈련시키고, 적응시키고, 인스턴스화하고, 배치하기 위한 예시적인 시스템에 대한 시스템도이다.
도 39는 적어도 하나의 실시예에 따른, 이미징 데이터를 처리하기 위한 진보된 컴퓨팅 파이프라인(3810A)의 예시적인 예시를 포함한다.
도 40a는 적어도 하나의 실시예에 따른, 초음파 디바이스를 지원하는 가상 기기의 예시적인 데이터 흐름도를 포함한다.
도 40b는 적어도 하나의 실시예에 따른, CT 스캐너를 지원하는 가상 기기의 예시적인 데이터 흐름도를 포함한다.
도 41a는 적어도 하나의 실시예에 따른, 기계 학습 모델을 훈련시키는 프로세스에 대한 데이터 흐름도를 예시한다.
도 41b는 적어도 하나의 실시예에 따른, 사전 훈련된 주석 모델들로 주석 툴들을 향상시키기 위한 클라이언트-서버 아키텍처의 예시적인 예시이다.
도 1은 복수의 요소들을 포함할 수 있는 데이터 세트를 사용하여 각각의 계층(102, 106, 114, 124)이 표현되는 신경망 아키텍처를 예시하는 블록도이며, 여기서, 상기 요소들의 세트의 각각의 요소는, 행 인덱스 및 열 인덱스로 지칭될 수 있는 인덱스들과 같은 2개의 위치 값을 갖는다. 적어도 하나의 실시예에서, 행렬의 요소들은 수치 값들과 같은 값들을 포함할 수 있고, 이를테면, 행렬의 요소들이 벡터들, 행렬들, 또는 다른 객체들일 때, 하나 이상의 차원을 가질 수 있다. 적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)을 표현하기 위해 사용가능한 구조화된 데이터 세트, 이를테면 행렬은, 정수, 부동 소수점, 또는 각각이 2개의 인덱스를 갖는 다른 값들을 포함한다.
적어도 하나의 실시예에서, 신경망은 일반적으로, 하나 이상의 계층(102, 106, 114, 124)으로 구성되며, 여기서, 각각의 계층(102, 106, 114, 124)은 하나 이상의 뉴런(104, 108, 110, 112, 116, 118, 120, 122, 126)을 포함한다. 계층(102, 106, 114, 124)은, 실시예에서, 본원에서 추가로 설명되는 바와 같이, 실행될 때, 신경망 내의 뉴런들의 그룹화를 구현하는 데이터 값들 및 소프트웨어 명령어들이다. 적어도 하나의 실시예에서, 뉴런(104, 108, 110, 112, 116, 118, 120, 122, 126)은, 본원에서 추가로 설명되는 바와 같이, 실행될 때, 하나 이상의 신경망 계층(102, 106, 114, 124)의 하나 이상의 뉴런(104, 108, 110, 112, 116, 118, 120, 122, 126) 사이의 관계를 설명하는 수학적 함수를 구현하는 데이터 값들 및 소프트웨어 명령어들이다. 적어도 하나의 실시예에서, 본원에서 추가로 설명되는 바와 같이, 신경망은 복수의 계층들을 포함하고, 각각의 계층은 가시적이거나 은닉된다.
신경망은, 실시예에서, 입력 계층(102), 출력 계층(124), 또는 하나 이상의 중간 계층(106, 114)을 포함한다. 적어도 하나의 실시예에서, 중간 계층(106, 114)은, 본원에서 추가로 설명되는 바와 같이, 신경망 내에 포함된 수학적 관계들을 포함하는 신경망 계층이다. 적어도 하나의 실시예에서, 입력 계층(102)은, 데이터 값들을 입력으로서 취하여 신경망 내의 후속 계층들(106, 114, 124)로 그들을 전파하는 신경망 계층(102, 106, 114, 124)이다. 적어도 하나의 실시예에서, 출력 계층(124)은, 데이터 값을 집계하여 신경망의 하나 이상의 중간 계층(106, 114)으로부터 출력할 준비를 하는 신경망 계층(102, 106, 114, 124)이다. 적어도 하나의 실시예에서, 신경망은 본원에서 추가로 설명되는 임의의 다른 구성의 계층들을 포함한다.
적어도 하나의 실시예에서, 신경망 계층(102, 106, 114, 124)의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)은 다른 신경망 계층(102, 106, 114, 124)의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)에 연결된다. 적어도 하나의 실시예에서, 개별 계층(102, 106, 114, 124)의 모든 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)은 후속 계층(102, 106, 114, 124)의 모든 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)에 연결된다. 다른 실시예에서, 개별 계층(102, 106, 114, 124) 내의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)의 서브세트는, 도 2와 연계하여 아래에 추가로 설명되는 바와 같이, 후속 계층(102, 106, 114, 124) 내의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)의 서브세트에 연결된다. 적어도 하나의 실시예에서, 신경망 계층(102, 106, 114, 124)의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)과 다른 신경망 계층(102, 106, 114, 124)의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126) 사이의 연결들은, 본원에서 추가로 설명되는 바와 같이, 상기 신경망 계층(102, 106, 114, 124)의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126)과 상기 다른 신경망 계층(102, 106, 114, 124)의 뉴런들(104, 108, 110, 112, 116, 118, 120, 122, 126) 사이의 수학적 관계를 표현한다.
적어도 하나의 실시예에서, 훈련된 신경망의 계층들(102, 106, 114, 124)은 수치 값들을 포함하는 행렬(128, 130)에 의해 표현된다. 적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)에 대응하는 행렬(128, 130)은, 신경망의 계층(102, 106, 114, 124) 및 신경망의 다른 계층(102, 106, 114, 124)의 노드들(104, 108, 110, 112, 116, 118, 120, 122, 126) 사이의 관계를 표시하는 수치 값들을 포함한다. 적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)에 대응하는 행렬(128, 130)은 가중치 데이터 값들을 포함한다. 적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)에 대응하는 행렬(128, 130)은, 신경망의 계층(102, 106, 114, 124)의 노드들(104, 108, 110, 112, 116, 118, 120, 122, 126)과 상기 신경망의 다른 계층(102, 106, 114, 124)의 노드들(104, 108, 110, 112, 116, 118, 120, 122, 126) 사이의 하나 이상의 관계를 설명하기 위한, 본원에서 추가로 설명되는 임의의 다른 유형의 데이터 값을 포함한다.
적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)에 대응하는 행렬들(128, 130) ― 그 신경망에서, 각각의 노드(104, 108, 110, 112, 116, 118, 120, 122, 126)는 상기 신경망 내의 다른 계층(102, 106, 114, 124)의 각각의 노드(104, 108, 110, 112, 116, 118, 120, 122, 126)에 연결됨 ― 은 영 값들을 포함하지 않고 밀집 행렬들이다. 적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)에 대응하는 행렬들(128, 130) ― 그 신경망에서, 노드들(104, 108, 110, 112, 116, 118, 120, 122, 126)은 상기 신경망 내의 다른 계층(102, 106, 114, 124)의 노드들(104, 108, 110, 112, 116, 118, 120, 122, 126)의 서브세트에 연결됨 ― 은 영 값들을 포함하고 밀집 행렬들이 아니다. 적어도 하나의 실시예에서, 신경망의 계층(102, 106, 114, 124)을 표현하는 다수의 영 값들을 포함하는 행렬(128, 130) ― 그 신경망의 노드들(104, 108, 110, 112, 116, 118, 120, 122, 126)은 상기 신경망 내의 다른 계층(102, 106, 114, 124)의 노드들의 작은 서브세트에 연결됨 ― 은 희소 행렬이다.
도 2는 적어도 하나의 실시예에 따른, 계층(202, 212)이 희소 행렬(222)에 의해 표현되는 희소 신경망의 계층들(202, 212) 사이의 연결들을 예시하는 블록도이다. 적어도 하나의 실시예에서, 신경망의 계층들(202, 212)은, 도 1과 연계하여 위에 설명되고 본원에서 추가로 설명되는 바와 같이, 하나 이상의 노드(204, 206, 208, 210, 214, 216, 218, 220)를 포함한다. 완전-연결(fully-connected) 신경망은, 실시예에서, 도 1과 연계하여 위에 예시된 바와 같이, 신경망 내의 계층(202, 212)의 각각의 노드(204, 206, 208, 210, 214, 216, 218, 220)와 상기 신경망 내의 다른 계층(202, 212)의 각각의 노드(204, 206, 208, 210, 214, 216, 218, 220) 사이의 연결들을 포함한다. 실시예에서, 신경망 내의 계층(204, 206)의 노드들(204, 206, 208, 210, 214, 216, 218, 220)이 상기 신경망의 다른 계층(202, 212)의 노드들(204, 206, 208, 210, 214, 216, 218, 220)과 연결들을 거의 갖지 않거나 제한된 연결들을 갖는 경우, 그 신경망은 희소 신경망일 수 있다.
적어도 하나의 실시예에서, 희소 신경망은, 실행될 때, 상기 신경망 내의 계층(202, 212)의 노드들(204, 206, 208, 210, 214, 216, 218, 220)과 상기 신경망 내의 다른 계층(202, 212)의 노드들(204, 206, 208, 210, 214, 216, 218, 220) 사이에 연결들을 거의 갖지 않거나 제한된 연결들을 갖는 신경망을 구현하는 데이터 값들 및 소프트웨어 명령어들이다. 희소 신경망 내의 계층들(202, 212)은, 실시예에서, 각각의 계층(202, 212)에 포함된 노드들(204, 206, 208, 210, 214, 216, 218, 220) 사이의 관계들을 표시하는 수치 값들을 포함하는 행렬들(222)로서 표현된다. 적어도 하나의 실시예에서, 희소 신경망 내의 계층(202, 212)을 표현하는 행렬(222)은 희소 행렬이다. 적어도 하나의 실시예에서, 희소 행렬(222)은 대부분이 영 값들인 행렬이다. 적어도 하나의 실시예에서, 희소 행렬(222) 내의 영 값들은, 희소 신경망 내의 다른 계층(202, 212)의 노드들(204, 206, 208, 210, 214, 216, 218, 220)에 연결되지 않은 상기 희소 신경망의 계층(202, 212) 내의 노드들(204, 206, 208, 210, 214, 216, 218, 220)을 표시한다.
적어도 하나의 실시예에서, 희소 행렬(222)은, 다수의 데이터 값들이 영인 데이터 값들의 행렬이다. 적어도 하나의 실시예에서, 희소 행렬(222)의 데이터 값들은, 본원에서 추가로 설명되는 바와 같이, 신경망 계층(202, 212)의 노드들(204, 206, 208, 210, 214, 216, 218, 220) 사이의 관계를 정의하는 선형 방정식 또는 임의의 다른 방정식의 계수들이다. 적어도 하나의 실시예에서, 희소 행렬(222)의 데이터 값들은, 본원에서 추가로 설명되는 바와 같이, 희소 신경망의 노드들(204, 206, 208, 210, 214, 216, 218, 220) 사이의 관계를 정의하는 선형 방정식 또는 임의의 다른 방정식에 대응하는 가중 계수들이다.
도 3은 적어도 하나의 실시예에 따른, 하나 이상의 희소 텐서 코어(306, 308, 310)를 포함하는 병렬 처리 유닛(PPU)(302) 아키텍처를 예시하는 블록도이다. 적어도 하나의 실시예에서, PPU(302)는, 하나 이상의 병렬 컴퓨팅 코어, 이를테면, 희소 텐서 코어들(306, 308, 310) 및/또는 본원에서 추가로 설명되는 임의의 다른 병렬 처리 코어(304)를 사용하여 하나 이상의 컴퓨팅 연산을 수행하는 하드웨어이다. 적어도 하나의 실시예에서, 다른 처리 코어들(304)은, 아래에서 추가로 설명되는 PPU(302) 상에 구현되어 그에 의해 활용되는 임의의 계산 유닛들이다. 예컨대, 다른 처리 코어들(304)은, 본원에서 추가로 설명되는 바와 같이, 스트리밍 프로세서들 및/또는 병렬 계산을 수행하는 다른 그래픽 서브프로세서들을 포함한다.
적어도 하나의 실시예에서, 희소 텐서 코어(306, 308, 310)는, 도 2와 연계하여 위에 설명된 바와 같이, 희소 신경망들 내의 희소 행렬들의 수학적 특성들을 활용하는 컴퓨팅 하드웨어이다. 적어도 하나의 실시예에서, 희소 텐서 코어(306, 308, 310)는, 위에 설명된 바와 같은, 희소 신경망들로부터의 희소 행렬 피연산자들에서 영 값들을 구체적으로 고려하는 행렬-곱셈-누산(MMA) 연산들을, 하드웨어, 소프트웨어, 또는 하드웨어 상에서 실행되는 마이크로코드 중 어느 하나로 구현한다. 적어도 하나의 실시예에서, 희소 텐서 코어(306, 308, 310)는, 희소 신경망들과 관련된 신경망 연산들을 가속하기 위해, 그래픽 처리 유닛(GPU)과 같은 PPU의 다른 리소스들과 함께 작동한다.
적어도 하나의 실시예에서, 희소 텐서 코어(306, 308, 310)는, 희소 신경망들의 특성들을 이용함으로써 신경망 계산 속도를 개선한다. 예컨대, 희소 텐서 코어들(306, 308, 310)은, 적어도 하나의 피연산자가 특정 희소도 제약들을 따를 때 더 큰 속도로 MMA 연산들을 컴퓨팅한다. 희소 텐서 코어(306, 308, 310) 성능을 개선하기 위해, 실시예에서, 신경망의 하나 이상의 계층을 표현하는 행렬들 또는 다른 데이터 구조들이 전정되어 상기 행렬들 또는 다른 데이터 구조들의 희소도를 개선하거나 다른 방식으로 변경한다. 적어도 하나의 실시예에서, 전정은 행렬 또는 다른 데이터 구조 내의 수치 값들을 0으로 설정하는 것을 포함한다. 적어도 하나의 실시예에서, 행렬 또는 다른 데이터 구조 내의 수치 값들은, 이를테면 도 4와 연계하여 아래에 설명되는 구조화된 희소도 제약을 충족시키기 위해 영으로 설정된다. 적어도 하나의 실시예에서, 전정은, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램에 의해 수행된다. 적어도 하나의 실시예에서, 심층 학습 프레임워크는, 신경망의 계층들을 표현하는 행렬 또는 다른 데이터 구조 내의 데이터 값들을, 그러한 데이터 값들에 포함된 데이터에 관계 없이 전정한다. 다른 실시예에서, 상기 행렬 또는 다른 데이터 구조 내에 저장된 하나 이상의 유형의 데이터, 이를테면, 큰 수치 값들, 가중치 크기들, 가중치 구배들, 또는 임의의 다른 데이터 특성을 갖는 데이터의 전정을 최소화하기 위해, 하나 이상의 변환이 하나 이상의 치환에 따라 행렬 내의 데이터 값들을 재배열한다.
도 4는 적어도 하나의 실시예에 따른, 희소 행렬(402)의 행(404, 406) 내의 2:4 구조화된 희소도를 예시하는 블록도이다. 적어도 하나의 실시예에서, 본원에 설명되거나 제안된 기법들은, 행렬 내의 하나 이상의 데이터 값 클래스의 전정을 증가시켜 희소 행렬(402)의 2:4 구조화된 희소도와 같은 희소도 제약을 충족시키기 위해, 상기 행렬 내의 열들 또는 다른 데이터 그룹화들을 재배열하거나, 치환하거나, 또는 다른 방식으로 변환함으로써, 상기 행렬 내의 하나 이상의 데이터 세트, 이를테면 행(404, 406) 데이터의 희소도에서의 변화를 야기하는 프로세서들, 방법들, 시스템들, 및 명령어들을 포함하는 기계 판독가능 매체들을 포함한다. 적어도 하나의 실시예에서, 행렬과 같은 데이터 세트 내의 데이터의 열들 또는 다른 그룹화들을 재배열, 치환, 또는 다른 방식으로 변환하는 것은, 상기 데이터 세트 내의 각각의 데이터 값과 연관된 하나 이상의 인덱스 또는 다른 위치 값을 변경하는 것을 포함한다. 예컨대, 행렬의 열 내의 데이터 값들을 치환하기 위해, 상기 열을 표시하는 제2 인덱스 또는 다른 위치 값이 변경된다.
적어도 하나의 실시예에서, 희소 텐서 코어들은, 적어도 하나의 피연산자가, 본원에서 추가로 설명되거나 제안되는 바와 같은 프로세서들, 방법들, 시스템들, 및 명령어들을 포함하는 기계 판독가능 매체들을 사용하여 하나 이상의 데이터 세트의 희소도를 증가시킴으로써 충족되는 희소도 제약들과 같은 특정 희소도 제약들을 따를 때 더 빠른 속도로 수행하는 개선된 행렬-곱셈-누산(MMA) 연산 또는 다른 개선된 행렬 연산들을 구현한다. 적어도 하나의 실시예에서, 희소도 제약들은, 행렬(402) 내의 데이터 값 세트에 대해 시행되는 수학적 특성들 또는 구조적 특성들이다. 적어도 하나의 실시예에서, 희소도 제약의 예는, 실시예에서, 2:4 구조화된 희소도이다. 적어도 하나의 실시예에서, 2:4 구조화된 희소도는, 행(404, 406)을 따라 매 4개의 데이터 값마다 2개의 데이터 값이 2개의 영 값(412, 414)을 갖는 행렬(402)에서의 데이터 값 세트에 적용되는 제약이다. 적어도 하나의 실시예에서, 2:4 구조화된 희소도를 따르기 위해, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램은 행렬 내의 각각의 행을 따라 4개의 값들 중 2개를 전정한다. 전정 동안 특정 데이터 값 클래스, 이를테면 작은 수가 선호되는 것을 보장하기 위해, 도 5 및 도 6과 연계하여 아래에서 설명되는 바와 같이, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램에 의해 하나 이상의 변환 또는 치환, 이를테면 열 스와핑이 적용된다.
적어도 하나의 실시예에서, 희소 행렬(402) 내의 행 i(404)는 n개의 데이터 값 및 1 x n의 차원을 갖는다. 적어도 하나의 실시예에서, 데이터 값들(408, 410, 412, 414)은, 위에 설명되고 본원에서 추가로 설명되는 바와 같이, 선형 방정식의 계수들을 표현하는 수치 값들이다. 적어도 하나의 실시예에서, 데이터 값들(408, 410, 412, 414)은 가중치 값들이다. 적어도 하나의 실시예에서, 가중치 값들은 0 ≤ x ≤ 1의 스케일 값을 표시하는 데이터 값들이다.
적어도 하나의 실시예에서, 데이터 값들(408, 410, 412, 414)은 영이 아니고(non-zero)(408, 410), 0 < x ≤ 1의 값을 갖는다. 적어도 하나의 실시예에서, 데이터 값들(408, 410, 412, 414)은 x = 0 값을 갖는 영(414, 414)이다. 적어도 하나의 실시예에서, 희소도 제약은 2:4 구조화된 희소도 제약이며, 이에 의해, 행렬(402)의 i번째 행(404, 406) 내의 4개의 연속적인 데이터 값(408, 410, 412, 414)이 2개의 영 데이터 값(412, 414)을 갖는다. 적어도 하나의 실시예에서, 희소도 제약은 n:m 구조화된 희소도 제약이다. 적어도 하나의 실시예에서, n:m 구조화된 희소도 제약은, 희소 행렬(402)의 행(404, 406)에서의 매 m개의 연속적인 데이터 값(408, 410, 412, 414)마다 n개의 영 데이터 값(412, 414)을 시행한다. 적어도 하나의 실시예에서, 희소도 제약들은, 도 5 및 도 6과 연계하여 아래에서 설명되는 가중치 치환들 및 전정과 같은 변환들의 사용을 통해, 영 데이터 값들(412, 414)을 거의 또는 전혀 갖지 않는 하나 이상의 밀집 행렬(402)에 부과되거나 적용된다.
도 5는 적어도 하나의 실시예에 따른, 신경망의 계층을 표현하는 행렬의 행(502, 514, 530)에서의 치환들(512)을 예시하는 블록도이다. 적어도 하나의 실시예에서, 행렬의 행(502, 514, 530)에서의 치환들(512)은, 위에 설명된 바와 같이, 신경망의 하나 이상의 계층을 표현하는 행렬들에 대응하는 데이터 또는 구조화된 희소도 제약들이 부과될 수 있는 임의의 다른 데이터와 같은 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하는 것을 용이하게 한다. 적어도 하나의 실시예에서, 프로세서들, 방법들, 시스템들, 및/또는 명령어들을 포함하는 기계 판독가능 매체는, 본원에 설명되거나 제안된 기법을 사용하여 하나 이상의 데이터 세트에 치환들(512)을 적용한다. 적어도 하나의 실시예에서, 하나 이상의 데이터 세트는 신경망의 하나 이상의 계층을 표현하는 하나 이상의 행렬에 대응한다. 다른 실시예에서, 하나 이상의 데이터 세트는, 하나 이상의 데이터 세트의 처리를 용이하게 하기 위한 결합된 계산들, 이를테면, 행렬-곱셈-누산(MMA) 또는 다른 계산들을 수행하는데 사용가능한 임의의 다른 데이터에 대응한다. 이러한 행렬들이 영 데이터 값을 거의 또는 전혀 포함하지 않는 경우, 실시예에서, 위에 설명된 바와 같이, 상기 행렬은 밀집 행렬들이고 밀집 신경망의 계층들을 표현한다. 실시예에서, 밀집 행렬들 및 희소 행렬들 둘 모두는, 구조화된 희소도 제약들을 부과하거나 시행하기 위해, 치환(512)의 사용을 통해 희소 텐서 코어에 의해 제공되는 개선된 행렬-곱셈-누산 또는 다른 연산들을 활용할 수 있다. 실시예에서, 밀집 행렬들이 또한 전정되어야 하며, 이에 의해, 행렬 내의 데이터 값들은 영으로 설정된다. 실시예에서, 정확도의 손실을 최소화하기 위해, 작은 값 또는 가중치 크기를 갖는 데이터 값들이 전정된다.
적어도 하나의 실시예에서, 행렬 또는 다른 데이터 세트의 희소도의 증가를 야기하는 프로세서들, 방법들, 시스템들, 및/또는 명령어들을 포함하는 기계 판독가능 매체는, 제1 데이터 값 클래스가 제2 데이터 값 클래스보다 전정에 선호되도록, 열들과 같은 하나 이상의 데이터 서브세트를 재배열하는 단계를 포함한다. 예컨대, 실시예에서, 심층 학습 프레임워크는, 행렬에 대한 희소도의 증가를 야기하는 프로세스의 다른 단계 동안 전정될 작은 데이터 값들의 양을 최대화하기 위해, 행렬의 열들에 하나 이상의 변환을 적용한다. 행렬의 열들은, 실시예에서, 작은 데이터 값들과 같은 전정될 데이터 값 클래스를 최대화할 뿐만 아니라 상기 행렬을 사용하는 신경망 또는 다른 애플리케이션과 연관된 하나 이상의 메트릭을 최대화하도록 심층 학습 프레임워크에 의해 결정된 변환들 또는 치환들의 세트를 사용하여 재배열된다.
적어도 하나의 실시예에서, 밀집 행렬 또는 임의의 다른 유형의 행렬에 대한 구조화된 희소도 제약들을 충족시키기 위해 최적의 수의 특정 데이터 값 클래스가 전정되도록 행렬을 변환하기 위해, 상기 밀집 행렬 또는 다른 유형의 행렬 내의 임의의 원래의 행(502)에 대해, 상기 밀집 행렬 또는 다른 유형의 행렬의 열들에 대한 하나 이상의 치환(512)은, 상기 원래의 행 내의 데이터 값들(504, 506, 508, 510)의 순서를 상기 원래의 행(502)과 비교할 때 상이한 데이터 값(520, 522, 524, 526) 순서를 갖는 치환된 행(514)으로 변경한다. 적어도 하나의 실시예에서, 치환(512)은, 실행될 때, 원래의 행(502) 내의 데이터 값들의 순서가 치환된 행(514)으로 스와핑되거나 다른 방식으로 변경되도록 행렬의 열들을 치환(512) 또는 변환하는 소프트웨어 명령어들이다. 적어도 하나의 실시예에서, 원래의 행(502)은 어떠한 치환된(512) 데이터 값들(504, 506, 508, 510)도 갖지 않는 행렬 내의 행이다. 적어도 하나의 실시예에서, 치환된 행(514)은, 데이터 값들(520, 522, 524, 526)의 순서가 원래의 행(502)의 데이터 값들(504, 506, 508, 510)을 포함하는 열들에 적용되는 하나 이상의 가중치 치환(512)에 의해 변환되는 행렬 내의 행이다.
적어도 하나의 실시예에서, 스트라이프는, 행렬의 행(502, 514, 530)에 포함된 데이터 값 세트 내의 m개의 연속적인 데이터 값 서브세트이고, 여기서, m은 n:m 구조화된 희소도 제약을 적용하거나 시행할 연속적인 데이터 값들의 수이고, m은 행렬의 행(502, 514, 530) 내의 데이터 값들의 총 수 이하이다. 예컨대, 실시예에서, 2:4 구조화된 희소도 제약에 대응하는 스트라이프는, 더 큰 2차원 행렬의 행에 의해 표현되는 데이터 값 세트의 서브세트를 표현하는 데이터 값들의 1 x 4 행렬 또는 벡터이다. 적어도 하나의 실시예에서, 이러한 1 x 4 행렬 또는 스트라이프에 대해, 2:4 구조화된 희소도 제약을 충족시키기 위해, 2개의 데이터 값은 영(또는 아래에 설명되는 바와 같이, 영으로 전정될 작은 값)이어야 하고, 2개의 데이터 값은 큰 값(504, 506, 508, 520, 522, 532, 534)이어야 한다.
실시예에서, 원래의 행(502) 내의 스트라이프는 큰 값들(504, 506, 508) 및 작은 값들(510) 둘 모두를 포함한다. 적어도 하나의 실시예에서, 밀집 행렬의 원래의 행(502) 내의 큰 값(504, 506, 508)은 수치 데이터 값 x이며, 여기서, 0.5 ≤ x ≤ 1이다. 다른 실시예에서, 밀집 행렬 또는 임의의 다른 유형의 행렬의 원래의 행(502) 내의 큰 값(504, 506, 508)은 임의의 다른 영이 아닌 수치 값을 갖는 데이터 값 x이다. 적어도 하나의 실시예에서, 원래의 행(502)의 스트라이프 내의 작은 값(510)은 수치 데이터 값 x이며, 여기서, 0 ≤ x < 0.5이다. 다른 실시예에서, 원래의 행(502)의 스트라이프 내의 작은 값(510)은 임의의 다른 값을 갖는 수치 데이터 값 x이며, 여기서, 상기 작은 값(510)은 원래의 행(502) 내의 다른 큰 값들(504, 506, 508)보다 상대적으로 작다.
행렬의 원래의 행(502)의 스트라이프에서 n:m 구조화된 희소도를 적용, 부과, 또는 다른 방식으로 시행하기 위해, 실시예에서, 훈련 프레임워크 또는 다른 신경망 또는 심층 학습 프레임워크는, 본원에서 추가로 설명되는 바와 같이, m개의 큰 값(504, 506, 508)이 연속적이지 않고 상기 스트라이프 내의 m개의 데이터 값 중 n개가 작은 값(510)이도록 상기 행렬의 열들을 변환하기 위한 하나 이상의 치환(512)을 적용한다. 적어도 하나의 실시예에서, 치환들(512)은, 열들을 스와핑하는 것 또는 행렬 내의 열 순서를 변경하기 위한 임의의 다른 기법을 포함한다. 적어도 하나의 실시예에서, 치환들(512)은, 스트라이프의 데이터 값들을 포함하는 열들을 주어진 스트라이프 밖의 행 내의 데이터 값들을 표현하는 하위 인덱싱된 열들(516) 또는 상위 인덱싱된 열들(518)과 스와핑하거나 다른 방식으로 교환한다. 적어도 하나의 실시예에서, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램은, 스트라이프 내의 하나 이상의 데이터 값을, 상기 스트라이프의 데이터 값들을 포함하는 열들을 재배열함으로써 치환한다. 적어도 하나의 실시예에서, 원래의 행(502)에 적용되는 하나 이상의 치환(512)은, n개의 작은 값(524, 526) 및 m - n개의 큰 값(520, 522)을 갖는 m개의 데이터 값의 하나 이상의 스트라이프를 갖는 치환된 행(514)을 초래한다.
적어도 하나의 실시예에서, n:m 구조화된 희소도가 행(또는 행 내의 스트라이프) 내의 m개의 연속 데이터 값 중의 n개의 데이터 값이 영일 것을 요구하기 때문에, 전정(528)은, 영 값들을 거의 또는 전혀 갖지 않는 밀집 행렬의 치환된 행(514) 내의 영이 아닌 작은 값들(524, 526)이 상기 n:m 구조화된 희소도를 따르는 것을 보장한다. 적어도 하나의 실시예에서, 전정(528)은, 실행될 때, 행렬, 이를테면, 밀집 행렬 또는 임의의 다른 유형의 행렬의 행, 이를테면 치환된 행(514) 내의 작은 값들(524, 526)을 영으로 설정하는 소프트웨어 명령어들이다. 적어도 하나의 실시예에서, 전정(528)은, n:m 구조화된 희소도 제약을 따르는 n개의 영 값(536, 538) 및 m - n개의 큰 값(532, 534)을 갖는 m개 디지트 스트라이프를 초래한다.
예컨대, 실시예에서, 2:4 구조화된 희소도를 따르기 위해 2개의 큰 값(520, 522) 및 2개의 작은 값(524, 526)을 갖도록 치환되는 치환된 행(514)은, 전정되어, 2:4 구조화된 희소도에 의해 요구되는 바와 같이, 2개의 영이 아닌 값(532, 534) 및 2개의 영 값(536, 538)을 갖는 전정된 행(530)을 초래한다. 2:4 구조화된 희소도를 갖는 전정된 행(530)은, 실시예에서, 위에 설명되고 본원에서 추가로 설명되는 바와 같이, 희소 텐서 코어들에 의한 더 빠른 MMA 연산들을 용이하게 한다. 적어도 하나의 실시예에서, 전정(528)은 감소된 신경망 정확도를 초래하고, 결과적으로, 밀집 또는 희소 행렬의 n:m 구조화된 희소도의 임의의 효과들을 감소시키면서 상기 밀집 또는 희소 행렬과 연관된 하나 이상의 다른 메트릭을 최대화하기 위한 치환들(512)의 세트를 결정하기 위한 다양한 방법들이 도 7과 연계하여 아래에서 설명된다.
적어도 하나의 실시예에서, 신경망과 연관된 행렬 또는 다른 데이터 세트의 희소도에 대한 증가를 야기하는 프로세서들, 방법들, 시스템들, 및/또는 명령어들을 포함하는 기계 판독가능 매체가 예시적인 목적들을 위해 본원에 설명된다. 적어도 하나의 실시예에서, 본원에 설명된 바와 같은, 행렬 또는 다른 데이터 세트의 희소도에 대한 증가를 야기하는 프로세서들, 방법들, 시스템들, 및/또는 명령어들을 포함하는 기계 판독가능 매체로부터, 다양한 다른 애플리케이션들이 이익을 얻는다. 예컨대, 본원에 설명된, 하나 이상의 데이터 세트 내의 데이터 값들을 배열하기 위한 기법들은, 실시예에서, 블록들과 같은 임의의 구조적 제약에서 제1 데이터 값 클래스를 수집 및 그룹화하는 데 사용가능하다. 다른 실시예에서, 그렇지 않았다면 특정 n:m 희소도 제약 또는 다른 그룹화, 이를테면 블록들을 따르도록 클러스터링될 수 없는 산발적 영 데이터 값들을 포함하는 희소 행렬들이 다른 특성들에 따라 클러스터링될 수 있다. 예컨대, 영 값들의 그룹들은, 실시예에서, 행렬과 연관된 계산들의 작업부하를 고르게 또는 다른 방식으로 분배하기 위해, 2개 이상의 병렬 처리 유닛 또는 다른 계산 처리 유닛에 걸쳐, 서브행렬들을 포함하는 컴퓨팅 작업부하를 분배하기 위해서, 상기 행렬이 상기 서브행렬들로 세분되도록 클러스터링될 수 있다.
도 6은 적어도 하나의 실시예에 따른, 행렬(602)의 희소도가 변경되도록, 2:4 구조화된 희소도를 충족시키기 위해 전정될 특정 데이터 값(620, 622) 클래스를 증가시키기 위한 상기 행렬(602)의 열들(604, 606, 608, 610, 612, 614, 616, 618) 상에서의 예시적인 치환(620)을 예시하는 블록도이다. 적어도 하나의 실시예에서, 행렬(602) 내의 열들(604, 606, 608, 610, 612, 614, 616, 618)과 같은 하나 이상의 데이터 세트의 하나 이상의 데이터 서브세트를 재배열함으로써 희소도에 대한 증가를 야기하는 프로세서들, 방법들, 시스템들, 및/또는 명령어들을 포함하는 기계 판독가능 매체는, 하나 이상의 희소도 제약을 충족시키기 위해 전정될 하나 이상의 데이터 값(620, 622) 클래스의 양을 최대화하거나 다른 방식으로 개선하기 위해, 상기 하나 이상의 데이터 서브세트에 하나 이상의 변환(이를테면, 치환(624))을 적용한다. 예컨대, 도 6에 도시된 바와 같이, 행렬(602)의 열들(604, 606, 608, 610, 612, 614, 616, 618)은, 실시예에서, 상기 행렬(602)의 희소도를 변경하기 위해, 더 많은 작은 값들(SV)(622)이 큰 값들(LV)(620) 대신에 전정되도록 상기 열들(604, 606, 608, 610, 612, 614, 616, 618)을 치환(624)하거나 스와핑함으로써 재배열된다. 적어도 하나의 실시예에서, 행렬(602)은, 도 1 및 도 2와 연계하여 위에서 설명되고 본원에서 추가로 설명되는 바와 같이, 신경망의 계층을 표현하는 밀집 행렬 또는 희소 행렬이다. 적어도 하나의 실시예에서, 행렬(602)은, 중앙 처리 유닛(CPU), 병렬 처리 유닛(PPU), 이를테면 그래픽 처리 유닛(GPU), 또는 본원에서 추가로 설명되는 바와 같은 임의의 다른 컴퓨팅 프로세서에 의해 수행되는 하나 이상의 계산에 대한 임의의 다른 애플리케이션 또는 피연산자와 연관되거나 그를 표현하는 임의의 다른 유형의 행렬이다.
적어도 하나의 실시예에서, 행렬(602)은 2차원 세트의 데이터 값들(620, 622)이다. 적어도 하나의 실시예에서, 데이터 값들(620, 622)은, 위에 설명된 바와 같이, 영 값들, 큰 값들(LV)(620), 또는 작은 값들(SV)(622)이다. 적어도 하나의 실시예에서, 큰 값(LV)(620)은, 도 5와 연계하여 위에 설명된 바와 같이, 행렬(602)에 포함된 데이터 값들의 적어도 절반보다 큰 수치 데이터 값이다. 적어도 하나의 실시예에서, 작은 값(SV)(622)은, 도 5와 연계하여 위에 설명된 바와 같이, 행렬(602)에 포함된 데이터 값들의 적어도 절반보다 작은 수치 데이터 값이다.
적어도 하나의 실시예에서, 행렬(602)은, 행들 및 열들(604, 606, 608, 610, 612, 614, 616, 618)로 조직화된 데이터 값들을 포함한다. 위에 설명된 바와 같이, 2:4 구조화된 희소도는, 실시예에서, 희소 텐서 코어들에서 행렬-곱셈-가산(MMA) 연산들을 수행하기 위해 행렬(602)의 행 내의 4개의 연속적인 데이터 값 중 2개의 데이터 값이 영일 것을 요구한다. 적어도 하나의 실시예에서, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램은, 도 5와 연계하여 위에 설명된 바와 같이, 매 m개의 데이터 값마다 n개의 데이터 값이 영이도록 행렬(602) 내의 복수의 데이터 값들(620, 622)을 전정(영으로 설정)한다. 예컨대, 실시예에서, 2:4 구조화된 희소도를 따르기 위해, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램은, 도 6에서 채워진 데이터 값들에 의해 예시된 바와 같이, 행렬(602) 내의 매 4개의 데이터 값(620, 622)마다 2개를 전정한다.
적어도 하나의 실시예에서, 행렬(602)의 희소도에 대한 증가를 야기하기 위해, 본원에 설명된 바와 같은 훈련 프레임워크 또는 다른 심층 학습 프레임워크는, 도 5와 연계하여 위에 설명된 바와 같이, 훈련된 신경망 내의 계층들을 표현하는 하나 이상의 행렬(602)에 하나 이상의 치환(624)을 적용하고, 희소도 제약이 충족되도록 특정 열들(604, 606, 608, 610, 612, 614, 616, 618)을 따라 모든 데이터 값을 전정한다. 하나의 가능한 치환(620)은, 실시예에서, 행렬(602)의 행들 내의 데이터 값들의 순서를 변경하기 위해, 열들(604, 606, 608, 610, 612, 614, 616, 618), 이를테면, 열 3(608) 및 열 6(614)을 스와핑하는 것이다. 적어도 하나의 실시예에서, 행렬(602)에서 열 3(608) 및 열 6(614)을 치환(624)하는 것은, 큰 값들(620) 대신에 더 많은 수의 작은 값들(SV)(622)이 전정되게 하는 치환된 행렬(630)을 초래한다(여기서, 전정될 데이터 값들은 음영진 것으로 예시됨).
적어도 하나의 실시예에서, 치환된 행렬(630)은, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램이 하나 이상의 치환(624)을 적용한 후의 치환되지 않은 행렬(602)의 데이터 값들을 포함한다. 예컨대, 실시예에서, 치환되지 않은 행렬(602)의 열 3(608) 및 열 6(614)을 스와핑하기 위한 치환(624)은, 2:4 구조화된 희소도를 따르기 위해 큰 값들(LV)(620) 대신에 증가된 수의 작은 값들(SV)(622)이 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램에 의해 전정되게 하는 치환된 행렬(622)을 초래한다. 적어도 하나의 실시예에서, 스와핑된 열 6(626) 및 열 3(628)은, 2:4 구조화된 희소도를 따르는 희소도의 변화를 야기하기 위해 2개의 큰 값(LV)(620) 대신에 2개의 작은 값(SV)(622)이 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램에 의해 전정되는 것을 초래한다. 적어도 하나의 실시예에서, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램은, 치환된 행렬(630) 내의 음영진 값들을 전정하여, 상기 치환된 행렬(630)의 희소도에 대한 증가를 야기하며, 이에 따라, 개선된 성능의 희소 텐서 코어들이 활용된다.
적어도 하나의 실시예에서, 심층 학습 프레임워크 또는 다른 소프트웨어 프로그램은, 훈련된 신경망의 계층을 표현하는 행렬(602)의 열들(604, 606, 608, 610, 612, 614, 616, 618)에 하나 이상의 치환(624)을 적용하여 치환된 행렬(630)을 초래한다. 적어도 하나의 실시예에서, 훈련된 신경망 계층을 표현하는 행렬(602)의 입력 채널들 또는 열들을 치환하고, 상기 훈련된 신경망 내의 이전 계층을 표현하는 행렬(602)의 대응하는 출력 채널들 또는 행들을 치환함으로써, 상기 훈련된 신경망을 사용한 추론의 결과들은 변하지 않는다. 훈련된 신경망의 계층들을 표현하는 하나 이상의 행렬에 적용할 하나 이상의 치환을 결정하기 위해, 훈련 프레임워크 또는 다른 심층 학습 프레임워크는, 신경망의 계층들에 대응하는 행렬들(602)에서 n:m 구조화된 희소도를 개선하면서 상기 행렬들(602) 내의 작은 데이터 값들을 전정함으로써 초래되는 신경망 정확도의 손실을 최소화하는 치환들의 세트를 검색한다.
도 7은 적어도 하나의 실시예에 따른, 2:4 구조화된 희소도를 충족시키기 위해 전정될 데이터 값 클래스를 증가시키기 위한 행렬에 대한 하나 이상의 치환을 결정하기 위한 프로세스(700)를 예시한다. 적어도 하나의 실시예에서, 하나 이상의 데이터 세트의 희소도에 대한 증가를 용이하게 하기 위해 상기 하나 이상의 데이터 세트 내의 하나 이상의 데이터 서브세트를 재배열하기 위한 치환들을 포함하는 변환들의 세트를 결정하는 프로세스(700)는, 하나 이상의 회로를 갖는 프로세서에 의해 수행될 수 있다. 다른 실시예에서, 하나 이상의 데이터 세트의 희소도에 대한 증가를 용이하게 하기 위해 상기 하나 이상의 데이터 세트 내의 하나 이상의 데이터 서브세트를 재배열하기 위한 치환들을 포함하는 변환들의 세트를 결정하는 프로세스(700)는, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램을 구현하는 시스템 또는 명령어들을 포함하는 기계 판독가능 매체에 의해 수행될 수 있다. 적어도 하나의 실시예에서, 프로세서들, 방법들, 시스템들, 및/또는 명령어들을 포함하는 기계 판독가능 매체들은, 하나 이상의 데이터 세트의 희소도에 대한 증가를 용이하게 하기 위해 제2 데이터 값 클래스 대신에 더 많은 수의 제1 데이터 값 클래스가 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램에 의해 전정되도록 상기 하나 이상의 데이터 세트 내의 하나 이상의 데이터 서브세트를 재배열하기 위한 치환들의 세트를 결정하는 프로세스(700)를 구현할 수 있다. 적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 신경망과 연관된 하나 이상의 행렬과 같은, 하나 이상의 데이터 세트와 연관된 하나 이상의 메트릭을 최대화하면서 n:m 구조화된 희소도를 용이하게 하기 위해 상기 하나 이상의 데이터 세트들을 재배열하기 위한 하나 이상의 치환을 결정하기 위한 랜덤 채널 스왑들을 수행하는 프로세스(700)를 구현한다. 적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 훈련된 신경망의 계층을 표현하는 행렬 내의 2개의 열을 랜덤으로 선택(704)함으로써 시작(702)된다. 적어도 하나의 실시예에서, 그러한 열들은 행렬에 대한 단일 치환에 의해 스와핑된 열들을 표현한다.
적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 도 5와 연계하여 위에 설명된 바와 같이, 선택된 열들이 스와핑되거나 치환된 추정 행렬을 생성(706)하고, 상기 추정 행렬(708)이 n:m 제약을 전역적으로 충족하도록 상기 추정 행렬 내의 값들을 전정(708)한다. 적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 열들이 스와핑된 추정 행렬에 의해 표현되는 계층을 포함하는 신경망과 연관된 하나 이상의 메트릭이 증가되는지를 결정(710)한다. 적어도 하나의 실시예에서, 신경망과 연관된 메트릭은 상기 신경망의 정확도이다. 다른 실시예에서, 신경망과 연관된 메트릭은, 신경망의 계층들을 표현하는 행렬들 내의 모든 가중치 값들의 총 가중치 크기의 증가이다. 다른 실시예에서, 신경망과 연관된 메트릭은, 신경망 내의 계층을 표현하는 행렬 내의 하나 이상의 실제 가중치 값과 상기 신경망을 훈련시키기 위해 사용가능한 훈련 데이터 또는 임의의 다른 기준선 데이터의 행렬 내의 하나 이상의 이상적인 가중치 값 사이의 차이들을 표현하는 하나 이상의 가중치 구배이다. 적어도 하나의 실시예에서, 메트릭은, 본원에 설명된 다양한 기법들을 수행하기 위한 다양한 프로세서들, 시스템들, 방법들, 및/또는 명령어들을 포함하는 기계 판독가능 매체가 수행될, 행렬들을 활용하는 임의의 애플리케이션에 대응하는 성능의 임의의 기준선 척도이다.
적어도 하나의 실시예에서, 하나 이상의 메트릭이 증가되는 경우(710), 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 도 6과 연계하여 위에 설명된 바와 같이, 훈련된 신경망 내의 계층을 표현하는 실제 행렬(712) 내의 그러한 선택된 열들을 스와핑한다. 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램이, 실시예에서, 하나 이상의 메트릭이 감소된다고 결정(710)하는 경우, 상기 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 치환들을 결정하기 위한 프로세스(700)가 완료되는지를 결정(714)한다. 적어도 하나의 실시예에서, 미리 결정된 수의 치환이 발견되거나 하나 이상의 메트릭의 만족스러운 증가가 달성되는 경우 프로세스(700)는 완료된다. 적어도 하나의 실시예에서, 완료를 위한 임의의 다른 메트릭, 이를테면, 분석 시간 또는 행렬에 대한 변경 횟수가 충족되는 경우 프로세스(700)는 완료된다.
적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램이, 하나 이상의 제약이 충족되는 것으로 인해 프로세스(700)가 완료된다고 결정(714)하는 경우, 상기 프로세스(700)는 종료된다. 그렇지 않은 경우, 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 훈련된 신경망 내의 계층을 표현하는 행렬로부터 2개의 부가적인 열을 랜덤으로 선택(704)함으로써 계속된다.
적어도 하나의 실시예에서, n:m 구조화된 희소도 및 하나 이상의 메트릭에 따른 하나 이상의 데이터 세트의 희소도에 대한 증가를 용이하게 하기 위해 제2 데이터 값 클래스 대신에 더 많은 수의 제1 데이터 값 클래스가 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램에 의해 전정되도록 상기 하나 이상의 데이터 세트 내의 하나 이상의 데이터 서브세트를 재배열하기 위한 치환들의 세트를 결정하는 부가적인 방법들이 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램에 의해 사용된다. 적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 프로세스(700)의 단계들(704, 705, 및 706)로서, 훈련된 신경망의 계층을 표현하는 행렬에서의 모든 이용가능한 열 스왑들의 포괄적 검색을 구현하는 프로세스를 이용한다. 적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 치환들의 세트를 결정하기 위해, 훈련된 신경망의 계층을 표현하는 행렬에 적용될 수 있는 치환들의 세트들을 랜덤으로 검색한다.
적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 훈련된 신경망의 계층을 표현하는 행렬에 적용될 하나 이상의 치환을 결정하기 위해 그리디(greedy) 구성을 수행한다. 적어도 하나의 실시예에서, 그리디 구성 동안, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 행렬의 하나의 열을 고정하고 열 치환들의 모든 나머지 조합들을 테스팅한다. 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 실시예에서, 신경망 정확도를 최상으로 보존하는 열 치환들의 조합을 선택한다.
적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은 그리디 채널 스왑들을 수행한다. C개의 열을 갖는 행렬은
Figure pct00001
개의 가능한 열 스왑들을 갖고, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 최대 이익(단일 스왑에 의한 하나 이상의 메트릭의 최대 증가)으로부터 최소 이익(단일 스왑에 의한 하나 이상의 메트릭의 최소 증가)의 순서로 열 스왑들 또는 치환들을 수행한다. 적어도 하나의 실시예에서, 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, (도 5와 연계하여 위에 설명된 바와 같이) 이전 치환에서 이미 수반된 스트라이프들을 수반하는 치환들을 건너뛴다. 일단 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램이 정확도의 증가를 초래하는 모든 유용한 치환들을 수행하면, 실시예에서, 상기 훈련 프레임워크, 심층 학습 프레임워크, 또는 다른 소프트웨어 프로그램은, 훈련된 신경망의 계층을 표현하는 행렬의 정확도가 최대화될 때까지 주어진 행렬에서 그리디 채널 스왑들을 수행하는 것을 반복한다.
추론 및 훈련 로직
도 8a는 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용되는 추론 및/또는 훈련 로직(815)을 예시한다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 아래에서 제공된다.
적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 제한 없이, 하나 이상의 실시예의 양상들에서 추론을 위해 훈련 및/또는 사용되는 신경망의 뉴런들 또는 계층들을 구성하기 위해 순방향 및/또는 출력 가중치 및/또는 입력/출력 데이터, 및/또는 다른 파라미터들을 저장하기 위한 코드 및/또는 데이터 저장소(801)를 포함할 수 있다. 적어도 하나의 실시예에서, 훈련 로직(815)은, 정수 및/또는 부동 소수점 유닛들(집합적으로, 산술 로직 유닛(ALU)들)을 포함하는 로직을 구성하기 위해 가중치 및/또는 다른 파라미터 정보가 로딩될 타이밍 및/또는 순서를 제어하기 위한 그래프 코드 또는 다른 소프트웨어를 저장하기 위한 코드 및/또는 데이터 저장소(801)를 포함하거나 그에 결합될 수 있다. 적어도 하나의 실시예에서, 코드, 이를테면 그래프 코드는, 그러한 코드가 대응하는 신경망의 아키텍처에 기반하여, 프로세서 ALU들 내에 가중치 또는 다른 파라미터 정보를 로딩한다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801)는, 하나 이상의 실시예의 양상들을 사용하여 훈련 및/또는 추론 동안에 입력/출력 데이터 및/또는 가중치 파라미터들의 순방향 전파 동안 하나 이상의 실시예와 연계하여 훈련되거나 사용되는 신경망의 각각의 계층의 가중치 파라미터들 및/또는 입력/출력 데이터를 저장한다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801)의 임의의 부분은, 프로세서의 L1, L2, 또는 L3 캐시 또는 시스템 메모리를 포함하여, 다른 온-칩 또는 오프-칩 데이터 저장소에 포함될 수 있다.
적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801)의 임의의 부분은, 하나 이상의 프로세서 또는 다른 하드웨어 로직 디바이스들 또는 회로들의 내부 또는 외부에 있을 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 코드 및/또는 데이터 저장소(801)는, 캐시 메모리, 동적 랜덤 어드레싱가능 메모리("DRAM"), 정적 랜덤 어드레싱가능 메모리("SRAM"), 비-휘발성 메모리(예컨대, 플래시 메모리) 또는 다른 저장소일 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 코드 및/또는 데이터 저장소(801)가 프로세서 내부에 있는지 또는 외부에 있는지, 예컨대, 또는 DRAM, SRAM, 플래시 또는 일부 다른 저장소 유형을 포함하는지 여부의 선택은, 이용가능한 온-칩 대 오프-칩 저장소, 수행되는 훈련 및/또는 추론 기능들의 레이턴시 요건들, 신경망의 추론 및/또는 훈련에서 사용되는 데이터의 뱃치 크기, 또는 이러한 인자들의 일부 조합에 의존할 수 있다.
적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 제한 없이, 하나 이상의 실시예의 양상들에서 추론을 위해 훈련 및/또는 사용되는 신경망의 뉴런들 또는 계층들에 대응하는 역방향 및/또는 출력 가중치 및/또는 입력/출력 데이터를 저장하기 위한 코드 및/또는 데이터 저장소(805)를 포함할 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(805)는, 하나 이상의 실시예의 양상들을 사용하여 훈련 및/또는 추론 동안에 입력/출력 데이터 및/또는 가중치 파라미터들의 역방향 전파 동안 하나 이상의 실시예와 연계하여 훈련되거나 사용되는 신경망의 각각의 계층의 가중치 파라미터들 및/또는 입력/출력 데이터를 저장한다. 적어도 하나의 실시예에서, 훈련 로직(815)은, 정수 및/또는 부동 소수점 유닛들(집합적으로, 산술 로직 유닛(ALU)들)을 포함하는 로직을 구성하기 위해 가중치 및/또는 다른 파라미터 정보가 로딩될 타이밍 및/또는 순서를 제어하기 위한 그래프 코드 또는 다른 소프트웨어를 저장하기 위한 코드 및/또는 데이터 저장소(805)를 포함하거나 그에 결합될 수 있다.
적어도 하나의 실시예에서, 코드, 이를테면 그래프 코드는, 그러한 코드가 대응하는 신경망의 아키텍처에 기반하여, 프로세서 ALU들 내로의 가중치 또는 다른 파라미터 정보의 로딩을 야기한다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(805)의 임의의 부분은, 프로세서의 L1, L2, 또는 L3 캐시 또는 시스템 메모리를 포함하여, 다른 온-칩 또는 오프-칩 데이터 저장소에 포함될 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(805)의 임의의 부분은, 하나 이상의 프로세서 또는 다른 하드웨어 로직 디바이스들 또는 회로들의 내부 또는 외부에 있을 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(805)는, 캐시 메모리, DRAM, SRAM, 비-휘발성 메모리(예컨대, 플래시 메모리), 또는 다른 저장소일 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(805)가 프로세서 내부에 있는지 또는 외부에 있는지, 예컨대, 또는 DRAM, SRAM, 플래시 메모리 또는 일부 다른 저장소 유형을 포함하는지 여부의 선택은, 이용가능한 온-칩 대 오프-칩 저장소, 수행되는 훈련 및/또는 추론 기능들의 레이턴시 요건들, 신경망의 추론 및/또는 훈련에서 사용되는 데이터의 뱃치 크기, 또는 이러한 인자들의 일부 조합에 의존할 수 있다.
적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805)는 별개의 저장 구조들일 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805)는 결합된 저장 구조일 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805)는 부분적으로 결합되고 부분적으로 별개일 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805)의 임의의 부분은, 프로세서의 L1, L2, 또는 L3 캐시 또는 시스템 메모리를 포함하여, 다른 온-칩 또는 오프-칩 데이터 저장소에 포함될 수 있다.
적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 제한 없이, 훈련 및/또는 추론 코드(예컨대, 그래프 코드)에 적어도 부분적으로 기반하거나 그에 의해 표시되는 논리적 및/또는 수학적 연산들을 수행하고, 그 결과가, 코드 및/또는 데이터 저장소(801) 및/또는 코드 및/또는 데이터 저장소(805)에 저장된 입력/출력 및/또는 가중치 파라미터 데이터의 함수들인 활성화 저장소(820)에 저장되는 활성화들(예컨대, 신경망 내의 계층들 또는 뉴런들의 출력 값들)을 생성할 수 있는, 정수 및/또는 부동 소수점 유닛들을 포함하는 하나 이상의 산술 로직 유닛(들)("ALU(들)")(810)을 포함할 수 있다. 적어도 하나의 실시예에서, 활성화 저장소(820)에 저장된 활성화들은, 명령어들 또는 다른 코드를 수행하는 것에 대한 응답으로 ALU(들)(810)에 의해 수행되는 선형 대수 및/또는 행렬 기반의 수학에 따라 생성되며, 여기서, 코드 및/또는 데이터 저장소(805) 및/또는 데이터 저장소(801)에 저장된 가중치 값들은, 다른 값들, 이를테면, 바이어스 값들, 구배 정보, 운동량 값들, 또는 다른 파라미터들 또는 하이퍼파라미터들과 함께 피연산자들로 사용되며, 이들 중 임의의 것 또는 전부는 코드 및/또는 데이터 저장소(805) 또는 코드 및/또는 데이터 저장소(801) 또는 온-칩 또는 오프-칩의 다른 저장소에 저장될 수 있다.
적어도 하나의 실시예에서, ALU(들)(810)는, 하나 이상의 프로세서 또는 다른 하드웨어 로직 디바이스 또는 회로 내에 포함되는 반면, 다른 실시예에서, ALU(들)(810)는, 그들을 사용하는 프로세서 또는 다른 하드웨어 로직 디바이스 또는 회로(예컨대, 코프로세서) 외부에 있을 수 있다. 적어도 하나의 실시예에서, ALU들(810)은, 프로세서의 실행 유닛들 내에 또는 그렇지 않으면 동일한 프로세서 내의 또는 상이한 유형들의 상이한 프로세서들(예컨대, 중앙 처리 유닛들, 그래픽 처리 유닛들, 고정 기능 유닛들 등) 사이에 분산된 프로세서의 실행 유닛들에 의해 액세스가능한 ALU들의 뱅크 내에 포함될 수 있다. 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801), 코드 및/또는 데이터 저장소(805), 및 활성화 저장소(820)는, 프로세서 또는 다른 하드웨어 로직 디바이스 또는 회로를 공유할 수 있는 반면, 다른 실시예에서, 그들은 상이한 프로세서들 또는 다른 하드웨어 로직 디바이스들 또는 회로들, 또는 동일한 그리고 상이한 프로세서들 또는 다른 하드웨어 로직 디바이스들 또는 회로들의 일부 조합으로 있을 수 있다. 적어도 하나의 실시예에서, 활성화 저장소(820)의 임의의 부분은, 프로세서의 L1, L2, 또는 L3 캐시 또는 시스템 메모리를 포함하여, 다른 온-칩 또는 오프-칩 데이터 저장소에 포함될 수 있다. 또한, 추론 및/또는 훈련 코드는, 프로세서 또는 다른 하드웨어 로직 또는 회로가 액세스가능한 다른 코드와 함께 저장되고, 프로세서의 페치(fetch), 디코딩, 스케줄링, 실행, 퇴거 및/또는 다른 논리적 회로들을 사용하여 페치 및/또는 처리될 수 있다.
적어도 하나의 실시예에서, 활성화 저장소(820)는, 캐시 메모리, DRAM, SRAM, 비-휘발성 메모리(예컨대, 플래시 메모리), 또는 다른 저장소일 수 있다. 적어도 하나의 실시예에서, 활성화 저장소(820)는, 완전히 또는 부분적으로 하나 이상의 프로세서 또는 다른 논리적 회로 내에 또는 외부에 있을 수 있다. 적어도 하나의 실시예에서, 활성화 저장소(820)가 프로세서 내부에 있는지 또는 외부에 있는지, 예컨대, 또는 DRAM, SRAM, 플래시 메모리 또는 일부 다른 저장소 유형을 포함하는지 여부의 선택은, 이용가능한 온-칩 대 오프-칩 저장소, 수행되는 훈련 및/또는 추론 기능들의 레이턴시 요건들, 신경망의 추론 및/또는 훈련에서 사용되는 데이터의 뱃치 크기, 또는 이러한 인자들의 일부 조합에 의존할 수 있다.
적어도 하나의 실시예에서, 도 8a에 예시된 추론 및/또는 훈련 로직(815)은, 구글(Google)의 텐서플로우(Tensorflow®) 처리 유닛, 그래프코어(Graphcore™)의 추론 처리 유닛(IPU), 인텔 코포레이션(Intel Corp)의 너바나(Nervana®)(예컨대, "레이크 크레스트(Lake Crest") 프로세서와 같은 주문형 집적 회로("ASIC")와 연계하여 사용될 수 있다. 적어도 하나의 실시예에서, 도 8a에 예시된 추론 및/또는 훈련 로직(815)은, 중앙 처리 유닛("CPU") 하드웨어, 그래픽 처리 유닛("GPU") 하드웨어, 또는 다른 하드웨어, 이를테면 필드 프로그래밍가능 게이트 어레이("FPGA")와 연계하여 사용될 수 있다.
도 8b는 적어도 하나의 실시예에 따른 추론 및/또는 훈련 로직(815)을 예시한다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 제한 없이, 계산 리소스들이 전용되거나 또는 신경망 내의 뉴런들의 하나 이상의 계층에 대응하는 가중치 값들 또는 다른 정보와 연계하여 다른 방식으로 배타적으로 사용되는 하드웨어 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 도 8b에 예시된 추론 및/또는 훈련 로직(815)은, 구글의 텐서플로우® 처리 유닛, 그래프코어™의 추론 처리 유닛(IPU), 인텔 코포레이션의 너바나®(예컨대, "레이크 크레스트") 프로세서와 같은 주문형 집적 회로(ASIC)와 연계하여 사용될 수 있다. 적어도 하나의 실시예에서, 도 8b에 예시된 추론 및/또는 훈련 로직(815)은, 중앙 처리 유닛(CPU) 하드웨어, 그래픽 처리 유닛(GPU) 하드웨어, 또는 다른 하드웨어, 이를테면 필드 프로그래밍가능 게이트 어레이(FPGA)와 연계하여 사용될 수 있다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 제한 없이, 코드(예컨대, 그래프 코드), 가중치 값들, 및/또는 바이어스 값들, 구배 정보, 운동량 값들, 및/또는 다른 파라미터 또는 하이퍼파라미터 정보를 포함하는 다른 정보를 저장하는 데 사용될 수 있는, 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805)를 포함한다. 도 8b에 예시된 적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805) 각각은, 전용 계산 리소스, 이를테면, 계산 하드웨어(802) 및 계산 하드웨어(806)와 각각 연관된다. 적어도 하나의 실시예에서, 계산 하드웨어(802) 및 계산 하드웨어(806) 각각은, 각각 코드 및/또는 데이터 저장소(801) 및 코드 및/또는 데이터 저장소(805)에 저장된 정보에 대해서만 선형 대수 함수들 등의 수학적 함수들을 수행하는 하나 이상의 ALU를 포함하며, 그 결과는 활성화 저장소(820)에 저장된다.
적어도 하나의 실시예에서, 코드 및/또는 데이터 저장소(801 및 805) 각각 및 대응하는 계산 하드웨어(802 및 806)는, 각각, 신경망의 상이한 계층들에 대응하는데, 이에 따라, 신경망의 개념적 조직을 미러링하기 위해, 코드 및/또는 데이터 저장소(801) 및 계산 하드웨어(802)의 하나의 저장/계산 쌍(801/802)으로부터 결과적인 활성화가 코드 및/또는 데이터 저장소(805) 및 계산 하드웨어(806)의 다음 저장/계산 쌍(805/806)에 대한 입력으로서 제공된다. 적어도 하나의 실시예에서, 저장/계산 쌍들(801/802 및 805/806) 각각은 하나 초과의 신경망 계층에 대응할 수 있다. 적어도 하나의 실시예에서, 저장/계산 쌍들(801/802 및 805/806)에 후속하거나 그와 병렬인 부가적인 저장/계산 쌍(도시되지 않음)이 추론 및/또는 훈련 로직(815)에 포함될 수 있다.
신경망 훈련 및 배치
도 9는 적어도 하나의 실시예에 따른, 심층 신경망의 훈련 및 배치를 예시한다. 적어도 하나의 실시예에서, 훈련되지 않은 신경망(906)은 훈련 데이터세트(902)를 사용하여 훈련된다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는 파이토치(PyTorch) 프레임워크인 반면, 다른 실시예들에서, 훈련 프레임워크(904)는 텐서플로우, 부스트(Boost), 카페(Caffe), 마이크로소프트 코그니티브 툴킷(Microsoft Cognitive Toolkit)/CNTK, MXNet, 체이너(Chainer), 케라스(Keras), Deeplearning4j, 또는 다른 훈련 프레임워크이다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는 훈련되지 않은 신경망(906)을 훈련시키고, 그 신경망이 본원에 설명된 처리 리소스들을 사용하여 훈련되어 훈련된 신경망(908)이 생성될 수 있게 한다. 적어도 하나의 실시예에서, 가중치들은 랜덤으로 또는 심층 신뢰망을 사용한 사전 훈련에 의해 선택될 수 있다. 적어도 하나의 실시예에서, 훈련은, 지도, 부분적 지도, 또는 비-지도 방식으로 수행될 수 있다.
적어도 하나의 실시예에서, 훈련되지 않은 신경망(906)은 지도 학습을 사용하여 훈련되며, 여기서, 훈련 데이터세트(902)는 입력에 대한 요망되는 출력과 쌍을 이루는 입력을 포함하거나, 또는 훈련 데이터세트(902)가 알려져 있는 출력을 갖는 입력을 포함하는 경우, 신경망(906)의 출력은 수동으로 등급이 매겨진다. 적어도 하나의 실시예에서, 훈련되지 않은 신경망(906)은, 지도 방식으로 훈련되고, 훈련 데이터세트(902)로부터의 입력들을 처리하고, 결과적인 출력들을 예상 또는 요망되는 출력들의 세트에 대해 비교한다. 적어도 하나의 실시예에서, 에러들은 훈련되지 않은 신경망(906)을 통해 다시 전파된다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는, 훈련되지 않은 신경망(906)을 제어하는 가중치들을 조정한다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는, 새로운 데이터세트(912)와 같은 입력 데이터에 기반하여, 훈련되지 않은 신경망(906)이, 이를테면 결과(914)에서 올바른 응답들을 생성하는 데 적합한 모델, 이를테면 훈련된 신경망(908)을 향해 얼마나 잘 수렴하고 있는지를 모니터링하기 위한 툴을 포함한다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는, 확률적 경사 하강법과 같은 손실 함수 및 조정 알고리즘을 사용하여 훈련되지 않은 신경망(906)의 출력을 정교화하기 위해 가중치들을 조정하면서 훈련되지 않은 신경망(906)을 반복적으로 훈련시킨다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는, 훈련되지 않은 신경망(906)이 요망되는 정확도를 달성할 때까지 훈련되지 않은 신경망(906)을 훈련시킨다. 적어도 하나의 실시예에서, 훈련된 신경망(908)은 이어서, 임의의 수의 기계 학습 동작을 구현하도록 배치될 수 있다.
적어도 하나의 실시예에서, 훈련되지 않은 신경망(906)은 비-지도 학습을 사용하여 훈련되고, 여기서, 훈련되지 않은 신경망(906)은 라벨링되지 않은 데이터를 사용하여 그 자신을 훈련시키려고 시도한다. 적어도 하나의 실시예에서, 비-지도 학습 훈련 데이터세트(902)는, 임의의 연관된 출력 데이터 또는 "실측 정보(ground truth)" 데이터가 없는 입력 데이터를 포함할 것이다. 적어도 하나의 실시예에서, 훈련되지 않은 신경망(906)은 훈련 데이터세트(902) 내의 그룹화들을 학습할 수 있고, 개별 입력들이 훈련되지 않은 데이터세트(902)와 어떻게 관련되는지를 결정할 수 있다. 적어도 하나의 실시예에서, 비-지도 훈련은, 새로운 데이터세트(912)의 차원수를 감소시키는 데 유용한 동작들을 수행하는 것이 가능한 훈련된 신경망(908) 내의 자기-조직화 맵을 생성하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 비-지도 훈련은 또한, 새로운 데이터세트(912)의 정상 패턴들로부터 벗어나는 새로운 데이터세트(912)의 데이터 포인트들의 식별을 허용하는 이상 검출을 수행하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 훈련 데이터세트(902) 내에 라벨링된 데이터와 라벨링되지 않은 데이터의 혼합을 포함하는 기법인 준-지도 학습이 사용될 수 있다. 적어도 하나의 실시예에서, 훈련 프레임워크(904)는, 이를테면, 전이 학습(transferred learning) 기법들을 통해, 점진적 학습을 수행하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 점진적 학습은, 훈련된 신경망(908)이, 초기 훈련 동안에 훈련된 신경망(908) 내에 주입된 지식을 잊지 않으면서 새로운 데이터세트(912)에 적응할 수 있게 한다.
데이터 센터
도 10은 적어도 하나의 실시예가 사용될 수 있는 예시적인 데이터 센터(1000)를 예시한다. 적어도 하나의 실시예에서, 데이터 센터(1000)는, 데이터 센터 기반구조 계층(1010), 프레임워크 계층(1020), 소프트웨어 계층(1030), 및 애플리케이션 계층(1040)을 포함한다.
적어도 하나의 실시예에서, 도 10에 도시된 바와 같이, 데이터 센터 기반구조 계층(1010)은, 리소스 조율기(1012), 그룹화된 컴퓨팅 리소스들(1014), 및 노드 컴퓨팅 리소스들("노드 C.R.들")(1016(1)-1016(N))을 포함할 수 있으며, 여기서, "N"은 양의 정수를 표현한다(다른 도면들에서 사용된 것과 상이한 정수 "N"일 수 있음). 적어도 하나의 실시예에서, 노드 C.R.들(1016(1)-1016(N))은 임의의 수의 중앙 처리 유닛("CPU") 또는 다른 프로세서(가속기, 필드 프로그래밍가능 게이트 어레이(FPGA), 그래픽 프로세서 등을 포함함), 메모리 저장 디바이스(1018(1)-1018(N))(예컨대, 동적 판독 전용 메모리, 솔리드 스테이트 저장소 또는 디스크 드라이브), 네트워크 입력/출력("NW I/O") 디바이스, 네트워크 스위치, 가상 기계("VM"), 전력 모듈, 및 냉각 모듈 등을 포함할 수 있지만, 이에 제한되지 않는다. 적어도 하나의 실시예에서, 노드 C.R.들(1016(1)-1016(N)) 중 하나 이상의 노드 C.R.은 위에 언급된 컴퓨팅 리소스들 중 하나 이상을 갖는 서버일 수 있다.
적어도 하나의 실시예에서, 그룹화된 컴퓨팅 리소스들(1014)은, 하나 이상의 랙(도시되지 않음) 내에 수용된 노드 C.R.들의 별개의 그룹들화, 또는 다양한 지리적 위치들(또한 도시되지 않음)에 있는 데이터 센터들에 수용된 많은 랙을 포함할 수 있다. 적어도 하나의 실시예에서, 그룹화된 컴퓨팅 리소스들(1014) 내의 노드 C.R.들의 별개의 그룹화들은, 하나 이상의 작업부하를 지원하도록 구성되거나 할당될 수 있는 그룹화된 컴퓨팅, 네트워크, 메모리, 또는 저장 리소스들을 포함할 수 있다. 적어도 하나의 실시예에서, CPU들 또는 프로세서들을 포함하는 여러 노드 C.R.들은, 하나 이상의 작업부하를 지원하는 컴퓨팅 리소스들을 제공하기 위해 하나 이상의 랙 내에 그룹화될 수 있다. 적어도 하나의 실시예에서, 하나 이상의 랙은 또한, 임의의 수의 전력 모듈, 냉각 모듈, 및 네트워크 스위치를 임의의 조합으로 포함할 수 있다.
적어도 하나의 실시예에서, 리소스 조율기(1012)는, 하나 이상의 노드 C.R.(1016(1)-1016(N)) 및/또는 그룹화된 컴퓨팅 리소스들(1014)을 구성하거나 다른 방식으로 제어할 수 있다. 적어도 하나의 실시예에서, 리소스 조율기(1012)는, 데이터 센터(1000)를 위한 소프트웨어 설계 기반구조("SDI") 관리 엔티티를 포함할 수 있다. 적어도 하나의 실시예에서, 리소스 조율기(812)는, 하드웨어, 소프트웨어, 또는 이들의 일부 조합을 포함할 수 있다.
적어도 하나의 실시예에서, 도 10에 도시된 바와 같이, 프레임워크 계층(1020)은, 작업 스케줄러(1022), 구성 관리자(1024), 리소스 관리자(1026), 및 분산형 파일 시스템(1028)을 포함한다. 적어도 하나의 실시예에서, 프레임워크 계층(1020)은, 소프트웨어 계층(1030)의 소프트웨어(1032) 및/또는 애플리케이션 계층(1040)의 하나 이상의 애플리케이션(들)(1042)을 지원하는 프레임워크를 포함할 수 있다. 적어도 하나의 실시예에서, 소프트웨어(1032) 또는 애플리케이션(들)(1042)은, 각각, 웹 기반 서비스 소프트웨어 또는 애플리케이션들, 이를테면, 아마존 웹 서비스(Amazon Web Services), 구글 클라우드(Google Cloud) 및 마이크로소프트 애저(Microsoft Azure)에 의해 제공되는 것들을 포함할 수 있다. 적어도 하나의 실시예에서, 프레임워크 계층(1020)은, 대규모 데이터 처리(예컨대, "빅 데이터")를 위한 분산형 파일 시스템(1028)을 활용할 수 있는 아파치 스파크(Apache Spark™)(이하에서, "스파크(Spark)")와 같은 자유 및 오픈 소스 소프트웨어 웹 애플리케이션 프레임워크의 한 유형일 수 있지만, 이에 제한되지 않는다. 적어도 하나의 실시예에서, 작업 스케줄러(1032)는, 데이터 센터(1000)의 다양한 계층들에 의해 지원되는 작업부하들의 스케줄링을 용이하게 하기 위해 스파크 드라이버를 포함할 수 있다. 적어도 하나의 실시예에서, 구성 관리자(1024)는, 스파크 및 대규모 데이터 처리를 지원하기 위한 분산형 파일 시스템(1028)을 포함하는 프레임워크 계층(1020) 및 소프트웨어 계층(1030)과 같은 상이한 계층들을 구성하는 것이 가능할 수 있다. 적어도 하나의 실시예에서, 리소스 관리자(1026)는, 분산형 파일 시스템(1028) 및 작업 스케줄러(1022)에 맵핑되거나 그의 지원을 위해 할당된 클러스터링되거나 그룹화된 컴퓨팅 리소스들을 관리하는 것이 가능할 수 있다. 적어도 하나의 실시예에서, 클러스터링되거나 그룹화된 컴퓨팅 리소스들은, 데이터 센터 기반구조 계층(1010)에서 그룹화된 컴퓨팅 리소스들(1014)을 포함할 수 있다. 적어도 하나의 실시예에서, 리소스 관리자(1026)는, 이러한 맵핑되거나 할당된 컴퓨팅 리소스들을 관리하기 위해 리소스 조율기(1012)와 협력할 수 있다.
적어도 하나의 실시예에서, 소프트웨어 계층(1030)에 포함된 소프트웨어(1032)는, 노드 C.R.들(1016(1)-1016(N)), 그룹화된 컴퓨팅 리소스들(1014), 및/또는 프레임워크 계층(1020)의 분산형 파일 시스템(1028)의 적어도 일부분들에 의해 사용되는 소프트웨어를 포함할 수 있다. 적어도 하나의 실시예에서, 소프트웨어의 하나 이상의 유형은, 인터넷 웹 페이지 검색 소프트웨어, 이메일 바이러스 스캔 소프트웨어, 데이터베이스 소프트웨어, 및 스트리밍 비디오 콘텐츠 소프트웨어를 포함할 수 있지만, 이에 제한되지 않는다.
적어도 하나의 실시예에서, 애플리케이션 계층(1040)에 포함된 애플리케이션(들)(1042)은, 노드 C.R.들(1016(1)-1016(N)), 그룹화된 컴퓨팅 리소스들(1014), 및/또는 프레임워크 계층(1020)의 분산형 파일 시스템(1028)의 적어도 일부분들에 의해 사용되는 하나 이상의 유형의 애플리케이션들을 포함할 수 있다. 적어도 하나의 실시예에서, 하나 이상의 유형의 애플리케이션들은, 임의의 수의 유전체학 애플리케이션, 인지 컴퓨팅, 애플리케이션, 및 훈련 또는 추론 소프트웨어, 기계 학습 프레임워크 소프트웨어(예컨대, 파이토치, 텐서플로우, 카페 등) 또는 하나 이상의 실시예와 연계하여 사용되는 다른 기계 학습 애플리케이션들을 포함하는 기계 학습 애플리케이션을 포함할 수 있지만, 이에 제한되지 않는다.
적어도 하나의 실시예에서, 구성 관리자(1024), 리소스 관리자(1026), 및 리소스 조율기(1012) 중 임의의 것은, 임의의 기술적으로 실현가능한 방식으로 취득되는 데이터의 임의의 양 및 유형에 기반하여 임의의 수 및 유형의 자기-수정 동작들을 구현할 수 있다. 적어도 하나의 실시예에서, 자기-수정 동작들은, 데이터 센터(1000)의 데이터 센터 운영자가 혹시라도 잘못된 구성 결정들을 행하는 것을 완화할 수 있고, 가능하게는, 데이터 센터의 과소 활용되고/거나 불량한 수행을 하는 부분들을 회피할 수 있다.
적어도 하나의 실시예에서, 데이터 센터(1000)는, 본원에 설명된 하나 이상의 실시예에 따라 하나 이상의 기계 학습 모델을 훈련시키거나 하나 이상의 기계 학습 모델을 사용하여 정보를 예측 또는 추론하기 위한 툴들, 서비스들, 소프트웨어 또는 다른 리소스들을 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, 기계 학습 모델은, 데이터 센터(1000)와 관련하여 위에 설명된 소프트웨어 및 컴퓨팅 리소스들을 사용하여 신경망 아키텍처에 따라 가중치 파라미터들을 계산함으로써 훈련될 수 있다. 적어도 하나의 실시예에서, 하나 이상의 신경망에 대응하는 훈련된 기계 학습 모델들은, 본원에 설명된 하나 이상의 훈련 기법을 통해 계산된 가중치 파라미터들을 사용함으로써 데이터 센터(1000)와 관련하여 위에 설명된 리소스들을 사용하여 정보를 추론 또는 예측하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 데이터 센터는, 위에 설명된 리소스들을 사용하여 훈련 및/또는 추론을 수행하기 위해, CPU들, 주문형 집적 회로(ASIC)들, GPU들, FPGA들, 또는 다른 하드웨어를 사용할 수 있다. 더욱이, 위에 설명된 하나 이상의 소프트웨어 및/또는 하드웨어 리소스는, 사용자가, 이미지 인식, 음성 인식, 또는 다른 인공 지능 서비스들과 같은, 정보의 추론을 훈련하거나 수행하는 것을 허용하는 서비스로서 구성될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 10의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 10의 시스템에서 사용될 수 있다.
자율 차량
도 11a는 적어도 하나의 실시예에 따른 자율 차량(1100)의 예를 예시한다. 적어도 하나의 실시예에서, 자율 차량(1100)(대안적으로, 본원에서 "차량(1100)"으로 지칭됨)은, 제한 없이, 승용차, 예컨대 자동차, 트럭, 버스, 및/또는 하나 이상의 탑승자를 수용하는 다른 유형의 차량일 수도 있다. 적어도 하나의 실시예에서, 차량(1100)은, 화물을 운반하기 위해 사용되는 세미-트랙터-트레일러 트럭일 수도 있다. 적어도 하나의 실시예에서, 차량(1100)은, 비행기, 로봇 차량, 또는 다른 종류의 차량일 수 있다.
자율 차량들은, 미국 교통부(US Department of Transportation) 산하 미국 고속도로 교통 안전국(National Highway Traffic Safety Administration)("NHTSA"), 및 자동차 기술자 협회(Society of Automotive Engineers)("SAE")의 "도로 위 자동차용 운전 자동화 시스템들과 관련된 용어들에 대한 분류 및 정의들(Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles)"에 의해 정의된 자동화 레벨들(예컨대, 2018년 6월 15자로 발표된 표준 번호 제J3016-201806호, 2016년 9월 30일자로 발표된 표준 번호 제J3016-201609호, 및 이러한 표준의 이전 및 향후의 버전들)의 관점에서 설명될 수 있다. 하나 이상의 실시예에서, 차량(1100)은, 레벨 1 내지 레벨 5의 자율 주행 레벨들 중 하나 이상에 따른 기능성이 가능할 수 있다. 예컨대, 적어도 하나의 실시예에서, 차량(1100)은, 실시예에 따라, 조건부 자동화(레벨 3), 고도의 자동화(레벨 4), 및/또는 완전 자동화(레벨 5)가 가능할 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 제한 없이, 차량의 구성요소들, 이를테면, 섀시, 차량 몸체, 휠들(예컨대, 2개, 4개, 6개, 8개, 18개 등), 타이어들, 차축들, 및 다른 구성요소을 포함할 수 있다. 적어도 하나의 실시예에서, 차량(1100)은, 제한 없이, 추진 시스템(1150), 이를테면, 내부 연소 엔진, 하이브리드 발전 장치, 순수 전기 엔진, 및/또는 다른 추진 시스템 유형을 포함할 수 있다. 적어도 하나의 실시예에서, 추진 시스템(1150)은 차량(1100)의 추진을 가능하게 하기 위해, 제한 없이, 변속기를 포함할 수 있는, 차량(1100)의 구동 트레인에 연결될 수 있다. 적어도 하나의 실시예에서, 추진 시스템(1150)은, 스로틀/가속기(들)(1152)로부터 신호들을 수신하는 것에 대한 응답으로 제어될 수 있다.
적어도 하나의 실시예에서, 제한 없이, 조향 휠을 포함할 수 있는 조향 시스템(1154)은, 추진 시스템(1150)이 동작하고 있을 때(예컨대, 차량(1100)이 움직이고 있을 때) 차량(1100)을 (예컨대, 요망되는 경로 또는 루트를 따라) 조향하는 데 사용된다. 적어도 하나의 실시예에서, 조향 시스템(1154)은, 조향 액추에이터(들)(1156)로부터 신호를 수신할 수 있다. 적어도 하나의 실시예에서, 조향 휠은, 완전 자동화(레벨 5) 기능성에 대해 임의적일 수 있다. 적어도 하나의 실시예에서, 브레이크 센서 시스템(1146)은, 브레이크 액추에이터(들)(1148) 및/또는 브레이크 센서들로부터 신호들을 수신하는 것에 대한 응답으로 차량 브레이크들을 동작시키는 데 사용될 수 있다.
적어도 하나의 실시예에서, 제한 없이, 하나 이상의 시스템 온 칩("SoC")(도 11a에 도시되지 않음) 및/또는 그래픽 처리 유닛("GPU")을 포함할 수 있는 제어기(들)(1136)는, 차량(1100)의 하나 이상의 구성요소 및/또는 시스템에 신호들(예컨대, 명령들을 나타냄)를 제공한다. 예컨대, 적어도 하나의 실시예에서, 제어기(들)(1136)는, 브레이크 액추에이터(들)(1148)를 통해 차량 브레이크들을 동작시키고, 조향 액추에이터(들)(1156)를 통해 조향 시스템(1154)을 동작시키고, 스로틀/가속기(들)(1152)를 통해 추진 시스템(1150)을 동작시키기 위한 신호들을 전송할 수 있다. 적어도 하나의 실시예에서, 제어기(들)(1136)는, 센서 신호들을 처리하고 자율 주행을 가능하게 하고/거나 차량(1100)을 주행하는 데 있어서 인간 운전자를 보조하기 위한 동작 명령들(예컨대, 명령을 표현하는 신호들)을 출력하는 하나 이상의 온보드(예컨대, 통합) 컴퓨팅 디바이스를 포함할 수 있다. 적어도 하나의 실시예에서, 제어기(들)(1136)는, 자율 주행 기능들을 위한 제1 제어기, 기능적 안전 기능들을 위한 제2 제어기, 인공 지능 기능성(예컨대, 컴퓨터 비전)을 위한 제3 제어기, 인포테인먼트 기능성을 위한 제4 제어기, 긴급 조건들에서의 대리 기능성(redundancy)을 위한 제5 제어기, 및/또는 다른 제어기들을 포함할 수 있다. 적어도 하나의 실시예에서, 단일 제어기가 위의 기능성들 중 2개 이상을 처리할 수 있고, 2개 이상의 제어기가 단일 기능성을 처리할 수 있고/거나, 이들의 임의의 조합일 수 있다.
적어도 하나의 실시예에서, 제어기(들)(1136)는, 하나 이상의 센서로부터 수신되는 센서 데이터(예컨대, 센서 입력)에 대한 응답으로 차량(1100)의 하나 이상의 구성요소 및/또는 시스템을 제어하기 위한 신호들을 제공한다. 적어도 하나의 실시예에서, 센서 데이터는, 예컨대, 그리고 제한 없이, 전역 항법 위성 시스템("GNSS") 센서(들)(1158)(예컨대, 전역 위치결정 시스템 센서(들)), RADAR 센서(들)(1160), 초음파 센서(들)(1162), LIDAR 센서(들)(1164), 관성 측정 유닛("IMU") 센서(들)(1166)(예컨대, 가속도계(들), 자이로스코프(들), 자기 나침반 또는 자기 나침반들, 자력계(들) 등), 마이크로폰(들)(1196), 스테레오 카메라(들)(1168), 와이드-뷰 카메라(들)(1170)(예컨대, 어안 카메라들), 적외선 카메라(들)(1172), 서라운드 카메라(들)(1174)(예컨대, 360 도 카메라들), 장거리 카메라들(도 11a에 도시되지 않음), 중거리 카메라(들)(도 11a에 도시되지 않음), (예컨대, 차량(1100)의 속도를 측정하기 위한) 속도 센서(들)(1144), 진동 센서(들)(1142), 조향 센서(들)(1140), (예컨대, 브레이크 센서 시스템(1146)의 일부로서의) 브레이크 센서(들), 및/또는 다른 센서 유형들로부터 수신될 수 있다.
적어도 하나의 실시예에서, 제어기(들)(1136) 중 하나 이상은, 차량(1100)의 계기 클러스터(1132)로부터 입력들(예컨대, 입력 데이터로 표현됨)을 수신하고, 인간-기계 인터페이스("HMI") 디스플레이(1134), 가청 호출표시기(annunciator), 라우드스피커를 통해 그리고/또는 차량(1100)의 다른 구성요소들을 통해 출력들(예컨대, 출력 데이터, 디스플레이 데이터 등으로 표현됨)을 제공할 수 있다. 적어도 하나의 실시예에서, 출력들은, 정보, 이를테면, 차량 속도, 속력, 시간, 맵 데이터(예컨대, 고해상도 맵(도 11a에 도시되지 않음)), 위치 데이터(예컨대, 이를테면 맵 상에서의 차량(1100)의 위치), 방향, 다른 차량들의 위치(예컨대, 점유 그리드), 제어기(들)(1136)에 의해 인지되는 바와 같은 객체들 및 객체들의 상태에 관한 정보 등을 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, HMI 디스플레이(1134)는, 하나 이상의 객체(예컨대, 도로 표지, 주의 표지, 신호등 변경 등)의 존재에 관한 정보, 및/또는 차량이 행했거나, 행하고 있거나, 또는 행할 주행 조종들에 관한 정보(예컨대, 지금 차선 변경, 2 마일 이내의 출구 34B로 나감 등)를 디스플레이할 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 하나 이상의 네트워크를 통해 통신하기 위해 무선 안테나(들)(1126) 및/또는 모뎀(들)을 사용할 수 있는 네트워크 인터페이스(1124)를 더 포함한다. 예컨대, 적어도 하나의 실시예에서, 네트워크 인터페이스(1124)는, 롱 텀 에볼루션("LTE"), 광대역 코드 분할 다중 액세스("WCDMA"), 범용 모바일 원격통신 시스템("UMTS"), 모바일 통신을 위한 전역 시스템("GSM"), IMT-CDMA 다중-캐리어("CDMA2000") 네트워크들 등을 통한 통신이 가능할 수 있다. 적어도 하나의 실시예에서, 무선 안테나(들)(1126)는 또한, 블루투스(Bluetooth), 블루투스 저에너지("LE"), 지-웨이브(Z-Wave), 지그비(ZigBee) 등과 같은 근거리 네트워크(들) 및/또는 로라완(LoRaWAN), 시그폭스(SigFox) 등과 같은 저전력 광역 네트워크(들)("LPWAN") 프로토콜들을 사용하여 환경 내의 객체들(예컨대, 차량들, 모바일 디바이스들 등) 사이의 통신을 가능하게 할 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 11a의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 11a의 시스템에서 사용될 수 있다.
도 11b는 적어도 하나의 실시예에 따른, 도 11a의 자율 차량(1100)에 대한 카메라 위치들 및 시야들의 예를 예시한다. 적어도 하나의 실시예에서, 카메라들 및 개개의 시야들은 하나의 예시적인 실시예이고, 제한적인 것으로 의도되지 않는다. 예컨대, 적어도 하나의 실시예에서, 부가적인 그리고/또는 대안적인 카메라들이 포함될 수 있고/거나 카메라들은 차량(1100) 상의 상이한 위치들에 위치될 수 있다.
적어도 하나의 실시예에서, 카메라들에 대한 카메라 유형들은, 차량(1100)의 구성요소들 및/또는 시스템들과 함께 사용하도록 적응될 수 있는 디지털 카메라들을 포함할 수 있지만, 이에 제한되지 않는다. 적어도 하나의 실시예에서, 카메라(들)는, 자동차 안전 무결성 레벨("ASIL") B에서 그리고/또는 다른 ASIL에서 동작할 수 있다. 적어도 하나의 실시예에서, 카메라 유형들은, 실시예에 따라, 초당 60 프레임(fps), 1220 fps, 240 fps 등과 같은 임의의 이미지 포착률이 가능할 수 있다. 적어도 하나의 실시예에서, 카메라들은, 롤링 셔터들, 전역 셔터들, 다른 유형의 셔터, 또는 이들의 조합을 사용하는 것이 가능할 수 있다. 적어도 하나의 실시예에서, 컬러 필터 어레이는, 적색 클리어 클리어("RCCC") 컬러 필터 어레이, 적색 클리어 클리어 블루("RCCB") 컬러 필터 어레이, 적색 청색 녹색 클리어("RBGC") 컬러 필터 어레이, 포비온(Foveon) X3 컬러 필터 어레이, 베이어(Bayer) 센서("RGGB") 컬러 필터 어레이, 흑백(monochrome) 센서 컬러 필터 어레이, 및/또는 다른 유형의 컬러 필터 어레이를 포함할 수 있다. 적어도 하나의 실시예에서, 광 감도를 증가시키기 위한 노력으로, RCCC, RCCB, 및/또는 RBGC 컬러 필터 어레이를 갖는 카메라들과 같은 클리어 픽셀 카메라들이 사용될 수 있다.
적어도 하나의 실시예에서, 카메라(들) 중 하나 이상은 (예컨대, 중복적 또는 고장 안전(fail-safe) 설계의 일부로서) 첨단 운전자 보조 시스템("ADAS") 기능들을 수행하는 데 사용될 수 있다. 예컨대, 적어도 하나의 실시예에서, 차선 이탈 경고, 교통 표지 보조 및 지능형 헤드램프 제어를 포함하는 기능들을 제공하기 위해 다기능 모노 카메라가 설치될 수 있다. 적어도 하나의 실시예에서, 카메라(들) 중 하나 이상(예컨대, 모든 카메라들)은 이미지 데이터(예컨대, 비디오)를 동시에 기록하고 제공할 수 있다.
적어도 하나의 실시예에서, 하나 이상의 카메라는, 카메라 이미지 데이터 포착 능력들에 간섭할 수 있는 차량(1100) 내로부터의 미광 및 반사들(예컨대, 전면유리(windshield) 미러들에서 반사되는 계기판로부터의 반사들)을 차단하기 위해, 맞춤 설계된(3차원("3D") 인쇄된) 조립체와 같은 장착 조립체에 장착될 수 있다. 사이드 미러(wing-mirror) 장착 조립체들을 참조하면, 적어도 하나의 실시예에서, 사이드 미러 조립체들은, 카메라 장착 판이 사이드 미러의 형상과 매칭하도록 맞춤 3D 인쇄될 수 있다. 적어도 하나의 실시예에서, 카메라(들)는 사이드 미러에 통합될 수 있다. 적어도 하나의 실시예에서, 측면-뷰 카메라들에 대해, 카메라(들)는 또한 캐빈(cabin)의 각각의 모서리에 있는 4개의 기둥 내에 통합될 수 있다.
적어도 하나의 실시예에서, 차량(1100) 앞의 환경의 부분들을 포함하는 시야를 갖는 카메라들(예컨대, 전방 카메라들)은, 전방 경로들 및 장애물들을 식별하는 것을 도울 뿐만 아니라, 제어기(들)(1136) 및/또는 제어 SoC들 중 하나 이상의 도움으로, 점유 그리드를 생성하고/거나 바람직한 차량 경로들을 결정하는 데 중요한 정보를 제공하는 데 도움을 주기 위해 서라운드 뷰에 사용될 수 있다. 적어도 하나의 실시예에서, 전방 카메라들은, 제한 없이, 긴급 제동, 보행자 검출, 및 충돌 회피를 포함하는, LIDAR와 유사한 많은 ADAS 기능들을 수행하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 전방 카메라들은 또한, 제한 없이, 차선 이탈 경고("LDW"), 자율 순항 제어("ACC"), 및/또는 교통 표지 인식과 같은 다른 기능들을 포함하는, ADAS 기능들 및 시스템들에 대해 사용될 수 있다.
적어도 하나의 실시예에서, 예컨대, CMOS("상보형 금속 산화물 반도체") 컬러 이미저를 포함하는 단안 카메라 플랫폼을 포함하는 다양한 카메라들이 전방 구성에서 사용될 수 있다. 적어도 하나의 실시예에서, 와이드-뷰 카메라(1170)는, 주변부로부터 뷰 내에 들어오는 객체들(예컨대, 보행자들, 교차 통행(traffic) 또는 자전거들)을 인지하기 위해 사용될 수 있다. 하나의 와이드-뷰 카메라(1170)만이 도 11b에 예시되지만, 다른 실시예들에서, 차량(1100) 상에 임의의 수(영개를 포함함)의 와이드-뷰 카메라가 존재할 수 있다. 적어도 하나의 실시예에서, 임의의 수의 장거리 카메라(들)(1198)(예컨대, 장거리 뷰 스테레오 카메라 쌍)가 깊이 기반 객체 검출을 위해, 특히, 신경망이 아직 훈련되지 않은 객체들에 대해 사용될 수 있다. 적어도 하나의 실시예에서, 장거리 카메라(들)(1198)는 또한, 객체 검출 및 분류뿐만 아니라 기본 객체 추적을 위해 사용될 수 있다.
적어도 하나의 실시예에서, 임의의 수의 스테레오 카메라(들)(1168)가 또한 전방 구성에 포함될 수 있다. 적어도 하나의 실시예에서, 스테레오 카메라(들)(1168) 중 하나 이상은, 단일 칩 상에 통합 제어기 영역 네트워크("CAN") 또는 이더넷 인터페이스를 갖는 멀티코어 마이크로프로세서 및 프로그래밍가능 로직("FPGA")을 제공할 수 있는 확장가능 처리 유닛을 포함하는 통합 제어 유닛을 포함할 수 있다. 적어도 하나의 실시예에서, 그러한 유닛은, 이미지 내의 모든 포인트들에 대한 거리 추정치를 포함하는, 차량(1100)의 환경의 3D 맵을 생성하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 스테레오 카메라(들)(1168) 중 하나 이상은, 제한 없이, 2개의 카메라 렌즈(각각 좌측 및 우측에 하나씩)를 제한 없이 포함할 수 있는 콤팩트 스테레오 비전 센서(들) 및 차량(1100)으로부터 타깃 객체까지의 거리를 측정하고 생성된 정보(예컨대, 메타데이터)를 사용하여 자율 긴급 제동 및 차선 이탈 경고 기능들을 활성화시킬 수 있는 이미지 처리 칩을 포함할 수 있다. 적어도 하나의 실시예에서, 다른 유형들의 스테레오 카메라(들)(1168)가 본원에 설명된 것들에 부가하여 또는 그들에 대안적으로 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)의 측면들에 대한 환경의 부분들을 포함하는 시야를 갖는 카메라들(예컨대, 측면-뷰 카메라들)은 서라운드 뷰에 사용될 수 있어서, 점유 그리드를 생성하고 업데이트할 뿐만 아니라 측면 충격 충돌 경고들을 생성하는 데 사용되는 정보를 제공한다. 예컨대, 적어도 하나의 실시예에서, 서라운드 카메라(들)(1174)(예컨대, 도 11b에 예시된 바와 같은 4개의 서라운드 카메라)는 차량(1100) 상에 위치될 수 있다. 적어도 하나의 실시예에서, 서라운드 카메라(들)(1174)는, 제한 없이, 임의의 수 및 조합의 와이드-뷰 카메라들, 어안 카메라(들), 360 도 카메라(들), 및/또는 유사한 카메라들을 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, 4개의 어안 카메라는 차량(1100)의 전방, 후방, 및 측면들 상에 위치될 수 있다. 적어도 하나의 실시예에서, 차량(1100)은, 3개의 서라운드 카메라(들)(1174)(예컨대, 좌측, 우측, 및 후방)를 사용할 수 있고, 하나 이상의 다른 카메라(들)(예컨대, 전방 카메라)를 제4 서라운드 뷰 카메라로서 활용할 수 있다.
적어도 하나의 실시예에서, 차량(1100) 뒤의 환경의 부분들을 포함하는 시야를 갖는 카메라들(예컨대, 후방-뷰 카메라들)은, 주차 보조, 서라운드 뷰, 후방 충돌 경고들, 및 점유 그리드의 생성 및 업데이트에 사용될 수 있다. 적어도 하나의 실시예에서, 본원에 설명된 바와 같이 전방 카메라(들)(예컨대, 장거리 카메라들(1198) 및/또는 중거리 카메라(들)(1176), 스테레오 카메라(들)(1168), 적외선 카메라(들)(1172) 등)로서 또한 적합한 카메라들을 포함하지만 이에 제한되지 않는 광범위하게 다양한 카메라들이 사용될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 11b의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 11b의 시스템에서 사용될 수 있다.
도 11c는 적어도 하나의 실시예에 따른, 도 11a의 자율 차량(1100)에 대한 예시적인 시스템 아키텍처를 예시하는 블록도이다. 적어도 하나의 실시예에서, 도 11c의 차량(1100)의 구성요소들, 특징들, 및 시스템들 각각은 버스(1102)를 통해 연결되는 것으로서 예시된다. 적어도 하나의 실시예에서, 버스(1102)는, 제한 없이, CAN 데이터 인터페이스(대안적으로, 본원에서 "CAN 버스"로 지칭됨)를 포함할 수 있다. 적어도 하나의 실시예에서, CAN은, 브레이크의 작동, 가속, 제동, 조향, 전면유리 와이퍼들 등과 같은, 차량(1100)의 다양한 특징들 및 기능성의 제어에 도움을 주는 데 사용되는 차량(1100) 내부의 네트워크일 수 있다. 적어도 하나의 실시예에서, 버스(1102)는, 각각이 그 자신의 고유 식별자(예컨대, CAN ID)를 갖는, 수십 개 또는 심지어 수백 개의 노드들을 갖도록 구성될 수 있다. 적어도 하나의 실시예에서, 버스(1102)는, 조향 휠 각도, 지상 속도, 분당 엔진 회전수("RPM"), 버튼 위치들, 및/또는 다른 차량 상태 표시자들을 찾기 위해 판독될 수 있다. 적어도 하나의 실시예에서, 버스(1102)는, ASIL B를 준수하는 CAN 버스일 수 있다.
적어도 하나의 실시예에서, CAN에 부가하여 또는 그에 대안적으로, 플렉스레이(FlexRay) 및/또는 이더넷 프로토콜들이 사용될 수 있다. 적어도 하나의 실시예에서, 버스(1102)를 형성하는 임의의 수의 버스가 존재할 수 있고, 이는, 제한 없이, 영개 이상의 CAN 버스, 영개 이상의 플렉스레이 버스, 영개 이상의 이더넷 버스, 및/또는 상이한 프로토콜들을 사용하는 영개 이상의 다른 유형의 버스들을 포함할 수 있다. 적어도 하나의 실시예에서, 2개 이상의 버스가 상이한 기능들을 수행하는 데 사용될 수 있고/거나 중복성을 위해 사용될 수 있다. 예컨대, 제1 버스는 충돌 회피 기능성을 위해 사용될 수 있고 제2 버스는 작동 제어에 사용될 수 있다. 적어도 하나의 실시예에서, 버스(1102)의 각각의 버스는 차량(1100)의 구성요소들 중 임의의 구성요소와 통신할 수 있고, 버스(1102)의 2개 이상의 버스는 대응하는 구성요소들과 통신할 수 있다. 적어도 하나의 실시예에서, 임의의 수의 시스템(들) 온 칩(들)("SoC(들)")(1104)(이를테면, SoC(1104(A) 및 SoC(1104(B)) 각각, 제어기(들)(1136) 각각, 및/또는 차량 내의 각각의 컴퓨터는, 동일한 입력 데이터(예컨대, 차량(1100)의 센서들로부터의 입력들)에 액세스할 수 있고, CAN 버스와 같은 공통 버스에 연결될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 도 11a와 관련하여 본원에 설명되는 것들과 같은 하나 이상의 제어기(들)(1136)를 포함할 수 있다. 적어도 하나의 실시예에서, 제어기(들)(1136)는 다양한 기능들을 위해 사용될 수 있다. 적어도 하나의 실시예에서, 제어기(들)(1136)는, 차량(1100)의 다양한 다른 구성요소들 및 시스템들 중 임의의 것에 결합될 수 있고, 차량(1100)의 제어, 차량(1100)의 인공 지능, 차량(1100)에 대한 인포테인먼트, 및/또는 다른 기능들에 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 임의의 수의 SoC(1104)를 포함할 수 있다. 적어도 하나의 실시예에서, SoC들(1104) 각각은, 제한 없이, 중앙 처리 유닛들("CPU(들)")(1106), 그래픽 처리 유닛들("GPU(들)")(1108), 프로세서(들)(1110), 캐시(들)(1112), 가속기(들)(1114), 데이터 저장소(들)(1116), 및/또는 예시되지 않은 다른 구성요소들 및 특징들을 포함할 수 있다. 적어도 하나의 실시예에서, SoC(들)(1104)는 다양한 플랫폼들 및 시스템들에서 차량(1100)을 제어하는 데 사용될 수 있다. 예컨대, 적어도 하나의 실시예에서, SoC(들)(1104)는, 하나 이상의 서버(도 11c에 도시되지 않음)로부터 네트워크 인터페이스(1124)를 통해 맵 리프레시들 및/또는 업데이트들을 획득할 수 있는 고해상도("HD") 맵(1122)과 시스템(예컨대, 차량(1100)의 시스템)에서 결합될 수 있다.
적어도 하나의 실시예에서, CPU(들)(1106)는, CPU 클러스터 또는 CPU 컴플렉스(CPU complex)(본원에서 대안적으로 "CCPLEX"로 지칭됨)를 포함할 수 있다. 적어도 하나의 실시예에서, CPU(들)(1106)는 다수의 코어들 및/또는 레벨 2("L2") 캐시들을 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, CPU(들)(1106)는 일관된 멀티프로세서 구성으로 8개의 코어를 포함할 수 있다. 적어도 하나의 실시예에서, CPU(들)(1106)는, 각각의 클러스터가 전용 L2 캐시(예컨대, 2 메가바이트(MB) L2 캐시)를 갖는 4개의 듀얼-코어 클러스터를 포함할 수 있다. 적어도 하나의 실시예에서, CPU(들)(1106)(예컨대, CCPLEX)는, CPU(들)(1106)의 클러스터들의 임의의 조합이 임의의 주어진 시간에 활성일 수 있게 하는 동시적 클러스터 동작들을 지원하도록 구성될 수 있다.
적어도 하나의 실시예에서, CPU(들)(1106) 중 하나 이상은, 제한 없이, 다음의 특징들: 개별 하드웨어 블록들이 동적 전력을 절약하기 위해 유휴일 때 자동으로 클록-게이팅될 수 있음; 각각의 코어 클록이 그러한 코어가 인터럽트 대기("WFI")/이벤트 대기("WFE") 명령어들의 실행으로 인해 명령어들을 능동적으로 실행하고 있지 않을 때 게이팅될 수 있음; 각각의 코어가 독립적으로 전력-게이팅될 수 있음; 각각의 코어 클러스터가, 모든 코어들이 클록-게이팅되거나 전력-게이팅될 때 독립적으로 클록-게이팅될 수 있음; 그리고/또는 각각의 코어 클러스터가, 모든 코어들이 전력-게이팅될 때 독립적으로 전력-게이팅될 수 있음 중 하나 이상을 포함하는 전력 관리 능력들을 구현할 수 있다. 적어도 하나의 실시예에서, CPU(들)(1106)는, 전력 상태들을 관리하기 위한 향상된 알고리즘을 추가로 구현할 수 있고, 여기서, 허용된 전력 상태들 및 예상 기상 시간들이 특정되고, 하드웨어/마이크로코드는, 코어, 클러스터, 및 CCPLEX에 대해 어느 최상의 전력 상태를 입력할지를 결정한다. 적어도 하나의 실시예에서, 처리 코어들은, 마이크로코드에 오프로드된 작업으로 소프트웨어에서 단순화된 전력 상태 엔트리 시퀀스들을 지원할 수 있다.
적어도 하나의 실시예에서, GPU(들)(1108)는 통합 GPU(대안적으로, 본원에서 "iGPU"로 지칭됨)를 포함할 수 있다. 적어도 하나의 실시예에서, GPU(들)(1108)는 프로그래밍가능할 수 있고 병렬 작업부하들에 효율적일 수 있다. 적어도 하나의 실시예에서, GPU(들)(1108)는 향상된 텐서 명령어 세트를 사용할 수 있다. 실시예 상에서, GPU(들)(1108)는 하나 이상의 스트리밍 마이크로프로세서를 포함할 수 있으며, 여기서, 각각의 스트리밍 마이크로프로세서는, 레벨 1("L1") 캐시(예컨대, 적어도 96 KB 저장 용량을 갖는 L1 캐시)를 포함할 수 있고, 2개 이상의 스트리밍 마이크로프로세서는 L2 캐시(예컨대, 512 KB 저장 용량을 갖는 L2 캐시)를 공유할 수 있다. 적어도 하나의 실시예에서, GPU(들)(1108)는 적어도 8개의 스트리밍 마이크로프로세서를 포함할 수 있다. 적어도 하나의 실시예에서, GPU(들)(1108)는 컴퓨팅 애플리케이션 프로그래밍 인터페이스(들)(API(들))를 사용할 수 있다. 적어도 하나의 실시예에서, GPU(들)(1108)는 하나 이상의 병렬 컴퓨팅 플랫폼 및/또는 프로그래밍 모델(예컨대, 엔비디아(NVIDIA)의 CUDA 모델)을 사용할 수 있다.
적어도 하나의 실시예에서, GPU(들)(1108) 중 하나 이상은 자동차 및 임베디드 사용 경우들에서 최상의 성능을 위해 전력 최적화될 수 있다. 예컨대, 하나의 실시예에서, GPU(들)(1108)는 핀 전계-효과 트랜지스터(Fin field-effect transistor)("FinFET") 회로 상에 제조될 수 있다. 적어도 하나의 실시예에서, 각각의 스트리밍 마이크로프로세서는, 다수의 블록들로 파티셔닝되는 다수의 혼합-정밀도 처리 코어들을 포함할 수 있다. 예컨대, 그리고 제한 없이, 64개의 PF32 코어 및 32개의 PF64 코어가 4개의 처리 블록으로 파티셔닝될 수 있다. 적어도 하나의 실시예에서, 각각의 처리 블록에는, 심층 학습 행렬 산술을 위한 16개의 FP32 코어, 8개의 FP64 코어, 16개의 INT32 코어, 2개의 혼합-정밀도 엔비디아 텐서 코어, 레벨 영("L0") 명령어 캐시, 워프(warp) 스케줄러, 디스패치 유닛, 및/또는 64 KB 레지스터 파일이 할당될 수 있다. 적어도 하나의 실시예에서, 스트리밍 마이크로프로세서들은, 계산 및 어드레싱 계산들의 혼합으로 작업부하들의 효율적인 실행을 제공하기 위해 독립적인 병렬 정수 및 부동 소수점 데이터 경로들을 포함할 수 있다. 적어도 하나의 실시예에서, 스트리밍 마이크로프로세서들은, 병렬 스레드들 사이의 더 세밀한 동기화 및 협력을 가능하게 하는 독립적인 스레드 스케줄링 능력을 포함할 수 있다. 적어도 하나의 실시예에서, 스트리밍 마이크로프로세서들은, 프로그래밍을 단순화하면서 성능을 개선하기 위해, 결합된 L1 데이터 캐시 및 공유 메모리 유닛을 포함할 수 있다.
적어도 하나의 실시예에서, GPU(들)(1108) 중 하나 이상은, 일부 예들에서, 약 900 GB/초 피크 메모리 대역폭을 제공하기 위해 고-대역폭 메모리("HBM") 및/또는 16 GB HBM2 메모리 서브시스템을 포함할 수 있다. 적어도 하나의 실시예에서, HBM 메모리에 부가하여 또는 그에 대안적으로, 그래픽 2배 데이터율 유형 5 동기식 랜덤 액세스 메모리("GDDR5")와 같은 동기식 그래픽 랜덤 액세스 메모리("SGRAM")가 사용될 수 있다.
적어도 하나의 실시예에서, GPU(들)(1108)는 통합 메모리 기술을 포함할 수 있다. 적어도 하나의 실시예에서, 어드레스 변환 서비스("ATS") 지원은, GPU(들)(1108)가 CPU(들)(1106) 페이지 테이블들에 직접 액세스하는 것을 허용하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, GPU(들)(1108) 메모리 관리 유닛("MMU")의 GPU가 미스를 경험할 때, 어드레스 변환 요청이 CPU(들)(1106)에 송신될 수 있다. 이에 대한 응답으로, CPU(들)(1106) 중 2개의 CPU는, 적어도 하나의 실시예에서, 어드레스에 대한 가상-물리 맵핑을 위해 그의 페이지 테이블들을 탐색하고 GPU(들)(1108)에 변환을 다시 송신할 수 있다. 적어도 하나의 실시예에서, 통합 메모리 기술은, CPU(들)(1106) 및 GPU(들)(1108) 둘 모두의 메모리에 대한 단일의 통합 가상 어드레스 공간을 허용할 수 있고, 그에 의해, GPU(들)(1108) 프로그래밍 및 GPU(들)(1108)로의 애플리케이션들의 이식을 단순화한다.
적어도 하나의 실시예에서, GPU(들)(1108)는, 다른 프로세서들의 메모리에 대한 GPU(들)(1108)의 액세스 빈도를 추적할 수 있는 임의의 수의 액세스 계수기를 포함할 수 있다. 적어도 하나의 실시예에서, 액세스 계수기(들)는, 메모리 페이지들이 페이지들에 가장 빈번하게 액세스하고 있는 프로세서의 물리적 메모리로 이동되는 것을 보장함으로써, 프로세서들 사이에 공유되는 메모리 범위들에 대한 효율성을 개선하는 것을 도울 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104) 중 하나 이상은, 본원에 설명된 것들을 포함하는 임의의 수의 캐시(들)(1112)를 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, 캐시(들)(1112)는, CPU(들)(1106) 및 GPU(들)(1108) 둘 모두가 이용가능한(예컨대, CPU(들)(1106) 및 GPU(들)(1108)에 연결됨) 레벨 3("L3") 캐시를 포함할 수 있다. 적어도 하나의 실시예에서, 캐시(들)(1112)는, 이를테면 캐시 일관성 프로토콜(예컨대, MEI, MESI, MSI 등)을 사용함으로써 라인들의 상태들을 추적할 수 있는 라이트백(write-back) 캐시를 포함할 수 있다. 적어도 하나의 실시예에서, L3 캐시는 실시예에 따라 4MB 이상의 메모리를 포함할 수 있지만, 더 작은 캐시 크기들이 사용될 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104) 중 하나 이상은 하나 이상의 가속기(들)(1114)(예컨대, 하드웨어 가속기, 소프트웨어 가속기, 또는 이들의 조합)를 포함할 수 있다. 적어도 하나의 실시예에서, SoC(들)(1104)는 최적화된 하드웨어 가속기들 및/또는 대형 온-칩 메모리를 포함할 수 있는 하드웨어 가속 클러스터를 포함할 수 있다. 적어도 하나의 실시예에서, 대형 온-칩 메모리(예컨대, 4 MB의 SRAM)는, 하드웨어 가속 클러스터가 신경망들 및 다른 계산들을 가속하는 것을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 하드웨어 가속 클러스터는, GPU(들)(1108)를 보완하고 GPU(들)(1108)의 작업들 중 일부를 오프로드하는 데(예컨대, 다른 작업들을 수행하기 위해 GPU(들)(1108)의 더 많은 사이클들을 해제하는 데) 사용될 수 있다. 적어도 하나의 실시예에서, 가속기(들)(1114)는, 가속에 순응하기에 충분히 안정적인 타깃 작업부하들(예컨대, 인지, 콘볼루션 신경망("CNN")들, 재귀적 신경망("RNN")들 등)에 사용될 수 있다. 적어도 하나의 실시예에서, CNN은, (예컨대, 객체 검출을 위해 사용되는 바와 같은) 구역-기반 또는 구역 콘볼루션 신경망("RCNN")들 및 고속 RCNN들 또는 다른 유형의 CNN을 포함할 수 있다.
적어도 하나의 실시예에서, 가속기(들)(1114)(예컨대, 하드웨어 가속 클러스터)는 하나 이상의 심층 학습 가속기("DLA")를 포함할 수 있다. 적어도 하나의 실시예에서, DLA(들)는, 제한 없이, 심층 학습 애플리케이션들 및 추론을 위해 부가적인 초당 10조의 연산들을 제공하도록 구성될 수 있는 하나 이상의 텐서 처리 유닛("TPU")을 포함할 수 있다. 적어도 하나의 실시예에서, TPU들은 (예컨대, CNN들, RCNN들 등에 대한) 이미지 처리 기능들을 수행하도록 구성되고 그를 수행하는 데 최적화되는 가속기들일 수 있다. 적어도 하나의 실시예에서, DLA(들)는 특정 세트의 신경망 유형들 및 부동 소수점 연산들뿐만 아니라 추론에 대해 추가로 최적화될 수 있다. 적어도 하나의 실시예에서, DLA(들)의 설계는 전형적인 범용 GPU보다 더 많은 밀리미터당 성능을 제공할 수 있고, 전형적으로, CPU의 성능을 크게 넘어선다. 적어도 하나의 실시예에서, TPU(들)는, 예컨대, 피쳐들 및 가중치들 둘 모두에 대한 INT8, INT16, 및 FP16 데이터 유형들뿐만 아니라, 사후-프로세서 기능들을 지원하는, 단일-인스턴스 콘볼루션 기능을 포함하는 여러 기능들을 수행할 수 있다. 적어도 하나의 실시예에서, DLA(들)는, 예컨대, 그리고 제한 없이, 카메라 센서들로부터의 데이터를 사용하는 객체 식별 및 검출을 위한 CNN; 카메라 센서들로부터의 데이터를 사용하는 거리 추정을 위한 CNN; 마이크로폰들로부터의 데이터를 사용하는 긴급 차량 검출 및 식별 및 검출을 위한 CNN; 카메라 센서들로부터의 데이터를 사용하는 안면 인식 및 차량 소유자 식별을 위한 CNN; 및/또는 보안 및/또는 안전 관련 이벤트들을 위한 CNN을 포함하는 다양한 기능들 중 임의의 기능에 대한 처리된 또는 처리되지 않은 데이터에 대해 신경망들, 특히 CNN들을 신속하고 효율적으로 실행할 수 있다.
적어도 하나의 실시예에서, DLA(들)는 GPU(들)(1108)의 임의의 기능을 수행할 수 있고, 추론 가속기를 사용함으로써, 예컨대, 설계자는 임의의 기능에 대해 DLA(들) 또는 GPU(들)(1108)를 타깃으로 할 수 있다. 예컨대, 적어도 하나의 실시예에서, 설계자는, CNN들의 처리 및 부동 소수점 연산들을 DLA(들)에 집중시키고 다른 기능들을 GPU(들)(1108) 및/또는 가속기(들)(1114)에게 맡길 수 있다.
적어도 하나의 실시예에서, 가속기(들)(1114)는, 대안적으로 본원에서 컴퓨터 비전 가속기로 지칭될 수 있는 프로그래밍가능 비전 가속기("PVA")를 포함할 수 있다. 적어도 하나의 실시예에서, PVA는, 첨단 운전자 보조 시스템("ADAS")(1138), 자율 주행, 증강 현실("AR") 애플리케이션들, 및/또는 가상 현실("VR") 애플리케이션들에 대한 컴퓨터 비전 알고리즘들을 가속하도록 설계 및 구성될 수 있다. 적어도 하나의 실시예에서, PVA는 성능과 유연성 사이의 균형을 제공할 수 있다. 예컨대, 적어도 하나의 실시예에서, 각각의 PVA는, 예컨대, 그리고 제한 없이, 임의의 수의 축소 명령어 세트 컴퓨터("RISC") 코어, 직접 메모리 액세스("DMA"), 및/또는 임의의 수의 벡터 프로세서를 포함할 수 있다.
적어도 하나의 실시예에서, RISC 코어들은, 이미지 센서들(예컨대, 본원에 설명된 임의의 카메라들의 이미지 센서들), 이미지 신호 프로세서(들) 등과 상호작용할 수 있다. 적어도 하나의 실시예에서, 각각의 RISC 코어는 임의의 양의 메모리를 포함할 수 있다. 적어도 하나의 실시예에서, RISC 코어들은, 실시예에 따라, 다수의 프로토콜들 중 임의의 것을 사용할 수 있다. 적어도 하나의 실시예에서, RISC 코어들은 실시간 운영 체제("RTOS")를 실행할 수 있다. 적어도 하나의 실시예에서, RISC 코어들은, 하나 이상의 집적 회로 디바이스, 주문형 집적 회로("ASIC"), 및/또는 메모리 디바이스를 사용하여 구현될 수 있다. 예컨대, 적어도 하나의 실시예에서, RISC 코어들은, 명령어 캐시 및/또는 밀접하게 결합된 RAM을 포함할 수 있다.
적어도 하나의 실시예에서, DMA는, PVA의 구성요소들이 CPU(들)(1106)와 독립적으로 시스템 메모리에 액세스하는 것을 가능하게 할 수 있다. 적어도 하나의 실시예에서, DMA는, 다차원 어드레싱 및/또는 원형 어드레싱을 지원하는 것을 포함하지만 이에 제한되지 않는, PVA에 최적화를 제공하기 위해 사용되는 임의의 수의 특징을 지원할 수 있다. 적어도 하나의 실시예에서, DMA는, 제한 없이, 블록 폭, 블록 높이, 블록 깊이, 수평 블록 스테핑(stepping), 수직 블록 스테핑, 및/또는 깊이 스테핑을 포함할 수 있는 최대 6개 이상의 차원의 어드레싱을 지원할 수 있다.
적어도 하나의 실시예에서, 벡터 프로세서들은, 컴퓨터 비전 알고리즘들을 위한 프로그래밍을 효율적이고 유연하게 실행하고 신호 처리 능력들을 제공하도록 설계될 수 있는 프로그래밍가능 프로세서들일 수 있다. 적어도 하나의 실시예에서, PVA는, PVA 코어 및 2개의 벡터 처리 서브시스템 파티션을 포함할 수 있다. 적어도 하나의 실시예에서, PVA 코어는, 프로세서 서브시스템, DMA 엔진(들)(예컨대, 2개의 DMA 엔진), 및/또는 다른 주변기기들을 포함할 수 있다. 적어도 하나의 실시예에서, 벡터 처리 서브시스템은 PVA의 주 처리 엔진으로서 동작할 수 있고, 벡터 처리 유닛("VPU"), 명령어 캐시, 및/또는 벡터 메모리(예컨대, "VMEM")를 포함할 수 있다. 적어도 하나의 실시예에서, VPU 코어는, 예컨대, 단일 명령어 다중 데이터("SIMD"), 매우 긴 명령어 워드("VLIW") 디지털 신호 프로세서와 같은 디지털 신호 프로세서를 포함할 수 있다. 적어도 하나의 실시예에서, SIMD와 VLIW의 조합은 처리량 및 속도를 향상시킬 수 있다.
적어도 하나의 실시예에서, 벡터 프로세서들 각각은, 명령어 캐시를 포함할 수 있고 전용 메모리에 결합될 수 있다. 결과적으로, 적어도 하나의 실시예에서, 벡터 프로세서들 각각은 다른 벡터 프로세서들과 독립적으로 실행되도록 구성될 수 있다. 적어도 하나의 실시예에서, 특정 PVA에 포함되는 벡터 프로세서들은 데이터 병렬성을 이용하도록 구성될 수 있다. 예컨대, 적어도 하나의 실시예에서, 단일 PVA에 포함되는 복수의 벡터 프로세서들은 공통 컴퓨터 비전 알고리즘을 실행할 수 있지만, 이미지의 상이한 구역들에 대해 실행할 수 있다. 적어도 하나의 실시예에서, 특정 PVA에 포함되는 벡터 프로세서들은, 하나의 이미지에 대해 상이한 컴퓨터 비전 알고리즘들을 동시에 실행하거나 또는 심지어 순차적 이미지들 또는 한 이미지의 부분들에 대해 상이한 알고리즘들을 실행할 수 있다. 적어도 하나의 실시예에서, 다른 것들 중에서도, 임의의 수의 PVA가 하드웨어 가속 클러스터에 포함될 수 있고, 임의의 수의 벡터 프로세서가 각각의 PVA에 포함될 수 있다. 적어도 하나의 실시예에서, PVA는 전체 시스템 안전성을 향상시키기 위해 부가적인 에러 정정 코드("ECC") 메모리를 포함할 수 있다.
적어도 하나의 실시예에서, 가속기(들)(1114)는, 가속기(들)(1114)에 대한 높은 대역폭 낮은 레이턴시 정적 랜덤 액세스 메모리("SRAM")를 제공하기 위해 컴퓨터 비전 네트워크 온-칩 및 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있다. 적어도 하나의 실시예에서, 온-칩 메모리는, 예컨대, 그리고 제한 없이, PVA 및 DLA 둘 모두에 의해 액세스가능할 수 있는 8개의 필드-구성가능 메모리 블록을 포함하는 적어도 4 MB SRAM을 포함할 수 있다. 적어도 하나의 실시예에서, 메모리 블록들의 각각의 쌍은, 진보된 주변 버스("APB") 인터페이스, 구성 회로, 제어기, 및 멀티플렉서를 포함할 수 있다. 적어도 하나의 실시예에서, 임의의 유형의 메모리가 사용될 수 있다. 적어도 하나의 실시예에서, PVA 및 DLA는, PVA 및 DLA에 메모리에 대한 고속 액세스를 제공하는 백본을 통해 메모리에 액세스할 수 있다. 적어도 하나의 실시예에서, 백본은, PVA 및 DLA를 (예컨대, APB를 사용하여) 메모리에 상호연결하는 컴퓨터 비전 네트워크 온-칩을 포함할 수 있다.
적어도 하나의 실시예에서, 컴퓨터 비전 네트워크 온-칩은, 임의의 제어 신호/어드레스/데이터의 송신 전에, PVA 및 DLA 둘 모두가, 준비되고 유효한 신호들을 제공한다고 결정하는 인터페이스를 포함할 수 있다. 적어도 하나의 실시예에서, 인터페이스는, 제어 신호들/어드레스들/데이터를 송신하기 위한 별개의 페이즈들 및 별개의 채널들뿐만 아니라, 연속적인 데이터 전송을 위한 버스트-유형 통신들을 제공할 수 있다. 적어도 하나의 실시예에서, 인터페이스는, 국제 표준화 기구("ISO") 26262 또는 국제 전기기술 위원회("IEC") 61508 표준들을 준수할 수 있지만, 다른 표준들 및 프로토콜들이 사용될 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104) 중 하나 이상은 실시간 광선-추적 하드웨어 가속기를 포함할 수 있다. 적어도 하나의 실시예에서, 실시간 광선-추적 하드웨어 가속기는, (예컨대, 세계 모델 내의) 객체들의 위치들 및 범위들을 신속하고 효율적으로 결정하기 위해, 실시간 시각화 시뮬레이션들을 생성하기 위해, RADAR 신호 해석을 위해, 사운드 전파 합성 및/또는 분석을 위해, SONAR 시스템들의 시뮬레이션을 위해, 일반 파 전파 시뮬레이션을 위해, 로컬라이제이션 및/또는 다른 기능들의 목적들을 위한 LIDAR 데이터에 대한 비교를 위해, 그리고/또는 다른 용도들을 위해 사용될 수 있다.
적어도 하나의 실시예에서, 가속기(들)(1114)는 자율 주행을 위한 광범위한 용도들을 가질 수 있다. 적어도 하나의 실시예에서, PVA는 ADAS 및 자율 차량들에서의 핵심 처리 스테이지들에 사용될 수 있다. 적어도 하나의 실시예에서, PVA의 능력들은, 낮은 전력 및 낮은 레이턴시에서, 예측가능한 처리를 필요로 하는 알고리즘 도메인들에 잘 어울린다. 다시 말해서, PVA는, 낮은 레이턴시 및 낮은 전력으로 예측가능한 런타임들을 요구할 수 있는, 심지어 작은 데이터세트들에 대한 반-밀집 또는 밀집 정규 계산에 대해 잘 수행된다. 차량(1100)에서와 같은 적어도 하나의 실시예에서, PVA들은, 그들이 객체 검출에서 효율적이고 정수 수학에 대해 동작할 수 있기 때문에, 고전적인 컴퓨터 비전 알고리즘들을 실행하도록 설계될 수 있다.
예컨대, 기술의 적어도 하나의 실시예에 따르면, PVA는 컴퓨터 스테레오 비전을 수행하는 데 사용된다. 적어도 하나의 실시예에서, 준-전역 매칭 기반 알고리즘이 일부 예들에서 사용될 수 있지만, 이는 제한적인 것으로 의도되지 않는다. 적어도 하나의 실시예에서, 레벨 3-5 자율 주행을 위한 애플리케이션들은 온-더-플라이(on-the-fly)로 움직임 추정/스테레오 매칭(예컨대, 움직임으로부터의 구조, 보행자 인식, 차선 검출 등)을 사용한다. 적어도 하나의 실시예에서, PVA는 2개의 단안 카메라로부터의 입력들에 대해 컴퓨터 스테레오 비전 기능들을 수행할 수 있다.
적어도 하나의 실시예에서, PVA는 조밀한 광학 흐름을 수행하기 위해 사용될 수 있다. 예컨대, 적어도 하나의 실시예에서, PVA는, (예컨대, 4D 고속 푸리에 변환을 사용하여) 미가공 RADAR 데이터를 처리하여 처리된 RADAR 데이터를 제공할 수 있다. 적어도 하나의 실시예에서, PVA는, 예컨대, 미가공 비행 시간(time of flight) 데이터를 처리하여 처리된 비행 시간 데이터를 제공함으로써, 비행 시간 깊이 처리에 사용된다.
적어도 하나의 실시예에서, DLA는, 예컨대, 그리고 제한 없이, 각각의 객체 검출에 대한 신뢰도의 척도를 출력하는 신경망을 포함하여, 제어 및 운전 안전성을 향상시키기 위한 임의의 유형의 네트워크를 실행하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 신뢰도는, 확률로서, 또는 다른 검출들과 비교한 각각의 검출의 상대적 "가중치"를 제공하는 것으로서 표현되거나 해석될 수 있다. 적어도 하나의 실시예에서, 신뢰도 척도는, 시스템이, 어느 검출들이 거짓 긍정(false positive) 검출들이 아니라 참 긍정(true positive) 검출들로서 간주되어야 하는지에 관한 추가적인 결정들을 행할 수 있게 한다. 적어도 하나의 실시예에서, 시스템은, 신뢰도에 대한 임계 값을 설정하고 임계 값을 초과하는 검출들만을 참 긍정 검출들로서 간주할 수 있다. 자동 긴급 제동("AEB") 시스템이 사용되는 실시예에서, 거짓 긍정 검출들은 차량이 긴급 제동을 자동으로 수행하는 것을 야기할 것이고, 이는 명백히 바람직하지 않다. 적어도 하나의 실시예에서, 매우 확신하는 검출들은 AEB에 대한 트리거들로서 간주될 수 있다. 적어도 하나의 실시예에서, DLA는 신뢰도 값 회귀(regress)를 위해 신경망을 실행할 수 있다. 적어도 하나의 실시예에서, 신경망은, 다른 것들 중에서도, 경계 박스 차원들, (예컨대, 다른 서브시스템으로부터) 획득된 지반면 추정치, 차량(1100) 배향과 상관되는 IMU 센서(들)(1166)로부터의 출력, 신경망 및/또는 다른 센서들(예컨대, LIDAR 센서(들)(1164) 또는 RADAR 센서(들)(1160))로부터 획득된 객체의 거리, 3D 위치 추정치들과 같은 파라미터들의 적어도 일부 서브세트를 그의 입력으로서 취할 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104) 중 하나 이상은 데이터 저장소(들)(1116)(예컨대, 메모리)를 포함할 수 있다. 적어도 하나의 실시예에서, 데이터 저장소(들)(1116)는, GPU(들)(1108) 및/또는 DLA 상에서 실행될 신경망들을 저장할 수 있는 SoC(들)(1104)의 온-칩 메모리일 수 있다. 적어도 하나의 실시예에서, 데이터 저장소(들)(1116)는, 중복성 및 안전성을 위해 신경망들의 다수의 인스턴스들을 저장할 수 있을 만큼 용량이 충분히 클 수 있다. 적어도 하나의 실시예에서, 데이터 저장소(들)(1116)는 L2 또는 L3 캐시(들)를 포함할 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104) 중 하나 이상은 임의의 수의 프로세서(들)(1110)(예컨대, 임베디드 프로세서)를 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서(들)(1110)는 부팅 전력 및 관리 기능들 및 관련된 보안 시행을 처리하기 위한 전용 프로세서 및 서브시스템일 수 있는 부팅 및 전력 관리 프로세서를 포함할 수 있다. 적어도 하나의 실시예에서, 부팅 및 전력 관리 프로세서는 SoC(들)(1104)의 부팅 시퀀스의 일부일 수 있고 런타임 전력 관리 서비스들을 제공할 수 있다. 적어도 하나의 실시예에서, 부팅 전력 및 관리 프로세서는, 클록 및 전압 프로그래밍, 시스템 저 전력 상태 전환들의 보조, SoC(들)(1104) 열 및 온도 센서들의 관리, 및/또는 SoC(들)(1104) 전력 상태들의 관리를 제공할 수 있다. 적어도 하나의 실시예에서, 각각의 온도 센서는, 그의 출력 주파수가 온도에 비례하는 링 발진기로서 구현될 수 있고, SoC(들)(1104)는 링 발진기들을 사용하여 CPU(들)(1106), GPU(들)(1108), 및/또는 가속기(들)(1114)의 온도들을 검출할 수 있다. 적어도 하나의 실시예에서, 온도들이 임계치를 초과하는 것으로 결정되는 경우, 부팅 및 전력 관리 프로세서는 온도 장애 루틴에 진입하고, SoC(들)(1104)를 더 낮은 전력 상태로 두고/거나 차량(1100)을 운전기사 모드에서 안전 정지 모드로 두게 할 수 있다(예컨대, 차량(1100)이 안전 정지되게 함).
적어도 하나의 실시예에서, 프로세서(들)(1110)는, 다수의 인터페이스들을 통해 다중-채널 오디오에 대한 전체 하드웨어 지원을 가능하게 하는 오디오 서브시스템일 수 있는 오디오 처리 엔진의 역할을 할 수 있는 임베디드 프로세서들의 세트, 및 광범위하고 유연한 범위의 오디오 I/O 인터페이스들을 더 포함할 수 있다. 적어도 하나의 실시예에서, 오디오 처리 엔진은, 전용 RAM을 갖는 디지털 신호 프로세서를 갖는 전용 프로세서 코어이다.
적어도 하나의 실시예에서, 프로세서(들)(1110)는, 낮은 전력 센서 관리 및 웨이크(wake) 사용 경우들을 지원하기 위해 필요한 하드웨어 특징들을 제공할 수 있는 상시-온 프로세서 엔진을 더 포함할 수 있다. 적어도 하나의 실시예에서, 상시-온 프로세서 엔진은, 제한 없이, 프로세서 코어, 밀접하게 결합된 RAM, 지원 주변 기기들(예컨대, 타이머들 및 인터럽트 제어기들), 다양한 I/O 제어기 주변기기들, 및 라우팅 로직을 포함할 수 있다.
적어도 하나의 실시예에서, 프로세서(들)(1110)는, 자동차 애플리케이션들에 대한 안전 관리를 처리하기 위한 전용 프로세서 서브시스템을 제한 없이 포함하는 안전 클러스터 엔진을 더 포함할 수 있다. 적어도 하나의 실시예에서, 안전 클러스터 엔진은, 제한 없이, 2개 이상의 프로세서 코어, 밀접하게 결합된 RAM, 지원 주변기기들(예컨대, 타이머들, 인터럽트 제어기 등), 및/또는 라우팅 로직을 포함할 수 있다. 안전 모드에서, 2개 이상의 코어는, 적어도 하나의 실시예에서, 록스텝(lockstep) 모드에서 동작하고 그들의 동작들 사이의 임의의 차이들을 검출하기 위한 비교 로직을 갖는 단일 코어로서 기능할 수 있다. 적어도 하나의 실시예에서, 프로세서(들)(1110)는, 실시간 카메라 관리를 처리하기 위한 전용 프로세서 서브시스템을 제한 없이 포함할 수 있는 실시간 카메라 엔진을 더 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서(들)(1110)는, 카메라 처리 파이프라인의 일부인 하드웨어 엔진인 이미지 신호 프로세서를 제한 없이 포함할 수 있는 고-동적 범위 신호 프로세서를 더 포함할 수 있다.
적어도 하나의 실시예에서, 프로세서(들)(1110)는, 플레이어 윈도우에 대한 최종 이미지를 생성하기 위해 비디오 재생 애플리케이션에 의해 필요한 비디오 사후-처리 기능들을 구현하는 처리 블록(예컨대, 마이크로프로세서 상에 구현됨)일 수 있는 비디오 이미지 컴포지터(compositor)를 포함할 수 있다. 적어도 하나의 실시예에서, 비디오 이미지 컴포지터는, 와이드-뷰 카메라(들)(1170), 서라운드 카메라(들)(1174), 및/또는 캐빈-내 모니터링 카메라 센서(들) 상에서 렌즈 왜곡 정정을 수행할 수 있다. 적어도 하나의 실시예에서, 캐빈-내 모니터링 카메라 센서(들)는 바람직하게는, 캐빈 내 이벤트들을 식별하고 그에 따라서 응답하도록 구성되는, SoC(1104)의 다른 인스턴스 상에서 실행되는 신경망에 의해 모니터링된다. 적어도 하나의 실시예에서, 캐빈-내 시스템은, 제한 없이, 립 판독을 수행하여 셀룰러 서비스를 활성화하고 전화 통화를 걸거나, 이메일들을 받아쓰거나, 차량의 목적지를 변경하거나, 차량의 인포테인먼트 시스템 및 설정들을 활성화 또는 변경하거나, 또는 음성-활성화 웹 서핑을 제공할 수 있다. 적어도 하나의 실시예에서, 특정 기능들은 차량이 자율 모드에서 동작하고 있을 때 운전자가 이용가능하고, 그렇지 않으면 디스에이블링된다.
적어도 하나의 실시예에서, 비디오 이미지 컴포지터는 공간적 및 시간적 잡음 감소 둘 모두를 위한 향상된 시간적 잡음 감소를 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, 비디오에서 움직임이 발생하는 경우, 잡음 감소는 공간적 정보를 적절히 가중하여, 인접한 프레임들에 의해 제공되는 정보의 가중치들을 감소시킨다. 적어도 하나의 실시예에서, 이미지 또는 이미지의 일부분이 움직임을 포함하지 않는 경우, 비디오 이미지 컴포지터에 의해 수행되는 시간적 잡음 감소는 이전 이미지로부터의 정보를 사용하여 현재 이미지에서의 잡음을 감소시킬 수 있다.
적어도 하나의 실시예에서, 비디오 이미지 컴포지터는 또한, 입력 스테레오 렌즈 프레임들에 대해 스테레오 편위수정(rectification)을 수행하도록 구성될 수 있다. 적어도 하나의 실시예에서, 비디오 이미지 컴포지터는 운영 체제 데스크톱이 사용 중일 때 사용자 인터페이스 합성에 대해 추가로 사용될 수 있고, GPU(들)(1108)는 새로운 표면들을 연속적으로 렌더링하도록 요구되지 않는다. 적어도 하나의 실시예에서, GPU(들)(1108)의 전원이 켜지고 3D 렌더링을 활성으로 행할 때, 비디오 이미지 컴포지터는 성능 및 응답성을 개선하기 위해 GPU(들)(1108)를 오프로드하는 데 사용될 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104)의 하나 이상의 SoC는, 카메라들로부터 비디오 및 입력을 수신하기 위한 모바일 산업 프로세서 인터페이스("MIPI") 카메라 직렬 인터페이스, 고속 인터페이스, 및/또는 카메라 및 관련된 픽셀 입력 기능들에 사용될 수 있는 비디오 입력 블록을 더 포함할 수 있다. 적어도 하나의 실시예에서, SoC(들)(1104) 중 하나 이상은, 소프트웨어에 의해 제어될 수 있고 특정 역할에 구속되지 않는 I/O 신호들을 수신하기 위해 사용될 수 있는 입력/출력 제어기(들)를 더 포함할 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104)의 하나 이상의 SoC는, 주변기기들, 오디오 인코더들/디코더들("코덱들"), 전력 관리, 및/또는 다른 디바이스들과의 통신을 가능하게 하는 광범위한 주변기기 인터페이스들을 더 포함할 수 있다. 적어도 하나의 실시예에서, SoC(들)(1104)는 카메라들(예컨대, 기가비트 멀티미디어 직렬 링크 및 이더넷 채널들을 통해 연결됨), 센서들(예컨대, 이더넷 채널들을 통해 연결될 수 있는, LIDAR 센서(들)(1164), RADAR 센서(들)(1160) 등)로부터의 데이터, 버스(1102)로부터의 데이터(예컨대, 차량(1100)의 속도, 조향 휠 위치 등), GNSS 센서(들)(1158)(예컨대, 이더넷 버스 또는 CAN 버스를 통해 연결됨)로부터의 데이터 등을 처리하는 데 사용될 수 있다. 적어도 하나의 실시예에서, SoC(들)(1104)의 하나 이상의 SoC는, 그 자신의 DMA 엔진들을 포함할 수 있고 CPU(들)(1106)를 일상적인 데이터 관리 작업들로부터 자유롭게 하는 데 사용될 수 있는 전용 고성능 대용량 저장 제어기들을 더 포함할 수 있다.
적어도 하나의 실시예에서, SoC(들)(1104)는, 자동화 레벨들 3-5에 걸쳐 있는 유연한 아키텍처를 갖는 단-대-단 플랫폼일 수 있고, 그에 의해, 다양성 및 중복성을 위해 컴퓨터 비전 및 ADAS 기법들을 활용하고 효율적으로 사용하고, 심층 학습 툴들과 함께, 유연하고 신뢰가능한 운전 소프트웨어 스택을 위한 플랫폼을 제공하는 포괄적인 기능적 안전 아키텍처를 제공한다. 적어도 하나의 실시예에서, SoC(들)(1104)는 종래의 시스템들보다 더 빠르고, 더 신뢰가능하고, 훨씬 더 에너지 효율적이고 공간 효율적일 수 있다. 예컨대, 적어도 하나의 실시예에서, 가속기(들)(1114)는, CPU(들)(1106), GPU(들)(1108), 및 데이터 저장소(들)(1116)와 결합될 때, 레벨 3-5 자율 차량들에 대한 빠르고 효율적인 플랫폼을 제공할 수 있다.
적어도 하나의 실시예에서, 컴퓨터 비전 알고리즘들은, C와 같은 고-레벨 프로그래밍 언어를 사용하여 광범위하게 다양한 시각적 데이터에 걸쳐 광범위하게 다양한 처리 알고리즘들을 실행하도록 구성될 수 있는 CPU들 상에서 실행될 수 있다. 그러나, 적어도 하나의 실시예에서, CPU들은 종종, 예컨대, 실행 시간 및 전력 소비와 관련된 것들과 같은 많은 컴퓨터 비전 애플리케이션들의 성능 요건들을 충족시킬 수 없다. 적어도 하나의 실시예에서, 많은 CPU들은, 차량-내 ADAS 애플리케이션들 및 실제로 레벨 3-5 자율 차량들에서 사용되는 복잡한 객체 검출 알고리즘들을 실시간으로 실행할 수 없다.
본원에 설명된 실시예들은 다수의 신경망이 동시에 그리고/또는 순차적으로 수행되는 것을 허용하고, 레벨 3-5 자율 주행 기능성을 가능하게 하기 위해 결과들이 함께 결합되는 것을 허용한다. 예컨대, 적어도 하나의 실시예에서, DLA 또는 별개의 GPU(예컨대, GPU(들)(1120)) 상에서 실행되는 CNN은 텍스트 및 워드 인식을 포함할 수 있어서, 신경망이 구체적으로 훈련되지 않은 표지들을 포함하는 교통 표지들의 판독 및 이해를 허용한다. 적어도 하나의 실시예에서, DLA는, 표지의 의미론적 이해를 식별하고, 해석하고, 제공할 수 있고, 그 의미론적 이해를 CPU 컴플렉스 상에서 실행되는 경로 계획 모듈들에 전달할 수 있는 신경망을 더 포함할 수 있다.
적어도 하나의 실시예에서, 다수의 신경망들은 레벨 3, 4, 또는 5 주행에 관하여 동시에 실행될 수 있다. 예컨대, 적어도 하나의 실시예에서, 전기 조명과 함께 "주의: 점멸하는 조명들은 얼음으로 덮인 조건들을 표시함"을 언급하는 경고 표지는 여러 신경망들에 의해 집합적으로 또는 독립적으로 해석될 수 있다. 적어도 하나의 실시예에서, 이러한 경고 표지 그 자체는 제1 배치된 신경망(예컨대, 훈련된 신경망)에 의해 교통 표지로서 식별될 수 있고, 텍스트 "점멸하는 조명들은 얼음으로 덮인 조건들을 표시함"은 제2 배치된 신경망에 의해 해석될 수 있고, 제2 배치된 신경망은, 점멸하는 조명들이 검출될 때, 얼음으로 덮인 조건들이 존재한다는 것을 차량의 경로 계획 소프트웨어(바람직하게는 CPU 컴플렉스 상에서 실행됨)에 알린다. 적어도 하나의 실시예에서, 점멸하는 조명은, 점멸하는 조명들의 존재(또는 부재)를 차량의 경로 계획 소프트웨어에 알리는, 다수의 프레임들에 걸친 제3 배치된 신경망을 동작시킴으로써 식별될 수 있다. 적어도 하나의 실시예에서, 3개의 신경망 모두는, 이를테면 DLA 내에서 그리고/또는 GPU(들)(1108) 상에서, 동시에 실행될 수 있다.
적어도 하나의 실시예에서, 안면 인식 및 차량 소유자 식별을 위한 CNN은, 카메라 센서들로부터의 데이터를 사용하여 차량(1100)의 허가된 운전자 및/또는 소유자의 존재를 식별할 수 있다. 적어도 하나의 실시예에서, 상시-온 센서 처리 엔진은, 소유자가 운전석 문(driver door)에 접근하여 조명들을 켤 때 차량을 잠금해제하고, 보안 모드에서, 소유자가 그러한 차량을 떠날 때 그러한 차량을 디스에이블링하는 데 사용될 수 있다. 이러한 방식으로, SoC(들)(1104)는 도난 및/또는 차량 절도에 대한 보안을 제공한다.
적어도 하나의 실시예에서, 긴급 차량 검출 및 식별을 위한 CNN은, 긴급 차량 사이렌들을 검출 및 식별하기 위해 마이크로폰들(1196)로부터의 데이터를 사용할 수 있다. 적어도 하나의 실시예에서, SoC(들)(1104)는, 환경 및 도시 사운드들을 분류할 뿐만 아니라 시각적 데이터를 분류하기 위해 CNN을 사용한다. 적어도 하나의 실시예에서, DLA 상에서 실행되는 CNN은 (예컨대, 도플러(Doppler) 효과를 사용함으로써) 긴급 차량의 상대 접근(closing) 속도를 식별하도록 훈련된다. 적어도 하나의 실시예에서, CNN은 또한, GNSS 센서(들)(1158)에 의해 식별되는 바와 같은, 차량이 동작하고 있는 로컬 영역에 특정된 긴급 차량들을 식별하도록 훈련될 수 있다. 적어도 하나의 실시예에서, 유럽에서 동작할 때, CNN은 유럽 사이렌들을 검출하려고 시도할 것이고, 북미에서 동작할 때, CNN은 북미 사이렌들만을 식별하려고 시도할 것이다. 적어도 하나의 실시예에서, 일단 긴급 차량이 검출되면, 제어 프로그램이 사용되어, 긴급 차량 안전 루틴을 실행하여, 긴급 차량들이 지나갈 때까지, 초음파 센서(들)(1162)의 보조로, 차량을 감속하고, 도로의 일 측으로 차를 대고, 차량을 주차하고/거나 차량을 공회전시킬 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 고속 상호연결부(예컨대, PCIe)를 통해 SoC(들)(1104)에 결합될 수 있는 CPU(들)(1118)(예컨대, 별개의 CPU(들), 또는 dCPU(들))를 포함할 수 있다. 적어도 하나의 실시예에서, CPU(들)(1118)는, 예컨대, X86 프로세서를 포함할 수 있다. CPU(들)(1118)는, 예컨대, ADAS 센서들과 SoC(들)(1104) 사이의 잠재적으로 불일치하는 결과들을 중재하는 것, 및/또는 제어기(들)(1136) 및/또는 인포테인먼트 시스템 온 칩("인포테인먼트 SoC")(1130)의 상태 및 건전성(health)을 모니터링하는 것을 포함하는 다양한 기능들 중 임의의 기능을 수행하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 고속 상호연결부(예컨대, 엔비디아의 NVLINK 채널)를 통해 SoC(들)(1104)에 결합될 수 있는 GPU(들)(1120)(예컨대, 별개의 GPU(들), 또는 dGPU(들))를 포함할 수 있다. 적어도 하나의 실시예에서, GPU(들)(1120)는, 이를테면, 중복적 및/또는 상이한 신경망들을 실행함으로써, 부가적인 인공 지능 기능성을 제공할 수 있고, 차량(1100)의 센서들로부터의 입력(예컨대, 센서 데이터)에 적어도 부분적으로 기반하여 신경망들을 훈련 및/또는 업데이트하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 무선 안테나(들)(1126)(예컨대, 셀룰러 안테나, 블루투스 안테나 등과 같은, 상이한 통신 프로토콜들을 위한 하나 이상의 무선 안테나)를 제한 없이 포함할 수 있는 네트워크 인터페이스(1124)를 더 포함할 수 있다. 적어도 하나의 실시예에서, 네트워크 인터페이스(1124)는, (예컨대, 서버(들) 및/또는 다른 네트워크 디바이스들과의) 인터넷 클라우드 서비스들에 대한, 다른 차량들과의, 그리고/또는 컴퓨팅 디바이스들(예컨대, 탑승자들의 클라이언트 디바이스들)과의 무선 연결성을 가능하게 하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 다른 차량들과 통신하기 위해, 직접 링크가 차량(110)과 다른 차량 사이에 설정될 수 있고/거나 간접 링크가 (예컨대, 네트워크들을 거쳐 그리고 인터넷을 통해) 설정될 수 있다. 적어도 하나의 실시예에서, 직접 링크들은 차량 간 통신 링크를 사용하여 제공될 수 있다. 적어도 하나의 실시예에서, 차량 간 통신 링크는, 차량(1100)에 근접해 있는 차량들(예컨대, 차량(1100) 앞에 있는, 옆에 있는, 그리고/또는 뒤에 있는 차량들)에 관한 차량(1100) 정보를 제공할 수 있다. 적어도 하나의 실시예에서, 그러한 전술된 기능성은 차량(1100)의 협력적 적응형 순항 제어 기능성의 일부일 수 있다.
적어도 하나의 실시예에서, 네트워크 인터페이스(1124)는, 변조 및 복조 기능성을 제공하고 제어기(들)(1136)가 무선 네트워크들을 통해 통신할 수 있게 하는 SoC를 포함할 수 있다. 적어도 하나의 실시예에서, 네트워크 인터페이스(1124)는, 기저대역으로부터 라디오 주파수로의 상향 변환, 및 라디오 주파수로부터 기저대역으로의 하향 변환을 위한 라디오 주파수 프론트 엔드를 포함할 수 있다. 적어도 하나의 실시예에서, 주파수 변환들은 임의의 기술적으로 실현가능한 방식으로 수행될 수 있다. 예컨대, 주파수 변환들은, 잘 알려진 프로세스들을 통해 그리고/또는 슈퍼-헤테로다인 프로세스들을 사용하여 수행될 수 있다. 적어도 하나의 실시예에서, 라디오 주파수 프론트 엔드 기능성은 별개의 칩에 의해 제공될 수 있다. 적어도 하나의 실시예에서, 네트워크 인터페이스들은, LTE, WCDMA, UMTS, GSM, CDMA2000, 블루투스, 블루투스 LE, 와이파이(Wi-Fi), 지-웨이브, 지그비, 로라완, 및/또는 다른 무선 프로토콜들을 통해 통신하기 위한 무선 기능성을 포함할 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 오프-칩(예컨대, 오프 SoC(들)(1104)) 저장소를 제한 없이 포함할 수 있는 데이터 저장소(들)(1128)를 더 포함할 수 있다. 적어도 하나의 실시예에서, 데이터 저장소(들)(1128)는, 제한 없이, RAM, SRAM, 동적 랜덤 액세스 메모리("DRAM"), 비디오 랜덤 액세스 메모리("VRAM"), 플래시 메모리, 하드 디스크들, 및/또는 적어도 1 비트의 데이터를 저장할 수 있는 다른 구성요소들 및/또는 디바이스들을 포함하는 하나 이상의 저장 요소를 포함할 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 맵핑, 인지, 점유 그리드 생성, 및/또는 경로 계획 기능들을 보조하기 위해 GNSS 센서(들)(1158)(예컨대, GPS 및/또는 보조 GPS 센서)를 더 포함할 수 있다. 적어도 하나의 실시예에서, 예컨대, 그리고 제한 없이, 이더넷-직렬(Ethernet-to-Serial)(예컨대, RS-232) 브릿지를 갖는 USB 커넥터를 사용하는 GPS를 포함하여, 임의의 수의 GNSS 센서(들)(1158)가 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 RADAR 센서(들)(1160)를 더 포함할 수 있다. 적어도 하나의 실시예에서, RADAR 센서(들)(1160)는, 심지어 야간 및/또는 악천후 조건들에서, 장거리 차량 검출을 위해 차량(1100)에 의해 사용될 수 있다. 적어도 하나의 실시예에서, RADAR 기능적 안전 레벨들은 ASIL B일 수 있다. 적어도 하나의 실시예에서, RADAR 센서(들)(1160)는, 제어를 위해 그리고 객체 추적 데이터에 액세스하기 위해 (예컨대, RADAR 센서(들)(1160)에 의해 생성된 데이터를 송신하기 위해) CAN 버스 및/또는 버스(1102)를 사용할 수 있으며, 일부 예들에서는 미가공 데이터에 액세스하기 위해 이더넷 채널들에 액세스한다. 적어도 하나의 실시예에서, 광범위하게 다양한 RADAR 센서 유형들이 사용될 수 있다. 예컨대, 그리고 제한 없이, RADAR 센서(들)(1160)는 전방, 후방, 및 측면 RADAR 사용에 적합할 수 있다. 적어도 하나의 실시예에서, RADAR 센서들(들)(1160) 중 하나 이상의 센서는 펄스 도플러 RADAR 센서이다.
적어도 하나의 실시예에서, RADAR 센서(들)(1160)는 상이한 구성들, 이를테면, 좁은 시야를 갖는 장거리, 넓은 시야를 갖는 단거리, 단거리 측면 커버리지 등을 포함할 수 있다. 적어도 하나의 실시예에서, 장거리 RADAR는 적응형 순항 제어 기능성을 위해 사용될 수 있다. 적어도 하나의 실시예에서, 장거리 RADAR 시스템들은, 250 m(미터) 범위 내와 같은, 2개 이상의 독립적인 스캔에 의해 실현되는 넓은 시야를 제공할 수 있다. 적어도 하나의 실시예에서, RADAR 센서(들)(1160)는 정적인 객체와 움직이는 객체 간을 구별하는 데 도움을 줄 수 있고, 긴급 브레이크 보조 및 전방 충돌 경고를 위해 ADAS 시스템(1138)에 의해 사용될 수 있다. 적어도 하나의 실시예에서, 장거리 RADAR 시스템에 포함되는 센서들(1160)은, 제한 없이, 다수의(예컨대, 6개 이상) 고정된 RADAR 안테나들 및 고속 CAN 및 플렉스레이 인터페이스를 갖는 모노스태틱 다중-모드 RADAR를 포함할 수 있다. 적어도 하나의 실시예에서, 6개의 안테나에 대해, 중앙 4개의 안테나는 인접한 차선들에서의 교통으로부터의 최소의 간섭으로 더 높은 속도들로 차량(1100)의 주변들을 기록하도록 설계되는 집속된 빔 패턴을 생성할 수 있다. 적어도 하나의 실시예에서, 다른 2개의 안테나는 시야를 확장하여, 차량(1100)의 차선에 진입하거나 차선을 떠나는 차량들을 신속하게 검출하는 것을 가능하게 할 수 있다.
적어도 하나의 실시예에서, 중거리 RADAR 시스템들은, 예로서, 최대 160 m(전방) 또는 80 m(후방)의 범위, 및 최대 42 도(전방) 또는 150 도(후방)의 시야를 포함할 수 있다. 적어도 하나의 실시예에서, 단거리 RADAR 시스템들은, 제한 없이, 후방 범퍼의 양 끝에 설치되도록 설계된 임의의 수의 RADAR 센서(들)(1160)를 포함할 수 있다. 후방 범퍼의 양 끝에 설치될 때, 적어도 하나의 실시예에서, RADAR 센서 시스템은 후방 방향의 그리고 차량 옆의 사각 지대들을 지속적으로 모니터링하는 2개의 빔을 생성할 수 있다. 적어도 하나의 실시예에서, 단거리 RADAR 시스템들은, 사각 지대 검출 및/또는 차선 변경 보조를 위해 ADAS 시스템(1138)에서 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 초음파 센서(들)(1162)를 더 포함할 수 있다. 적어도 하나의 실시예에서, 차량(1100)의 전면, 후면, 및/또는 측면 위치에 위치될 수 있는 초음파 센서(들)(1162)는 주차 보조를 위해 그리고/또는 점유 그리드를 생성 및 업데이트하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, 광범위하게 다양한 초음파 센서(들)(1162)가 사용될 수 있고, 상이한 초음파 센서(들)(1162)가 상이한 검출 범위들(예컨대, 2.5 m, 4 m)을 위해 사용될 수 있다. 적어도 하나의 실시예에서, 초음파 센서(들)(1162)는 ASIL B의 기능적 안전 레벨들에서 동작할 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 LIDAR 센서(들)(1164)를 포함할 수 있다. 적어도 하나의 실시예에서, LIDAR 센서(들)(1164)는 객체 및 보행자 검출, 긴급 제동, 충돌 회피, 및/또는 다른 기능들을 위해 사용될 수 있다. 적어도 하나의 실시예에서, LIDAR 센서(들)(1164)는 기능적 안전 레벨 ASIL B에서 동작할 수 있다. 적어도 하나의 실시예에서, 차량(1100)은 (예컨대, 기가비트 이더넷 스위치에 데이터를 제공하기 위해) 이더넷 채널을 사용할 수 있는 다수의 LIDAR 센서들(1164)(예컨대, 2개, 4개, 6개 등)을 포함할 수 있다.
적어도 하나의 실시예에서, LIDAR 센서(들)(1164)는 360 도 시야에 대한 객체들의 목록 및 그들의 거리들을 제공하는 것이 가능할 수 있다. 적어도 하나의 실시예에서, 상업적으로 입수가능한 LIDAR 센서(들)(1164)는, 예컨대, 2 cm 내지 3 cm의 정확도 및 100 Mbps 이더넷 연결에 대한 지원과 함께 대략적으로 100 m의 통고된 범위를 가질 수 있다. 적어도 하나의 실시예에서, 하나 이상의 비-돌출 LIDAR 센서가 사용될 수 있다. 그러한 실시예에서, LIDAR 센서(들)(1164)는 차량(1100)의 전방, 후방, 측면, 및/또는 모서리 위치에 임베딩될 수 있는 소형 디바이스를 포함할 수 있다. 적어도 하나의 실시예에서, LIDAR 센서(들)(1164)는, 그러한 실시예에서, 심지어 낮은 반사율 객체들에 대해 200 m 범위로, 최대 120 도 수평 및 35 도 수직 시야를 제공할 수 있다. 적어도 하나의 실시예에서, 전면-장착형 LIDAR 센서(들)(1164)는 45 도와 135 도 사이의 수평 시야를 위해 구성될 수 있다.
적어도 하나의 실시예에서, 3D 플래시 LIDAR와 같은 LIDAR 기술들이 또한 사용될 수 있다. 적어도 하나의 실시예에서, 3D 플래시 LIDAR는 레이저의 플래시를 송신 소스로서 사용하여, 대략적으로 200 m까지의 차량(1100)의 주변들을 조명한다. 적어도 하나의 실시예에서, 플래시 LIDAR 유닛은, 제한 없이, 각각의 픽셀 상의 레이저 펄스 통과 시간 및 반사된 광 ― 이는 차례로, 차례로 차량(1100)으로부터 객체들까지의 범위에 대응함 ― 을 기록하는 수용기(receptor)를 포함한다. 적어도 하나의 실시예에서, 플래시 LIDAR는, 매우 정확하고 왜곡이 없는 주변들의 이미지들이 모든 각각의 레이저 플래시로 생성될 수 있게 할 수 있다. 적어도 하나의 실시예에서, 4개의 플래시 LIDAR 센서가 차량(1100)의 각각의 측면에 하나씩 배치될 수 있다. 적어도 하나의 실시예에서, 3D 플래시 LIDAR 시스템들은, 제한 없이, 팬 이외의 움직이는 부분들을 갖지 않는 솔리드 스테이트 3D 스테어링 어레이 LIDAR 카메라(예컨대, 비-스캐닝 LIDAR 디바이스)를 포함한다. 적어도 하나의 실시예에서, 플래시 LIDAR 디바이스는 프레임당 5 나노초 클래스 I(눈 안전) 레이저 펄스를 사용할 수 있고, 반사된 레이저 광을 3D 범위 포인트 클라우드 및 공동-레지스터링된 강도 데이터로서 포착할 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 IMU 센서(들)(1166)를 더 포함할 수 있다. 적어도 하나의 실시예에서, IMU 센서(들)(1166)는 차량(1100)의 후방 차축의 중심에 위치될 수 있다. 적어도 하나의 실시예에서, IMU 센서(들)(1166)는, 예컨대, 그리고 제한 없이, 가속도계(들), 자력계(들), 자이로스코프(들), 자기 나침반, 자기 나침반들, 및/또는 다른 센서 유형들을 포함할 수 있다. 적어도 하나의 실시예에서, 이를테면, 6축 애플리케이션들에서, IMU 센서(들)(1166)는, 제한 없이, 가속도계들 및 자이로스코프들을 포함할 수 있다. 적어도 하나의 실시예에서, 이를테면, 9축 애플리케이션들에서, IMU 센서(들)(1166)는, 제한 없이, 가속도계들, 자이로스코프들, 및 자력계들을 포함할 수 있다.
적어도 하나의 실시예에서, IMU 센서(들)(1166)는, 위치, 속도, 및 자세의 추정치들을 제공하기 위해 마이크로 전자 기계 시스템("MEMS") 관성 센서들, 고감도 GPS 수신기, 및 진보된 칼만 필터링 알고리즘들을 결합하는 소형의 고성능 GPS-보조 관성 항법 시스템("GPS/INS")으로서 구현될 수 있다. 적어도 하나의 실시예에서, IMU 센서(들)(1166)는, 차량(1100)이, IMU 센서(들)(1166)에 대한 GPS에서 속도의 변화들을 직접 관찰하고 상관시킴으로써 자기 센서로부터의 입력을 요구함이 없이 그의 진행방향(heading)을 추정하는 것을 가능하게 할 수 있다. 적어도 하나의 실시예에서, IMU 센서(들)(1166) 및 GNSS 센서(들)(1158)는 단일 통합 유닛으로 결합될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 차량(1100) 내에 그리고/또는 주위에 배치된 마이크로폰(들)(1196)을 포함할 수 있다. 적어도 하나의 실시예에서, 마이크로폰(들)(1196)은, 다른 것들 중에서도, 긴급 차량 검출 및 식별을 위해 사용될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 스테레오 카메라(들)(1168), 와이드-뷰 카메라(들)(1170), 적외선 카메라(들)(1172), 서라운드 카메라(들)(1174), 장거리 카메라(들)(1198), 중거리 카메라(들)(1176), 및/또는 다른 카메라 유형들을 포함하는 임의의 수의 카메라 유형들을 더 포함할 수 있다. 적어도 하나의 실시예에서, 카메라들은 차량(1100)의 전체 주변부 주위의 이미지 데이터를 포착하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, 어느 유형들의 카메라들이 사용되는지는 차량(1100)에 의존한다. 적어도 하나의 실시예에서, 차량(1100) 주위의 필요한 커버리지를 제공하기 위해 카메라 유형들의 임의의 조합이 사용될 수 있다. 적어도 하나의 실시예에서, 배치되는 카메라들의 수는 실시예에 따라 상이할 수 있다. 예컨대, 적어도 하나의 실시예에서, 차량(1100)은, 6개의 카메라, 7개의 카메라, 10개의 카메라, 12개의 카메라, 또는 다른 수의 카메라를 포함할 수 있다. 적어도 하나의 실시예에서, 카메라들은, 예로서, 그리고 제한 없이, 기가비트 멀티미디어 직렬 링크("GMSL") 및/또는 기가비트 이더넷 통신들을 지원할 수 있다. 적어도 하나의 실시예에서, 각각의 카메라는, 도 11a 및 도 11b와 관련하여 본원에서 이전에 더 상세히 설명된 바와 같을 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 진동 센서(들)(1142)를 더 포함할 수 있다. 적어도 하나의 실시예에서, 진동 센서(들)(1142)는 차축(들)과 같은 차량(1100)의 구성요소들의 진동들을 측정할 수 있다. 예컨대, 적어도 하나의 실시예에서, 진동들의 변화들은 도로 표면들의 변화를 표시할 수 있다. 적어도 하나의 실시예에서, 2개 이상의 진동 센서(1142)가 사용될 때, (예컨대, 진동의 차이가 전력-구동 차축과 자유롭게 회전하는 차축 사이에 있을 때) 진동들 사이의 차이들이 사용되어 도로 표면의 마찰 또는 미끄러짐이 결정될 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 ADAS 시스템(1138)을 포함할 수 있다. 적어도 하나의 실시예에서, ADAS 시스템(1138)은, 일부 예들에서, 제한 없이, SoC를 포함할 수 있다. 적어도 하나의 실시예에서, ADAS 시스템(1138)은, 제한 없이, 임의의 수 및 조합의 자율/적응형/자동 순항 제어("ACC") 시스템, 협력적 적응형 순항 제어("CACC") 시스템, 전방 충돌 경고("FCW") 시스템, 자동 긴급 제동("AEB") 시스템, 차선 이탈 경고("LDW") 시스템, 차선 유지 보조("LKA") 시스템, 사각 지대 경고("BSW") 시스템, 후방 교차 통행 경고("RCTW") 시스템, 충돌 경고("CW") 시스템, 차선 중앙유지("LC") 시스템, 및/또는 다른 시스템들, 특징들, 및/또는 기능성을 포함할 수 있다.
적어도 하나의 실시예에서, ACC 시스템은 RADAR 센서(들)(1160), LIDAR 센서(들)(1164), 및/또는 임의의 수의 카메라(들)를 사용할 수 있다. 적어도 하나의 실시예에서, ACC 시스템은 종방향 ACC 시스템 및/또는 측방향 ACC 시스템을 포함할 수 있다. 적어도 하나의 실시예에서, 종방향 ACC 시스템은 차량(1100) 바로 앞의 다른 차량까지의 거리를 모니터링 및 제어하고, 차량(1100)의 속도를 자동으로 조정하여 앞 차량들로부터의 안전한 거리를 유지한다. 적어도 하나의 실시예에서, 측방향 ACC 시스템은 거리 유지를 수행하고, 필요할 때 차선들을 변경할 것을 차량(1100)에 조언한다. 적어도 하나의 실시예에서, 측방향 ACC는 LC 및 CW와 같은 다른 ADAS 애플리케이션들과 관련된다.
적어도 하나의 실시예에서, CACC 시스템은, 무선 링크를 통해, 또는 네트워크 연결을 통해(예컨대, 인터넷을 통해) 간접적으로 다른 차량들로부터 네트워크 인터페이스(1124) 및/또는 무선 안테나(들)(1126)를 통해 수신될 수 있는 다른 차량들로부터의 정보를 사용한다. 적어도 하나의 실시예에서, 직접 링크들은 차량 간("V2V") 통신 링크에 의해 제공될 수 있는 한편, 간접 링크들은 기반구조-차량 간("I2V") 통신 링크에 의해 제공될 수 있다. 일반적으로, V2V 통신은 바로 앞에 가고 있는 차량들(예컨대, 차량(1100)의 바로 앞에 있고 동일한 차선에 있는 차량들)에 관한 정보를 제공하는 한편, I2V 통신은 더 앞의 교통에 관한 정보를 제공한다. 적어도 하나의 실시예에서, CACC 시스템은 I2V 및 V2V 정보 소스들 중 어느 하나 또는 둘 모두를 포함할 수 있다. 적어도 하나의 실시예에서, 차량(1100)의 앞에 있는 차량들의 정보가 주어지면, CACC 시스템은 더 신뢰가능할 수 있고, 그것은, 교통 흐름 원활함을 개선하고 도로 상에서의 혼잡을 감소시킬 잠재성을 갖는다.
적어도 하나의 실시예에서, FCW 시스템은 운전자에게 위험을 경고하도록 설계되며, 이에 따라, 그러한 운전자는 시정 조치를 취할 수 있다. 적어도 하나의 실시예에서, FCW 시스템은, 디스플레이, 스피커, 및/또는 진동 구성요소와 같은 운전자 피드백을 제공하도록 전기적으로 결합되는 전용 프로세서, DSP, FPGA, 및/또는 ASIC에 결합된 전방 카메라 및/또는 RADAR 센서(들)(1160)를 사용한다. 적어도 하나의 실시예에서, FCW 시스템은, 사운드, 시각적 경고, 진동, 및/또는 빠른 브레이크 펄스의 형태와 같은 경고를 제공할 수 있다.
적어도 하나의 실시예에서, AEB 시스템은 다른 차량 또는 다른 객체와의 임박한 전방 충돌을 검출하고, 운전자가 특정된 시간 또는 거리 파라미터 내에 시정 조치를 취하지 않은 경우 브레이크들을 자동으로 적용할 수 있다. 적어도 하나의 실시예에서, AEB 시스템은, 전용 프로세서, DSP, FPGA, 및/또는 ASIC에 결합된 전방 카메라(들) 및/또는 RADAR 센서(들)(1160)를 사용할 수 있다. 적어도 하나의 실시예에서, AEB 시스템이 위험을 검출할 때, AEB 시스템은 전형적으로 먼저, 충돌을 회피하기 위해 시정 조치를 취할 것을 운전자에게 경고할 것이고, 그 운전자가 시정 조치를 취하지 않은 경우, 그 AEB 시스템은 예측된 충돌을 방지하거나 적어도 그 영향을 완화시키기 위한 노력으로 브레이크들을 자동으로 적용할 수 있다. 적어도 하나의 실시예에서, AEB 시스템은, 동적 브레이크 지원 및/또는 충돌 임박 제동과 같은 기법들을 포함할 수 있다.
적어도 하나의 실시예에서, LDW 시스템은, 차량(1100)이 차선 표시들에 교차할 때 운전자에게 경고하기 위해, 시각적 경고, 가청 경고, 및/또는 촉각적 경고, 이를테면 조향 휠 또는 시트 진동들을 제공한다. 적어도 하나의 실시예에서, LDW 시스템은, 운전자가, 이를테면 방향 지시등(turn signal)을 활성화함으로써 의도적인 차선 이탈을 표시할 때에는 활성화되지 않는다. 적어도 하나의 실시예에서, LDW 시스템은, 디스플레이, 스피커, 및/또는 진동 구성요소와 같은 운전자 피드백을 제공하도록 전기적으로 결합되는 전용 프로세서, DSP, FPGA, 및/또는 ASIC에 결합된 전방측 카메라들을 사용할 수 있다. 적어도 하나의 실시예에서, LKA 시스템은 LDW 시스템의 변형이다. 적어도 하나의 실시예에서, LKA 시스템은, 차량(1100)이 자신의 차선을 벗어나기 시작하는 경우 차량(1100)을 시정하기 위해 조향 입력 또는 제동을 제공한다.
적어도 하나의 실시예에서, BSW 시스템은 자동차의 사각 지대 내의 차량들을 검출하고 운전자에게 경고한다. 적어도 하나의 실시예에서, BSW 시스템은, 병합되는 또는 변경되는 차선들이 안전하지 않다는 것을 표시하기 위해 시각적, 가청, 및/또는 촉각적 경고를 제공할 수 있다. 적어도 하나의 실시예에서, BSW 시스템은, 운전자가 방향 지시등을 사용할 때 부가적인 경고를 제공할 수 있다. 적어도 하나의 실시예에서, BSW 시스템은, 디스플레이, 스피커, 및/또는 진동 구성요소와 같은 운전자 피드백에 전기적으로 결합되는 전용 프로세서, DSP, FPGA, 및/또는 ASIC에 결합된 후방측 카메라(들) 및/또는 RADAR 센서(들)(1160)를 사용할 수 있다.
적어도 하나의 실시예에서, RCTW 시스템은, 차량(1100)이 후진하고 있을 때 후방 카메라 범위 밖에서 객체가 검출될 때 시각적, 가청, 및/또는 촉각적 통지를 제공할 수 있다. 적어도 하나의 실시예에서, RCTW 시스템은, 충돌을 회피하기 위해 차량 브레이크들이 적용되는 것을 보장하기 위해 AEB 시스템을 포함한다. 적어도 하나의 실시예에서, RCTW 시스템은, 디스플레이, 스피커, 및/또는 진동 구성요소와 같은 운전자 피드백을 제공하도록 전기적으로 결합되는 전용 프로세서, DSP, FPGA, 및/또는 ASIC에 결합된 하나 이상의 후방 RADAR 센서(들)(1160)를 사용할 수 있다.
적어도 하나의 실시예에서, 종래의 ADAS 시스템들은, 운전자에게 성가시고 주의를 산만하게 할 수 있는 거짓 긍정 결과들에 취약할 수 있지만, 전형적으로는 치명적이지 않은데, 그 이유는, 종래의 ADAS 시스템들은 운전자에게 경고하고 그 운전자가 안전 조건이 진정으로 존재하는지 여부를 결정하고 그에 따라서 행동하는 것을 허용하기 때문이다. 적어도 하나의 실시예에서, 결과들이 충돌하는 경우에, 차량(1100)은 스스로, 주 컴퓨터 또는 보조 컴퓨터(예컨대, 제어기들(1136) 중 제1 제어기 또는 제2 제어기)로부터의 결과에 주의를 기울일지 여부를 결정한다. 예컨대, 적어도 하나의 실시예에서, ADAS 시스템(1138)은, 인지 정보를 백업 컴퓨터 합리성 모듈에 제공하기 위한 백업 및/또는 보조 컴퓨터일 수 있다. 적어도 하나의 실시예에서, 백업 컴퓨터 합리성 모니터는, 인지 및 동적 운전 작업들에서 결함들을 검출하기 위해 하드웨어 구성요소들 상에서 중복적인 다양한 소프트웨어를 실행할 수 있다. 적어도 하나의 실시예에서, ADAS 시스템(1138)으로부터의 출력들이 감독 MCU에 제공될 수 있다. 적어도 하나의 실시예에서, 주 컴퓨터로부터의 출력들 및 보조 컴퓨터로부터의 출력들이 충돌하는 경우, 감독 MCU는 안전한 동작을 보장하기 위해 충돌을 어떻게 조정할지를 결정한다.
적어도 하나의 실시예에서, 주 컴퓨터는, 선택된 결과에 대한 주 컴퓨터의 신뢰도를 표시하는 신뢰도 점수를 감독 MCU에 제공하도록 구성될 수 있다. 적어도 하나의 실시예에서, 그 신뢰도 점수가 임계치를 초과하는 경우, 그 감독 MCU는, 그 보조 컴퓨터가 충돌하는 또는 불일치하는 결과를 제공하는지 여부에 관계없이, 그 주 컴퓨터의 지시를 따를 수 있다. 적어도 하나의 실시예에서, 신뢰도 점수가 임계치를 충족하지 않고, 주 컴퓨터 및 보조 컴퓨터가 상이한 결과들(예컨대, 충돌)을 표시하는 경우, 감독 MCU는, 적절한 결과를 결정하기 위해 컴퓨터들 사이를 중재할 수 있다.
적어도 하나의 실시예에서, 감독 MCU는, 주 컴퓨터로부터의 출력들 및 보조 컴퓨터로부터의 출력들에 적어도 부분적으로 기반하여 보조 컴퓨터가 거짓 경보들을 제공하는 조건들을 결정하도록 훈련되고 구성되는 신경망(들)을 실행하도록 구성될 수 있다. 적어도 하나의 실시예에서, 감독 MCU 내의 신경망(들)은 보조 컴퓨터의 출력이 언제 신뢰될 수 있을 때 및 신뢰될 수 없을 때를 학습 수 있다. 예컨대, 적어도 하나의 실시예에서, 그 보조 컴퓨터가 RADAR 기반 FCW 시스템일 때, 그 감독 MCU 내의 신경망(들)은, FCW 시스템이, 경보를 트리거링하는 배수용 쇠격자 또는 맨홀 덮개와 같이 실제로 위험하지 않은 금속성 객체들을 식별하고 있는 때를 학습할 수 있다. 적어도 하나의 실시예에서, 보조 컴퓨터가 카메라 기반 LDW 시스템일 때, 감독 MCU 내의 신경망은, 자전거를 타는 사람들 또는 보행자들이 존재하고 차선 이탈이 실제로 가장 안전한 기동일 때 LDW를 무시하도록 학습할 수 있다. 적어도 하나의 실시예에서, 감독 MCU는, 연관된 메모리와 함께 신경망(들)을 실행하기에 적합한 DLA 또는 GPU 중 적어도 하나를 포함할 수 있다. 적어도 하나의 실시예에서, 감독 MCU는, SoC(들)(1104)의 구성요소를 포함할 수 있고/거나 그 구성요소로서 포함될 수 있다.
적어도 하나의 실시예에서, ADAS 시스템(1138)은, 컴퓨터 비전의 통상의 규칙들을 사용하여 ADAS 기능성을 수행하는 보조 컴퓨터를 포함할 수 있다. 적어도 하나의 실시예에서, 보조 컴퓨터는, 고전적인 컴퓨터 비전 규칙들(if-then)을 사용할 수 있고, 관리 MCU 내의 신경망(들)의 존재는 신뢰성, 안전성, 및 성능을 개선할 수 있다. 예컨대, 적어도 하나의 실시예에서, 다양한 구현 및 의도적인 비-동일성은, 전체 시스템이, 특히 소프트웨어(또는 소프트웨어-하드웨어 인터페이스) 기능성에 의해 야기된 결함들에 대해 더 내고장성(fault-tolerant)이 있게 한다. 예컨대, 적어도 하나의 실시예에서, 주 컴퓨터 상에서 실행되는 소프트웨어에 소프트웨어 버그 또는 에러가 존재하고, 보조 컴퓨터 상에서 실행되는 동일하지 않은 소프트웨어 코드가 일치하는 전체 결과를 제공하는 경우, 감독 MCU는, 전체 결과가 올바르고, 그 주 컴퓨터 상의 소프트웨어 또는 하드웨어에서의 버그가 중대한 에러를 야기하지 않는다는 더 큰 신뢰도를 가질 수 있다.
적어도 하나의 실시예에서, ADAS 시스템(1138)의 출력은 주 컴퓨터의 인지 블록 및/또는 주 컴퓨터의 동적 운전 작업 블록에 공급될 수 있다. 예컨대, 적어도 하나의 실시예에서, ADAS 시스템(1138)이 바로 앞의 객체로 인한 전방 충돌 경고를 표시하는 경우, 인지 블록은 객체들을 식별할 때 이러한 정보를 사용할 수 있다. 적어도 하나의 실시예에서, 보조 컴퓨터는, 본원에 설명된 바와 같이, 훈련되고 그에 따라 거짓 긍정들의 위험성을 감소시키는 그 자신의 신경망을 가질 수 있다.
적어도 하나의 실시예에서, 차량(1100)은 인포테인먼트 SoC(1130)(예컨대, 차량-내 인포테인먼트 시스템(IVI))를 더 포함할 수 있다. SoC로서 예시되고 설명되지만, 인포테인먼트 시스템 SoC(1130)는, 적어도 하나의 실시예에서, SoC가 아닐 수 있고, 제한 없이, 2개 이상의 별개의 구성요소를 포함할 수 있다. 적어도 하나의 실시예에서, 인포테인먼트 SoC(1130)는, 제한 없이, 오디오(예컨대, 음악, 개인 휴대 정보 단말기, 항법 명령어들, 뉴스, 라디오 등), 비디오(예컨대, TV, 영화들, 스트리밍 등), 전화(예컨대, 핸즈프리 통화), 네트워크 연결성(예컨대, LTE, 와이파이 등), 및/또는 정보 서비스들(예컨대, 항법 시스템들, 후방 주차 보조, 라디오 데이터 시스템, 차량 관련 정보, 이를테면, 연료 레벨, 이동한(covered) 총 거리, 브레이크 연료 레벨, 오일 레벨, 문 개방/폐쇄, 공기 필터 정보 등)을 차량(1100)에 제공하는 데 사용될 수 있는 하드웨어 및 소프트웨어의 조합을 포함할 수 있다. 예컨대, 인포테인먼트 SoC(1130)는, 라디오들, 디스크 플레이어들, 항법 시스템들, 비디오 플레이어들, USB 및 블루투스 연결성, 카퓨터(carputer)들, 자동차-내 엔터테인먼트, 와이파이, 조향 휠 오디오 제어들, 핸즈프리 음성 제어, 헤드업 디스플레이("HUD"), HMI 디스플레이(1134), 텔레매틱스(telematics) 디바이스, (예컨대, 다양한 구성요소들, 특징들, 및/또는 시스템들을 제어하고/거나 그와 상호작용하기 위한) 제어 패널, 및/또는 다른 구성요소들을 포함할 수 있다. 적어도 하나의 실시예에서, 인포테인먼트 SoC(1130)는, 차량(1100)의 사용자(들)에게 정보(시각적 및/또는 가청), 이를테면, ADAS 시스템(1138)으로부터의 정보, 계획된 차량 기동들과 같은 자율 주행 정보, 궤적들, 주변 환경 정보(예컨대, 교차로 정보, 차량 정보, 도로 정보 등), 및/또는 다른 정보를 제공하는 데 추가로 사용될 수 있다.
적어도 하나의 실시예에서, 인포테인먼트 SoC(1130)는 임의의 양 및 유형의 GPU 기능성을 포함할 수 있다. 적어도 하나의 실시예에서, 인포테인먼트 SoC(1130)는 버스(1102)를 통해 차량(1100)의 다른 디바이스들, 시스템들, 및/또는 구성요소들과 통신할 수 있다. 적어도 하나의 실시예에서, 인포테인먼트 SoC(1130)는, 주 제어기(들)(1136)(예컨대, 차량(1100)의 주 컴퓨터 및/또는 백업 컴퓨터)가 고장나는 경우에 인포테인먼트 시스템의 GPU가 일부 자율 주행 기능들을 수행할 수 있도록 감독 MCU에 결합될 수 있다. 적어도 하나의 실시예에서, 인포테인먼트 SoC(1130)는, 본원에 설명된 바와 같이, 차량(1100)을 운전기사 모드에서 안전 정지 모드로 둘 수 있다.
적어도 하나의 실시예에서, 차량(1100)은, 계기 클러스터(1132)(예컨대, 디지털 대시, 전자 계기 클러스터, 디지털 계기 패널 등)를 더 포함할 수 있다. 적어도 하나의 실시예에서, 계기 클러스터(1132)는, 제한 없이, 제어기 및/또는 슈퍼컴퓨터(예컨대, 별개의 제어기 또는 슈퍼컴퓨터)를 포함할 수 있다. 적어도 하나의 실시예에서, 계기 클러스터(1132)는, 제한 없이, 속도계, 연료 레벨, 오일 압력, 회전속도계, 주행기록계, 방향 지시기들, 변속기어 위치 표시기, 좌석 벨트 경고등(들), 주차-브레이크 경고등(들), 엔진 오작동등(들), 보조 구속 시스템(예컨대, 에어백) 정보, 조명 제어들, 안전 시스템 제어들, 항법 정보 등과 같은, 임의의 수 및 조합의 계기류의 세트를 포함할 수 있다. 일부 예들에서, 정보는 인포테인먼트 SoC(1130)와 계기 클러스터(1132) 사이에서 디스플레이 및/또는 공유될 수 있다. 적어도 하나의 실시예에서, 계기 클러스터(1132)는 인포테인먼트 SoC(1130)의 일부로서 포함될 수 있거나, 그 반대도 가능하다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 11c의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 11c의 시스템에서 사용될 수 있다.
도 11d는 적어도 하나의 실시예에 따른, 도 11a의 자율 차량(1100)과 클라우드 기반 서버(들) 사이의 통신을 위한 시스템(1176)의 도면이다. 적어도 하나의 실시예에서, 시스템(1176)은, 제한 없이, 서버(들)(1178), 네트워크(들)(1190), 및 차량(1100)을 포함하는 임의의 수 및 유형의 차량을 포함할 수 있다. 적어도 하나의 실시예에서, 서버(들)(1178)는, 제한 없이, 복수의 GPU들(1184(A)-1184(H))(총괄적으로, 본원에서 GPU들(1184)로 지칭됨), PCIe 스위치들(1182(A)-1182(D))(총괄적으로, 본원에서 PCIe 스위치들(1182)로 지칭됨), 및/또는 CPU들(1180(A)-1180(B))(총괄적으로, 본원에서 CPU들(1180)로 지칭됨)을 포함할 수 있다. 적어도 하나의 실시예에서, GPU들(1184), CPU들(1180), 및 PCIe 스위치들(1182)은, 예컨대, 그리고 제한 없이, 엔비디아 및/또는 PCIe 연결들(1186)에 의해 개발된 NVLink 인터페이스들(1188)과 같은 고속 상호연결부들로 상호연결될 수 있다. 적어도 하나의 실시예에서, GPU들(1184)은 NVLink 및/또는 NVSwitch SoC를 통해 연결되고, GPU들(1184) 및 PCIe 스위치들(1182)은 PCIe 상호연결부들을 통해 연결된다. 8개의 GPU(1184), 2개의 CPU(1180), 및 4개의 PCIe 스위치(1182)가 예시되지만, 이는 제한적인 것으로 의도되지 않는다. 적어도 하나의 실시예에서, 서버(들)(1178) 각각은, 제한 없이, 임의의 수의 GPU(1184), CPU(1180), 및/또는 PCIe 스위치(1182)를 임의의 조합으로, 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, 서버(들)(1178)는 각각 8개, 16개, 32개, 및/또는 그 초과의 GPU(1184)를 포함할 수 있다.
적어도 하나의 실시예에서, 서버(들)(1178)는, 네트워크(들)(1190)를 통해 그리고 차량들로부터, 예상치 않은 또는 변경된 도로 상태들, 이를테면, 최근에 착수된 도로 작업을 나타내는 이미지들을 나타내는 이미지 데이터를 수신할 수 있다. 적어도 하나의 실시예에서, 서버(들)(1178)는, 네트워크(들)(1190)를 통해 차량들로, 업데이트된 또는 다른 방식으로의 신경망들(1192), 및/또는 교통 및 도로 상태들에 관한 정보를 제한 없이 포함하는 맵 정보(1194)를 송신할 수 있다. 적어도 하나의 실시예에서, 맵 정보(1194)에 대한 업데이트들은, 제한 없이, 공사 현장들, 움푹 패인 곳들, 우회로들, 범람, 및/또는 다른 장애물들에 관한 정보와 같은 HD 맵(1122)에 대한 업데이트들을 포함할 수 있다. 적어도 하나의 실시예에서, 신경망들(1192), 및/또는 맵 정보(1194)는, 환경 내의 임의의 수의 차량으로부터 수신되는 데이터에서 표현된 새로운 훈련 및/또는 경험들에 기인하고/거나 (예컨대, 서버(들)(1178) 및/또는 다른 서버들을 사용하여) 데이터 센터에서 수행된 훈련에 적어도 부분적으로 기반할 수 있다.
적어도 하나의 실시예에서, 서버(들)(1178)는, 훈련 데이터에 적어도 부분적으로 기반하여 기계 학습 모델들(예컨대, 신경망들)을 훈련시키는 데 사용될 수 있다. 적어도 하나의 실시예에서, 훈련 데이터는, 차량들에 의해 생성될 수 있고/거나 (예컨대, 게임 엔진을 사용하여) 시뮬레이션에서 생성될 수 있다. 적어도 하나의 실시예에서, (예컨대, 연관된 신경망이 지도 학습으로부터 이익을 얻는 경우) 임의의 양의 훈련 데이터가 태그지정되고/거나 다른 사전-처리를 겪는다. 적어도 하나의 실시예에서, (예컨대, 연관된 신경망이 지도 학습을 요구하지 않는 경우) 임의의 양의 훈련 데이터가 태그지정 및/또는 사전-처리되지 않는다. 적어도 하나의 실시예에서, 일단 기계 학습 모델들이 훈련되면, 기계 학습 모델들은 차량들에 의해 사용될 수 있고(예컨대, 네트워크(들)(1190)를 통해 차량들에 송신됨), 그리고/또는 기계 학습 모델들은 차량들을 원격으로 모니터링하기 위해 서버(들)(1178)에 의해 사용될 수 있다.
적어도 하나의 실시예에서, 서버(들)(1178)는, 차량들로부터 데이터를 수신하고 실시간 지능형 추론을 위해 최신 실시간 신경망들에 데이터를 적용할 수 있다. 적어도 하나의 실시예에서, 서버(들)(1178)는, 엔비디아에 의해 개발된 DGX 및 DGX 스테이션 기계들과 같은, GPU(들)(1184)에 의해 전력공급되는 심층 학습 슈퍼컴퓨터들 및/또는 전용 AI 컴퓨터들을 포함할 수 있다. 그러나, 적어도 하나의 실시예에서, 서버(들)(1178)는 CPU-전력공급형 데이터 센터들을 사용하는 심층 학습 기반구조를 포함할 수 있다.
적어도 하나의 실시예에서, 서버(들)(1178)의 심층 학습 기반구조는 고속의 실시간 추론이 가능할 수 있고, 차량(1100) 내의 프로세서들, 소프트웨어, 및/또는 연관된 하드웨어의 건전성을 평가하고 검증하기 위해 그 능력을 사용할 수 있다. 예컨대, 적어도 하나의 실시예에서, 심층 학습 기반구조는 (예컨대, 컴퓨터 비전 및/또는 다른 기계 학습 객체 분류 기법들을 통해) 차량(1100)으로부터 주기적 업데이트들, 이를테면, 이미지들의 시퀀스 및/또는 차량(1100)이 그 이미지들의 시퀀스 내에 위치시킨 객체들을 수신할 수 있다. 적어도 하나의 실시예에서, 심층 학습 기반구조는, 객체들을 식별하고 그들을 차량(1100)에 의해 식별된 객체들과 비교하기 위해 그 자신의 신경망을 실행할 수 있고, 결과들이 매칭하지 않고, 심층 학습 기반구조가, 차량(1100) 내의 AI가 오작동하고 있다고 결론짓는 경우, 서버(들)(1178)는, 제어를 맡고, 탑승자들에게 통지하고, 안전 주차 기동을 완료할 것을 차량(1100)의 고장 안전 컴퓨터에 지시하는 신호를 차량(1100)에 송신할 수 있다.
적어도 하나의 실시예에서, 서버(들)(1178)는, GPU(들)(1184) 및 하나 이상의 프로그래밍가능 추론 가속기들(예컨대, 엔비디아의 TensorRT 3 디바이스들)을 포함할 수 있다. 적어도 하나의 실시예에서, GPU-전력공급형 서버들과 추론 가속의 조합은 실시간 응답성을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 이를테면, 성능이 덜 중요한 경우, CPU들, FPGA들, 및 다른 프로세서들에 의해 전력공급되는 서버들이 추론을 위해 사용될 수 있다. 적어도 하나의 실시예에서, 하드웨어 구조(들)(815)가 하나 이상의 실시예를 수행하기 위해 사용된다. 하드웨어 구조(x)(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다.
컴퓨터 시스템들
도 12는 적어도 하나의 실시예에 따른, 명령어를 실행하기 위한 실행 유닛을 포함할 수 있는 프로세서로 형성된 상호연결된 디바이스들 및 구성요소들, 시스템 온 칩(SOC) 또는 이들의 일부 조합을 갖는 시스템일 수 있는 예시적인 컴퓨터 시스템을 예시하는 블록도이다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은, 제한 없이, 본원에 설명된 실시예에서와 같이, 본 개시내용에 따라 데이터를 처리하기 위한 알고리즘들을 수행하기 위한 로직을 포함하는 실행 유닛들을 이용하는 프로세서(1202)와 같은 구성요소를 포함할 수 있다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은, 캘리포니아주 산타 클라라의 인텔 코포레이션으로부터 입수가능한 펜티엄(PENTIUM®) 프로세서 제품군, 제온(Xeon™), 아이테니엄(Itanium®), 엑스스케일(XScale™) 및/또는 스트롱암(StrongARM™), 인텔(Intel®) 코어(Core™), 또는 인텔® 너바나™ 마이크로프로세서들과 같은 프로세서들을 포함할 수 있지만, 다른 시스템들(다른 마이크로프로세서들, 엔지니어링 워크스테이션들, 셋톱 박스들 등을 갖는 PC들로 포함함)이 또한 사용될 수 있다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은, 워싱턴주 레드몬드의 마이크로소프트 코포레이션(Microsoft Corporation)으로부터 입수가능한 윈도우즈(WINDOWS) 운영 체제의 한 버전을 실행할 수 있지만, 다른 운영 체제들(예컨대, 유닉스(UNIX) 및 리눅스(Linux)), 임베디드 소프트웨어, 및/또는 그래픽 사용자 인터페이스들이 또한 사용될 수 있다.
실시예들은, 핸드헬드 디바이스들 및 임베디드 애플리케이션들과 같은 다른 디바이스들에서 사용될 수 있다. 핸드헬드 디바이스들의 일부 예들은 셀룰러 전화들, 인터넷 프로토콜 디바이스들, 디지털 카메라들, 개인 휴대 정보 단말기("PDA")들, 및 핸드헬드 PC들을 포함한다. 적어도 하나의 실시예에서, 임베디드 애플리케이션들은, 마이크로제어기, 디지털 신호 프로세서("DSP"), 시스템 온 칩, 네트워크 컴퓨터("넷피시(NetPC)")들, 셋톱 박스들, 네트워크 허브들, 광역 네트워크("WAN") 스위치들, 또는 적어도 하나의 실시예에 따라 하나 이상의 명령어를 수행할 수 있는 임의의 다른 시스템을 포함할 수 있다.
적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은, 제한 없이, 본원에 설명된 기법들에 따라 기계 학습 모델 훈련 및/또는 추론을 수행하기 위한 하나 이상의 실행 유닛(1208)을 제한 없이 포함할 수 있는 프로세서(1202)를 포함할 수 있다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은 단일 프로세서 데스크톱 또는 서버 시스템이지만, 다른 실시예에서, 컴퓨터 시스템(1200)은 멀티프로세서 시스템일 수 있다. 적어도 하나의 실시예에서, 프로세서(1202)는, 예컨대, 제한 없이, 복합 명령어 세트 컴퓨터("CISC") 마이크로프로세서, 축소 명령어 세트 컴퓨팅("RISC") 마이크로프로세서, 매우 긴 명령어 워드("VLIW") 마이크로프로세서, 명령어 세트들의 조합을 구현하는 프로세서, 또는 임의의 다른 프로세서 디바이스, 이를테면, 디지털 신호 프로세서를 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서(1202)는, 프로세서(1202)와 컴퓨터 시스템(1200)의 다른 구성요소들 사이에서 데이터 신호들을 송신할 수 있는 프로세서 버스(1210)에 결합될 수 있다.
적어도 하나의 실시예에서, 프로세서(1202)는, 제한 없이, 레벨 1("L1") 내부 캐시 메모리("캐시")(1204)를 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서(1202)는, 단일 내부 캐시 또는 다수의 레벨들의 내부 캐시를 가질 수 있다. 적어도 하나의 실시예에서, 캐시 메모리는 프로세서(1202) 외부에 상주할 수 있다. 다른 실시예들은 또한, 특정 구현 및 필요에 따라 내부 및 외부 캐시들 둘 모두의 조합을 포함할 수 있다. 적어도 하나의 실시예에서, 레지스터 파일(1206)은, 정수 레지스터들, 부동 소수점 레지스터들, 상태 레지스터들, 및 명령어 포인터 레지스터를 제한 없이 포함하는 다양한 레지스터들 내에 상이한 유형들의 데이터를 저장할 수 있다.
적어도 하나의 실시예에서, 정수 및 부동 소수점 연산들을 수행하기 위한 로직을 제한 없이 포함하는 실행 유닛(1208)이 또한 프로세서(1202)에 상주한다. 적어도 하나의 실시예에서, 프로세서(1202)는 또한, 특정 매크로 명령어들에 대한 마이크로코드를 저장하는 마이크로코드("ucode") 판독 전용 메모리("ROM")를 포함할 수 있다. 적어도 하나의 실시예에서, 실행 유닛(1208)은 패킹된 명령어 세트(1209)를 처리하기 위한 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 명령어들을 실행하기 위한 연관된 회로와 함께, 범용 프로세서의 명령어 세트에, 패킹된 명령어 세트(1209)를 포함시킴으로써, 많은 멀티미디어 애플리케이션들에 의해 사용되는 연산들은 프로세서(1202)에서 패킹된 데이터를 사용하여 수행될 수 있다. 하나 이상의 실시예에서, 많은 멀티미디어 애플리케이션들은, 패킹된 데이터에 대한 연산들을 수행하기 위해 프로세서의 데이터 버스의 전체 폭을 사용함으로써 가속되고 더 효율적으로 실행될 수 있으며, 이는, 한 번에 하나의 데이터 요소에 대해 하나 이상의 연산을 수행하기 위해 그 프로세서의 데이터 버스를 통해 더 작은 데이터 유닛들을 전송할 필요성을 제거할 수 있다.
적어도 하나의 실시예에서, 실행 유닛(1208)은 또한, 마이크로제어기들, 임베디드 프로세서들, 그래픽 디바이스들, DSP들, 및 다른 유형들의 로직 회로들에서 사용될 수 있다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은, 제한 없이, 메모리(1220)를 포함할 수 있다. 적어도 하나의 실시예에서, 메모리(1220)는, 동적 랜덤 액세스 메모리("DRAM") 디바이스, 정적 랜덤 액세스 메모리("SRAM") 디바이스, 플래시 메모리 디바이스, 또는 다른 메모리 디바이스일 수 있다. 적어도 하나의 실시예에서, 메모리(1220)는, 프로세서(1202)에 의해 실행될 수 있는 데이터 신호들에 의해 표현되는 명령어(들)(1219) 및/또는 데이터(1221)를 저장할 수 있다.
적어도 하나의 실시예에서, 시스템 로직 칩은, 프로세서 버스(1210) 및 메모리(1220)에 결합될 수 있다. 적어도 하나의 실시예에서, 시스템 로직 칩은, 제한 없이, 메모리 제어기 허브("MCH")(1216)를 포함할 수 있고, 프로세서(1202)는 프로세서 버스(1210)를 통해 MCH(1216)와 통신할 수 있다. 적어도 하나의 실시예에서, MCH(1216)는, 명령어 및 데이터 저장을 위해, 그리고 그래픽 명령들, 데이터, 및 텍스처들의 저장을 위해, 높은 대역폭 메모리 경로(1218)를 메모리(1220)에 제공할 수 있다. 적어도 하나의 실시예에서, MCH(1216)는, 프로세서(1202), 메모리(1220), 및 컴퓨터 시스템(1200) 내의 다른 구성요소들 사이에서 데이터 신호들을 지향시키고, 프로세서 버스(1210), 메모리(1220), 및 시스템 I/O 인터페이스(1222) 사이에서 데이터 신호들을 브릿징할 수 있다. 적어도 하나의 실시예에서, 시스템 로직 칩은, 그래픽 제어기에 대한 결합을 위해 그래픽 포트를 제공할 수 있다. 적어도 하나의 실시예에서, MCH(1216)는, 높은 대역폭 메모리 경로(1218)를 통해 메모리(1220)에 결합될 수 있고 그래픽/비디오 카드(1212)는 가속 그래픽 포트("AGP") 상호연결부(1214)를 통해 MCH(1216)에 결합될 수 있다.
적어도 하나의 실시예에서, 컴퓨터 시스템(1200)은 MCH(1216)를 I/O 제어기 허브("ICH")(1230)에 결합하기 위해 시스템 I/O 인터페이스(1222)를 독점적 허브 인터페이스 버스로서 사용할 수 있다. 적어도 하나의 실시예에서, ICH(1230)는, 로컬 I/O 버스를 통해 일부 I/O 디바이스들로의 직접 연결들을 제공할 수 있다. 적어도 하나의 실시예에서, 로컬 I/O 버스는, 제한 없이, 주변기기들을 메모리(1220), 칩셋, 및 프로세서(1202)에 연결하기 위한 고속 I/O 버스를 포함할 수 있다. 예들은, 제한 없이, 오디오 제어기(1229), 펌웨어 허브("플래시 BIOS")(1228), 무선 송수신기(1226), 데이터 저장소(1224), 사용자 입력 및 키보드 인터페이스들을 포함하는 레거시 I/O 제어기(1223), 범용 직렬 버스("USB")와 같은 직렬 확장 포트(1227), 및 네트워크 제어기(1234)를 포함할 수 있다. 적어도 하나의 실시예에서, 데이터 저장소(1224)는, 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 디바이스, 플래시 메모리 디바이스, 또는 다른 대용량 저장 디바이스를 포함할 수 있다.
적어도 하나의 실시예에서, 도 12는 상호연결된 하드웨어 디바이스들 또는 "칩들"을 포함하는 시스템을 예시하는 반면, 다른 실시예들에서, 도 12는 예시적인 SoC를 예시할 수 있다. 적어도 하나의 실시예에서, 도 12에 예시된 디바이스들은, 전용 상호연결부들, 표준화된 상호연결부들(예컨대, PCIe) 또는 이들의 일부 조합으로 상호연결될 수 있다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1200)의 하나 이상의 구성요소는 컴퓨팅 익스프레스 링크(compute express link)(CXL) 상호연결부들을 사용하여 상호연결된다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 12의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 12의 시스템에서 사용될 수 있다.
도 13은 적어도 하나의 실시예에 따른, 프로세서(1310)를 활용하기 위한 전자 디바이스(1300)를 예시하는 블록도이다. 적어도 하나의 실시예에서, 전자 디바이스(1300)는, 예컨대, 그리고 제한 없이, 노트북, 타워 서버, 랙 서버, 블레이드 서버, 랩톱, 데스크톱, 태블릿, 모바일 디바이스, 전화, 임베디드 컴퓨터, 또는 임의의 다른 적합한 전자 디바이스일 수 있다.
적어도 하나의 실시예에서, 전자 디바이스(1300)는, 제한 없이, 임의의 적합한 수 또는 종류의 구성요소, 주변기기, 모듈, 또는 디바이스에 통신가능하게 결합되는 프로세서(1310)를 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서(1310)는, 버스 또는 인터페이스, 이를테면, I2C 버스, 시스템 관리 버스("SMBus"), 적은 핀 계수(Low Pin Count)("LPC") 버스, 직렬 주변기기 인터페이스("SPI"), 고해상도 오디오("HDA") 버스, 직렬 고급 기술 결합(Serial Advance Technology Attachment)("SATA") 버스, 범용 직렬 버스("USB")(버전 1, 버전 2, 버전 3 등), 또는 범용 비동기식 수신기/송신기("UART") 버스를 사용하여 결합된다. 적어도 하나의 실시예에서, 도 13은 상호연결된 하드웨어 디바이스들 또는 "칩들"을 포함하는 시스템을 예시하는 반면, 다른 실시예들에서, 도 13은 예시적인 SoC를 예시할 수 있다. 적어도 하나의 실시예에서, 도 13에 예시된 디바이스들은, 전용 상호연결부들, 표준화된 상호연결부들(예컨대, PCIe) 또는 이들의 일부 조합으로 상호연결될 수 있다. 적어도 하나의 실시예에서, 도 13의 하나 이상의 구성요소는 컴퓨팅 익스프레스 링크(CXL) 상호연결부들을 사용하여 상호연결된다.
적어도 하나의 실시예에서, 도 13은, 디스플레이(1324), 터치 스크린(1325), 터치 패드(1330), 근접장 통신 유닛("NFC")(1345), 센서 허브(1340), 열 센서(1346), 익스프레스 칩셋("EC")(1335), 신뢰되는 플랫폼 모듈("TPM")(1338), BIOS/펌웨어/플래시 메모리("BIOS, FW 플래시")(1322), DSP(1360), 솔리드 스테이트 디스크("SSD") 또는 하드 디스크 드라이브("HDD")와 같은 드라이브(1320), 무선 근거리 네트워크 유닛("WLAN")(1350), 블루투스 유닛(1352), 무선 광역 네트워크 유닛("WWAN")(1356), 전역 위치결정 시스템(GPS) 유닛(1355), USB 3.0 카메라와 같은 카메라("USB 3.0 카메라")(1354), 및/또는 예컨대 LPDDR3 표준으로 구현되는 저전력 2배 데이터율("LPDDR") 메모리 유닛("LPDDR3")(1315)을 포함할 수 있다. 이러한 구성요소들은 각각 임의의 적합한 방식으로 구현될 수 있다.
적어도 하나의 실시예에서, 다른 구성요소들은 본원에 설명된 구성요소들을 통해 프로세서(1310)에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, 가속도계(1341), 주변 광 센서("ALS")(1342), 나침반(1343), 및 자이로스코프(1344)는 센서 허브(1340)에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, 열 센서(1339), 팬(1337), 키보드(1336), 및 터치 패드(1330)는 EC(1335)에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, 스피커들(1363), 헤드폰들(1364), 및 마이크로폰("mic")(1365)은 오디오 유닛("오디오 코덱 및 클래스 D 증폭기")(1362)에 통신가능하게 결합될 수 있고, 그 오디오 유닛은 차례로 DSP(1360)에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, 오디오 유닛(1362)은, 예컨대, 그리고 제한 없이, 오디오 코더/디코더("코덱") 및 클래스 D 증폭기를 포함할 수 있다. 적어도 하나의 실시예에서, SIM 카드("SIM")(1357)는 WWAN 유닛(1356)에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, WLAN 유닛(1350) 및 블루투스 유닛(1352)뿐만 아니라 WWAN 유닛(1356)과 같은 구성요소들은 차세대 폼 팩터(Next Generation Form Factor)("NGFF")로 구현될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 13의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 13의 시스템에서 사용될 수 있다.
도 14는 적어도 하나의 실시예에 따른 컴퓨터 시스템(1400)을 예시한다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1400)은, 본 개시내용 전반에 걸쳐 설명된 다양한 프로세스들 및 방법들을 구현하도록 구성된다.
적어도 하나의 실시예에서, 컴퓨터 시스템(1400)은, 제한 없이, 임의의 적합한 프로토콜, 이를테면, PCI("주변 구성요소 상호연결"), 주변 구성요소 상호연결 익스프레스("PCI 익스프레스"), AGP("가속 그래픽 포트"), 하이퍼트랜스포트(HyperTransport) 또는 임의의 다른 버스 또는 포인트-투-포인트 통신 프로토콜(들)을 사용하여 구현된 통신 버스(1410)에 연결되는 적어도 하나의 중앙 처리 유닛("CPU")(1402)을 포함한다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1400)은, 제한 없이, 메인 메모리(1404) 및 제어 로직(예컨대, 하드웨어, 소프트웨어, 또는 이들의 조합으로서 구현됨)을 포함하며, 데이터는, 랜덤 액세스 메모리("RAM")의 형태를 취할 수 있는 메인 메모리(1404)에 저장된다. 적어도 하나의 실시예에서, 네트워크 인터페이스 서브시스템("네트워크 인터페이스")(1422)은, 컴퓨터 시스템(1400)을 이용하여 다른 시스템들로부터 데이터를 수신하고 다른 시스템들에 데이터를 송신하기 위해 다른 컴퓨팅 디바이스들 및 네트워크들에 대한 인터페이스를 제공한다.
적어도 하나의 실시예에서, 컴퓨터 시스템(1400)은, 적어도 하나의 실시예에서, 제한 없이, 입력 디바이스들(1408), 병렬 처리 시스템(1412), 및 디스플레이 디바이스들(1406)을 포함하며, 그 디스플레이 디바이스들은, 종래의 음극선관("CRT"), 액정 디스플레이("LCD"), 발광 다이오드("LED") 디스플레이, 플라즈마 디스플레이, 또는 다른 적합한 디스플레이 기술들을 사용하여 구현될 수 있다. 적어도 하나의 실시예에서, 사용자 입력은, 키보드, 마우스, 터치패드, 마이크로폰 등과 같은 입력 디바이스들(1408)로부터 수신된다. 적어도 하나의 실시예에서, 본원에 설명된 각각의 모듈은 처리 시스템을 형성하도록 단일 반도체 플랫폼 상에 위치될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 14의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 14의 시스템에서 사용될 수 있다.
도 15는 적어도 하나의 실시예에 따른 컴퓨터 시스템(1500)을 예시한다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1500)은, 제한 없이, 컴퓨터(1510) 및 USB 스틱(1520)을 포함한다. 적어도 하나의 실시예에서, 컴퓨터(1510)는, 제한 없이, 임의의 수 및 유형의 프로세서(들)(도시되지 않음) 및 메모리(도시되지 않음)를 포함할 수 있다. 적어도 하나의 실시예에서, 컴퓨터(1510)는, 제한 없이, 서버, 클라우드 인스턴스, 랩톱 및 데스크톱 컴퓨터를 포함한다.
적어도 하나의 실시예에서, USB 스틱(1520)은, 제한 없이, 처리 유닛(1530), USB 인터페이스(1540), 및 USB 인터페이스 로직(1550)을 포함한다. 적어도 하나의 실시예에서, 처리 유닛(1530)은, 명령어들을 실행하는 것이 가능한 임의의 명령어 실행 시스템, 장치, 또는 디바이스일 수 있다. 적어도 하나의 실시예에서, 처리 유닛(1530)은, 제한 없이, 임의의 수 및 유형의 처리 코어(도시되지 않음)를 포함할 수 있다. 적어도 하나의 실시예에서, 처리 유닛(1530)은, 기계 학습과 연관된 임의의 양 및 유형의 연산들을 수행하도록 최적화되는 주문형 집적 회로("ASIC")를 포함한다. 예컨대, 적어도 하나의 실시예에서, 처리 유닛(1530)은, 기계 학습 추론 연산들을 수행하도록 최적화되는 텐서 처리 유닛("TPC")이다. 적어도 하나의 실시예에서, 처리 유닛(1530)은, 기계 비전 및 기계 학습 추론 연산들을 수행하도록 최적화되는 비전 처리 유닛("VPU")이다.
적어도 하나의 실시예에서, USB 인터페이스(1540)는 임의의 유형의 USB 커넥터 또는 USB 소켓일 수 있다. 예컨대, 적어도 하나의 실시예에서, USB 인터페이스(1540)는 데이터 및 전력을 위한 USB 3.0 유형-C 소켓이다. 적어도 하나의 실시예에서, USB 인터페이스(1540)는 USB 3.0 유형-A 커넥터이다. 적어도 하나의 실시예에서, USB 인터페이스 로직(1550)은, 처리 유닛(1530)이 USB 커넥터(1540)를 통해 디바이스들(예컨대, 컴퓨터(1510))과 인터페이싱할 수 있게 하는 임의의 양 및 유형의 로직을 포함할 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 15의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 15의 시스템에서 사용될 수 있다.
도 16a는, 복수의 GPU들(1610(1)-1610(N))이 고속 링크들(1640(1)-1640(N))(예컨대, 버스들, 포인트-투-포인트 상호연결부들 등)을 통해 복수의 멀티코어 프로세서들(1605(1)-1605(M))에 통신가능하게 결합되는 예시적인 아키텍처를 예시한다. 적어도 하나의 실시예에서, 고속 링크들(1640(1)-1640(N))은, 4 GB/s, 30 GB/s, 80 GB/s 또는 그 초과의 통신 처리량을 지원한다. 적어도 하나의 실시예에서, PCIe 4.0 또는 5.0 및 NVLink 2.0을 포함하지만 이에 제한되지 않는 다양한 상호연결 프로토콜들이 사용될 수 있다. 다양한 도면들에서, "N" 및 "M"은 양의 정수들을 표현하며, 그 값들은 도면마다 상이할 수 있다.
게다가, 하나의 실시예에서, GPU들(1610) 중 2개 이상은 고속 링크들(1629(1)-1629(2))을 통해 상호연결되고, 그 고속 링크들은, 고속 링크들(1640(1)-1640(N))에 사용되는 것들과 유사하거나 상이한 프로토콜들/링크들을 사용하여 구현될 수 있다. 유사하게, 멀티코어 프로세서들(1605) 중 2개 이상은, 20 GB/s, 30 GB/s, 120 GB/s 또는 그 초과에서 동작하는 대칭적 멀티프로세서(SMP) 버스들일 수 있는 고속 링크(1628)를 통해 연결될 수 있다. 대안적으로, 도 16a에 도시된 다양한 시스템 구성요소들 사이의 모든 통신은, 유사한 프로토콜들/링크들을 사용하여(예컨대, 공통 상호연결 패브릭을 통해) 달성될 수 있다.
일 실시예에서, 각각의 멀티코어 프로세서(1605)는, 각각 메모리 상호연결부들(1626(1)-1626(M))을 통해 프로세서 메모리(1601(1)-1601(M))에 통신가능하게 결합되고, 각각의 GPU(1610(1)-1610(N))는, 각각 GPU 메모리 상호연결부들(1650(1)-1650(N))을 통해 GPU 메모리(1620(1)-1620(N))에 통신가능하게 결합된다. 적어도 하나의 실시예에서, 메모리 상호연결부들(1626 및 1650)은 유사하거나 상이한 메모리 액세스 기술들을 활용할 수 있다. 제한이 아닌 예로서, 프로세서 메모리들(1601(1)-1601(M)) 및 GPU 메모리들(1620)은, 휘발성 메모리들, 이를테면, 동적 랜덤 액세스 메모리(DRAM)들(스택형 DRAM들을 포함함), 그래픽 DDR SDRAM(GDDR)(예컨대, GDDR5, GDDR6), 또는 고-대역폭 메모리(HBM)일 수 있고/거나, 비-휘발성 메모리들, 이를테면, 3D 엑스포인트(XPoint) 또는 나노-램(Nano-Ram)일 수 있다. 적어도 하나의 실시예에서, 프로세서 메모리들(1601)의 일부 부분은 휘발성 메모리일 수 있고, 다른 부분은 비-휘발성 메모리일 수 있다(예컨대, 2-레벨 메모리(2LM) 계층구조를 사용함).
그렇지만, 본원에 설명된 바와 같이, 다양한 멀티코어 프로세서들(1605) 및 GPU들(1610)이 특정 메모리(1601, 1620)에 각각 물리적으로 결합될 수 있고/거나, 가상 시스템 어드레스 공간("유효 어드레스" 공간으로 또한 지칭됨)이 다양한 물리적 메모리들 간에 분산되는 통합 메모리 아키텍처가 구현될 수도 있다. 예컨대, 프로세서 메모리들(1601(1)-1601(M))은 각각 64 GB의 시스템 메모리 어드레스 공간을 포함할 수 있고, GPU 메모리들(1620(1)-1620(N))은 각각 32 GB의 시스템 메모리 어드레스 공간을 포함할 수 있어서, M = 2이고 N = 4일 때 총 256 GB 어드레싱가능 메모리가 초래된다. N 및 M에 대한 다른 값들이 가능하다.
도 16b는 일 예시적인 실시예에 따른, 멀티코어 프로세서(1607)와 그래픽 가속 모듈(1646) 사이의 상호연결에 대한 부가적인 세부사항들을 예시한다. 적어도 하나의 실시예에서, 그래픽 가속 모듈(1646)은, 고속 링크(1640)(예컨대, PCIe 버스, NVLink 등)를 통해 프로세서(1607)에 결합되는 라인 카드에 통합된 하나 이상의 GPU 칩을 포함할 수 있다. 적어도 하나의 실시예에서, 그래픽 가속 모듈(1646)은 대안적으로, 프로세서(1607)와 함께 패키지 또는 칩 상에 통합될 수 있다.
적어도 하나의 실시예에서, 프로세서(1607)는 복수의 코어들(1660A-1660D)을 포함하며, 그 코어들 각각은 변환 색인 버퍼("TLB")(1661A-1661D) 및 하나 이상의 캐시(1662A-1662D)를 갖는다. 적어도 하나의 실시예에서, 코어들(1660A-1660D)은, 예시되지 않은, 명령어들을 실행하고 데이터를 처리하기 위한 다양한 다른 구성요소들을 포함할 수 있다. 적어도 하나의 실시예에서, 캐시들(1662A-1662D)은 레벨 1(L1) 및 레벨 2(L2) 캐시들을 포함할 수 있다. 게다가, 하나 이상의 공유 캐시(1656)가 캐시들(1662A-1662D)에 포함되고 코어들(1660A-1660D)의 세트들에 의해 공유될 수 있다. 예컨대, 프로세서(1607)의 일 실시예는 24개의 코어를 포함하며, 그 코어들 각각은, 그 자신의 L1 캐시, 12개의 공유 L2 캐시, 및 12개의 공유 L3 캐시를 갖는다. 이러한 실시예에서, 하나 이상의 L2 및 L3 캐시는 2개의 인접한 코어에 의해 공유된다. 적어도 하나의 실시예에서, 프로세서(1607) 및 그래픽 가속 모듈(1646)은, 도 16a의 프로세서 메모리들(1601(1)-1601(M))을 포함할 수 있는 시스템 메모리(1614)와 연결된다.
적어도 하나의 실시예에서, 일관성 버스(1664)를 통한 코어 간 통신을 통해 다양한 캐시들(1662A-1662D, 1656) 및 시스템 메모리(1614)에 저장된 데이터 및 명령어들에 대해 일관성이 유지된다. 적어도 하나의 실시예에서, 예컨대, 각각의 캐시는, 검출된 판독들 또는 특정 캐시 라인들에 대한 기입들에 대한 응답으로 일관성 버스(1664)를 통해 통신하도록, 자신과 연관된 캐시 일관성 로직/회로를 가질 수 있다. 적어도 하나의 실시예에서, 캐시 액세스들을 스누핑하기 위해 캐시 스누핑 프로토콜이 일관성 버스(1664)를 통해 구현된다.
적어도 하나의 실시예에서, 프록시 회로(1625)는, 그래픽 가속 모듈(1646)을 일관성 버스(1664)에 통신가능하게 결합하여, 그래픽 가속 모듈(1646)이 캐시 일관성 프로토콜에 코어들(1660A-1660D)의 피어로서 참여하는 것을 허용한다. 특히, 적어도 하나의 실시예에서, 인터페이스(1635)는 고속 링크(1640)를 통해 프록시 회로(1625)에 대한 연결성을 제공하고, 인터페이스(1637)는 그래픽 가속 모듈(1646)을 고속 링크(1640)에 연결한다.
적어도 하나의 실시예에서, 가속기 통합 회로(1636)는, 그래픽 가속 모듈(1646)의 복수의 그래픽 처리 엔진들(1631(1)-1631(N))을 위하여 캐시 관리, 메모리 액세스, 컨텍스트 관리, 및 인터럽트 관리 서비스들을 제공한다. 적어도 하나의 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))은 각각, 별개의 그래픽 처리 유닛(GPU)을 포함할 수 있다. 적어도 하나의 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))은 대안적으로, 그래픽 실행 유닛들, 미디어 처리 엔진들(예컨대, 비디오 인코더들/디코더들), 샘플러들, 및 블리트 엔진(blit engine)들과 같은 상이한 유형들의 그래픽 처리 엔진들을 GPU 내에 포함할 수 있다. 적어도 하나의 실시예에서, 그래픽 가속 모듈(1646)은 복수의 그래픽 처리 엔진들(1631(1)-1631(N))을 갖는 GPU일 수 있거나, 그래픽 처리 엔진들(1631(1)-1631(N))은, 공통 패키지, 라인 카드, 또는 칩 상에 통합된 개별 GPU들일 수 있다.
적어도 하나의 실시예에서, 가속기 통합 회로(1636)는 가상-물리 메모리 변환들(유효-실제 메모리 변환들로 또한 지칭됨) 및 시스템 메모리(1614)에 액세스하기 위한 메모리 액세스 프로토콜들과 같은 다양한 메모리 관리 기능들을 수행하기 위한 메모리 관리 유닛(MMU)(1639)을 포함한다. 적어도 하나의 실시예에서, MMU(1639)는 또한, 가상/유효-물리/실제 어드레스 변환들을 캐싱하기 위한 변환 색인 버퍼(TLB)(도시되지 않음)를 포함할 수 있다. 적어도 하나의 실시예에서, 캐시(1638)는 그래픽 처리 엔진들(1631(1)-1631(N))에 의한 효율적인 액세스를 위한 명령들 및 데이터를 저장할 수 있다. 적어도 하나의 실시예에서, 캐시(1638) 및 그래픽 메모리들(1633(1)-1633(M))에 저장된 데이터는, 가능하게는 페치 유닛(1644)을 사용하여, 코어 캐시들(1662A-1662D, 1656) 및 시스템 메모리(1614)와 일관되게 유지된다. 언급된 바와 같이, 이는, 캐시(1638) 및 메모리들(1633(1)-1633(M))을 위하여 (예컨대, 프로세서 캐시들(1662A-1662D, 1656) 상의 캐시 라인들의 수정들/액세스들과 관련된 업데이트들을 캐시(1638)에 전송하고 캐시(1638)로부터 업데이트들을 수신하여) 프록시 회로(1625)를 통해 달성될 수 있다.
적어도 하나의 실시예에서, 레지스터들(1645)의 세트는 그래픽 처리 엔진들(1631(1)-1631(N))에 의해 실행되는 스레드들에 대한 컨텍스트 데이터를 저장하고, 컨텍스트 관리 회로(1648)는 스레드 컨텍스트들을 관리한다. 예컨대, 컨텍스트 관리 회로(1648)는 컨텍스트 전환들 동안(예컨대, 제1 스레드가 저장되고 제2 스레드가 저장되어 제2 스레드가 그래픽 처리 엔진에 의해 실행될 수 있는 경우) 다양한 스레드의 컨텍스트들을 저장 및 복원하기 위해 저장 및 복원 동작들을 수행할 수 있다. 예컨대, 컨텍스트 전환 시, 컨텍스트 관리 회로(1648)는 메모리 내의 지정된 구역(예컨대, 컨텍스트 포인터에 의해 식별됨)에 현재의 레지스터 값들을 저장할 수 있다. 그렇다면, 한 컨텍스트로 복귀할 때 레지스터 값들이 복원될 수 있다. 적어도 하나의 실시예에서, 인터럽트 관리 회로(1647)는 시스템 디바이스들로부터 수신된 인터럽트들을 수신하고 처리한다.
일 구현에서, 그래픽 처리 엔진(1631)으로부터의 가상/유효 어드레스들은 MMU(1639)에 의해 시스템 메모리(1614)의 실제/물리 어드레스들로 변환된다. 적어도 하나의 실시예에서, 가속기 통합 회로(1636)는, 다수의(예컨대, 4개, 8개, 16개) 그래픽 가속기 모듈들(1646) 및/또는 다른 가속기 디바이스들을 지원한다. 적어도 하나의 실시예에서, 그래픽 가속기 모듈(1646)은 프로세서(1607) 상에서 실행되는 단일 애플리케이션에 전용일 수 있거나 다수의 애플리케이션들 사이에서 공유될 수 있다. 적어도 하나의 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))의 리소스들이 다수의 애플리케이션들 또는 가상 기계(VM)들과 공유되는 가상화된 그래픽 실행 환경이 제시된다. 적어도 하나의 실시예에서, 리소스들은, VM들 및/또는 애플리케이션들과 연관된 처리 요건들 및 우선순위들에 기반하여 상이한 VM들 및/또는 애플리케이션들에 할당되는 "슬라이스들"로 세분될 수 있다.
적어도 하나의 실시예에서, 가속기 통합 회로(1636)는 그래픽 가속 모듈(1646)을 위해 시스템에 대한 브릿지로서 수행하고, 어드레스 변환 및 시스템 메모리 캐시 서비스들을 제공한다. 게다가, 적어도 하나의 실시예에서, 가속기 통합 회로(1636)는, 호스트 프로세서가 그래픽 처리 엔진들(1631(1)-1631(N))의 가상화, 인터럽트들, 및 메모리 관리를 관리하기 위한 가상화 설비들을 제공할 수 있다.
적어도 하나의 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))의 하드웨어 리소스들이 호스트 프로세서(1607)가 보는 실제 어드레스 공간에 명시적으로 맵핑되기 때문에, 임의의 호스트 프로세서는 유효 어드레스 값을 사용하여 이러한 리소스들을 직접 어드레싱할 수 있다. 적어도 하나의 실시예에서, 가속기 통합 회로(1636)의 하나의 기능은 그래픽 처리 엔진들(1631(1)-1631(N))의 물리적 분리이며, 이에 따라, 그 그래픽 처리 엔지들은 시스템에 독립적인 유닛들로서 나타난다.
적어도 하나의 실시예에서, 하나 이상의 그래픽 메모리(1633(1)-1633(M))는 각각 그래픽 처리 엔진들(1631(1)-1631(N)) 각각에 결합되며, N = M이다. 적어도 하나의 실시예에서, 그래픽 메모리들(1633(1)-1633(M))은, 그래픽 처리 엔진들(1631(1)-1631(N)) 각각에 의해 처리되는 명령어들 및 데이터를 저장한다. 적어도 하나의 실시예에서, 그래픽 메모리들(1633(1)-1633(M))은 휘발성 메모리들, 이를테면, DRAM들(스택형 DRAM들을 포함), GDDR 메모리(예컨대, GDDR5, GDDR6), 또는 HBM일 수 있고/거나, 비-휘발성 메모리들, 이를테면, 3D 엑스포인트 또는 나노-램일 수 있다.
일 실시예에서, 고속 링크(1640)를 통한 데이터 트래픽을 감소시키기 위해, 바이어싱 기법들이 사용되어, 그래픽 메모리들(1633(1)-1633(M))에 저장된 데이터가, 그래픽 처리 엔진들(1631(1)-1631(N))에 의해 가장 빈번하게 사용되고 바람직하게는 코어들(1660A-1660D)에 의해서는 사용되지 않는(적어도 빈번하게 사용되지는 않는) 데이터이도록 보장한다. 유사하게, 적어도 하나의 실시예에서, 바이어싱 메커니즘은, 코어들에 의해(그리고 바람직하게는 그래픽 처리 엔진들(1631(1)-1631(N))에 의해서는 아닌) 필요한 데이터를, 캐시들(1662A-1662D, 1656) 및 시스템 메모리(1614) 내에 유지하려고 시도한다.
도 16c는, 가속기 통합 회로(1636)가 프로세서(1607) 내에 통합되는 다른 예시적인 실시예를 예시한다. 이러한 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))은, (또한, 임의의 형태의 버스 또는 인터페이스 프로토콜일 수 있는) 인터페이스(1637) 및 인터페이스(1635)를 통해서 가속기 통합 회로(1636)에 대한 고속 링크(1640)를 통해 직접 통신한다. 적어도 하나의 실시예에서, 가속기 통합 회로(1636)는 도 16b와 관련하여 설명된 것들과 유사한 동작들을 수행할 수 있지만, 일관성 버스(1664) 및 캐시들(1662A-1662D, 1656)에 대한 그의 근접성을 고려할 때 잠재적으로 더 높은 처리량으로 수행할 수 있다. 일 실시예는, 가속기 통합 회로(1636)에 의해 제어되는 프로그래밍 모델들 및 그래픽 가속 모듈(1646)에 의해 제어되는 프로그래밍 모델들을 포함할 수 있는, 전용 프로세스 프로그래밍 모델(그래픽 가속 모듈 가상화 없음) 및 공유 프로그래밍 모델들(가상화 있음)을 포함하는 상이한 프로그래밍 모델들을 지원한다.
적어도 하나의 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))은 단일 운영 체제 하에서 단일 애플리케이션 또는 프로세스에 전용된다. 적어도 하나의 실시예에서, 단일 애플리케이션은 다른 애플리케이션 요청들을 그래픽 처리 엔진들(1631(1)-1631(N))에 퍼널링(funnel)하여, VM/파티션 내에서 가상화를 제공할 수 있다.
적어도 하나의 실시예에서, 그래픽 처리 엔진들(1631(1)-1631(N))은 다수의 VM/애플리케이션 파티션들에 의해 공유될 수 있다. 적어도 하나의 실시예에서, 공유 모델들은 시스템 하이퍼바이저를 사용하여 그래픽 처리 엔진들(1631(1)-1631(N))을 가상화함으로써 각각의 운영 체제에 의한 액세스를 허용할 수 있다. 적어도 하나의 실시예에서, 하이퍼바이저가 없는 단일 파티션 시스템에 대해, 그래픽 처리 엔진들(1631(1)-1631(N))은 운영 체제에 의해 소유된다. 적어도 하나의 실시예에서, 운영 체제는, 각각의 프로세스 또는 애플리케이션에 대한 액세스를 제공하기 위해 그래픽 처리 엔진들(1631(1)-1631(N))을 가상화할 수 있다.
적어도 하나의 실시예에서, 그래픽 가속 모듈(1646) 또는 개별 그래픽 처리 엔진(1631(1)-1631(N))은 프로세스 핸들(handle)을 사용하여 프로세스 요소를 선택한다. 적어도 하나의 실시예에서, 프로세스 요소들은 시스템 메모리(1614)에 저장되고, 본원에 설명된 실제 어드레스-유효 어드레스 변환 기법을 사용하여 어드레싱가능하다. 적어도 하나의 실시예에서, 프로세스 핸들은, 그래픽 처리 엔진(1631(1)-1631(N))에 그의 컨텍스트를 레지스터링할 때(즉, 프로세스 요소를 프로세스 요소 링크된 목록에 부가하기 위해 시스템 소프트웨어를 호출할 때) 호스트 프로세스에 제공되는 구현 특정 값일 수 있다. 적어도 하나의 실시예에서, 프로세스 핸들의 하위 16 비트는 프로세스 요소 링크된 목록 내의 프로세스 요소의 오프셋일 수 있다.
도 16d는 예시적인 가속기 통합 슬라이스(1690)를 예시한다. 적어도 하나의 실시예에서, "슬라이스"는 가속기 통합 회로(1636)의 처리 리소스들의 특정된 부분을 포함한다. 적어도 하나의 실시예에서, 애플리케이션은, 시스템 메모리(1614) 내의 유효 어드레스 공간(1682)에 프로세스 요소들(1683)을 저장한다. 적어도 하나의 실시예에서, 프로세스 요소들(1683)은 프로세서(1607) 상에서 실행되는 애플리케이션들(1680)로부터의 GPU 호출들(1681)에 대한 응답으로 저장된다. 적어도 하나의 실시예에서, 프로세스 요소(1683)는 대응하는 애플리케이션(1680)에 대한 프로세스 상태를 포함한다. 적어도 하나의 실시예에서, 프로세스 요소(1683)에 포함된 작업 기술어(work descriptor)(WD)(1684)는 애플리케이션에 의해 요청된 단일 작업일 수 있거나 작업들의 큐에 대한 포인터를 포함할 수 있다. 적어도 하나의 실시예에서, WD(1684)는 애플리케이션의 유효 어드레스 공간(1682) 내의 작업 요청 큐에 대한 포인터이다.
적어도 하나의 실시예에서, 그래픽 가속 모듈(1646) 및/또는 개별 그래픽 처리 엔진들(1631(1)-1631(N))은 시스템에서의 프로세스들 전부 또는 그 서브세트에 의해 공유될 수 있다. 적어도 하나의 실시예에서, 가상화된 환경에서 작업을 시작하기 위해 프로세스 상태들을 설정하고 WD(1684)를 그래픽 가속 모듈(1646)에 전송하기 위한 기반구조가 포함될 수 있다.
적어도 하나의 실시예에서, 전용 프로세스 프로그래밍 모델은 구현 특정적이다. 적어도 하나의 실시예에서, 이러한 모델에서, 단일 프로세스는 그래픽 가속 모듈(1646) 또는 개별 그래픽 처리 엔진(1631)을 소유한다. 그래픽 가속 모듈(1646)이 단일 프로세스에 의해 소유되는 적어도 하나의 실시예에서, 그래픽 가속 모듈(1646)이 배정될 때 하이퍼바이저는 소유한 파티션에 대해 가속기 통합 회로(1636)를 초기화하고 운영 체제는 소유한 프로세스에 대해 가속기 통합 회로(1636)를 초기화한다.
적어도 하나의 실시예에서, 동작 시, 가속기 통합 슬라이스(1690) 내의 WD 페치 유닛(1691)은, 그래픽 가속 모듈(1646)의 하나 이상의 그래픽 처리 엔진에 의해 행해질 작업의 표시를 포함하는 다음 WD(1684)를 페치한다. 적어도 하나의 실시예에서, WD(1684)로부터의 데이터는 레지스터들(1645)에 저장되고, 예시된 바와 같은 MMU(1639), 인터럽트 관리 회로(1647), 및/또는 컨텍스트 관리 회로(1648)에 의해 사용될 수 있다. 예컨대, MMU(1639)의 일 실시예는, OS 가상 어드레스 공간(1685) 내의 세그먼트/페이지 테이블들(1686)에 액세스하기 위한 세그먼트/페이지 워크(walk) 회로를 포함한다. 적어도 하나의 실시예에서, 인터럽트 관리 회로(1647)는 그래픽 가속 모듈(1646)로부터 수신되는 인터럽트 이벤트들(1692)을 처리할 수 있다. 적어도 하나의 실시예에서, 그래픽 연산들을 수행할 때, 그래픽 처리 엔진(1631(1)-1631(N))에 의해 생성된 유효 어드레스(1693)는 MMU(1639)에 의해 실제 어드레스로 변환된다.
일 실시예에서, 레지스터들(1645)은 각각의 그래픽 처리 엔진(1631(1)-1631(N)) 및/또는 그래픽 가속 모듈(1646)에 대해 복제되고, 하이퍼바이저 또는 운영 체제에 의해 초기화될 수 있다. 적어도 하나의 실시예에서, 이러한 복제된 레지스터들 각각은 가속기 통합 슬라이스(1690)에 포함될 수 있다. 하이퍼바이저에 의해 초기화될 수 있는 예시적인 레지스터들이 표 1에 나타나 있다.
표 1 ― 하이퍼바이저 초기화 레지스터들
Figure pct00002
운영 체제에 의해 초기화될 수 있는 예시적인 레지스터들이 표 2에 나타나 있다.
표 2 ― 운영 체제 초기화 레지스터들
Figure pct00003
적어도 하나의 실시예에서, 각각의 WD(1684)는 특정 그래픽 가속 모듈(1646) 및/또는 그래픽 처리 엔진들(1631(1)-1631(N))에 특정적이다. 적어도 하나의 실시예에서, 그것은, 작업을 행하기 위해 그래픽 처리 엔진(1631(1)-1631(N))에 의해 요구되는 모든 정보를 포함하거나, 애플리케이션이 완료될 작업의 명령 큐를 설정한 메모리 위치에 대한 포인터일 수 있다.
도 16e는 공유 모델의 일 예시적인 실시예에 대한 부가적인 세부사항들을 예시한다. 이러한 실시예는, 프로세스 요소 목록(1699)이 저장되는 하이퍼바이저 실제 어드레스 공간(1698)을 포함한다. 적어도 하나의 실시예에서, 하이퍼바이저 실제 어드레스 공간(1698)은, 운영 체제(1695)를 위한 그래픽 가속 모듈 엔진들을 가상화하는 하이퍼바이저(1696)를 통해 액세스가능하다.
적어도 하나의 실시예에서, 공유 프로그래밍 모델은, 시스템 내의 파티션들 전부 또는 그 서브세트로부터의 프로세스들 전부 또는 그 서브세트가 그래픽 가속 모듈(1646)을 사용하는 것을 허용한다. 적어도 하나의 실시예에서, 그래픽 가속 모듈(1646)이 다수의 프로세스들 및 파티션들에 의해 공유되는 2개의 프로그래밍 모델, 즉, 시간-슬라이스형 공유 및 그래픽 지향형 공유가 존재한다.
적어도 하나의 실시예에서, 이러한 모델에서, 시스템 하이퍼바이저(1696)는 그래픽 가속 모듈(1646)을 소유하고 그의 기능을 모든 운영 체제들(1695)에 대해 이용가능하게 한다. 적어도 하나의 실시예에서, 그래픽 가속 모듈(1646)이 시스템 하이퍼바이저(1696)에 의한 가상화를 지원하기 위해, 그래픽 가속 모듈(1646)은 다음의 특정 요건들을 준수할 수 있는데, 이를테면, (1) 애플리케이션의 작업 요청은 자율적이어야 하거나(즉, 작업들 사이에서 상태가 유지될 필요가 없음), 그래픽 가속 모듈(1646)은 컨텍스트 저장 및 복원 메커니즘을 제공해야 하고, (2) 임의의 변환 오류들을 비롯한 애플리케이션의 작업 요청이, 그래픽 가속 모듈(1646)에 의해 특정된 시간량 내에 완료되도록 보장되거나, 그래픽 가속 모듈(1646)은 작업의 처리를 선점하는 능력을 제공하고, (3) 그래픽 가속 모듈(1646)은 지향형 공유 프로그래밍 모델에서 동작할 때 프로세스들 사이의 공정성을 보장해야 한다.
적어도 하나의 실시예에서, 애플리케이션(1680)은, 그래픽 가속 모듈 유형, 작업 기술어(WD), 권한 마스크 레지스터(AMR) 값, 및 컨텍스트 저장/복원 영역 포인터(CSRP)를 이용하여 운영 체제(1695) 시스템 호출을 행하도록 요구된다. 적어도 하나의 실시예에서, 그래픽 가속 모듈 유형은 시스템 호출을 위한 타깃 가속 기능을 기술한다. 적어도 하나의 실시예에서, 그래픽 가속 모듈 유형은 시스템 특정 값일 수 있다. 적어도 하나의 실시예에서, WD는 그래픽 가속 모듈(1646)에 대해 특정적으로 포맷팅되고, 그래픽 가속 모듈(1646) 명령, 사용자에 의해 정의된 구조에 대한 유효 어드레스 포인터, 명령들의 큐에 대한 유효 어드레스 포인터, 또는 그래픽 가속 모듈(1646)에 의해 행해질 작업을 기술하기 위한 임의의 다른 데이터 구조의 형태일 수 있다.
적어도 하나의 실시예에서, AMR 값은, 현재 프로세스에 대해 사용하기 위한 AMR 상태이다. 적어도 하나의 실시예에서, 운영 체제에 전달된 값은 애플리케이션이 AMR을 설정한 것과 유사하다. 적어도 하나의 실시예에서, 가속기 통합 회로(1636)(도시되지 않음) 및 그래픽 가속 모듈(1646) 구현들이 사용자 권한 마스크 오버라이드 레지스터(UAMOR)를 지원하지 않는 경우, 운영 체제는, 하이퍼바이저 호출에서 AMR을 전달하기 전에 현재의 UAMOR 값을 AMR 값에 적용할 수 있다. 적어도 하나의 실시예에서, 하이퍼바이저(1696)는 임의적으로, AMR을 프로세스 요소(1683)에 배치하기 전에 현재의 권한 마스크 오버라이드 레지스터(AMOR) 값을 적용할 수 있다. 적어도 하나의 실시예에서, CSRP는, 그래픽 가속 모듈(1646)이 컨텍스트 상태를 저장 및 복원하기 위한 애플리케이션의 유효 어드레스 공간(1682) 내의 영역의 유효 어드레스를 포함하는 레지스터들(1645) 중 하나이다. 적어도 하나의 실시예에서, 이러한 포인터는, 작업들 사이에서 상태가 저장될 것이 요구되지 않는 경우 또는 작업이 선점될 때 임의적이다. 적어도 하나의 실시예에서, 컨텍스트 저장/복원 영역은 고정된 시스템 메모리일 수 있다.
시스템 호출의 수신 시, 운영 체제(1695)는, 애플리케이션(1680)이 레지스터링되었고 그래픽 가속 모듈(1646)을 사용할 권한이 부여되었음을 검증할 수 있다. 적어도 하나의 실시예에서, 운영 체제(1695)는 이어서, 표 3에 나타낸 정보를 이용하여 하이퍼바이저(1696)를 호출한다.
표 3 ― OS-하이퍼바이저 호출 파라미터들
Figure pct00004
적어도 하나의 실시예에서, 하이퍼바이저 호출의 수신 시, 하이퍼바이저(1696)는, 운영 체제(1695)가 등록되었고 그래픽 가속 모듈(1646)을 사용할 권한이 부여되었음을 검증한다. 적어도 하나의 실시예에서, 하이퍼바이저(1696)는 이어서, 프로세스 요소(1683)를, 대응하는 그래픽 가속 모듈(1646) 유형에 대한 프로세스 요소 링크된 목록에 넣는다. 적어도 하나의 실시예에서, 프로세스 요소는 표 4에 나타낸 정보를 포함할 수 있다.
표 4 ― 프로세스 요소 정보
Figure pct00005
적어도 하나의 실시예에서, 하이퍼바이저는, 복수의 가속기 통합 슬라이스(1690) 레지스터들(1645)을 초기화한다.
도 16f에 예시된 바와 같이, 적어도 하나의 실시예에서, 물리적 프로세서 메모리들(1601(1)-1601(N)) 및 GPU 메모리들(1620(1)-1620(N))에 액세스하는 데 사용되는 공통 가상 메모리 어드레스 공간을 통해 어드레싱가능한 통합 메모리가 사용된다. 이러한 구현에서, GPU들(1610(1)-1610(N)) 상에서 실행되는 연산들은, 프로세서 메모리들(1601(1)-1601(M))에 액세스하기 위해 동일한 가상/유효 메모리 어드레스 공간을 활용하고, 그 반대도 마찬가지이며, 그에 의해, 프로그래밍가능성이 단순화된다. 적어도 하나의 실시예에서, 가상/유효 어드레스 공간의 제1 부분은 프로세서 메모리(1601(1))에 할당되고, 제2 부분은 제2 프로세서 메모리(1601(N))에 할당되고, 제3 부분은 GPU 메모리(1620(1))에 할당되는 등 그러한 방식으로 이루어진다. 적어도 하나의 실시예에서, 전체 가상/유효 메모리 공간(때때로 유효 어드레스 공간으로 지칭됨)이 그에 의해 프로세서 메모리들(1601) 및 GPU 메모리들(1620) 각각에 걸쳐 분산되어, 임의의 프로세서 또는 GPU가, 임의의 물리적 메모리에, 그 메모리에 맵핑된 가상 어드레스로 액세스하는 것이 허용된다.
일 실시예에서, MMU들(1639A-1639E) 중 하나 이상 내의 바이어스/일관성 관리 회로(1694A-1694E)는 하나 이상의 호스트 프로세서(예컨대, 1605)와 GPU들(1610)의 캐시들 사이의 캐시 일관성을 보장하고, 특정 유형들의 데이터가 저장되어야 하는 물리적 메모리들을 표시하는 바이어싱 기법들을 구현한다. 적어도 하나의 실시예에서, 바이어스/일관성 관리 회로(1694A-1694E)의 다수의 인스턴스들이 도 16f에 예시되지만, 바이어스/일관성 회로는 하나 이상의 호스트 프로세서(1605)의 MMU 내에 그리고/또는 가속기 통합 회로(1636) 내에 구현될 수 있다.
일 실시예는, GPU 메모리들(1620)이 시스템 메모리의 일부로서 맵핑되고 공유 가상 메모리(SVM) 기술을 사용하여 액세스되는 것을 허용하지만, 전체 시스템 캐시 일관성과 연관된 성능 단점들로부터 어려움을 겪지 않는다. 적어도 하나의 실시예에서, GPU 메모리들(1620)이 부담스러운 캐시 일관성 오버헤드 없이 시스템 메모리로서 액세스되는 능력은 GPU 오프로드를 위한 유익한 동작 환경을 제공한다. 적어도 하나의 실시예에서, 이러한 배열은, 호스트 프로세서(1605)의 소프트웨어가 통상의 I/O DMA 데이터 복사들의 오버헤드 없이 피연산자들을 설정하고 계산 결과들에 액세스하는 것을 허용한다. 적어도 하나의 실시예에서, 그러한 통상의 복사들은, 드라이버 호출들, 인터럽트들, 및 메모리 맵핑된 I/O(MMIO) 액세스들을 수반하며, 이들 모두가 단순한 메모리 액세스들에 비해 비효율적이다. 적어도 하나의 실시예에서, 캐시 일관성 오버헤드들 없이 GPU 메모리들(1620)에 액세스하는 능력은 오프로드된 계산의 실행 시간에 중요할 수 있다. 적어도 하나의 실시예에서, 상당한 스트리밍 기입 메모리 트래픽이 있는 경우들에서, 예컨대, 캐시 일관성 오버헤드는 GPU(1610)에 의해 보이는 유효 기입 대역폭을 상당히 감소시킬 수 있다. 적어도 하나의 실시예에서, 피연산자 설정의 효율성, 결과 액세스의 효율성, 및 GPU 계산의 효율성은, GPU 오프로드의 유효성을 결정하는 데 있어서 한 역할을 할 수 있다.
적어도 하나의 실시예에서, GPU 바이어스 및 호스트 프로세서 바이어스의 선택은, 바이어스 추적기 데이터 구조에 의해 구동된다. 적어도 하나의 실시예에서, 예컨대, GPU 메모리 페이지당 1 비트 또는 2 비트를 포함하는 페이지-세분 구조(예컨대, 메모리 페이지의 세분도로 제어됨)일 수 있는 바이어스 테이블이 사용될 수 있다. 적어도 하나의 실시예에서, 바이어스 테이블은, (예컨대, 바이어스 테이블의 빈번하게/최근에 사용된 엔트리들을 캐싱하기 위한) GPU(1610) 내의 바이어스 캐시가 있거나 없이, 하나 이상의 GPU 메모리(1620)의 빼앗긴 메모리 범위에서 구현될 수 있다. 대안적으로, 적어도 하나의 실시예에서, 전체 바이어스 테이블이 GPU 내에 유지될 수 있다.
적어도 하나의 실시예에서, GPU 메모리(1620)에 대한 각각의 액세스와 연관된 바이어스 테이블 엔트리가 GPU 메모리에 대한 실제 액세스 이전에 액세스되어, 다음의 동작들이 야기된다. 적어도 하나의 실시예에서, GPU 바이어스에서 자신들의 페이지를 찾는 GPU(1610)로부터의 로컬 요청들이 대응하는 GPU 메모리(1620)에 직접 전달된다. 적어도 하나의 실시예에서, 호스트 바이어스에서 자신들의 페이지를 찾는 GPU로부터의 로컬 요청들이 (예컨대, 본원에 설명된 바와 같은 고속 링크를 통해) 프로세서(1605)에 전달된다. 적어도 하나의 실시예에서, 호스트 프로세서 바이어스에서 요청된 페이지를 찾는 프로세서(1605)로부터의 요청들이 보통의 메모리 판독처럼 요청을 완료한다. 대안적으로, GPU-바이어싱된 페이지에 관한 요청들은 GPU(1610)에 전달될 수 있다. 적어도 하나의 실시예에서, GPU는 이어서, GPU가 현재 페이지를 사용하고 있지 않은 경우 페이지를 호스트 프로세서 바이어스로 전환할 수 있다. 적어도 하나의 실시예에서, 페이지의 바이어스 상태는, 소프트웨어 기반 메커니즘, 하드웨어 보조 소프트웨어 기반 메커니즘, 또는 제한된 세트의 경우들에 대해, 순수한 하드웨어 기반 메커니즘에 의해 변경될 수 있다.
적어도 하나의 실시예에서, 바이어스 상태를 변경하기 위한 하나의 메커니즘은, API 호출(예컨대, OpenCL)을 이용하고, 이는 차례로, GPU의 디바이스 드라이버를 호출하고, 이는 차례로, GPU에게 바이어스 상태를 변경할 것을 지시하는 메시지를 GPU에 전송하고(또는 명령 기술어를 인큐잉함), 일부 전환들의 경우, 호스트에서 캐시 플러싱 동작을 수행한다. 적어도 하나의 실시예에서, 캐시 플러싱 동작은 호스트 프로세서(1605) 바이어스로부터 GPU 바이어스로의 전환에 대해 사용되지만, 그 반대의 전환에 대해서는 사용되지 않는다.
일 실시예에서, 캐시 일관성은, GPU-바이어싱된 페이지들을 호스트 프로세서(1605)에 의해 캐싱가능하지 않게 일시적으로 렌더링함으로써 유지된다. 적어도 하나의 실시예에서, 이러한 페이지들에 액세스하기 위해, 프로세서(1605)는 GPU(1610)로부터 액세스를 요청할 수 있고, GPU(1610)는 즉시 액세스를 승인할 수 있거나 승인하지 않을 수 있다. 그에 따라, 적어도 하나의 실시예에서, 프로세서(1605)와 GPU(1610) 사이의 통신을 감소시키기 위해, GPU-바이어싱된 페이지들이 호스트 프로세서(1605)가 아니라 GPU에 의해 요구되는 페이지들임을 보장하는 것이 유리하며, 그 반대도 마찬가지이다.
하드웨어 구조(들)(815)가 하나 이상의 실시예를 수행하기 위해 사용된다. 하드웨어 구조(들)(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공될 수 있다.
도 17은 본원에 설명된 다양한 실시예에 따른, 하나 이상의 IP 코어를 사용하여 제조될 수 있는 예시적인 집적 회로들 및 연관된 그래픽 프로세서들을 예시한다. 예시된 것에 부가하여, 적어도 하나의 실시예에서, 부가적인 그래픽 프로세서들/코어들, 주변기기 인터페이스 제어기들, 또는 범용 프로세서 코어들을 포함하는 다른 로직 및 회로들이 포함될 수 있다.
도 17은 적어도 하나의 실시예에 따른, 하나 이상의 IP 코어를 사용하여 제조될 수 있는 예시적인 시스템 온 칩 집적 회로(1700)를 예시하는 블록도이다. 적어도 하나의 실시예에서, 집적 회로(1700)는, 하나 이상의 애플리케이션 프로세서(들)(1705)(예컨대, CPU), 적어도 하나의 그래픽 프로세서(1710)를 포함하고, 부가적으로, 이미지 프로세서(1715) 및/또는 비디오 프로세서(1720)를 포함할 수 있으며, 이들 중 임의의 것은 모듈식 IP 코어일 수 있다. 적어도 하나의 실시예에서, 집적 회로(1700)는, USB 제어기(1725), UART 제어기(1730), SPI/SDIO 제어기(1735), 및 I22S/I22C 제어기(1740)를 포함하는 주변 또는 버스 로직을 포함한다. 적어도 하나의 실시예에서, 집적 회로(1700)는, 고해상도 멀티미디어 인터페이스(HDMI) 제어기(1750) 및 모바일 산업 프로세서 인터페이스(MIPI) 디스플레이 인터페이스(1755) 중 하나 이상에 결합되는 디스플레이 디바이스(1745)를 포함할 수 있다. 적어도 하나의 실시예에서, 저장소는, 플래시 메모리 및 플래시 메모리 제어기를 포함하는 플래시 메모리 서브시스템(1760)에 의해 제공될 수 있다. 적어도 하나의 실시예에서, 메모리 인터페이스는, SDRAM 또는 SRAM 메모리 디바이스들에 대한 액세스를 위한 메모리 제어기(1765)를 통해 제공될 수 있다. 적어도 하나의 실시예에서, 일부 집적 회로들은 부가적으로 임베디드 보안 엔진(1770)을 포함한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 집적 회로(1700)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 집적 회로(1700)에서 사용될 수 있다.
도 18a 내지 도 18b는 본원에 설명된 다양한 실시예에 따른, 하나 이상의 IP 코어를 사용하여 제조될 수 있는 예시적인 집적 회로들 및 연관된 그래픽 프로세서들을 예시한다. 예시된 것에 부가하여, 적어도 하나의 실시예에서, 부가적인 그래픽 프로세서들/코어들, 주변기기 인터페이스 제어기들, 또는 범용 프로세서 코어들을 포함하는 다른 로직 및 회로들이 포함될 수 있다.
도 18a 내지 도 18b는 본원에 설명된 실시예들에 따른, SoC 내에서의 사용을 위한 예시적인 그래픽 프로세서들을 예시하는 블록도들이다. 도 18a는 적어도 하나의 실시예에 따른, 하나 이상의 IP 코어를 사용하여 제조될 수 있는 시스템 온 칩 집적 회로의 예시적인 그래픽 프로세서(1810)를 예시한다. 도 18b는 적어도 하나의 실시예에 따른, 하나 이상의 IP 코어를 사용하여 제조될 수 있는 시스템 온 칩 집적 회로의 부가적인 예시적인 그래픽 프로세서(1840)를 예시한다. 적어도 하나의 실시예에서, 도 18a의 그래픽 프로세서(1810)는 저전력 그래픽 프로세서 코어이다. 적어도 하나의 실시예에서, 도 18b의 그래픽 프로세서(1840)는 더 높은 성능 그래픽 프로세서 코어이다. 적어도 하나의 실시예에서, 그래픽 프로세서들(1810, 1840) 각각은, 도 17의 그래픽 프로세서(1710)의 변형들일 수 있다.
적어도 하나의 실시예에서, 그래픽 프로세서(1810)는, 정점 프로세서(1805) 및 하나 이상의 프래그먼트 프로세서(들)(1815A-1815N)(예컨대, 1815A, 1815B, 1815C, 1815D 내지 1815N-1, 및 1815N)를 포함한다. 적어도 하나의 실시예에서, 그래픽 프로세서(1810)는, 정점 프로세서(1805)가 정점 셰이더 프로그램들에 대한 연산들을 실행하도록 최적화되는 한편 하나 이상의 프래그먼트 프로세서(들)(1815A-1815N)가 프래그먼트 또는 픽셀 셰이더 프로그램들에 대한 프래그먼트(예컨대, 픽셀) 셰이딩 연산들을 실행하도록, 별개의 로직을 통해 상이한 셰이더 프로그램들을 실행할 수 있다. 적어도 하나의 실시예에서, 정점 프로세서(1805)는 3D 그래픽 파이프라인의 정점 처리 스테이지를 수행하고 프리미티브(primitive)들 및 정점 데이터를 생성한다. 적어도 하나의 실시예에서, 프래그먼트 프로세서(들)(1815A-1815N)는 정점 프로세서(1805)에 의해 생성된 프리미티브 및 정점 데이터를 사용하여 디스플레이 디바이스 상에 디스플레이되는 프레임버퍼를 생성한다. 적어도 하나의 실시예에서, 프래그먼트 프로세서(들)(1815A-1815N)는, 다이렉트 3D(Direct 3D) API에서 제공되는 바와 같은 픽셀 셰이더 프로그램과 유사한 연산들을 수행하는 데 사용될 수 있는, OpenGL API에서 제공되는 프래그먼트 셰이더 프로그램들을 실행하도록 최적화된다.
적어도 하나의 실시예에서, 그래픽 프로세서(1810)는 부가적으로, 하나 이상의 메모리 관리 유닛(MMU)(1820A-1820B), 캐시(들)(1825A-1825B), 및 회로 상호연결부(들)(1830A-1830B)를 포함한다. 적어도 하나의 실시예에서, 하나 이상의 MMU(들)(1820A-1820B)는, 하나 이상의 캐시(들)(1825A-1825B)에 저장된 정점 또는 이미지/텍스처 데이터에 부가하여, 메모리에 저장된 정점 또는 이미지/텍스처 데이터를 참조할 수 있는, 정점 프로세서(1805) 및/또는 프래그먼트 프로세서(들)(1815A-1815N)에 대한 것을 포함하는 그래픽 프로세서(1810)에 대한 가상 대 물리 어드레스 맵핑을 제공한다. 적어도 하나의 실시예에서, 하나 이상의 MMU(들)(1820A-1820B)는, 도 17의 하나 이상의 애플리케이션 프로세서(들)(1705), 이미지 프로세서(1715), 및/또는 비디오 프로세서(1720)와 연관된 하나 이상의 MMU를 포함하는 시스템 내의 다른 MMU들과 동기화될 수 있으며, 이에 따라, 각각의 프로세서(1705-1720)는 공유 또는 통합 가상 메모리 시스템에 참여할 수 있다. 적어도 하나의 실시예에서, 하나 이상의 회로 상호연결부(들)(1830A-1830B)는, 그래픽 프로세서(1810)가 SoC의 내부 버스를 통해 또는 직접 연결을 통해 SoC 내의 다른 IP 코어들과 인터페이싱하는 것을 가능하게 한다.
적어도 하나의 실시예에서, 그래픽 프로세서(1840)는, 도 18b에 도시된 바와 같은 하나 이상의 셰이더 코어(들)(1855A-1855N)(예컨대, 1855A, 1855B, 1855C, 1855D, 1855E, 1855F 내지 1855N-1, 및 1855N)를 포함하고, 이 셰이더 코어(들)는, 단일 코어 또는 유형 또는 코어가, 정점 셰이더들, 프래그먼트 셰이더들, 및/또는 컴퓨팅 셰이더들을 구현하기 위한 셰이더 프로그램 코드를 포함하는 모든 유형들의 프로그래밍가능 셰이더 코드를 실행할 수 있는 통합 셰이더 코어 아키텍처를 제공한다. 적어도 하나의 실시예에서, 셰이더 코어들의 수는 변할 수 있다. 적어도 하나의 실시예에서, 그래픽 프로세서(1840)는, 하나 이상의 셰이더 코어(1855A-1855N)에 실행 스레드들을 디스패치하는 스레드 디스패처로서 작용하는 코어 간 작업 관리자(1845), 및 예컨대 장면 내에서의 로컬 공간적 일관성을 이용하거나 내부 캐시들의 사용을 최적화하기 위해 장면에 대한 렌더링 연산들이 이미지 공간에서 세분되는, 타일 기반 렌더링을 위한 타일링 연산들을 가속하는 타일링 유닛(1858)을 포함한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 집적 회로(18A 및/또는 18B)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 집적 회로(18A 및/또는 18B)에서 사용될 수 있다.
도 19a 내지 도 19b는 본원에 설명된 실시예들에 따른 부가적인 예시적인 그래픽 프로세서 로직을 예시한다. 도 19a는, 적어도 하나의 실시예에서 도 17의 그래픽 프로세서(1710) 내에 포함될 수 있고 적어도 하나의 실시예에서 도 18b에서와 같이 통합 셰이더 코어(1855A-1855N)일 수 있는 그래픽 코어(1900)를 예시한다. 도 19b는, 적어도 하나의 실시예에서 멀티칩 모듈 상에 배치하기에 적합한 고도의 병렬 범용 그래픽 처리 유닛("GPGPU")(1930)을 예시한다.
적어도 하나의 실시예에서, 그래픽 코어(1900)는, 그래픽 코어(1900) 내의 실행 리소스들에 공통인 공유 명령어 캐시(1902), 텍스처 유닛(1918), 및 캐시/공유 메모리(1920)를 포함한다. 적어도 하나의 실시예에서, 그래픽 코어(1900)는, 각각의 코어에 대한 다수의 슬라이스들(1901A-1901N) 또는 파티션을 포함할 수 있고, 그래픽 프로세서는 그래픽 코어(1900)의 다수의 인스턴스들을 포함할 수 있다. 적어도 하나의 실시예에서, 슬라이스들(1901A-1901N)은, 로컬 명령어 캐시(1904A-1904N), 스레드 스케줄러(1906A-1906N), 스레드 디스패처(1908A-1908N), 및 레지스터들(1910A-1910N)의 세트를 포함하는 지원 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 슬라이스들(1901A-1901N)은, 한 세트의 부가적인 기능 유닛(AFU)들(1912A-1912N), 부동 소수점 유닛(FPU)들(1914A-1914N), 정수 산술 로직 유닛(ALU)들(1916A-1916N), 어드레스 계산 유닛(ACU)들(1913A-1913N), 배정밀도(double-precision) 부동 소수점 유닛(DPFPU)들(1915A-1915N), 및 행렬 처리 유닛(MPU)들(1917A-1917N)을 포함할 수 있다.
적어도 하나의 실시예에서, FPU들(1914A-1914N)은, 단정밀도(single-precision)(32비트) 및 반정밀도(half-precision)(16비트) 부동 소수점 연산들을 수행할 수 있는 한편, DPFPU들(1915A-1915N)은 배정밀도(64비트) 부동 소수점 연산들을 수행할 수 있다. 적어도 하나의 실시예에서, ALU들(1916A-1916N)은, 8 비트, 16 비트, 및 32 비트 정밀도에서 가변 정밀도 정수 연산들을 수행할 수 있고 혼합된 정밀도 연산들을 위해 구성될 수 있다. 적어도 하나의 실시예에서, MPU들(1917A-1917N)은 또한, 반정밀도 부동 소수점 및 8 비트 정수 연산들을 포함하는 혼합 정밀도 행렬 연산들을 위해 구성될 수 있다. 적어도 하나의 실시예에서, MPU들(1917-1917N)은, 가속된 일반 행렬 대 행렬 곱셈(general matrix to matrix multiplication)(GEMM)에 대한 지원을 가능하게 하는 것을 포함하여, 기계 학습 애플리케이션 프레임워크들을 가속하기 위해 다양한 행렬 연산들을 수행할 수 있다. 적어도 하나의 실시예에서, AFU들(1912A-1912N)은, 삼각 연산들(예컨대, 사인, 코사인 등)을 포함하여, 부동 소수점 또는 정수 유닛들에 의해 지원되지 않는 부가적인 로직 연산들을 수행할 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 코어(1900)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 코어(1900)에서 사용될 수 있다.
도 19b는, 적어도 하나의 실시예에서, 고도의 병렬 컴퓨팅 연산들이 그래픽 처리 유닛들의 어레이에 의해 수행되는 것을 가능하게 하도록 구성될 수 있는 범용 처리 유닛(GPGPU)(1930)을 예시한다. 적어도 하나의 실시예에서, GPGPU(1930)는, GPGPU(1930)의 다른 인스턴스들에 직접 링크되어 멀티-GPU 클러스터를 생성함으로써 심층 신경망들에 대한 훈련 속도를 개선할 수 있다. 적어도 하나의 실시예에서, GPGPU(1930)는 호스트 프로세서와의 연결을 가능하게 하는 호스트 인터페이스(1932)를 포함한다. 적어도 하나의 실시예에서, 호스트 인터페이스(1932)는 PCI 익스프레스 인터페이스이다. 적어도 하나의 실시예에서, 호스트 인터페이스(1932)는 공급업체 특정 통신 인터페이스 또는 통신 패브릭일 수 있다. 적어도 하나의 실시예에서, GPGPU(1930)는 호스트 프로세서로부터 명령들을 수신하고, 전역 스케줄러(1934)를 사용하여 그 명령들과 연관된 실행 스레드들을 컴퓨팅 클러스터들(1936A-1936H)의 세트에 분배한다. 적어도 하나의 실시예에서, 컴퓨팅 클러스터들(1936A-1936H)은 캐시 메모리(1938)를 공유한다. 적어도 하나의 실시예에서, 캐시 메모리(1938)는 컴퓨팅 클러스터들(1936A-1936H) 내의 캐시 메모리들에 대한 상위 레벨 캐시의 역할을 할 수 있다.
적어도 하나의 실시예에서, GPGPU(1930)는 메모리 제어기들(1942A-1942B)의 세트를 통해 컴퓨팅 클러스터들(1936A-1936H)과 결합되는 메모리(1944A-1944B)를 포함한다. 적어도 하나의 실시예에서, 메모리(1944A-1944B)는, 그래픽 2배 데이터율(GDDR) 메모리를 포함하여 동기식 그래픽 랜덤 액세스 메모리(SGRAM)와 같은 동적 랜덤 액세스 메모리(DRAM) 또는 그래픽 랜덤 액세스 메모리를 포함하는 다양한 유형들의 메모리 디바이스들을 포함할 수 있다.
적어도 하나의 실시예에서, 컴퓨팅 클러스터들(1936A-1936H)은 각각, 기계 학습 계산들에 적합한 것을 포함하는 정밀도들의 범위에서 계산 연산들을 수행할 수 있는 다수의 유형들의 정수 및 부동 소수점 로직 유닛들을 포함할 수 있는, 도 19a의 그래픽 코어(1900)와 같은 그래픽 코어들의 세트를 포함한다. 예컨대, 적어도 하나의 실시예에서, 컴퓨팅 클러스터들(1936A-1936H) 각각 내의 부동 소수점 유닛들의 적어도 서브세트는 16 비트 또는 32 비트 부동 소수점 연산들을 수행하도록 구성될 수 있는 한편, 부동 소수점 유닛들의 상이한 서브세트는 64 비트 부동 소수점 연산들을 수행하도록 구성될 수 있다.
적어도 하나의 실시예에서, GPGPU(1930)의 다수의 인스턴스들은 컴퓨팅 클러스터로서 동작하도록 구성될 수 있다. 적어도 하나의 실시예에서, 동기화 및 데이터 교환을 위해 컴퓨팅 클러스터들(1936A-1936H)에 의해 사용되는 통신은 실시예들에 따라 다르다. 적어도 하나의 실시예에서, GPGPU(1930)의 다수의 인스턴스들은 호스트 인터페이스(1932)를 통해 통신한다. 적어도 하나의 실시예에서, GPGPU(1930)는, GPGPU(1930)의 다른 인스턴스들에 대한 직접 연결을 가능하게 하는, GPGPU(1930)를 GPU 링크(1940)와 결합하는 I/O 허브(1939)를 포함한다. 적어도 하나의 실시예에서, GPU 링크(1940)는, GPGPU(1930)의 다수의 인스턴스들 사이의 통신 및 동기화를 가능하게 하는 전용 GPU-대-GPU 브릿지에 결합된다. 적어도 하나의 실시예에서, GPU 링크(1940)는 다른 GPGPU들 또는 병렬 프로세서들에 대한 데이터를 송신 및 수신하기 위해 고속 상호연결부와 결합된다. 적어도 하나의 실시예에서, GPGPU(1930)의 다수의 인스턴스들은 별개의 데이터 처리 시스템들에 위치되고, 호스트 인터페이스(1932)를 통해 액세스가능한 네트워크 디바이스를 통해 통신한다. 적어도 하나의 실시예에서, GPU 링크(1940)는, 호스트 인터페이스(1932)에 부가하여 또는 그에 대한 대안으로서 호스트 프로세서에 대한 연결을 가능하게 하도록 구성될 수 있다.
적어도 하나의 실시예에서, GPGPU(1930)는 신경망들을 훈련시키도록 구성될 수 있다. 적어도 하나의 실시예에서, GPGPU(1930)는 추론 플랫폼 내에서 사용될 수 있다. GPGPU(1930)가 추론에 사용되는 적어도 하나의 실시예에서, GPGPU(1930)는, 신경망을 훈련시키기 위해 GPGPU(1930)가 사용될 때와 비교하여 더 적은 수의 컴퓨팅 클러스터(1936A-1936H)를 포함할 수 있다. 적어도 하나의 실시예에서, 메모리(1944A-1944B)와 연관된 메모리 기술은 추론 구성과 훈련 구성 간에 상이할 수 있고, 훈련 구성들에 더 높은 대역폭 메모리 기술들이 전용된다. 적어도 하나의 실시예에서, GPGPU(1930)의 추론 구성은 추론 특정 명령어들을 지원할 수 있다. 예컨대, 적어도 하나의 실시예에서, 추론 구성은, 배치된 신경망들에 대한 추론 연산들 동안 사용될 수 있는 하나 이상의 8 비트 정수 내적 명령어들에 대한 지원을 제공할 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 GPGPU(1930)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 GPGPU(1930)에서 사용될 수 있다.
도 20은 적어도 하나의 실시예에 따른 컴퓨팅 시스템(2000)을 예시하는 블록도이다. 적어도 하나의 실시예에서, 컴퓨팅 시스템(2000)은, 메모리 허브(2005)를 포함할 수 있는 상호연결 경로를 통해 통신하는 하나 이상의 프로세서(들)(2002) 및 시스템 메모리(2004)를 갖는 처리 서브시스템(2001)을 포함한다. 적어도 하나의 실시예에서, 메모리 허브(2005)는 칩셋 구성요소 내의 별개의 구성요소일 수 있거나 하나 이상의 프로세서(들)(2002) 내에 통합될 수 있다. 적어도 하나의 실시예에서, 메모리 허브(2005)는 통신 링크(2006)를 통해 I/O 서브시스템(2011)과 결합된다. 적어도 하나의 실시예에서, I/O 서브시스템(2011)은, 컴퓨팅 시스템(2000)이 하나 이상의 입력 디바이스(들)(2008)로부터 입력을 수신하는 것을 가능하게 할 수 있게 하는 I/O 허브(2007)를 포함한다. 적어도 하나의 실시예에서, I/O 허브(2007)는, 하나 이상의 프로세서(들)(2002)에 포함될 수 있는 디스플레이 제어기가 하나 이상의 디스플레이 디바이스(들)(2010A)에 출력들을 제공하는 것을 가능하게 할 수 있다. 적어도 하나의 실시예에서, I/O 허브(2007)와 결합된 하나 이상의 디스플레이 디바이스(들)(2010A)는, 로컬, 내부, 또는 임베디드 디스플레이 디바이스를 포함할 수 있다.
적어도 하나의 실시예에서, 처리 서브시스템(2001)은, 버스 또는 다른 통신 링크(2013)를 통해 메모리 허브(2005)에 결합되는 하나 이상의 병렬 프로세서(들)(2012)를 포함한다. 적어도 하나의 실시예에서, 통신 링크(2013)는, PCI 익스플레스와 같은, 그러나 이에 제한되지 않는 통신 링크 기술들 또는 프로토콜들 기반의 임의의 수의 표준 중 하나를 사용할 수 있거나, 공급업체 특정 통신 인터페이스 또는 통신 패브릭일 수 있다. 적어도 하나의 실시예에서, 하나 이상의 병렬 프로세서(들)(2012)는, 다중 통합 코어(many-integrated core)(MIC) 프로세서와 같은, 많은 수의 처리 코어들 및/또는 처리 클러스터들을 포함할 수 있는 계산적으로 집중된 병렬 또는 벡터 처리 시스템을 형성한다. 적어도 하나의 실시예에서, 병렬 프로세서(들)(2012) 중 일부 또는 그 전부는, I/O 허브(2007)를 통해 결합된 하나 이상의 디스플레이 디바이스(들)(2010A) 중 하나에 픽셀들을 출력할 수 있는 그래픽 처리 서브시스템을 형성한다. 적어도 하나의 실시예에서, 병렬 프로세서(들)(2012)는 또한, 디스플레이 제어기, 및 하나 이상의 디스플레이 디바이스(들)(2010B)에 대한 직접 연결을 가능하게 하기 위한 디스플레이 인터페이스(도시되지 않음)를 포함할 수 있다.
적어도 하나의 실시예에서, 시스템 저장 유닛(2014)은 I/O 허브(2007)에 연결되어 컴퓨팅 시스템(2000)을 위한 저장 메커니즘을 제공할 수 있다. 적어도 하나의 실시예에서, I/O 스위치(2016)는, 플랫폼 내에 통합될 수 있는 네트워크 어댑터(2018) 및/또는 무선 네트워크 어댑터(2019), 및 하나 이상의 추가기능(add-in) 디바이스(들)(2020)를 통해 부가될 수 있는 다양한 다른 디바이스들과 같은 다른 구성요소들과 I/O 허브(2007) 사이의 연결들을 가능하게 하기 위한 인터페이스 메커니즘을 제공하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 네트워크 어댑터(2018)는 이더넷 어댑터 또는 다른 유선 네트워크 어댑터일 수 있다. 적어도 하나의 실시예에서, 무선 네트워크 어댑터(2019)는, 와이파이, 블루투스, 근접장 통신(NFC), 또는 하나 이상의 무선 라디오를 포함하는 다른 네트워크 디바이스 중 하나 이상을 포함할 수 있다.
적어도 하나의 실시예에서, 컴퓨팅 시스템(2000)은, I/O 허브(2007)에 또한 연결될 수 있는, USB 또는 다른 포트 연결들, 광학 저장 드라이브들, 비디오 포착 디바이스들 등을 포함하는 명시적으로 도시되지 않은 다른 구성요소들을 포함할 수 있다. 적어도 하나의 실시예에서, 도 20의 다양한 구성요소들을 상호연결하는 통신 경로들은, PCI(주변 구성요소 상호연결) 기반 프로토콜들(예컨대, PCI 익스프레스), 또는 다른 버스 또는 포인트-투-포인트 통신 인터페이스들 및/또는 프로토콜(들), 이를테면, NV-Link 고속 상호연결부 또는 상호연결 프로토콜들과 같은 임의의 적합한 프로토콜을 사용하여 구현될 수 있다.
적어도 하나의 실시예에서, 병렬 프로세서(들)(2012)는, 예컨대 비디오 출력 회로를 포함하는 그래픽 및 비디오 처리에 최적화된 회로를 포함하고, 그래픽 처리 유닛(GPU)을 구성한다. 적어도 하나의 실시예에서, 병렬 프로세서(들)(2012)는 범용 처리에 최적화된 회로를 포함한다. 적어도 하나의 실시예에서, 컴퓨팅 시스템(2000)의 구성요소들은 단일 집적 회로 상의 하나 이상의 다른 시스템 요소와 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 병렬 프로세서(들)(2012), 메모리 허브(2005), 프로세서(들)(2002), 및 I/O 허브(2007)는 시스템 온 칩(SoC) 집적 회로에 통합될 수 있다. 적어도 하나의 실시예에서, 컴퓨팅 시스템(2000)의 구성요소들은 단일 패키지 내에 통합되어 시스템 인 패키지(system in package)(SIP) 구성을 형성할 수 있다. 적어도 하나의 실시예에서, 컴퓨팅 시스템(2000)의 구성요소의 적어도 일부분은 멀티칩 모듈(MCM)에 통합될 수 있으며, 그 멀티칩 모듈은 다른 멀티칩 모듈들과 상호연결되어 모듈식 컴퓨팅 시스템이 될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 2000의 시스템에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 도 2000의 시스템에서 사용될 수 있다.
프로세서들
도 21a는 적어도 하나의 실시예에 따른 병렬 프로세서(2100)를 예시한다. 적어도 하나의 실시예에서, 병렬 프로세서(2100)의 다양한 구성요소들은, 프로그래밍가능 프로세서들, 주문형 집적 회로(ASIC)들, 또는 필드 프로그래밍가능 게이트 어레이(FPGA)들과 같은 하나 이상의 집적 회로 디바이스를 사용하여 구현될 수 있다. 적어도 하나의 실시예에서, 예시된 병렬 프로세서(2100)는, 예시적인 실시예에 따라 도 20에 도시된 하나 이상의 병렬 프로세서(들)(2012)의 변형이다.
적어도 하나의 실시예에서, 병렬 프로세서(2100)는 병렬 처리 유닛(2102)을 포함한다. 적어도 하나의 실시예에서, 병렬 처리 유닛(2102)은, 병렬 처리 유닛(2102)의 다른 인스턴스들을 포함하여 다른 디바이스들과의 통신을 가능하게 하는 I/O 유닛(2104)을 포함한다. 적어도 하나의 실시예에서, I/O 유닛(2104)은 다른 디바이스들에 직접 연결될 수 있다. 적어도 하나의 실시예에서, I/O 유닛(2104)은 메모리 허브(2105)와 같은 허브 또는 스위치 인터페이스의 사용을 통해 다른 디바이스들과 연결된다. 적어도 하나의 실시예에서, 메모리 허브(2105)와 I/O 유닛(2104) 사이의 연결들은 통신 링크(2113)를 형성한다. 적어도 하나의 실시예에서, I/O 유닛(2104)은 호스트 인터페이스(2106) 및 메모리 크로스바(2116)와 연결되며, 여기서, 호스트 인터페이스(2106)는 처리 연산들을 수행하는 것에 관련된 명령들을 수신하고 메모리 크로스바(2116)는 메모리 연산들을 수행하는 것에 관련된 명령들을 수신한다.
적어도 하나의 실시예에서, 호스트 인터페이스(2106)가 I/O 유닛(2104)을 통해 명령 버퍼를 수신할 때, 호스트 인터페이스(2106)는 이러한 명령들을 수행하기 위한 작업 연산들을 프론트 엔드(2108)에 지시할 수 있다. 적어도 하나의 실시예에서, 프론트 엔드(2108)는, 명령들 또는 다른 작업 항목들을 처리 클러스터 어레이(2112)에 분배하도록 구성되는 스케줄러(2110)와 결합된다. 적어도 하나의 실시예에서, 스케줄러(2110)는, 작업들이 처리 클러스터 어레이(2112)의 클러스터에 분배되기 전에 처리 클러스터 어레이(2112)가 적절하게 구성되고 유효한 상태에 있다는 것을 보장한다. 적어도 하나의 실시예에서, 스케줄러(2110)는 마이크로제어기 상에서 실행되는 펌웨어 로직을 통해 구현된다. 적어도 하나의 실시예에서, 마이크로제어기에 의해 구현된 스케줄러(2110)는, 복잡한 스케줄링 및 작업 분배 동작들을 개략적 및 정밀한 세분도로 수행하도록 구성가능할 수 있어서, 처리 어레이(2112) 상에서 실행되는 스레드들의 신속한 선점 및 컨텍스트 스위칭이 가능해진다. 적어도 하나의 실시예에서, 호스트 소프트웨어는 다수의 그래픽 처리 경로들 중 하나를 통한 처리 클러스터 어레이(2112) 상에서의 스케줄링에 대한 작업부하들을 판명할 수 있다. 적어도 하나의 실시예에서, 작업부하들은 이어서, 스케줄러(2110)를 포함하는 마이크로제어기 내의 스케줄러(2110) 로직에 의해 처리 어레이 클러스터(2112)에 걸쳐 자동으로 분배될 수 있다.
적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는 최대 "N"개의 처리 클러스터(예컨대, 클러스터(2114A), 클러스터(2114B) 내지 클러스터(2114N))를 포함할 수 있으며, 여기서, "N"은 양의 정수를 표현한다(다른 도면들에서 사용된 것과 상이한 정수 "N"일 수 있음). 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)의 각각의 클러스터(2114A-2114N)는 많은 수의 동시 스레드들을 실행할 수 있다. 적어도 하나의 실시예에서, 스케줄러(2110)는, 각각의 유형의 프로그램 또는 계산에 대해 발생하는 작업부하에 따라 다를 수 있는 다양한 스케줄링 및/또는 작업 분배 알고리즘들을 사용하여 처리 클러스터 어레이(2112)의 클러스터들(2114A-2114N)에 작업을 할당할 수 있다. 적어도 하나의 실시예에서, 스케줄링은, 스케줄러(2110)에 의해 동적으로 처리될 수 있거나 또는 처리 클러스터 어레이(2112)에 의한 실행을 위해 구성된 프로그램 로직의 컴파일 동안 컴파일러 로직에 의해 부분적으로 보조될 수 있다. 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)의 상이한 클러스터들(2114A-2114N)은, 상이한 유형들의 프로그램들을 처리하는 데 또는 상이한 유형들의 계산들을 수행하는 데 할당될 수 있다.
적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는 다양한 유형들의 병렬 처리 연산들을 수행하도록 구성될 수 있다. 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는 범용 병렬 컴퓨팅 연산들을 수행하도록 구성된다. 예컨대, 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는, 비디오 및/또는 오디오 데이터의 필터링, 물리 연산들을 포함하는 모델링 연산들의 수행, 및 데이터 변환들의 수행을 포함하는 처리 작업들을 실행하기 위한 로직을 포함할 수 있다.
적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는 병렬 그래픽 처리 연산들을 수행하도록 구성된다. 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는, 텍스처 연산들을 수행하기 위한 텍스처 샘플링 로직뿐만 아니라 테셀레이션(tessellation) 로직 및 다른 정점 처리 로직을 포함하지만 이에 제한되지 않는, 그러한 그래픽 처리 연산들의 실행을 지원하기 위한 부가적인 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는, 정점 셰이더들, 테셀레이션 셰이더들, 지오메트리 셰이더들, 및 픽셀 셰이더들과 같은, 그러나 이에 제한되지 않는 그래픽 처리 관련 셰이더 프로그램들을 실행하도록 구성될 수 있다. 적어도 하나의 실시예에서, 병렬 처리 유닛(2102)은 처리를 위해 I/O 유닛(2104)을 통해 시스템 메모리로부터 데이터를 전송할 수 있다. 적어도 하나의 실시예에서, 처리 동안, 전송된 데이터는 처리 동안 온-칩 메모리(예컨대, 병렬 프로세서 메모리(2122))에 저장될 수 있고, 이어서, 다시 시스템 메모리에 기입될 수 있다.
적어도 하나의 실시예에서, 병렬 처리 유닛(2102)이 그래픽 처리를 수행하는 데 사용될 때, 스케줄러(2110)는, 처리 클러스터 어레이(2112)의 다수의 클러스터들(2114A-2114N)에 대한 그래픽 처리 연산들의 분배를 더 양호하게 가능하게 하기 위해 처리 작업부하를 대략적으로 동일한 크기의 작업들로 분할하도록 구성될 수 있다. 적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)의 부분들은 상이한 유형들의 처리를 수행하도록 구성될 수 있다. 예컨대, 적어도 하나의 실시예에서, 제1 부분은 정점 셰이딩 및 토폴로지 생성을 수행하도록 구성될 수 있고, 제2 부분은 테셀레이션 및 지오메트리 셰이딩을 수행하도록 구성될 수 있고, 제3 부분은, 디스플레이를 위한 렌더링된 이미지를 생성하기 위해 픽셀 셰이딩 또는 다른 스크린 공간 연산들을 수행하도록 구성될 수 있다. 적어도 하나의 실시예에서, 클러스터들(2114A-2114N) 중 하나 이상에 의해 생성되는 중간 데이터는 버퍼들에 저장되어 중간 데이터가 추가적인 처리를 위해 클러스터들(2114A-2114N) 사이에서 송신되는 것을 허용할 수 있다.
적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)는, 프론트 엔드(2108)로부터 처리 작업들을 정의하는 명령들을 수신하는 스케줄러(2110)를 통해 실행될 처리 작업들을 수신할 수 있다. 적어도 하나의 실시예에서, 처리 작업들은, 처리될 데이터, 예컨대, 표면(패치) 데이터, 프리미티브 데이터, 정점 데이터, 및/또는 픽셀 데이터의 인덱스들뿐만 아니라, 데이터가 어떻게 처리되어야 하는지(예컨대, 어떤 프로그램이 실행되어야 하는지)를 정의하는 상태 파라미터들 및 명령들을 포함할 수 있다. 적어도 하나의 실시예에서, 스케줄러(2110)는, 작업들에 대응하는 인덱스들을 페치하도록 구성될 수 있거나 또는 프론트 엔드(2108)로부터 인덱스들을 수신할 수 있다. 적어도 하나의 실시예에서, 프론트 엔드(2108)는, 착신 명령 버퍼들(예컨대, 뱃치-버퍼들, 푸시 버퍼들 등)에 의해 특정된 작업부하가 개시되기 전에 처리 클러스터 어레이(2112)가 유효한 상태로 구성됨을 보장하도록 구성될 수 있다.
적어도 하나의 실시예에서, 병렬 처리 유닛(2102)의 하나 이상의 인스턴스 각각은 병렬 프로세서 메모리(2122)와 결합될 수 있다. 적어도 하나의 실시예에서, 병렬 프로세서 메모리(2122)는, 처리 클러스터 어레이(2112)뿐만 아니라 I/O 유닛(2104)으로부터 메모리 요청들을 수신할 수 있는 메모리 크로스바(2116)를 통해 액세스될 수 있다. 적어도 하나의 실시예에서, 메모리 크로스바(2116)는 메모리 인터페이스(2118)를 통해 병렬 프로세서 메모리(2122)에 액세스할 수 있다. 적어도 하나의 실시예에서, 메모리 인터페이스(2118)는, 병렬 프로세서 메모리(2122)의 부분(예컨대, 메모리 유닛)에 각각이 결합될 수 있는 다수의 파티션 유닛들(예컨대, 파티션 유닛(2120A), 파티션 유닛(2120B) 내지 파티션 유닛(2120N))을 포함할 수 있다. 적어도 하나의 실시예에서, 파티션 유닛들(2120A-2120N)의 수는, 제1 파티션 유닛(2120A)이 대응하는 제1 메모리 유닛(2124A)을 갖고, 제2 파티션 유닛(2120B)이 대응하는 메모리 유닛(2124B)을 갖고, 제N 파티션 유닛(2120N)이 대응하는 제N 메모리 유닛(2124N)을 갖도록, 메모리 유닛들의 수와 동일하게 구성될 수 있다. 적어도 하나의 실시예에서, 파티션 유닛들(2120A-2120N)의 수는 메모리 유닛들의 수와 동일하지 않을 수 있다.
적어도 하나의 실시예에서, 메모리 유닛들(2124A-2124N)은, 그래픽 2배 데이터율(GDDR) 메모리를 포함하여 동기식 그래픽 랜덤 액세스 메모리(SGRAM)와 같은 동적 랜덤 액세스 메모리(DRAM) 또는 그래픽 랜덤 액세스 메모리를 포함하는 다양한 유형들의 메모리 디바이스들을 포함할 수 있다. 적어도 하나의 실시예에서, 메모리 유닛(2124A-2124N)은 또한, 고-대역폭 메모리(HBM)를 포함하지만 이에 제한되지 않는 3D 스택형 메모리를 포함할 수 있다. 적어도 하나의 실시예에서, 렌더링 타깃들, 이를테면, 프레임 버퍼들 또는 텍스처 맵들이 메모리 유닛들(2124A-2124N)에 걸쳐 저장될 수 있어서, 파티션 유닛들(2120A-2120N)이 병렬 프로세서 메모리(2122)의 이용가능 대역폭을 효율적으로 사용하도록 각각의 렌더링 타깃의 부분들에 병렬로 기입하는 것이 허용된다. 적어도 하나의 실시예에서, 병렬 프로세서 메모리(2122)의 로컬 인스턴스는, 로컬 캐시 메모리와 연계하여 시스템 메모리를 활용하는 통합 메모리 설계를 위하여 제외될 수 있다.
적어도 하나의 실시예에서, 처리 클러스터 어레이(2112)의 클러스터들(2114A-2114N) 중 임의의 클러스터는 병렬 프로세서 메모리(2122) 내의 메모리 유닛들(2124A-2124N) 중 임의의 메모리에 기입될 데이터를 처리할 수 있다. 적어도 하나의 실시예에서, 메모리 크로스바(2116)는, 각각의 클러스터(2114A-2114N)의 출력을, 임의의 파티션 유닛(2120A-2120N)에 또는 출력에 대한 부가적인 처리 연산들을 수행할 수 있는 다른 클러스터(2114A-2114N)에 전송하도록 구성될 수 있다. 적어도 하나의 실시예에서, 각각의 클러스터(2114A-2114N)는, 다양한 외부 메모리 디바이스로부터 판독하거나 그에 기입하기 위해 메모리 크로스바(2116)를 통해 메모리 인터페이스(2118)와 통신할 수 있다. 적어도 하나의 실시예에서, 메모리 크로스바(2116)는, I/O 유닛(2104)과 통신하기 위한 메모리 인터페이스(2118)에 대한 연결뿐만 아니라 병렬 프로세서 메모리(2122)의 로컬 인스턴스에 대한 연결을 갖고 있어서, 상이한 처리 클러스터들(2114A-2114N) 내의 처리 유닛들이 시스템 메모리 또는 병렬 처리 유닛(2102)에 대해 로컬이 아닌 다른 메모리와 통신하는 것을 가능하게 한다. 적어도 하나의 실시예에서, 메모리 크로스바(2116)는 가상 채널들을 사용하여 클러스터들(2114A-2114N)과 파티션 유닛들(2120A-2120N) 사이의 트래픽 스트림들을 분리할 수 있다.
적어도 하나의 실시예에서, 병렬 처리 유닛(2102)의 다수의 인스턴스들이 단일 추가기능 카드 상에 제공될 수 있거나 또는 다수의 추가기능 카드들이 상호연결될 수 있다. 적어도 하나의 실시예에서, 병렬 처리 유닛(2102)의 상이한 인스턴스들은, 상이한 인스턴스들이 상이한 수의 처리 코어들, 상이한 양의 로컬 병렬 프로세서 메모리, 및/또는 다른 구성 차이들을 갖는 경우에도 상호동작하도록 구성될 수 있다. 예컨대, 적어도 하나의 실시예에서, 병렬 처리 유닛(2102)의 일부 인스턴스들은 다른 인스턴스들에 비해 더 높은 정밀도의 부동 소수점 유닛들을 포함할 수 있다. 적어도 하나의 실시예에서, 병렬 처리 유닛(2102) 또는 병렬 프로세서(2100)의 하나 이상의 인스턴스를 포함하는 시스템들은, 데스크톱, 랩톱, 또는 핸드헬드 개인용 컴퓨터들, 서버들, 워크스테이션들, 게임 콘솔들, 및/또는 임베디드 시스템들을 포함하지만 이에 제한되지 않는 다양한 구성들 및 폼 팩터들로 구현될 수 있다.
도 21b는 적어도 하나의 실시예에 따른 파티션 유닛(2120)의 블록도이다. 적어도 하나의 실시예에서, 파티션 유닛(2120)은 도 21a의 파티션 유닛들(2120A-2120N) 중 하나의 인스턴스이다. 적어도 하나의 실시예에서, 파티션 유닛(2120)은, L2 캐시(2121), 프레임 버퍼 인터페이스(2125), 및 ROP(래스터 연산 유닛)(2126)을 포함한다. 적어도 하나의 실시예에서, L2 캐시(2121)는, 메모리 크로스바(2116) 및 ROP(2126)로부터 수신된 로딩 및 저장 동작들을 수행하도록 구성되는 판독/기입 캐시이다. 적어도 하나의 실시예에서, 판독 미스들 및 긴급 라이트백 요청들이 처리를 위해 L2 캐시(2121)에 의해 프레임 버퍼 인터페이스(2125)로 출력된다. 적어도 하나의 실시예에서, 업데이트들은 또한, 처리를 위해 프레임 버퍼 인터페이스(2125)를 통해 프레임 버퍼에 전송될 수 있다. 적어도 하나의 실시예에서, 프레임 버퍼 인터페이스(2125)는, (예컨대, 병렬 프로세서 메모리(2122) 내의) 도 21의 메모리 유닛들(2124A-2124N)과 같은 병렬 프로세서 메모리 내의 메모리 유닛들 중 하나와 인터페이싱한다.
적어도 하나의 실시예에서, ROP(2126)는, 스텐실(stencil), z 테스트, 블렌딩 등과 같은 래스터 연산들을 수행하는 처리 유닛이다. 적어도 하나의 실시예에서, ROP(2126)는 이어서, 그래픽 메모리에 저장되는 처리된 그래픽 데이터를 출력한다. 적어도 하나의 실시예에서, ROP(2126)는, 메모리에 기입되는 깊이 또는 컬러 데이터를 압축하고 메모리로부터 판독되는 깊이 또는 컬러 데이터를 압축해제하기 위한 압축 로직을 포함한다. 적어도 하나의 실시예에서, 압축 로직은 다수의 압축 알고리즘들 중 하나 이상을 이용하는 무손실 압축 로직일 수 있다. 적어도 하나의 실시예에서, ROP(2126)에 의해 수행되는 압축 의 유형은 압축될 데이터의 통계적 특성들에 기반하여 다를 수 있다. 예컨대, 적어도 하나의 실시예에서, 델타 컬러 압축은 타일별 기반으로 깊이 및 컬러 데이터에 대해 수행된다.
적어도 하나의 실시예에서, ROP(2126)는, 파티션 유닛(2120) 내에 포함되는 것 대신에 각각의 처리 클러스터(예컨대, 도 21a의 클러스터(2114A-2114N)) 내에 포함된다. 적어도 하나의 실시예에서, 픽셀 데이터에 대한 판독 및 기입 요청들이 픽셀 프래그먼트 데이터 대신에 메모리 크로스바(2116)를 통해 송신된다. 적어도 하나의 실시예에서, 처리된 그래픽 데이터는, 도 20의 하나 이상의 디스플레이 디바이스(들)(2010) 중 하나와 같은 디스플레이 디바이스에 디스플레이되거나, 프로세서(들)(2002)에 의한 추가적인 처리를 위해 라우팅되거나, 또는 도 21a의 병렬 프로세서(2100) 내의 처리 엔티티들 중 하나에 의한 추가적인 처리를 위해 라우팅될 수 있다.
도 21c는 적어도 하나의 실시예에 따른 병렬 처리 유닛 내의 처리 클러스터(2114)의 블록도이다. 적어도 하나의 실시예에서, 처리 클러스터는 도 21a의 처리 클러스터들(2114A-2114N) 중 하나의 인스턴스이다. 적어도 하나의 실시예에서, 처리 클러스터(들)(2114)는 많은 스레드들을 병렬로 실행하도록 구성될 수 있으며, 여기서, "스레드"는 입력 데이터의 특정 세트에 대해 실행되는 특정 프로그램의 인스턴스를 지칭한다. 적어도 하나의 실시예에서, 단일 명령어 다중 데이터(SIMD) 명령어 송출 기법들이 사용되어, 다수의 독립적인 명령어 유닛들을 제공하지 않고도 많은 수의 스레드들의 병렬 실행을 지원한다. 적어도 하나의 실시예에서, 단일 명령어 다중 스레드(SIMT) 기법들이 사용되어, 처리 클러스터들의 각각의 클러스터 내의 처리 엔진들의 세트에 명령어들을 송출하도록 구성되는 공통 명령어 유닛을 사용하여, 많은 수의 일반적으로 동기화된 스레드들의 병렬 실행을 지원한다.
적어도 하나의 실시예에서, 처리 클러스터(2114)의 동작은, 처리 작업들을 SIMT 병렬 프로세서들에 분배하는 파이프라인 관리자(2132)를 통해 제어될 수 있다. 적어도 하나의 실시예에서, 파이프라인 관리자(2132)는, 도 21a의 스케줄러(2110)로부터 명령어들을 수신하고 그래픽 멀티프로세서(2134) 및/또는 텍스처 유닛(2136)을 통해 그 명령어들의 실행을 관리한다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 SIMT 병렬 프로세서의 예시적인 인스턴스이다. 그러나, 적어도 하나의 실시예에서, 상이한 아키텍처들의 다양한 유형들의 SIMT 병렬 프로세서들이 처리 클러스터(2114) 내에 포함될 수 있다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)의 하나 이상의 인스턴스가 처리 클러스터(2114) 내에 포함될 수 있다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 데이터를 처리할 수 있고, 데이터 크로스바(2140)는, 처리된 데이터를 다른 셰이더 유닛들을 포함하는 다수의 가능한 목적지들 중 하나에 분배하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 파이프라인 관리자(2132)는, 데이터 크로스바(2140)를 통해 분배될 처리된 데이터에 대한 목적지들을 특정함으로써, 처리된 데이터의 분배를 용이하게 할 수 있다.
적어도 하나의 실시예에서, 처리 클러스터(2114) 내의 각각의 그래픽 멀티프로세서(2134)는, 동일한 세트의 기능적 실행 로직(예컨대, 산술 로직 유닛들, 로딩-저장 유닛들 등)을 포함할 수 있다. 적어도 하나의 실시예에서, 기능적 실행 로직은, 이전 명령어들이 완료되기 전에 새로운 명령어들이 송출될 수 있는 파이프라이닝된 방식으로 구성될 수 있다. 적어도 하나의 실시예에서, 기능적 실행 로직은, 정수 및 부동 소수점 산술, 비교 연산들, 부울(Boolean) 연산들, 비트 시프팅, 및 다양한 대수 함수들의 계산을 포함하는 다양한 연산들을 지원한다. 적어도 하나의 실시예에서, 동일한 기능적 유닛 하드웨어가 활용되어 상이한 연산들을 수행할 수 있고, 기능적 유닛들의 임의의 조합이 존재할 수 있다.
적어도 하나의 실시예에서, 처리 클러스터(2114)에 송신된 명령어들은 스레드를 구성한다. 적어도 하나의 실시예에서, 병렬 처리 엔진들의 세트에 걸쳐 실행되는 스레드들의 세트는 스레드 그룹이다. 적어도 하나의 실시예에서, 스레드 그룹은 상이한 입력 데이터에 대해 공통 프로그램을 실행한다. 적어도 하나의 실시예에서, 스레드 그룹 내의 각각의 스레드는 그래픽 멀티프로세서(2134) 내의 상이한 처리 엔진에 배정될 수 있다. 적어도 하나의 실시예에서, 스레드 그룹은, 그래픽 멀티프로세서(2134) 내의 처리 엔진들의 수보다 더 적은 스레드들을 포함할 수 있다. 적어도 하나의 실시예에서, 스레드 그룹이 처리 엔진들의 수보다 더 적은 스레드들을 포함할 때, 처리 엔진들 중 하나 이상은 대응하는 스레드 그룹이 처리되고 있는 사이클들 동안 유휴일 수 있다. 적어도 하나의 실시예에서, 스레드 그룹은 또한, 그래픽 멀티프로세서(2134) 내의 처리 엔진들의 수보다 더 많은 스레드들을 포함할 수 있다. 적어도 하나의 실시예에서, 스레드 그룹이 그래픽 멀티프로세서(2134) 내의 처리 엔진들의 수보다 더 많은 스레드들을 포함할 때, 처리는 연속적인 클록 사이클들에 걸쳐 수행될 수 있다. 적어도 하나의 실시예에서, 다수의 스레드 그룹들이 그래픽 멀티프로세서(2134) 상에서 동시에 실행될 수 있다.
적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 로딩 및 저장 동작들을 수행하기 위한 내부 캐시 메모리를 포함한다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 내부 캐시를 사용하지 않고 처리 클러스터(2114) 내의 캐시 메모리(예컨대, L1 캐시(2148))를 사용할 수 있다. 적어도 하나의 실시예에서, 각각의 그래픽 멀티프로세서(2134)는 또한, 모든 처리 클러스터들(2114) 간에 공유되고 스레드들 사이에서 데이터를 전송하는 데 사용될 수 있는 파티션 유닛들(예컨대, 도 21a의 파티션 유닛들(2120A-2120N)) 내의 L2 캐시들에 대한 액세스를 갖는다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 또한, 로컬 병렬 프로세서 메모리 및/또는 시스템 메모리 중 하나 이상을 포함할 수 있는 오프-칩 전역 메모리에 액세스할 수 있다. 적어도 하나의 실시예에서, 병렬 처리 유닛(2102) 외부의 임의의 메모리가 전역 메모리로서 사용될 수 있다. 적어도 하나의 실시예에서, 처리 클러스터(2114)는 그래픽 멀티프로세서(2134)의 다수의 인스턴스들을 포함하고, L1 캐시(2148)에 저장될 수 있는 공통 명령어들 및 데이터를 공유할 수 있다.
적어도 하나의 실시예에서, 각각의 처리 클러스터(2114)는, 가상 어드레스들을 물리 어드레스들에 맵핑하도록 구성되는 MMU(메모리 관리 유닛)(2145)를 포함할 수 있다. 적어도 하나의 실시예에서, MMU(2145)의 하나 이상의 인스턴스는 도 21a의 메모리 인터페이스(2118) 내에 상주할 수 있다. 적어도 하나의 실시예에서, MMU(2145)는, 가상 어드레스를 타일의 물리 어드레스 및 임의적으로는 캐시 라인 인덱스에 맵핑하는 데 사용되는 페이지 테이블 엔트리(PTE)들의 세트를 포함한다. 적어도 하나의 실시예에서, MMU(2145)는, 그래픽 멀티프로세서(2134) 또는 L1 캐시(2148) 또는 처리 클러스터(2114) 내에 상주할 수 있는 어드레스 변환 색인 버퍼(TLB)들 또는 캐시들을 포함할 수 있다. 적어도 하나의 실시예에서, 물리 어드레스는 파티션 유닛들 간의 효율적인 요청 인터리빙을 허용하기 위해 표면 데이터 액세스를 로컬로 분배하도록 처리된다. 적어도 하나의 실시예에서, 캐시 라인 인덱스는 캐시 라인에 대한 요청이 히트인지 또는 미스인지를 결정하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 처리 클러스터(2114)는, 각각의 그래픽 멀티프로세서(2134)가 텍스처 맵핑 연산들을 수행하기 위해, 예컨대, 텍스처 샘플 위치들을 결정하고, 텍스처 데이터를 판독하고, 텍스처 데이터를 필터링하기 위해 텍스처 유닛(2136)에 결합되도록 구성될 수 있다. 적어도 하나의 실시예에서, 텍스처 데이터는, 내부 텍스처 L1 캐시(도시되지 않음)로부터 또는 그래픽 멀티프로세서(2134) 내의 L1 캐시로부터 판독되고, 필요에 따라, L2 캐시, 로컬 병렬 프로세서 메모리, 또는 시스템 메모리로부터 페치된다. 적어도 하나의 실시예에서, 각각의 그래픽 멀티프로세서(2134)는, 처리된 작업들을 데이터 크로스바(2140)로 출력하여, 처리된 작업을 추가적인 처리를 위해 다른 처리 클러스터(2114)에 제공하거나, 또는 처리된 작업을 메모리 크로스바(2116)를 통해 시스템 메모리에, 로컬 병렬 프로세서 메모리에, 또는 L2 캐시에 저장한다. 적어도 하나의 실시예에서, preROP(2142)(사전-래스터 연산 유닛)는 그래픽 멀티프로세서(2134)로부터 데이터를 수신하고 ROP 유닛들에 데이터를 보내도록 구성되며, ROP 유닛들은 본원에 설명된 파티션 유닛들(예컨대, 도 21a의 파티션 유닛들(2120A-2120N))과 함께 위치될 수 있다. 적어도 하나의 실시예에서, preROP(2142) 유닛은, 어드레스 변환들을 수행하는 것, 픽셀 컬러 데이터를 조직화하는 것, 및 컬러 블렌딩을 위한 최적화들을 수행할 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 처리 클러스터(2114)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 처리 클러스터(2114)에서 사용될 수 있다.
도 21d는 적어도 하나의 실시예에 따른 그래픽 멀티프로세서(2134)를 도시한다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 처리 클러스터(2114)의 파이프라인 관리자(2132)와 결합된다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는, 명령어 캐시(2152), 명령어 유닛(2154), 어드레스 맵핑 유닛(2156), 레지스터 파일(2158), 하나 이상의 범용 그래픽 처리 유닛(GPGPU) 코어(2162), 및 하나 이상의 로딩/저장 유닛(2166)을 포함하지만 이에 제한되지 않는 실행 파이프라인을 갖는다. 적어도 하나의 실시예에서, GPGPU 코어들(2162) 및 로딩/저장 유닛들(2166)은, 메모리 및 캐시 상호연결부(2168)를 통해 캐시 메모리(2172) 및 공유 메모리(2170)와 결합된다.
적어도 하나의 실시예에서, 명령어 캐시(2152)는 파이프라인 관리자(2132)로부터 실행할 명령어들의 스트림을 수신한다. 적어도 하나의 실시예에서, 명령어들은 명령어 캐시(2152)에 캐싱되고 명령어 유닛(2154)에 의한 실행을 위해 디스패치된다. 적어도 하나의 실시예에서, 명령어 유닛(2154)은 스레드 그룹들(예컨대, 워프들)로서 명령어들을 디스패치할 수 있으며, 스레드 그룹의 각각의 스레드는 GPGPU 코어들(2162) 내의 상이한 실행 유닛에 배정된다. 적어도 하나의 실시예에서, 명령어는, 통합 어드레스 공간 내의 어드레스를 특정함으로써 로컬, 공유, 또는 전역 어드레스 공간 중 임의의 것에 액세스할 수 있다. 적어도 하나의 실시예에서, 어드레스 맵핑 유닛(2156)은, 통합 어드레스 공간 내의 어드레스들을 로딩/저장 유닛들(2166)에 의해 액세스될 수 있는 별개의 메모리 어드레스로 변환하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 레지스터 파일(2158)은, 그래픽 멀티프로세서(2134)의 기능적 유닛들을 위한 레지스터들의 세트를 제공한다. 적어도 하나의 실시예에서, 레지스터 파일(2158)은, 그래픽 멀티프로세서(2134)의 기능적 유닛들(예컨대, GPGPU 코어들(2162), 로딩/저장 유닛들(2166))의 데이터 경로들에 연결된 피연산자들을 위한 일시적 스토리지를 제공한다. 적어도 하나의 실시예에서, 레지스터 파일(2158)은, 각각의 기능적 유닛이 레지스터 파일(2158)의 전용 부분을 할당받도록 기능적 유닛들 각각 사이에서 분할된다. 적어도 하나의 실시예에서, 레지스터 파일(2158)은 그래픽 멀티프로세서(2134)에 의해 실행되는 상이한 워프들 사이에서 분할된다.
적어도 하나의 실시예에서, GPGPU 코어들(2162)은 각각, 그래픽 멀티프로세서(2134)의 명령어들을 실행하는 데 사용되는 부동 소수점 유닛(FPU)들 및/또는 정수 산술 로직 유닛(ALU)들을 포함할 수 있다. 적어도 하나의 실시예에서, GPGPU 코어들(2162)은 아키텍처가 유사할 수 있거나 아키텍처가 상이할 수 있다. 적어도 하나의 실시예에서, GPGPU 코어들(2162)의 제1 부분은 단정밀도 FPU 및 정수 ALU를 포함하는 한편, GPGPU 코어들의 제2 부분은 배정밀도 FPU를 포함한다. 적어도 하나의 실시예에서, FPU들은 부동 소수점 산술을 위한 IEEE 754-2008 표준을 구현하거나 가변 정밀도 부동 소수점 산술을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 그래픽 멀티프로세서(2134)는 부가적으로, 직사각형 복사 또는 픽셀 블렌딩 연산들과 같은 특정 기능들을 수행하기 위한 하나 이상의 고정 기능 또는 특수 기능 유닛을 포함할 수 있다. 적어도 하나의 실시예에서, GPGPU 코어들(2162) 중 하나 이상이 또한 고정 또는 특수 기능 로직을 포함할 수 있다.
적어도 하나의 실시예에서, GPGPU 코어들(2162)은 다수의 세트들의 데이터에 대해 단일 명령어를 수행하는 것이 가능한 SIMD 로직을 포함한다. 적어도 하나의 실시예에서, GPGPU 코어들(2162)은, SIMD4, SIMD8, 및 SIMD16 명령어들을 물리적으로 실행할 수 있고, SIMD1, SIMD2, 및 SIMD32 명령어들을 논리적으로 실행할 수 있다. 적어도 하나의 실시예에서, GPGPU 코어들에 대한 SIMD 명령어들은, 셰이더 컴파일러에 의한 컴파일 시간에 생성되거나 또는 단일 프로그램 다중 데이터(SPMD) 또는 SIMT 아키텍처들을 위해 작성되고 컴파일된 프로그램들을 실행할 때 자동으로 생성될 수 있다. 적어도 하나의 실시예에서, SIMT 실행 모델을 위해 구성된 프로그램의 다중 스레드들은 단일 SIMD 명령어를 통해 실행될 수 있다. 예컨대, 적어도 하나의 실시예에서, 동일하거나 유사한 연산들을 수행하는 8개의 SIMT 스레드가 단일 SIMD8 로직 유닛을 통해 병렬로 실행될 수 있다.
적어도 하나의 실시예에서, 메모리 및 캐시 상호연결부(2168)는, 그래픽 멀티프로세서(2134)의 각각의 기능적 유닛을 레지스터 파일(2158)에 그리고 공유 메모리(2170)에 연결하는 상호연결 네트워크이다. 적어도 하나의 실시예에서, 메모리 및 캐시 상호연결부(2168)는, 로딩/저장 유닛(2166)이 공유 메모리(2170)와 레지스터 파일(2158) 사이에서 로딩 및 저장 동작들을 구현하는 것을 허용하는 크로스바 상호연결부다. 적어도 하나의 실시예에서, 레지스터 파일(2158)은 GPGPU 코어들(2162)과 동일한 주파수로 동작할 수 있고, 그에 따라, GPGPU 코어들(2162)과 레지스터 파일(2158) 사이의 데이터 전송은 매우 낮은 레이턴시를 가질 수 있다. 적어도 하나의 실시예에서, 공유 메모리(2170)는, 그래픽 멀티프로세서(2134) 내의 기능적 유닛들 상에서 실행되는 스레드들 사이의 통신을 가능하게 하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 캐시 메모리(2172)는, 예컨대, 기능적 유닛들과 텍스처 유닛(2136) 사이에서 통신되는 텍스처 데이터를 캐싱하기 위한 데이터 캐시로서 사용될 수 있다. 적어도 하나의 실시예에서, 공유 메모리(2170)는 또한, 프로그램에 의해 관리되는 캐시로서 사용될 수 있다. 적어도 하나의 실시예에서, GPGPU 코어들(2162) 상에서 실행되는 스레드들은, 캐시 메모리(2172) 내에 저장되는 자동으로 캐싱된 데이터에 부가하여 공유 메모리 내에 데이터를 프로그래밍적으로 저장할 수 있다.
적어도 하나의 실시예에서, 본원에 설명된 바와 같은 병렬 프로세서 또는 GPGPU는, 그래픽 연산들, 기계 학습 동작들, 패턴 분석 동작들, 및 다양한 범용 GPU(GPGPU) 기능들을 가속하기 위해 호스트/프로세서 코어들에 통신가능하게 결합된다. 적어도 하나의 실시예에서, GPU는 버스 또는 다른 상호연결부(예컨대, 고속 상호연결부, 이를테면 PCIe 또는 NVLink)를 통해 호스트 프로세서/코어들에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, GPU는, 코어들로서 칩 또는 패키지 상에 통합될 수 있고 칩 또는 패키지 내부의 내부 프로세서 버스/상호연결부를 통해 코어들에 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, GPU가 연결되는 방식에 관계없이, 프로세서 코어들은, 작업 기술어에 포함된 명령들/명령어들의 시퀀스들의 형태로 그러한 GPU에 작업을 할당할 수 있다. 적어도 하나의 실시예에서, 그 GPU는 이어서, 이러한 명령들/명령어들을 효율적으로 처리하기 위해 전용 회로/로직을 사용한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 멀티프로세서(2134)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 멀티프로세서(2134)에서 사용될 수 있다.
도 22는 적어도 하나의 실시예에 따른 멀티-GPU 컴퓨팅 시스템(2200)을 예시한다. 적어도 하나의 실시예에서, 멀티-GPU 컴퓨팅 시스템(2200)은, 호스트 인터페이스 스위치(2204)를 통해 다수의 범용 그래픽 처리 유닛(GPGPU)들(2206A-D)에 결합된 프로세서(2202)를 포함할 수 있다. 적어도 하나의 실시예에서, 호스트 인터페이스 스위치(2204)는, 프로세서(2202)가 GPGPU들(2206A-D)과 통신할 수 있게 하는 PCI 익스프레스 버스에 프로세서(2202)를 결합하는 PCI 익스프레스 스위치 디바이스이다. 적어도 하나의 실시예에서, GPGPU들(2206A-D)은 고속 포인트-투-포인트 GPU-대-GPU 링크들(2216)의 세트를 통해 상호연결될 수 있다. 적어도 하나의 실시예에서, GPU-대-GPU 링크들(2216)은 전용 GPU 링크를 통해 GPGPU들(2206A-D) 각각에 연결된다. 적어도 하나의 실시예에서, P2P GPU 링크들(2216)은, 프로세서(2202)가 연결되는 호스트 인터페이스 버스(2204)를 통한 통신을 요구함이 없이 GPGPU들(2206A-D) 각각 사이에서의 직접 통신을 가능하게 한다. 적어도 하나의 실시예에서, GPU-대-GPU 트래픽이 P2P GPU 링크들(2216)로 지향됨에 따라, 호스트 인터페이스 버스(2204)는, 시스템 메모리 액세스를 위해 또는 예컨대 하나 이상의 네트워크 디바이스를 통해 멀티-GPU 컴퓨팅 시스템(2200)의 다른 인스턴스들과 통신하는 데 이용가능하게 남아 있다. 적어도 하나의 실시예에서, GPGPU들(2206A-D)이 호스트 인터페이스 스위치(2204)를 통해 프로세서(2202)에 연결되지만, 적어도 하나의 실시예에서, 프로세서(2202)는 P2P GPU 링크들(2216)에 대한 직접 지원을 포함하고 GPGPU들(2206A-D)에 직접 연결될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 멀티-GPU 컴퓨팅 시스템(2200)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 멀티-GPU 컴퓨팅 시스템(2200)에서 사용될 수 있다.
도 23은 적어도 하나의 실시예에 따른 그래픽 프로세서(2300)의 블록도이다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는, 링 상호연결부(2302), 파이프라인 프론트 엔드(2304), 미디어 엔진(2337), 및 그래픽 코어들(2380A-2380N)을 포함한다. 적어도 하나의 실시예에서, 링 상호연결부(2302)는, 그래픽 프로세서(2300)를, 다른 그래픽 프로세서들 또는 하나 이상의 범용 프로세서 코어를 포함하는 다른 처리 유닛들에 결합한다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는 멀티코어 처리 시스템 내에 통합된 많은 프로세서들 중 하나이다.
적어도 하나의 실시예에서, 그래픽 프로세서(2300)는 링 상호연결부(2302)를 통해 명령들의 뱃치들을 수신한다. 적어도 하나의 실시예에서, 착신 명령들은 파이프라인 프론트 엔드(2304)의 명령 스트리머(2303)에 의해 해석된다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는, 그래픽 코어(들)(2380A-2380N)를 통해 3D 지오메트리 처리 및 미디어 처리를 수행하기 위한 확장가능 실행 로직을 포함한다. 적어도 하나의 실시예에서, 3D 지오메트리 처리 명령들에 대해, 명령 스트리머(2303)는 지오메트리 파이프라인(2336)에 명령들을 공급한다. 적어도 하나의 실시예에서, 적어도 일부 미디어 처리 명령들에 대해, 명령 스트리머(2303)는, 미디어 엔진(2337)과 결합되는 비디오 프론트 엔드(2334)에 명령들을 공급한다. 적어도 하나의 실시예에서, 미디어 엔진(2337)은, 비디오 및 이미지 사후-처리를 위한 비디오 품질 엔진(VQE)(2330), 및 하드웨어 가속 미디어 데이터 인코딩 및 디코딩을 제공하기 위한 다중-포맷 인코딩/디코딩(MFX)(2333) 엔진을 포함한다. 적어도 하나의 실시예에서, 지오메트리 파이프라인(2336) 및 미디어 엔진(2337)은 각각, 적어도 하나의 그래픽 코어(2380)에 의해 제공되는 스레드 실행 리소스들에 대한 실행 스레드들을 생성한다.
적어도 하나의 실시예에서, 그래픽 프로세서(2300)는, 각각이 다수의 서브코어들(2350A-50N, 2360A-2360N)(때때로, 코어 서브슬라이스들로 지칭됨)을 갖는 그래픽 코어들(2380A-2380N)(모듈식일 수 있고, 때때로, 코어 슬라이스들로 지칭됨)을 특징으로 하는 확장가능 스레드 실행 리소스들을 포함한다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는 임의의 수의 그래픽 코어(2380A)를 가질 수 있다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는 적어도, 제1 서브코어(2350A) 및 제2 서브코어(2360A)를 갖는 그래픽 코어(2380A)를 포함한다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는 단일 서브코어(예컨대, 2350A)를 갖는 저전력 프로세서이다. 적어도 하나의 실시예에서, 그래픽 프로세서(2300)는, 각각이 제1 서브코어들(2350A-2350N)의 세트 및 제2 서브코어들(2360A-2360N)의 세트를 포함하는 다수의 그래픽 코어들(2380A-2380N)을 포함한다. 적어도 하나의 실시예에서, 제1 서브코어들(2350A-2350N) 내의 각각의 서브코어는, 적어도, 제1 세트의 실행 유닛들(2352A-2352N) 및 미디어/텍스처 샘플러들(2354A-2354N)을 포함한다. 적어도 하나의 실시예에서, 제2 서브코어들(2360A-2360N) 내의 각각의 서브코어는, 적어도, 제2 세트의 실행 유닛들(2362A-2362N) 및 샘플러들(2364A-2364N)을 포함한다. 적어도 하나의 실시예에서, 각각의 서브코어(2350A-2350N, 2360A-2360N)는 공유 리소스들(2370A-2370N)의 세트를 공유한다. 적어도 하나의 실시예에서, 공유 리소스들은 공유 캐시 메모리 및 픽셀 연산 로직을 포함한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)은 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 프로세서(2300)에서 사용될 수 있다.
적어도 하나의 실시예에서, n:m 구조적 희소도를 시행하기 위한 치환들(512) 및 전정(528)은, 신경망 훈련 연산들, 신경망 기능들 및/또는 아키텍처들, 또는 본원에 설명된 신경망 사용 경우들을 사용하여 계산된 가중치 파라미터들에 적어도 부분적으로 기반하여 연산들을 추론 또는 예측하기 위해 그래픽 프로세서(2300)에서 사용될 수 있다.
도 24는 적어도 하나의 실시예에 따른, 명령어들을 수행하기 위한 로직 회로들을 포함할 수 있는 프로세서(2400)에 대한 마이크로아키텍처를 예시하는 블록도이다. 적어도 하나의 실시예에서, 프로세서(2400)는, x86 명령어들, ARM 명령어들, 주문형 집적 회로(ASIC)들에 대한 특수화된 명령어들 등을 포함하는 명령어들을 수행할 수 있다. 적어도 하나의 실시예에서, 프로세서(2400)는, 캘리포니아주 산타 클라라의 인텔 코포레이션으로부터의 MMX 기술로 가능한 마이크로프로세서들 내의 64 비트 폭 MMX™ 레지스터들과 같은, 패킹된 데이터를 저장하기 위한 레지스터들을 포함할 수 있다. 적어도 하나의 실시예에서, 정수 및 부동 소수점 형태들 둘 모두에서 이용가능한 MMX 레지스터들은, 단일 명령어 다중 데이터("SIMD") 및 스트리밍 SIMD 확장("SSE") 명령어들을 동반하는 패킹된 데이터 요소들과 함께 동작할 수 있다. 적어도 하나의 실시예에서, SSE2, SSE3, SSE4, AVX, 또는 그를 넘어서는(총칭하여, "SSEx"로 지칭됨) 기술과 관련된 128 비트 폭 XMM 레지스터들은, 그러한 패킹된 데이터 피연산자들을 보유할 수 있다. 적어도 하나의 실시예에서, 프로세서(2400)는, 기계 학습 또는 심층 학습 알고리즘들, 훈련, 또는 추론을 가속하기 위한 명령어들을 수행할 수 있다.
적어도 하나의 실시예에서, 프로세서(2400)는, 실행될 명령어들을 페치하고 프로세서 파이프라인에서 나중에 사용될 명령어들을 준비하기 위한 순차 프론트 엔드("프론트 엔드")(2401)를 포함한다. 적어도 하나의 실시예에서, 프론트 엔드(2401)는 여러 유닛들을 포함할 수 있다. 적어도 하나의 실시예에서, 명령어 사전페처(2426)는 메모리로부터 명령어들을 페치하고 명령어 디코더(2428)에 명령어들을 공급하며, 그 명령어 디코더는 차례로 명령어들을 디코딩하거나 해석한다. 예컨대, 적어도 하나의 실시예에서, 명령어 디코더(2428)는, 수신된 명령어를, 기계가 실행할 수 있는, "마이크로-명령어들" 또는 "마이크로-연산들"로 지칭되는("마이크로 op" 또는 "uop"로 또한 지칭됨) 하나 이상의 연산으로 디코딩한다. 적어도 하나의 실시예에서, 명령어 디코더(2428)는, 명령어를, 적어도 하나의 실시예에 따른 동작들을 수행하기 위해 마이크로아키텍처에 의해 사용될 수 있는 연산코드 및 대응하는 데이터 및 제어 필드들로 파싱한다. 적어도 하나의 실시예에서, 트레이스 캐시(2430)는, 디코딩된 uop들을, 실행을 위해 uop 큐(2434) 내의 프로그램 정렬된 시퀀스들 또는 트레이스들로 어셈블링할 수 있다. 적어도 하나의 실시예에서, 트레이스 캐시(2430)가 복합 명령어에 직면할 때, 마이크로코드 ROM(2432)은 연산을 완료하는 데 필요한 uop들을 제공한다.
적어도 하나의 실시예에서, 일부 명령어들은 단일 마이크로 op로 변환될 수 있는 반면, 다른 것들은 전체 연산을 완료하기 위해 여러 마이크로 op들을 필요로 한다. 적어도 하나의 실시예에서, 명령어를 완료하는 데 4개 초과의 마이크로 op가 필요한 경우, 명령어 디코더(2428)는 그 명령어를 수행하기 위해 마이크로코드 ROM(2432)에 액세스할 수 있다. 적어도 하나의 실시예에서, 명령어는 명령어 디코더(2428)에서의 처리를 위해 적은 수의 마이크로 op로 디코딩될 수 있다. 적어도 하나의 실시예에서, 명령어는, 그러한 동작을 달성하기 위해 다수의 마이크로 op들이 필요한 경우 마이크로코드 ROM(2432) 내에 저장될 수 있다. 적어도 하나의 실시예에서, 트레이스 캐시(2430)는 적어도 하나의 실시예에 따라 마이크로코드 ROM(2432)으로부터의 하나 이상의 명령어를 완료하기 위해서 마이크로코드 시퀀스들을 판독하기 위한 정확한 마이크로-명령어 포인터를 결정하기 위해 엔트리 포인트 프로그래밍가능 로직 어레이("PLA")를 참조한다. 적어도 하나의 실시예에서, 마이크로코드 ROM(2432)이 명령어에 대한 마이크로 op들의 시퀀싱을 완료한 후에, 기계의 프론트 엔드(2401)는 트레이스 캐시(2430)로부터 마이크로 op들을 페치하는 것을 재개할 수 있다.
적어도 하나의 실시예에서, 비-순차 실행 엔진("비-순차 엔진")(2403)은 실행을 위한 명령어들을 준비할 수 있다. 적어도 하나의 실시예에서, 비-순차 실행 로직은, 명령어들이 파이프라인을 따라 내려가 실행을 위해 스케줄링될 때 성능을 최적화하기 위해 명령어들의 흐름을 평활하게 하고 재정렬하기 위한 다수의 버퍼들을 갖는다. 적어도 하나의 실시예에서, 비-순차 실행 엔진(2403)은, 제한 없이, 할당기/레지스터 재명명기(2440), 메모리 uop 큐(2442), 정수/부동 소수점 uop 큐(2444), 메모리 스케줄러(2446), 고속 스케줄러(2402), 저속/일반 부동 소수점 스케줄러("저속/일반 FP 스케줄러")(2404), 및 단순 부동 소수점 스케줄러("단순 FP 스케줄러")(2406)를 포함한다. 적어도 하나의 실시예에서, 고속 스케줄(2402), 저속/일반 부동 소수점 스케줄러(2404), 및 단순 부동 소수점 스케줄러(2406)는 또한, 총괄적으로 본원에서 "uop 스케줄러(2402, 2404, 2406)"로 지칭된다. 적어도 하나의 실시예에서, 할당기/레지스터 재명명기(2440)는 각각의 uop가 실행되기 위해 필요로 하는 기계 버퍼들 및 리소스들을 할당한다. 적어도 하나의 실시예에서, 할당기/레지스터 재명명기(2440)는 로직 레지스터들을 레지스터 파일 내의 엔트리들로 재명명한다. 적어도 하나의 실시예에서, 할당기/레지스터 재명명기(2440)는 또한, 메모리 스케줄러(2446) 및 uop 스케줄러들(2402, 2404, 2406) 앞에서, 2개의 uop 큐, 메모리 연산들을 위한 메모리 uop 큐(2442), 및 비-메모리 연산들을 위한 정수/부동 소수점 uop 큐(2444) 중 하나에 각각의 uop에 대한 엔트리를 할당한다. 적어도 하나의 실시예에서, uop 스케줄러들(2402, 2404, 2406)은, 그들의 종속 입력 레지스터 피연산자 소스들의 준비성 및 uop가 그들의 연산을 완료하는 데 필요로 있는 실행 리소스들의 이용가능성에 기반하여 uop가 실행준비가 되는 때를 결정한다. 적어도 하나의 실시예에서, 고속 스케줄러(2402)는 메인 클록 사이클의 각각의 절반에 스케줄링할 수 있는 반면, 저속/일반 부동 소수점 스케줄러(2404) 및 단순 부동 소수점 스케줄러(2406)는 메인 프로세서 클록 사이클당 한 번 스케줄링할 수 있다. 적어도 하나의 실시예에서, uop 스케줄러들(2402, 2404, 2406)은, 실행을 위해 uop들을 스케줄링하기 위해 디스패치 포트들을 중재한다.
적어도 하나의 실시예에서, 실행 블록(2411)은, 제한 없이, 정수 레지스터 파일/우회 네트워크(2408), 부동 소수점 레지스터 파일/우회 네트워크("FP 레지스터 파일/우회 네트워크")(2410), 어드레스 생성 유닛("AGU")들(2412 및 2414), 고속 산술 로직 유닛(ALU)들("고속 ALU들")(2416 및 2418), 저속 산술 로직 유닛("저속 ALU")(2420), 부동 소수점 ALU("FP")(2422), 및 부동 소수점 이동 유닛("FP 이동")(2424)을 포함한다. 적어도 하나의 실시예에서, 정수 레지스터 파일/우회 네트워크(2408) 및 부동 소수점 레지스터 파일/우회 네트워크(2410)는 또한, 본원에서 "레지스터 파일(2408, 2410)"로 지칭된다. 적어도 하나의 실시예에서, AGUS들(2412, 2414), 고속 ALU들(2416, 2418), 저속 ALU(2420), 부동 소수점 ALU(2422), 및 부동 소수점 이동 유닛(2424)은 또한, 본원에서 "실행 유닛(2412, 2414, 2416, 2418, 2420, 2422, 및 2424)"으로 지칭된다. 적어도 하나의 실시예에서, 실행 블록(2411)은, 제한 없이, 임의의 수(영개를 포함함) 및 유형의 레지스터 파일, 우회 네트워크, 어드레스 생성 유닛, 및 실행 유닛을 임의의 조합으로 포함할 수 있다.
적어도 하나의 실시예에서, 레지스터 네트워크들(2408, 2410)은 uop 스케줄러들(2402, 2404, 2406)과 실행 유닛들(2412, 2414, 2416, 2418, 2420, 2422, 2424) 사이에 배열될 수 있다. 적어도 하나의 실시예에서, 정수 레지스터 파일/우회 네트워크(2408)는 정수 연산들을 수행한다. 적어도 하나의 실시예에서, 부동 소수점 레지스터 파일/우회 네트워크(2410)는 부동 소수점 연산들을 수행한다. 적어도 하나의 실시예에서, 레지스터 네트워크들(2408, 2410) 각각은, 제한 없이, 레지스터 파일 내에 아직 기입되지 않은 방금 완료된 결과들을 새로운 종속 uop들로 전달하거나 우회시킬 수 있는 우회 네트워크를 포함할 수 있다. 적어도 하나의 실시예에서, 레지스터 네트워크들(2408, 2410)은 서로 데이터를 통신할 수 있다. 적어도 하나의 실시예에서, 정수 레지스터 파일/우회 네트워크(2408)는, 제한 없이, 2개의 별개의 레지스터 파일, 즉, 낮은 차수의 32 비트의 데이터에 대한 하나의 레지스터 파일 및 높은 차수의 32 비트의 데이터에 대한 제2 레지스터 파일을 포함할 수 있다. 적어도 하나의 실시예에서, 부동 소수점 명령어들은 전형적으로 폭이 64 비트 내지 128비트인 피연산자들을 갖기 때문에, 부동 소수점 레지스터 파일/우회 네트워크(2410)는, 제한 없이, 128 비트 폭 엔트리들을 포함할 수 있다.
적어도 하나의 실시예에서, 실행 유닛들(2412, 2414, 2416, 2418, 2420, 2422, 2424)은 명령어들을 실행할 수 있다. 적어도 하나의 실시예에서, 레지스터 네트워크들(2408, 2410)은 마이크로-명령어들이 실행할 필요가 있는 정수 및 부동 소수점 데이터 피연산자 값들을 저장한다. 적어도 하나의 실시예에서, 프로세서(2400)는, 제한 없이, 임의의 수 및 조합의 실행 유닛들(2412, 2414, 2416, 2418, 2420, 2422, 2424)을 포함할 수 있다. 적어도 하나의 실시예에서, 부동 소수점 ALU(2422) 및 부동 소수점 이동 유닛(2424)은, 부동 소수점, MMX, SIMD, AVX 및 SSE, 또는 특수화된 기계 학습 명령어들을 포함하는 다른 연산들을 실행할 수 있다. 적어도 하나의 실시예에서, 부동 소수점 ALU(2422)는, 제한 없이, 나눗셈, 제곱근, 및 나머지 마이크로 op들을 실행하기 위한 64 비트 x 64 비트 부동 소수점 제산기를 포함할 수 있다. 적어도 하나의 실시예에서, 부동 소수점 값을 수반하는 명령어들은 부동 소수점 하드웨어로 처리될 수 있다. 적어도 하나의 실시예에서, ALU 연산들은 고속 ALU들(2416, 2418)에 전달될 수 있다. 적어도 하나의 실시예에서, 고속 ALU들(2416, 2418)은 클록 사이클의 절반의 유효 레이턴시로 고속 연산들을 실행할 수 있다. 적어도 하나의 실시예에서, 저속 ALU(2420)가, 제한 없이, 곱셈기, 시프트들, 플래그 로직, 및 분기 처리와 같은 긴 레이턴시 유형의 연산들을 위한 정수 실행 하드웨어를 포함할 수 있기 때문에, 가장 복잡한 정수 연산들은 저속 ALU(2420)로 이동된다. 적어도 하나의 실시예에서, 메모리 로딩/저장 동작들은 AGU들(2412, 2414)에 의해 실행될 수 있다. 적어도 하나의 실시예에서, 고속 ALU(2416), 고속 ALU(2418), 및 저속 ALU(2420)는 64 비트 데이터 피연산자들에 대해 정수 연산들을 수행할 수 있다. 적어도 하나의 실시예에서, 고속 ALU(2416), 고속 ALU(2418), 및 저속 ALU(2420)는, 16, 32, 128, 256 등을 포함하는 다양한 데이터 비트 크기를 지원하도록 구현될 수 있다. 적어도 하나의 실시예에서, 부동 소수점 ALU(2422) 및 부동 소수점 이동 유닛(2424)은, SIMD 및 멀티미디어 명령어들과 연계하여, 다양한 폭들의 비트들을 갖는 피연산자들의 범위, 이를테면, 128 비트 폭의 패킹된 데이터 피연산자들을 지원하도록 구현될 수 있다.
적어도 하나의 실시예에서, uop 스케줄러들(2402, 2404, 2406)은 부모 부하가 실행을 완료하기 전에 종속 연산들을 디스패치한다. 적어도 하나의 실시예에서, uop들은 프로세서(2400)에서 추측으로 스케줄링되고 실행될 수 있기 때문에, 프로세서(2400)는 또한 메모리 미스들을 처리하기 위한 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 데이터 로딩이 데이터 캐시에서 미스되는 경우, 일시적으로 부정확한 데이터를 가진 스케줄러를 남겨두는 진행 중(in flight)인 종속 연산들이 파이프라인에 존재할 수 있다. 적어도 하나의 실시예에서, 리플레이 메커니즘은 부정확한 데이터를 사용하는 명령어들을 추적하여 재실행한다. 적어도 하나의 실시예에서, 종속 연산들이 리플레이될 필요가 있을 수 있고, 독립적 연산들은 완료되도록 허용될 수 있다. 적어도 하나의 실시예에서, 프로세서의 적어도 하나의 실시예의 스케줄러들 및 리플레이 메커니즘은 또한, 텍스트 스트링 비교 연산들에 대한 명령어 시퀀스들을 포착하도록 설계될 수 있다.
적어도 하나의 실시예에서, "레지스터"는, 피연산자들을 식별하기 위한 명령어들의 일부로서 사용될 수 있는 온보드 프로세서 저장 위치들을 지칭할 수 있다. 적어도 하나의 실시예에서, 레지스터들은 (프로그래머의 관점에서) 프로세서의 외부에서 사용가능할 수 있는 것들일 수 있다. 적어도 하나의 실시예에서, 레지스터들은 특정한 유형의 회로로 제한되지 않을 수 있다. 오히려, 적어도 하나의 실시예에서, 레지스터는, 데이터를 저장하고, 데이터를 제공하고, 본원에 설명된 기능들을 수행할 수 있다. 적어도 하나의 실시예에서, 본원에 설명된 레지스터들은, 전용 물리적 레지스터들, 레지스터 재명명을 사용하는 동적으로 할당된 물리적 레지스터들, 전용 및 동적으로 할당된 물리적 레지스터들의 조합들 등과 같은 임의의 수의 상이한 기법들을 사용하여 프로세서 내의 회로에 의해 구현될 수 있다. 적어도 하나의 실시예에서, 정수 레지스터들은 32 비트 정수 데이터를 저장한다. 적어도 하나의 실시예의 레지스터 파일은 또한, 패킹된 데이터를 위한 8개의 멀티미디어 SIMD 레지스터를 포함한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부는 실행 블록(2411) 및 도시되거나 도시되지 않은 다른 메모리 또는 레지스터들에 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 본원에 설명된 훈련 및/또는 추론 기법들은 실행 블록(2411)에서 예시된 ALU들 중 하나 이상을 사용할 수 있다. 더욱이, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 실행 블록(2411)의 ALU들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 25는 적어도 하나의 실시예에 따른 심층 학습 애플리케이션 프로세서(2500)를 예시한다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(2500)는, 심층 학습 애플리케이션 프로세서(2500)에 의해 실행되는 경우, 심층 학습 애플리케이션 프로세서(2500)로 하여금 본 개시내용 전반에 걸쳐 설명된 프로세스들 및 기법들 중 일부 또는 그 전부를 수행하게 하는 명령어들을 사용한다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(2500)는 주문형 집적 회로(ASIC)이다. 적어도 하나의 실시예에서, 애플리케이션 프로세서(2500)는, 하나 이상의 명령어 또는 둘 모두를 수행하는 것의 결과로서 하드웨어 내에 "하드-와이어링"되는 행렬 곱셈 연산들을 수행한다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(2500)는, 제한 없이, 처리 클러스터들(2510(1)-2510(12)), 칩 간 링크("ICL")들(2520(1)-2520(12)), 칩 간 제어기("ICC")들(2530(1)-2530(2)), 고-대역폭 메모리 2세대("HBM2")(2540(1)-2540(4)), 메모리 제어기("Mem Ctrlr")들(2542(1)-2542(4)), 고-대역폭 메모리 물리 계층("HBM PHY")(2544(1)-2544(4)), 관리 제어기 중앙 처리 유닛("관리 제어기 CPU")(2550), 직렬 주변기기 인터페이스, 상호-통합 회로 및 범용 입력/출력 블록("SPI, I2C, GPIO")(2560), 주변 구성요소 상호연결 익스프레스 제어기 및 직접 메모리 액세스 블록("PCIe 제어기 및 DMA")(2570), 16레인 주변 구성요소 상호연결 익스프레스 포트("PCI 익스프레스 x 16")(2580)를 포함한다.
적어도 하나의 실시예에서, 처리 클러스터들(2510)은, 본원에 설명된 것들을 포함하는 하나 이상의 훈련 기법으로 계산된 가중치 파라미터들에 기반한 추론 또는 예측 동작들을 포함하는 심층 학습 동작들을 수행할 수 있다. 적어도 하나의 실시예에서, 각각의 처리 클러스터(2510)는, 제한 없이, 임의의 수 및 유형의 프로세서를 포함할 수 있다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(2500)는 임의의 수 및 유형의 처리 클러스터(2500)를 포함할 수 있다. 적어도 하나의 실시예에서, 칩 간 링크들(2520)은 양방향이다. 적어도 하나의 실시예에서, 칩 간 링크들(2520) 및 칩 간 제어기들(2530)은, 다수의 심층 학습 애플리케이션 프로세서들(2500)이, 하나 이상의 신경망에 구현된 하나 이상의 기계 학습 알고리즘을 수행하는 것에 기인하는 활성화 정보를 포함하는 정보를 교환하는 것을 가능하게 한다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(2500)는 임의의 수(영개를 포함함) 및 유형의 ICL들(2520) 및 ICC들(2530)을 포함할 수 있다.
적어도 하나의 실시예에서, HBM2들(2540)은 총 32 기가바이트(GB)의 메모리를 제공한다. 적어도 하나의 실시예에서, HBM2(2540(i))는 메모리 제어기(2542(i)) 및 HBM PHY(2544(i)) 둘 모두와 연관되며, 여기서, "i"는 임의적 정수이다. 적어도 하나의 실시예에서, 임의의 수의 HBM2들(2540)은 임의의 수 및 총량의 높은 대역폭 메모리를 제공할 수 있고, 임의의 수(영개를 포함함) 및 유형의 메모리 제어기(2542) 및 HBM PHY(2544)와 연관될 수 있다. 적어도 하나의 실시예에서, SPI, I2C, GPIO(2560), PCIe 제어기 및 DMA(2570), 및/또는 PCIe(2580)는, 임의의 기술적으로 실현가능한 방식으로 임의의 수 및 유형의 통신 표준을 가능하게 하는 임의의 수 및 유형의 블록으로 대체될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서는, 심층 학습 애플리케이션 프로세서(2500)에 제공된 정보를 예측 또는 추론하기 위해 신경망과 같은 기계 학습 모델을 훈련시키는 데 사용된다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(2500)는, 다른 프로세서 또는 시스템에 의해 또는 심층 학습 애플리케이션 프로세서(2500)에 의해 훈련이 이루어진 훈련된 기계 학습 모델(예컨대, 신경망)에 기반하여 정보를 추론 또는 예측하는 데 사용된다. 적어도 하나의 실시예에서, 프로세서(2500)는 본원에 설명된 하나 이상의 신경망 사용 경우를 수행하는 데 사용될 수 있다.
도 26은 적어도 하나의 실시예에 따른 뉴로모픽 프로세서(2600)의 블록도이다. 적어도 하나의 실시예에서, 뉴로모픽 프로세서(2600)는 뉴로모픽 프로세서(2600) 외부의 소스들로부터 하나 이상의 입력을 수신할 수 있다. 적어도 하나의 실시예에서, 이러한 입력들은 뉴로모픽 프로세서(2600) 내의 하나 이상의 뉴런(2602)에 송신될 수 있다. 적어도 하나의 실시예에서, 뉴런들(2602) 및 그의 구성요소들은 하나 이상의 산술 로직 유닛(ALU)을 포함하는 회로 또는 로직을 사용하여 구현될 수 있다. 적어도 하나의 실시예에서, 뉴로모픽 프로세서(2600)는, 제한 없이, 뉴런(2602)들의 수천 또는 수백만 개의 인스턴스를 포함할 수 있지만, 임의의 적합한 수의 뉴런(2602)이 사용될 수 있다. 적어도 하나의 실시예에서, 뉴런(2602)의 각각의 인스턴스는 뉴런 입력(2604) 및 뉴런 출력(2606)을 포함할 수 있다. 적어도 하나의 실시예에서, 뉴런(2602)은 뉴런들(2602)의 다른 인스턴스들의 입력들에 송신될 수 있는 출력들을 생성할 수 있다. 예컨대, 적어도 하나의 실시예에서, 뉴런 입력들(2604) 및 뉴런 출력들(2606)은 시냅스들(2608)을 통해 상호연결될 수 있다.
적어도 하나의 실시예에서, 뉴런들(2602) 및 시냅스들(2608)은, 뉴로모픽 프로세서(2600)가 뉴로모픽 프로세서(2600)에 의해 수신된 정보를 처리하거나 분석하게 동작하도록 상호연결될 수 있다. 적어도 하나의 실시예에서, 뉴런들(2602)은, 뉴런 입력(2604)을 통해 수신된 입력들이 임계치를 초과할 때 출력 펄스(또는 "발화(fire)" 또는 "스파이크")를 송신할 수 있다. 적어도 하나의 실시예에서, 뉴런들(2602)은 뉴런 입력들(2604)에서 수신된 신호들을 합산하거나 적분할 수 있다. 예컨대, 적어도 하나의 실시예에서, 뉴런(2602)은, 누설 통합-및-발화(leaky integrate-and-fire) 뉴런들로서 구현될 수 있으며, 여기서, 합("막 전위"로 지칭됨)이 임계 값을 초과하는 경우, 뉴런(2602)은 시그모이드 또는 임계 함수와 같은 전달 함수를 사용하여 출력(또는 "발화")을 생성할 수 있다. 적어도 하나의 실시예에서, 누설 통합-및-발화 뉴런은, 뉴런 입력들(2604)에서 수신된 신호들을 막 전위 내에 합산할 수 있고, 또한, 막 전위를 감소시키기 위해 감쇠 인자(또는 누설)를 적용할 수 있다. 적어도 하나의 실시예에서, 다수의 입력 신호들이 임계 값을 초과하기에 충분히 빠르게 뉴런 입력들(2604)에서 수신되는 경우(즉, 막 전위가 발화되기에는 너무 낮게 감쇠되기 전에), 누설 통합-및-발화 뉴런들이 발화될 수 있다. 적어도 하나의 실시예에서, 뉴런들(2602)은 입력들을 수신하고, 입력들을 막 전위 내에 통합하고, 막 전위를 감쇠시키는 회로들 또는 로직을 사용하여 구현될 수 있다. 적어도 하나의 실시예에서, 입력들이 평균될 수 있거나, 임의의 다른 적합한 전달 함수가 사용될 수 있다. 또한, 적어도 하나의 실시예에서, 뉴런들(2602)은, 제한 없이, 뉴런 입력(2604)에 전달 함수를 적용한 결과가 임계치를 초과할 때 뉴런 출력(2606)에서 출력 스파이크를 생성하는 비교기 회로들 또는 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 일단 뉴런(2602)이 발화되면, 그것은, 예컨대 막 전위를 0 또는 다른 적합한 기본 값으로 리셋함으로써 이전에 수신된 입력 정보를 무시할 수 있다. 적어도 하나의 실시예에서, 일단 막 전위가 0으로 리셋되면, 뉴런(2602)은 적합한 시간 기간(또는 불응 기간) 후에 정상 동작을 재개할 수 있다.
적어도 하나의 실시예에서, 뉴런들(2602)은 시냅스들(2608)을 통해 상호연결될 수 있다. 적어도 하나의 실시예에서, 시냅스들(2608)은 제1 뉴런(2602)의 출력으로부터 제2 뉴런(2602)의 입력으로 신호들을 송신하도록 동작할 수 있다. 적어도 하나의 실시예에서, 뉴런들(2602)은 시냅스(2608)의 하나 초과의 인스턴스를 통해 정보를 송신할 수 있다. 적어도 하나의 실시예에서, 뉴런 출력(2606)의 하나 이상의 인스턴스는, 시냅스(2608)의 인스턴스를 통해, 동일한 뉴런(2602)의 뉴런 입력(2604)의 인스턴스에 연결될 수 있다. 적어도 하나의 실시예에서, 시냅스(2608)의 인스턴스를 통해 송신될 출력을 생성하는 뉴런(2602)의 인스턴스는, 시냅스(2608)의 그 인스턴스에 대해 "시냅스 전 뉴런"으로 지칭될 수 있다. 적어도 하나의 실시예에서, 시냅스(2608)의 인스턴스를 통해 송신된 입력을 수신하는 뉴런(2602)의 인스턴스는, 시냅스(2608)의 그 인스턴스에 대해 "시냅스 후 뉴런"으로 지칭될 수 있다. 뉴런(2602)의 인스턴스는 시냅스(2608)의 하나 이상의 인스턴스로부터 입력들을 수신할 수 있고, 또한, 시냅스(2608) 하나 이상의 인스턴스를 통해 출력들을 송신할 수 있기 때문에, 뉴런(2602)의 단일 인스턴스는 따라서, 적어도 하나의 실시예에서, 시냅스들(2608)의 다양한 인스턴스들과 관련하여, "시냅스 전 뉴런" 및 "시냅스 후 뉴런" 둘 모두일 수 있다.
적어도 하나의 실시예에서, 뉴런들(2602)은 하나 이상의 계층으로 조직화될 수 있다. 적어도 하나의 실시예에서, 뉴런(2602)의 각각의 인스턴스는, 하나 이상의 시냅스(2608)를 통해 하나 이상의 뉴런 입력(2604)으로 팬-아웃(fan out)될 수 있는 하나의 뉴런 출력(2606)을 가질 수 있다. 적어도 하나의 실시예에서, 제1 계층(2610)의 뉴런들(2602)의 뉴런 출력들(2606)은 제2 계층(2612)의 뉴런들(2602)의 뉴런 입력들(2604)에 연결될 수 있다. 적어도 하나의 실시예에서, 계층(2610)은 "피드-포워드 계층"으로 지칭될 수 있다. 적어도 하나의 실시예에서, 제1 계층(2610)의 인스턴스 내의 뉴런(2602)의 각각의 인스턴스는 제2 계층(2612)의 뉴런(2602)의 각각의 인스턴스로 팬-아웃될 수 있다. 적어도 하나의 실시예에서, 제1 계층(2610)은 "완전 연결 피드-포워드 계층"으로 지칭될 수 있다. 적어도 하나의 실시예에서, 제2 계층(2612)의 인스턴스 내의 뉴런(2602)의 각각의 인스턴스는 제3 계층(2614)의 뉴런(2602)의 모든 인스턴스보다 적은 수로 팬-아웃될 수 있다. 적어도 하나의 실시예에서, 제2 계층(2612)은 "희소 연결 피드-포워드 계층"으로 지칭될 수 있다. 적어도 하나의 실시예에서, 제2 계층(2612)의 뉴런들(2602)은, 또한 제2 계층(2612)의 뉴런들(2602)을 포함하는 다수의 다른 계층들의 뉴런들(2602)로 팬-아웃될 수 있다. 적어도 하나의 실시예에서, 제2 계층(2612)은 "재귀적 계층"으로 지칭될 수 있다. 적어도 하나의 실시예에서, 뉴로모픽 프로세서(2600)는, 제한 없이, 희소 연결 피드-포워드 계층들 및 완전 연결 피드-포워드 계층들 둘 모두를 제한 없이 포함하는 피드-포워드 계층들과 재귀적 계층들의 임의의 적합한 조합을 포함할 수 있다.
적어도 하나의 실시예에서, 뉴로모픽 프로세서(2600)는, 제한 없이, 시냅스(2608)를 뉴런들(2602)에 연결하기 위해 재구성가능한 상호연결 아키텍처 또는 전용 하드-와이어링된 상호연결부들을 포함할 수 있다. 적어도 하나의 실시예에서, 뉴로모픽 프로세서(2600)는, 제한 없이, 신경망 토폴로지 및 뉴런 팬-인/아웃에 기반하여, 필요에 따라, 시냅스들이 상이한 뉴런들(2602)에 할당되는 것을 허용하는 회로 또는 로직을 포함할 수 있다. 예컨대, 적어도 하나의 실시예에서, 시냅스들(2608)은 네트워크 온 칩과 같은 상호연결 패브릭을 사용하거나 전용 연결들을 이용하여 뉴런들(2602)에 연결될 수 있다. 적어도 하나의 실시예에서, 시냅스 상호연결들 및 그의 구성요소들은 회로 또는 로직을 사용하여 구현될 수 있다.
도 27은 적어도 하나의 실시예에 따른 처리 시스템의 블록도이다. 적어도 하나의 실시예에서, 시스템(2700)은, 하나 이상의 프로세서(2702) 및 하나 이상의 그래픽 프로세서(2708)를 포함하고, 단일 프로세서 데스크톱 시스템, 멀티프로세서 워크스테이션 시스템, 또는 많은 수의 프로세서들(2702) 또는 프로세서 코어들(2707)을 갖는 서버 시스템일 수 있다. 적어도 하나의 실시예에서, 시스템(2700)은, 모바일, 핸드헬드, 또는 임베디드 디바이스들에서 사용하기 위해 시스템 온 칩(SoC) 집적 회로 내에 통합된 처리 플랫폼이다.
적어도 하나의 실시예에서, 시스템(2700)은, 서버 기반 게이밍 플랫폼, 게임 및 미디어 콘솔을 포함하는 게임 콘솔, 모바일 게임 콘솔, 핸드헬드 게임 콘솔, 또는 온라인 게임 콘솔을 포함하거나 그 안에 통합될 수 있다. 적어도 하나의 실시예에서, 시스템(2700)은, 모바일폰, 스마트폰, 태블릿 컴퓨팅 디바이스, 또는 모바일 인터넷 디바이스이다. 적어도 하나의 실시예에서, 처리 시스템(2700)은 또한, 스마트 워치 웨어러블 디바이스, 스마트 안경류 디바이스, 증강 현실 디바이스, 또는 가상 현실 디바이스와 같은 웨어러블 디바이스를 포함하거나, 그와 결합되거나, 또는 그 안에 통합될 수 있다. 적어도 하나의 실시예에서, 처리 시스템(2700)은, 하나 이상의 프로세서(2702) 및 하나 이상의 그래픽 프로세서(2708)에 의해 생성된 그래픽 인터페이스를 갖는 텔레비전 또는 셋톱 박스 디바이스이다.
적어도 하나의 실시예에서, 하나 이상의 프로세서(2702)는 각각, 실행될 때 시스템 및 사용자 소프트웨어에 대한 동작들을 수행하는 명령어들을 처리하기 위한 하나 이상의 프로세서 코어(2707)를 포함한다. 적어도 하나의 실시예에서, 하나 이상의 프로세서 코어(2707) 각각은 특정 명령어 시퀀스(2709)를 처리하도록 구성된다. 적어도 하나의 실시예에서, 명령어 시퀀스(2709)는, 복합 명령어 세트 컴퓨팅(CISC), 축소 명령어 세트 컴퓨팅(RISC), 또는 매우 긴 명령어 워드(VLIW)를 통한 컴퓨팅을 용이하게 할 수 있다. 적어도 하나의 실시예에서, 프로세서 코어들(2707)은 각각, 다른 명령어 시퀀스들의 에뮬레이션을 용이하게 하기 위한 명령어들을 포함할 수 있는 상이한 명령어 시퀀스(2709)를 처리할 수 있다. 적어도 하나의 실시예에서, 프로세서 코어(2707)는 또한, 디지털 신호 프로세서(DSP)와 같은 다른 처리 디바이스들을 포함할 수 있다.
적어도 하나의 실시예에서, 프로세서(2702)는 캐시 메모리(2704)를 포함한다. 적어도 하나의 실시예에서, 프로세서(2702)는 단일 내부 캐시 또는 다수의 레벨들의 내부 캐시를 가질 수 있다. 적어도 하나의 실시예에서, 캐시 메모리는 프로세서(2702)의 다양한 구성요소들 간에 공유된다. 적어도 하나의 실시예에서, 프로세서(2702)는 또한, 알려져 있는 캐시 일관성 기법들을 사용하여 프로세서 코어들(2707) 간에 공유될 수 있는 외부 캐시(예컨대, 레벨 3(L3) 캐시 또는 최종 레벨 캐시(LLC))(도시되지 않음)를 사용한다. 적어도 하나의 실시예에서, 상이한 유형들의 데이터를 저장하기 위한 상이한 유형들의 레지스터들(예컨대, 정수 레지스터들, 부동 소수점 레지스터들, 상태 레지스터들, 및 명령어 포인터 레지스터들)을 포함할 수 있는 레지스터 파일(2706)이 프로세서(2702)에 부가적으로 포함된다. 적어도 하나의 실시예에서, 레지스터 파일(2706)은 범용 레지스터들 또는 다른 레지스터들을 포함할 수 있다.
적어도 하나의 실시예에서, 하나 이상의 프로세서(들)(2702)는, 하나 이상의 인터페이스 버스(들)(2710)와 결합되어, 프로세서(2702)와 시스템(2700) 내의 다른 구성요소들 사이에서 어드레스, 데이터, 또는 제어 신호들과 같은 통신 신호들을 송신한다. 적어도 하나의 실시예에서, 인터페이스 버스(2710)는, 일 실시예에서, 프로세서 버스, 이를테면, 다이렉트 미디어 인터페이스(DMI) 버스의 한 버전일 수 있다. 적어도 하나의 실시예에서, 인터페이스(2710)는 DMI 버스로 제한되지 않고, 하나 이상의 주변 구성요소 상호연결 버스(예컨대, PCI, PCI 익스프레스), 메모리 버스, 또는 다른 유형들의 인터페이스 버스를 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서(들)(2702)는 통합 메모리 제어기(2716) 및 플랫폼 제어기 허브(2730)를 포함한다. 적어도 하나의 실시예에서, 메모리 제어기(2716)는 메모리 디바이스와 시스템(2700)의 다른 구성요소들 사이의 통신을 용이하게 하는 한편, 플랫폼 제어기 허브(PCH)(2730)는 로컬 I/O 버스를 통해 I/O 디바이스들에 대한 연결들을 제공한다.
적어도 하나의 실시예에서, 메모리 디바이스(2720)는, 동적 랜덤 액세스 메모리(DRAM) 디바이스, 정적 랜덤 액세스 메모리(SRAM) 디바이스, 플래시 메모리 디바이스, 상변화 메모리 디바이스, 또는 프로세스 메모리의 역할을 하기에 적합한 성능을 갖는 일부 다른 메모리 디바이스일 수 있다. 적어도 하나의 실시예에서, 메모리 디바이스(2720)는, 하나 이상의 프로세서(2702)가 애플리케이션 또는 프로세스를 실행할 때 사용하기 위한 데이터(2722) 및 명령어들(2721)을 저장하기 위한, 시스템(2700)에 대한 시스템 메모리로서 동작할 수 있다. 적어도 하나의 실시예에서, 메모리 제어기(2716)는 또한, 그래픽 및 미디어 연산들을 수행하기 위해 프로세서들(2702) 내의 하나 이상의 그래픽 프로세서(2708)와 통신할 수 있는 임의적인 외부 그래픽 프로세서(2712)와 결합된다. 적어도 하나의 실시예에서, 디스플레이 디바이스(2711)는 프로세서(들)(2702)에 연결될 수 있다. 적어도 하나의 실시예에서, 디스플레이 디바이스(2711)는, 모바일 전자 디바이스 또는 랩톱 디바이스 내에 있는 것과 같은 내부 디스플레이 디바이스, 또는 디스플레이 인터페이스(예컨대, 디스플레이포트(DisplayPort) 등)를 통해 부착된 외부 디스플레이 디바이스 중 하나 이상을 포함할 수 있다. 적어도 하나의 실시예에서, 디스플레이 디바이스(2711)는, 가상 현실(VR) 애플리케이션들 또는 증강 현실(AR) 애플리케이션들에서 사용하기 위한 입체 디스플레이 디바이스와 같은 헤드 장착형 디스플레이(HMD)를 포함할 수 있다.
적어도 하나의 실시예에서, 플랫폼 제어기 허브(2730)는 주변기기들이 고속 I/O 버스를 통해 메모리 디바이스(2720) 및 프로세서(2702)에 연결되는 것을 가능하게 한다. 적어도 하나의 실시예에서, I/O 주변기기들은, 오디오 제어기(2746), 네트워크 제어기(2734), 펌웨어 인터페이스(2728), 무선 송수신기(2726), 터치 센서들(2725), 데이터 저장 디바이스(2724)(예컨대, 하드 디스크 드라이브, 플래시 메모리 등)를 포함하지만, 이에 제한되지 않는다. 적어도 하나의 실시예에서, 데이터 저장 디바이스(2724)는 저장 인터페이스(예컨대, SATA)를 통해 또는 주변 구성요소 상호연결부 버스(예컨대, PCI, PCI 익스프레스)와 같은 주변 버스를 통해 연결될 수 있다. 적어도 하나의 실시예에서, 터치 센서들(2725)은, 터치 스크린 센서들, 압력 센서들, 또는 지문 센서들을 포함할 수 있다. 적어도 하나의 실시예에서, 무선 송수신기(2726)는, 와이파이 송수신기, 블루투스 송수신기, 또는 모바일 네트워크 송수신기, 이를테면, 3G, 4G, 또는 롱 텀 에볼루션(LTE) 송수신기일 수 있다. 적어도 하나의 실시예에서, 펌웨어 인터페이스(2728)는 시스템 펌웨어와의 통신을 가능하게 하고, 예컨대, 통합 확장가능 펌웨어 인터페이스(UEFI)일 수 있다. 적어도 하나의 실시예에서, 네트워크 제어기(2734)는 유선 네트워크로의 네트워크 연결을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 고성능 네트워크 제어기(도시되지 않음)가 인터페이스 버스(2710)와 결합된다. 적어도 하나의 실시예에서, 오디오 제어기(2746)는 다채널 고해상도 오디오 제어기이다. 적어도 하나의 실시예에서, 시스템(2700)은 레거시(예컨대, 개인용 시스템 2(PS/2)) 디바이스들을 시스템(2700)에 결합하기 위한 임의적 레거시 I/O 제어기(2740)를 포함한다. 적어도 하나의 실시예에서, 플랫폼 제어기 허브(2730)는 또한, 키보드 및 마우스(2743) 조합들, 카메라(2744), 또는 다른 USB 입력 디바이스들과 같은 입력 디바이스들을 연결하는 하나 이상의 범용 직렬 버스(USB) 제어기(2742)에 연결될 수 있다.
적어도 하나의 실시예에서, 메모리 제어기(2716) 및 플랫폼 제어기 허브(2730)의 인스턴스는, 외부 그래픽 프로세서(2712)와 같은 별개의 외부 그래픽 프로세서에 통합될 수 있다. 적어도 하나의 실시예에서, 플랫폼 제어기 허브(2730) 및/또는 메모리 제어기(2716)는 하나 이상의 프로세서(들)(2702) 외부에 있을 수 있다. 예컨대, 적어도 하나의 실시예에서, 시스템(2700)은 외부 메모리 제어기(2716) 및 플랫폼 제어기 허브(2730)를 포함할 수 있으며, 이들은, 프로세서(들)(2702)와 통신하는 시스템 칩셋 내의 메모리 제어기 허브 및 주변기기 제어기 허브로서 구성될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부가 그래픽 프로세서(2700)에 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 본원에 설명된 훈련 및/또는 추론 기법들은 3D 파이프라인에 구현된 ALU들 중 하나 이상을 사용할 수 있다. 더욱이, 적어도 하나의 실시예에서, 본원에 설명된 추론 및/또는 훈련 연산들은 도 8a 또는 도 8b에 예시된 로직 이외의 로직을 사용하여 행해질 수 있다. 적어도 하나의 실시예에서, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 그래픽 프로세서(2700)의 ALU들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 28은 적어도 하나의 실시예에 따른, 하나 이상의 프로세서 코어(2802A-2802N), 통합 메모리 제어기(2814), 및 통합 그래픽 프로세서(2808)를 갖는 프로세서(2800)의 블록도이다. 적어도 하나의 실시예에서, 프로세서(2800)는 파선 박스들로 표현된 부가적인 코어(2802N)까지의 그리고 이들을 포함하는 부가적인 코어들을 포함할 수 있다. 적어도 하나의 실시예에서, 프로세서 코어들(2802A-2802N) 각각은 하나 이상의 내부 캐시 유닛(2804A-2804N)을 포함한다. 적어도 하나의 실시예에서, 각각의 프로세서 코어는 또한, 하나 이상의 공유 캐싱 유닛(2806)에 액세스할 수 있다.
적어도 하나의 실시예에서, 내부 캐시 유닛들(2804A-2804N) 및 공유 캐시 유닛들(2806)은 프로세서(2800) 내의 캐시 메모리 계층구조를 표현한다. 적어도 하나의 실시예에서, 캐시 메모리 유닛들(2804A-2804N)은, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 캐시 레벨과 같은 각각의 프로세서 코어 내의 적어도 하나의 레벨의 명령어 및 데이터 캐시 및 하나 이상의 레벨의 공유 중간 레벨 캐시를 포함할 수 있으며, 여기서, 외부 메모리 이전의 가장 높은 레벨의 캐시는 LLC로서 분류된다. 적어도 하나의 실시예에서, 캐시 일관성 로직은 다양한 캐시 유닛들(2806 및 2804A-2804N) 사이의 일관성을 유지한다.
적어도 하나의 실시예에서, 프로세서(2800)는 또한, 한 세트의 하나 이상의 버스 제어기 유닛(2816) 및 시스템 에이전트 코어(2810)를 포함할 수 있다. 적어도 하나의 실시예에서, 버스 제어기 유닛(2816)은 하나 이상의 PCI 또는 PCI 익스프레스 버스와 같은 주변 버스들의 세트를 관리한다. 적어도 하나의 실시예에서, 시스템 에이전트 코어(2810)는 다양한 프로세서 구성요소에 대한 관리 기능성을 제공한다. 적어도 하나의 실시예에서, 시스템 에이전트 코어(2810)는 다양한 외부 메모리 디바이스들(도시되지 않음)에 대한 액세스를 관리하기 위한 하나 이상의 통합 메모리 제어기(2814)를 포함한다.
적어도 하나의 실시예에서, 프로세서 코어들(2802A-2802N) 중 하나 이상은 동시적 멀티스레딩에 대한 지원을 포함한다. 적어도 하나의 실시예에서, 시스템 에이전트 코어(2810)는 멀티스레드형 처리 동안 코어들(2802A-2802N)을 조율하고 동작시키기 위한 구성요소들을 포함한다. 적어도 하나의 실시예에서, 시스템 에이전트 코어(2810)는 부가적으로, 프로세서 코어들(2802A-2802N) 및 그래픽 프로세서(2808)의 하나 이상의 전력 상태를 조절하기 위한 로직 및 구성요소들을 포함하는 전력 제어 유닛(PCU)을 포함할 수 있다.
적어도 하나의 실시예에서, 프로세서(2800)는 부가적으로, 그래픽 처리 연산들을 실행하기 위한 그래픽 프로세서(2808)를 포함한다. 적어도 하나의 실시예에서, 그래픽 프로세서(2808)는, 공유 캐시 유닛들(2806), 및 하나 이상의 통합 메모리 제어기(2814)를 포함하는 시스템 에이전트 코어(2810)와 결합된다. 적어도 하나의 실시예에서, 시스템 에이전트 코어(2810)는 또한, 그래픽 프로세서 출력을 하나 이상의 결합된 디스플레이로 드라이빙하는 디스플레이 제어기(2811)를 포함한다. 적어도 하나의 실시예에서, 디스플레이 제어기(2811)는 또한, 적어도 하나의 상호연결부를 통해 그래픽 프로세서(2808)와 결합된 별개의 모듈이거나 또는 그래픽 프로세서(2808) 내에 통합될 수 있다.
적어도 하나의 실시예에서, 링 기반 상호연결 유닛(2812)이 사용되어 프로세서(2800)의 내부 구성요소들을 결합한다. 적어도 하나의 실시예에서, 대안적인 상호연결 유닛, 이를테면, 포인트-투-포인트 상호연결부, 스위치형 상호연결부, 또는 다른 기법들이 사용될 수 있다. 적어도 하나의 실시예에서, 그래픽 프로세서(2808)는 I/O 링크(2813)를 통해 링 상호연결부(2812)와 결합된다.
적어도 하나의 실시예에서, I/O 링크(2813)는, 다양한 프로세서 구성요소들과 eDRAM 모듈과 같은 고성능 임베디드 메모리 모듈(2818) 사이의 통신을 용이하게 하는 온-패키지 I/O 상호연결부를 포함하는 I/O 상호연결부들의 다수의 변형들 중 적어도 하나를 표현한다. 적어도 하나의 실시예에서, 프로세서 코어들(2802A-2802N) 각각 및 그래픽 프로세서(2808)는 공유 최종 레벨 캐시로서 임베디드 메모리 모듈(2818)을 사용한다.
적어도 하나의 실시예에서, 프로세서 코어들(2802A-2802N)은 공통 명령어 세트 아키텍처를 실행하는 동종 코어들이다. 적어도 하나의 실시예에서, 프로세서 코어들(2802A-2802N)은 명령어 세트 아키텍처(ISA)의 관점에서 이종이며, 여기서, 프로세서 코어들(2802A-2802N) 중 하나 이상은 공통 명령어 세트를 실행하는 한편, 프로세서 코어들(2802A-2802N)의 하나 이상의 다른 코어는 공통 명령어 세트의 서브세트 또는 상이한 명령어 세트를 실행한다. 적어도 하나의 실시예에서, 프로세서 코어들(2802A-2802N)은 마이크로아키텍처 관점에서 이종이며, 여기서, 비교적 더 높은 전력 소비를 갖는 하나 이상의 코어가 더 낮은 전력 소비를 갖는 하나 이상의 전력 코어와 결합한다. 적어도 하나의 실시예에서, 프로세서(2800)는 하나 이상의 칩 상에서 또는 SoC 집적 회로로서 구현될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부가 그래픽 프로세서(2810)에 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 본원에 설명된 훈련 및/또는 추론 기법들은, 3D 파이프라인, 그래픽 코어(들)(2802), 공유 기능 로직, 또는 도 28의 다른 로직에 구현된 ALU들 중 하나 이상을 사용할 수 있다. 더욱이, 적어도 하나의 실시예에서, 본원에 설명된 추론 및/또는 훈련 연산들은 도 8a 또는 도 8b에 예시된 로직 이외의 로직을 사용하여 행해질 수 있다. 적어도 하나의 실시예에서, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 프로세서(2800)의 ALU들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 29는 별개의 그래픽 처리 유닛일 수 있거나 복수의 처리 코어들과 통합된 그래픽 프로세서일 수 있는 그래픽 프로세서(2900)의 블록도이다. 적어도 하나의 실시예에서, 그래픽 프로세서(2900)는, 메모리 맵핑 I/O 인터페이스를 통해 그래픽 프로세서(2900) 상의 레지스터들에 그리고 메모리 내에 배치된 명령들과 통신한다. 적어도 하나의 실시예에서, 그래픽 프로세서(2900)는 메모리에 액세스하기 위해 메모리 인터페이스(2914)를 포함한다. 적어도 하나의 실시예에서, 메모리 인터페이스(2914)는, 로컬 메모리, 하나 이상의 내부 캐시, 하나 이상의 공유 외부 캐시, 및/또는 시스템 메모리에 대한 인터페이스이다.
적어도 하나의 실시예에서, 그래픽 프로세서(2900)는 또한, 디스플레이 출력 데이터를 디스플레이 디바이스(2920)로 드라이빙하는 디스플레이 제어기(2902)를 포함한다. 적어도 하나의 실시예에서, 디스플레이 제어기(2902)는, 비디오 또는 사용자 인터페이스 요소들의 다수의 계층들의 구성 및 디스플레이 디바이스(2920)에 대한 하나 이상의 오버레이 평면을 위한 하드웨어를 포함한다. 적어도 하나의 실시예에서, 디스플레이 디바이스(2920)는 내부 또는 외부 디스플레이 디바이스일 수 있다. 적어도 하나의 실시예에서, 디스플레이 디바이스(2920)는, 가상 현실(VR) 디스플레이 디바이스 또는 증강 현실(AR) 디스플레이 디바이스와 같은 헤드 장착형 디스플레이 디바이스이다. 적어도 하나의 실시예에서, 그래픽 프로세서(2900)는, MPEG-2와 같은 동화상 전문가 그룹(MPEG) 포맷들, H.264/MPEG-4 AVC와 같은 진보된 비디오 코딩(AVC) 포맷들뿐만 아니라 영화 & 텔레비전 기술자 협회(SMPTE) 421M/VC-1, 및 JPEG와 같은 공동 사진 전문가 그룹(JPEG) 포맷들, 및 모션 JPEG(MJPEG) 포맷들을 포함하지만 이에 제한되지 않는 하나 이상의 미디어 인코딩 포맷들로, 또는 이러한 포맷으로부터, 또는 이러한 포맷들 사이에서 미디어를 인코딩, 디코딩, 또는 트랜스코딩하기 위한 비디오 코덱 엔진(2906)을 포함한다.
적어도 하나의 실시예에서, 그래픽 프로세서(2900)는, 예컨대, 비트-경계 블록 전송들을 포함하는 2차원(2D) 래스터라이저 연산들을 수행하기 위한 블록 이미지 전송(BLIT) 엔진(2904)을 포함한다. 그러나, 적어도 하나의 실시예에서, 2D 그래픽 연산들은 그래픽 처리 엔진(GPE)(2910)의 하나 이상의 구성요소를 사용하여 수행된다. 적어도 하나의 실시예에서, GPE(2910)는 3차원(3D) 그래픽 연산들 및 미디어 연산들을 포함하는 그래픽 연산들을 수행하기 위한 컴퓨팅 엔진이다.
적어도 하나의 실시예에서, GPE(2910)는, 3D 프리미티브 형상들(예컨대, 직사각형, 삼각형 등)에 작용하는 처리 기능들을 사용하여 3차원 이미지들 및 장면들을 렌더링하는 것과 같은 3D 연산들을 수행하기 위한 3D 파이프라인(2912)을 포함한다. 적어도 하나의 실시예에서, 3D 파이프라인(2912)은 3D/미디어 서브시스템(2915)에 대한 다양한 작업들을 수행하고/거나 그에 대한 실행 스레드들을 생성하는 프로그래밍가능 및 고정 기능 요소들을 포함한다. 3D 파이프라인(2912)이 미디어 연산들을 수행하는 데 사용될 수 있지만, 적어도 하나의 실시예에서, GPE(2910)가 또한, 비디오 사후-처리 및 이미지 향상과 같은 미디어 연산들을 수행하는 데 사용되는 미디어 파이프라인(2916)을 포함한다.
적어도 하나의 실시예에서, 미디어 파이프라인(2916)은, 비디오 코덱 엔진(2906) 대신에 또는 그를 위하여 비디오 디코딩 가속, 비디오 디-인터레이싱, 및 비디오 인코딩 가속과 같은 하나 이상의 특수화된 미디어 연산들을 수행하기 위한 고정 기능 또는 프로그래밍가능 로직 유닛들을 포함한다. 적어도 하나의 실시예에서, 미디어 파이프라인(2916)은 부가적으로, 3D/미디어 서브시스템(2915) 상에서의 실행을 위한 스레드들을 생성하는 스레드 생성 유닛을 포함한다. 적어도 하나의 실시예에서, 생성된 스레드들은 3D/미디어 서브시스템(2915)에 포함된 하나 이상의 그래픽 실행 유닛 상에서의 미디어 연산들에 대한 계산들을 수행한다.
적어도 하나의 실시예에서, 3D/미디어 서브시스템(2915)은 3D 파이프라인(2912) 및 미디어 파이프라인(2916)에 의해 생성된 스레드들을 실행하기 위한 로직을 포함한다. 적어도 하나의 실시예에서, 3D 파이프라인(2912) 및 미디어 파이프라인(2916)은 스레드 실행 요청들을 3D/미디어 서브시스템(2915)에 전송하며, 이러한 3D/미디어 서브시스템은, 이용가능한 스레드 실행 리소스들에 대한 다양한 요청들을 중재 및 디스패치하기 위한 스레드 디스패치 로직을 포함한다. 적어도 하나의 실시예에서, 실행 리소스들은 3D 및 미디어 스레드들을 처리하기 위한 그래픽 실행 유닛들의 어레이를 포함한다. 적어도 하나의 실시예에서, 3D/미디어 서브시스템(2915)은 스레드 명령어들 및 데이터를 위한 하나 이상의 내부 캐시를 포함한다. 적어도 하나의 실시예에서, 서브시스템(2915)은 또한, 스레드들 간에 데이터를 공유하고 출력 데이터를 저장하기 위한, 레지스터들 및 어드레싱가능 메모리를 포함하는 공유 메모리를 포함한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부가 그래픽 프로세서(2900)에 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 본원에 설명된 훈련 및/또는 추론 기법들은 3D 파이프라인(2912)에 구현된 ALU들 중 하나 이상을 사용할 수 있다. 더욱이, 적어도 하나의 실시예에서, 본원에 설명된 추론 및/또는 훈련 연산들은 도 8a 또는 도 8b에 예시된 로직 이외의 로직을 사용하여 행해질 수 있다. 적어도 하나의 실시예에서, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 그래픽 프로세서(2900)의 ALU들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 30은 적어도 하나의 실시예에 따른 그래픽 프로세서의 그래픽 처리 엔진(3010)의 블록도이다. 적어도 하나의 실시예에서, 그래픽 처리 엔진(GPE)(3010)은 도 29에 도시된 GPE(2910)의 한 버전이다. 적어도 하나의 실시예에서, 미디어 파이프라인(3016)은 임의적이고, GPE(3010) 내에 명시적으로 포함되지 않을 수도 있다. 적어도 하나의 실시예에서, 별개의 미디어 및/또는 이미지 프로세서가 GPE(3010)에 결합된다.
적어도 하나의 실시예에서, GPE(3010)는 3D 파이프라인(3012) 및/또는 미디어 파이프라인(3016)에 명령 스트림을 제공하는 명령 스트리머(3003)에 결합되거나 그를 포함한다. 적어도 하나의 실시예에서, 명령 스트리머(3003)는, 시스템 메모리, 또는 내부 캐시 메모리 및 공유 캐시 메모리 중 하나 이상일 수 있는 메모리에 결합된다. 적어도 하나의 실시예에서, 명령 스트리머(3003)는 메모리로부터 명령들을 수신하고 3D 파이프라인(3012) 및/또는 미디어 파이프라인(3016)에 명령들을 전송한다. 적어도 하나의 실시예에서, 명령들은, 3D 파이프라인(3012) 및 미디어 파이프라인(3016)에 대한 명령들을 저장하는 링 버퍼로부터 페치된 명령어들, 프리미티브들, 또는 마이크로-연산들이다. 적어도 하나의 실시예에서, 링 버퍼는 부가적으로, 다수의 명령들의 뱃치들을 저장하는 뱃치 명령 버퍼들을 포함할 수 있다. 적어도 하나의 실시예에서, 3D 파이프라인(3012)에 대한 명령들은 또한, 3D 파이프라인(3012)에 대한 정점 및 지오메트리 데이터 및/또는 미디어 파이프라인(3016)에 대한 이미지 데이터 및 메모리 객체들과 같은, 그러나 이에 제한되지 않는 메모리에 저장된 데이터에 대한 참조들을 포함할 수 있다. 적어도 하나의 실시예에서, 3D 파이프라인(3012) 및 미디어 파이프라인(3016)은 연산들을 수행함으로써 또는 하나 이상의 실행 스레드를 그래픽 코어 어레이(3014)에 디스패치함으로써 명령들 및 데이터를 처리한다. 적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)는 그래픽 코어들(예컨대, 그래픽 코어(들)(3015A), 그래픽 코어(들)(3015B))의 하나 이상의 블록을 포함하며, 각각의 블록은 하나 이상의 그래픽 코어들을 포함한다. 적어도 하나의 실시예에서, 각각의 그래픽 코어는, 도 8a 및 도 8b의 추론 및/또는 훈련 로직(815)을 비롯하여, 그래픽 및 컴퓨팅 연산들을 수행하기 위한 범용 및 그래픽 특정 실행 로직뿐만 아니라 고정 기능 텍스처 처리 및/또는 기계 학습 및 인공 지능 가속 로직을 포함하는 그래픽 실행 리소스들의 세트를 포함한다.
적어도 하나의 실시예에서, 3D 파이프라인(3012)은, 명령어들을 처리하고 실행 스레드들을 그래픽 코어 어레이(3014)에 디스패치함으로써 정점 셰이더들, 지오메트리 셰이더들, 픽셀 셰이더들, 프래그먼트 셰이더들, 컴퓨팅 셰이더들, 또는 다른 셰이더 프로그램들과 같은 하나 이상의 셰이더 프로그램을 처리하기 위한 고정 기능 및 프로그래밍가능 로직을 포함한다. 적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)는 셰이더 프로그램들을 처리하는 데 사용하기 위한 실행 리소스들의 통합 블록을 제공한다. 적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)의 그래픽 코어(들)(3015A-3015B) 내의 다목적 실행 로직(예컨대, 실행 유닛들)은 다양한 3D API 셰이더 언어들에 대한 지원을 포함하고, 다수의 셰이더들과 연관된 다수의 동시 실행 스레드들을 실행할 수 있다.
적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)는 또한 비디오 및/또는 이미지 처리와 같은 미디어 기능들을 수행하기 위한 실행 로직을 포함한다. 적어도 하나의 실시예에서, 실행 유닛들은 부가적으로, 그래픽 처리 연산들에 부가하여, 병렬 범용 계산 연산들을 수행하도록 프로그래밍가능한 범용 로직을 포함한다.
적어도 하나의 실시예에서, 그래픽 코어 어레이(3014) 상에서 실행되는 스레드들에 의해 생성된 출력 데이터는 통합 반환 버퍼(URB)(3018) 내의 메모리에 데이터를 출력할 수 있다. 적어도 하나의 실시예에서, URB(3018)는 다수의 스레드들에 대한 데이터를 저장할 수 있다. 적어도 하나의 실시예에서, URB(3018)는 그래픽 코어 어레이(3014) 상에서 실행되는 상이한 스레드들 사이에서 데이터를 전송하는 데 사용될 수 있다. 적어도 하나의 실시예에서, URB(3018)는 부가적으로, 그래픽 코어 어레이(3014) 상의 스레드들과 공유 기능 로직(3020) 내의 고정 기능 로직 사이의 동기화를 위해 사용될 수 있다.
적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)는, 그래픽 코어 어레이(3014)가, 각각이 GPE(3010)의 타깃 전력 및 성능 레벨에 기반하여 가변 수의 실행 유닛들을 갖는 가변 수의 그래픽 코어들을 포함하도록 확장가능하다. 적어도 하나의 실시예에서, 실행 리소스들은, 실행 리소스들이 필요에 따라 인에이블링 또는 디스에이블링될 수 있도록 동적으로 확장가능하다.
적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)는, 그래픽 코어 어레이(3014) 내의 그래픽 코어들 사이에 공유되는 다수의 리소스들을 포함하는 공유 기능 로직(3020)에 결합된다. 적어도 하나의 실시예에서, 공유 기능 로직(3020)에 의해 수행되는 공유 기능들은, 그래픽 코어 어레이(3014)에 특수화된 보충 기능성을 제공하는 하드웨어 로직 유닛들로 구현된다. 적어도 하나의 실시예에서, 공유 기능 로직(3020)은, 샘플러 유닛(3021), 수학 유닛(3022), 및 스레드 간 통신(ITC) 로직(3023)을 포함하지만, 이에 제한되지 않는다. 적어도 하나의 실시예에서, 하나 이상의 캐시(들)(3025)가 공유 기능 로직(3020)에 포함되거나 그에 결합된다.
적어도 하나의 실시예에서, 특수화된 기능에 대한 요구가 그래픽 코어 어레이(3014) 내에 포함되기에 불충분한 경우, 공유 기능이 사용된다. 적어도 하나의 실시예에서, 특수화된 기능의 단일 인스턴스화가 공유 기능 로직(3020)에서 사용되고 그래픽 코어 어레이(3014) 내의 다른 실행 리소스들 간에 공유된다. 적어도 하나의 실시예에서, 그래픽 코어 어레이(3014)에 의해 광범위하게 사용되는 공유 기능 로직(3020) 내의 특정 공유 기능들이 그래픽 코어 어레이(3014) 내의 공유 기능 로직(3316) 내에 포함될 수 있다. 적어도 하나의 실시예에서, 그래픽 코어 어레이(3014) 내의 공유 기능 로직(3316)은 공유 기능 로직(3020) 내의 일부 또는 모든 로직을 포함할 수 있다. 적어도 하나의 실시예에서, 공유 기능 로직(3020) 내의 모든 로직 요소들은 그래픽 코어 어레이(3014)의 공유 기능 로직(3026) 내에 복제될 수 있다. 적어도 하나의 실시예에서, 공유 기능 로직(3020)은 그래픽 코어 어레이(3014) 내의 공유 기능 로직(3026)을 위하여 제외된다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부가 그래픽 프로세서(3010)에 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 본원에 설명된 훈련 및/또는 추론 기법들은, 3D 파이프라인(3012), 그래픽 코어(들)(3015), 공유 기능 로직(3026), 공유 기능 로직(3020), 또는 도 30의 다른 로직에 구현된 ALU들 중 하나 이상을 사용할 수 있다. 더욱이, 적어도 하나의 실시예에서, 본원에 설명된 추론 및/또는 훈련 연산들은 도 8a 또는 도 8b에 예시된 로직 이외의 로직을 사용하여 행해질 수 있다. 적어도 하나의 실시예에서, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 그래픽 프로세서(3010)의 ALU들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 31은 본원에 설명된 적어도 하나의 실시예에 따른 그래픽 프로세서 코어(3100)의 하드웨어 로직의 블록도이다. 적어도 하나의 실시예에서, 그래픽 프로세서 코어(3100)는 그래픽 코어 어레이 내에 포함된다. 적어도 하나의 실시예에서, 때때로 코어 슬라이스로 지칭되는 그래픽 프로세서 코어(3100)는, 모듈식 그래픽 프로세서 내의 하나 또는 다수의 그래픽 코어일 수 있다. 적어도 하나의 실시예에서, 그래픽 프로세서 코어(3100)는 하나의 그래픽 코어 슬라이스의 예시이고, 본원에 설명된 바와 같은 그래픽 프로세서는 타깃 전력 및 성능 한계범위(envelope)들에 기반하여 다수의 그래픽 코어 슬라이스들을 포함할 수 있다. 적어도 하나의 실시예에서, 각각의 그래픽 코어(3100)는, 범용 및 고정 기능 로직의 모듈식 블록들을 포함하는, 서브슬라이스들로 또한 지칭되는 다수의 서브코어들(3101A-3101F)과 결합된 고정 기능 블록(3130)을 포함할 수 있다.
적어도 하나의 실시예에서, 고정 기능 블록(3130)은, 예컨대, 더 낮은 성능 및/또는 더 낮은 전력 그래픽 프로세서 구현들에서, 그래픽 프로세서(3100) 내의 모든 서브코어들에 의해 공유될 수 있는 지오메트리 및 고정 기능 파이프라인(3136)을 포함한다. 적어도 하나의 실시예에서, 지오메트리 및 고정 기능 파이프라인(3136)은, 3D 고정 기능 파이프라인, 비디오 프론트 엔드 유닛, 스레드 생성기, 및 스레드 디스패처, 및 통합 반환 버퍼들을 관리하는 통합 반환 버퍼 관리자를 포함한다.
적어도 하나의 실시예에서, 고정 기능 블록(3130)은 또한, 그래픽 SoC 인터페이스(3137), 그래픽 마이크로제어기(3138), 및 미디어 파이프라인(3139)을 포함한다. 적어도 하나의 실시예에서, 그래픽 SoC 인터페이스(3137)는, 그래픽 코어(3100)와 시스템 온 칩(SoC) 집적 회로 내의 다른 프로세서 코어들 사이의 인터페이스를 제공한다. 적어도 하나의 실시예에서, 그래픽 마이크로제어기(3138)는, 스레드 디스패치, 스케줄링, 및 선점을 포함하는 그래픽 프로세서(3100)의 다양한 기능들을 관리하도록 구성가능한 프로그래밍가능 서브프로세서이다. 적어도 하나의 실시예에서, 미디어 파이프라인(3139)은, 이미지 및 비디오 데이터를 포함하는 멀티미디어 데이터의 디코딩, 인코딩, 사전-처리, 및/또는 사후-처리를 용이하게 하기 위한 로직을 포함한다. 적어도 하나의 실시예에서, 미디어 파이프라인(3139)은, 서브코어들(3101A-3101F) 내에서 로직을 컴퓨팅하거나 샘플링하라는 요청들을 통해 미디어 연산들을 구현한다.
적어도 하나의 실시예에서, SoC 인터페이스(3137)는, 그래픽 코어(3100)가, 공유 최종 레벨 캐시 메모리, 시스템 RAM, 및/또는 임베디드 온-칩 또는 온-패키지 DRAM과 같은 메모리 계층구조 요소들을 비롯하여 범용 애플리케이션 프로세서 코어들(예컨대, CPU들) 및/또는 SoC 내의 다른 구성요소들과 통신할 수 있게 한다. 적어도 하나의 실시예에서, SoC 인터페이스(3137)는 또한, 카메라 이미징 파이프라인들과 같은 SoC 내의 고정 기능 디바이스들과의 통신을 가능하게 할 수 있고, 그래픽 코어(3100)와 SoC 내의 CPU들 사이에 공유될 수 있는 전역 메모리 아토믹스(atomics)의 사용을 가능하게 하고/거나 구현한다. 적어도 하나의 실시예에서, 그래픽 SoC 인터페이스(3137)는 또한, 그래픽 프로세서 코어(3100)에 대한 전력 관리 제어들을 구현할 수 있고, 그래픽 프로세서 코어(3100)의 클록 도메인과 SoC 내의 다른 클록 도메인들 사이의 인터페이스를 가능하게 할 수 있다. 적어도 하나의 실시예에서, SoC 인터페이스(3137)는, 그래픽 프로세서 내의 하나 이상의 그래픽 코어 각각에 명령들 및 명령어들을 제공하도록 구성되는 명령 스트리머 및 전역 스레드 디스패처로부터의 명령 버퍼들의 수신을 가능하게 한다. 적어도 하나의 실시예에서, 명령들 및 명령어들은, 미디어 연산들이 수행되어야 할 때 미디어 파이프라인(3139)에, 또는 그래픽 처리 연산들이 수행되어야 할 때 지오메트리 및 고정 기능 파이프라인(예컨대, 지오메트리 및 고정 기능 파이프라인(3136), 및/또는 지오메트리 및 고정 기능 파이프라인(3114))에 디스패치될 수 있습니다.
적어도 하나의 실시예에서, 그래픽 마이크로제어기(3138)는, 그래픽 코어(3100)에 대한 다양한 스케줄링 및 관리 작업들을 수행하도록 구성될 수 있다. 적어도 하나의 실시예에서, 그래픽 마이크로제어기(3138)는, 서브코어들(3101A-3101F) 내의 실행 유닛(EU) 어레이들(3102A-3102F, 3104A-3104F) 내의 다양한 그래픽 병렬 엔진들에 대한 그래픽 및/또는 컴퓨팅 작업부하 스케줄링을 수행할 수 있다. 적어도 하나의 실시예에서, 그래픽 코어(3100)를 포함하는 SoC의 CPU 코어 상에서 실행되는 호스트 소프트웨어는, 적절한 그래픽 엔진 상에서의 스케줄링 동작을 호출하는, 다수의 그래픽 프로세서 경로들 중 하나에 작업부하들을 제출할 수 있다. 적어도 하나의 실시예에서, 스케줄링 동작들은 다음에 어느 작업부하를 실행할지를 결정하는 것, 작업부하를 명령 스트리머에 제출하는 것, 엔진 상에서 실행 중인 기존 작업부하들을 선점하는 것, 작업부하의 진행을 모니터링하는 것, 작업부하가 완료될 때 호스트 소프트웨어에 통지하는 것을 포함한다. 적어도 하나의 실시예에서, 그래픽 마이크로제어기(3138)는 또한, 그래픽 코어(3100)에 대한 낮은 전력 또는 유휴 상태들을 용이하게 하여, 시스템 상의 운영 체제 및/또는 그래픽 드라이버 소프트웨어와 독립적으로, 낮은 전력 상태 전환들에 걸쳐 그래픽 코어(3100) 내의 레지스터들을 저장 및 복원하는 능력을 그래픽 코어(3100)에 제공할 수 있다.
적어도 하나의 실시예에서, 그래픽 코어(3100)는 예시된 서브코어들(3101A-3101F)보다 더 많거나 더 적은 최대 N개의 모듈식 서브코어를 가질 수 있다. N개의 서브코어의 각각의 세트에 대해, 적어도 하나의 실시예에서, 그래픽 코어(3100)는 또한, 공유 기능 로직(3110), 공유 및/또는 캐시 메모리(3112), 지오메트리/고정 기능 파이프라인(3114)뿐만 아니라 부가적인 고정 기능 로직(3116)을 포함함으로써 다양한 그래픽 및 컴퓨팅 처리 연산들을 가속할 수 있다. 적어도 하나의 실시예에서, 공유 기능 로직(3110)은, 그래픽 코어(3100) 내의 각각의 N개의 서브코어에 의해 공유될 수 있는 로직 유닛들(예컨대, 샘플러, 수학, 및/또는 스레드 간 통신 로직)을 포함할 수 있다. 적어도 하나의 실시예에서, 공유 및/또는 캐시 메모리(3112)는 그래픽 코어(3100) 내의 N개의 서브코어(3101A-3101F)에 대한 최종 레벨 캐시일 수 있고, 또한, 다수의 서브코어들에 의해 액세스가능한 공유 메모리의 역할을 할 수 있다. 적어도 하나의 실시예에서, 지오메트리/고정 기능 파이프라인(3114)은 고정 기능 블록(3130) 내의 지오메트리/고정 기능 파이프라인(3136) 대신에 포함될 수 있고, 유사한 로직 유닛들을 포함할 수 있다.
적어도 하나의 실시예에서, 그래픽 코어(3100)는, 그래픽 코어(3100)에 의한 사용을 위한 다양한 고정 기능 가속 로직을 포함할 수 있는 부가적인 고정 기능 로직(3116)을 포함한다. 적어도 하나의 실시예에서, 부가적인 고정 기능 로직(3116)은 위치 전용 셰이딩에서 사용하기 위한 부가적인 지오메트리 파이프라인을 포함한다. 위치 전용 셰이딩에서, 적어도 2개의 지오메트리 파이프라인이 존재하는 반면, 지오메트리 및 고정 기능 파이프라인들(3114, 3136) 내의 전체 지오메트리 파이프라인에서는, 부가적인 고정 기능 로직(3116) 내에 포함될 수 있는 부가적인 지오메트리 파이프라인인 컬 파이프라인(cull pipeline)이 존재한다. 적어도 하나의 실시예에서, 컬 파이프라인은 전체 지오메트리 파이프라인의 축소된 버전이다. 적어도 하나의 실시예에서, 전체 파이프라인 및 컬 파이프라인은, 각각의 인스턴스가 별개의 컨텍스트를 갖는, 애플리케이션의 상이한 인스턴스들을 실행할 수 있다. 적어도 하나의 실시예에서, 위치 전용 셰이딩은, 폐기된 삼각형들의 긴 컬 런(long cull run)을 은닉할 수 있어서, 일부 인스턴스들에 셰이딩이 더 일찍 완료될 수 있다. 예컨대, 적어도 하나의 실시예에서, 부가적인 고정 기능 로직(3116) 내의 컬 파이프라인 로직은 메인 애플리케이션과 병렬로 위치 셰이더들을 실행할 수 있고, 컬 파이프라인이 정점들의 위치 속성들을 페치 및 셰이딩하기 때문에, 일반적으로, 프레임 버퍼로의 픽셀들의 렌더링 및 래스터화를 수행함이 없이 전체 파이프라인보다 더 빠르게 중요 결과들을 생성한다. 적어도 하나의 실시예에서, 컬 파이프라인은 생성된 중요 결과들을 사용하여 삼각형들이 컬링(cull)되는지 여부에 관계없이 모든 삼각형에 대한 가시성 정보를 컴퓨팅할 수 있다. 적어도 하나의 실시예에서, 전체 파이프라인(이러한 예시에서 리플레이 파이프라인으로 지칭될 수 있음)은, 가시성 정보를 소비하여, 래스터화 페이즈에 최종적으로 전달되는 가시적 삼각형들만을 셰이딩하도록, 컬링된 삼각형들을 건너뛸 수 있다.
적어도 하나의 실시예에서, 부가적인 고정 기능 로직(3116)은 또한, 기계 학습 훈련 또는 추론을 위한 최적화들을 포함하는 구현들을 위해 고정 기능 행렬 곱셈 로직과 같은 기계 학습 가속 로직을 포함할 수 있다.
적어도 하나의 실시예에서, 각각의 그래픽 서브코어(3101A-3101F) 내에, 그래픽 파이프라인, 미디어 파이프라인, 또는 셰이더 프로그램들에 의한 요청들에 대한 응답으로 그래픽, 미디어, 및 컴퓨팅 연산들을 수행하는 데 사용될 수 있는 실행 리소스들의 세트가 포함된다. 적어도 하나의 실시예에서, 그래픽 서브코어들(3101A-3101F)은, 다수의 EU 어레이들(3102A-3102F, 3104A-3104F), 스레드 디스패치 및 스레드 간 통신(TD/IC) 로직(3103A-3103F), 3D(예컨대, 텍스처) 샘플러(3105A-3105F), 미디어 샘플러(3106A-3106F), 셰이더 프로세서(3107A-3107F), 및 공유 로컬 메모리(SLM)(3108A-3108F)를 포함한다. 적어도 하나의 실시예에서, EU 어레이들(3102A-3102F, 3104A-3104F)은 각각 다수의 실행 유닛들을 포함하고, 이러한 유닛들은, 그래픽, 미디어 또는 컴퓨팅 셰이더 프로그램들을 포함하는 그래픽, 미디어, 또는 컴퓨팅 연산의 서비스에서 부동 소수점 및 정수/고정 소수점 로직 연산들을 수행하는 것이 가능한 범용 그래픽 처리 유닛들이다. 적어도 하나의 실시예에서, TD/IC 로직(3103A-3103F)은, 서브코어 내의 실행 유닛들에 대한 로컬 스레드 디스패치 및 스레드 제어 동작들을 수행하고, 서브코어의 실행 유닛들 상에서 실행되는 스레드들 사이의 통신을 용이하게 한다. 적어도 하나의 실시예에서, 3D 샘플러들(3105A-3105F)은 텍스처 또는 다른 3D 그래픽 관련 데이터를 메모리 내로 판독할 수 있다. 적어도 하나의 실시예에서, 3D 샘플러들은, 구성된 샘플 상태 및 주어진 텍스처와 연관된 텍스처 포맷에 기반하여 텍스처 데이터를 상이하게 판독할 수 있다. 적어도 하나의 실시예에서, 미디어 샘플러들(3106A-3106F)은 미디어 데이터와 연관된 유형 및 포맷에 기반하여 유사한 판독 동작들을 수행할 수 있다. 적어도 하나의 실시예에서, 각각의 그래픽 서브코어(3101A-3101F)는 대안적으로 통합 3D 및 미디어 샘플러를 포함할 수 있다. 적어도 하나의 실시예에서, 서브코어(3101A-3101F) 각각 내의 실행 유닛들에서 실행되는 스레드들은, 각각의 서브코어 내의 공유 로컬 메모리(3108A-3108F)를 이용하여, 스레드 그룹 내에서 실행되는 스레드들이 온-칩 메모리의 공통 풀을 사용하여 실행되는 것을 가능하게 할 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부가 그래픽 프로세서(3110)에 통합될 수 있다. 예컨대, 적어도 하나의 실시예에서, 본원에 설명된 훈련 및/또는 추론 기법들은, 3D 파이프라인, 그래픽 마이크로제어기(3138), 지오메트리 및 고정 기능 파이프라인(3114 및 3136), 또는 도 31의 다른 로직에 구현된 ALU들 중 하나 이상을 사용할 수 있다. 더욱이, 적어도 하나의 실시예에서, 본원에 설명된 추론 및/또는 훈련 연산들은 도 8a 또는 도 8b에 예시된 로직 이외의 로직을 사용하여 행해질 수 있다. 적어도 하나의 실시예에서, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 그래픽 프로세서(3100)의 ALU들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 32a 내지 도 32b는 적어도 하나의 실시예에 따른, 그래픽 프로세서 코어의 처리 요소들의 어레이를 포함하는 스레드 실행 로직(3200)을 예시한다. 도 32a는 스레드 실행 로직(3200)이 사용되는 적어도 하나의 실시예를 예시한다. 도 32b는 적어도 하나의 실시예에 따른 그래픽 실행 유닛(3208)의 예시적인 내부 세부사항들을 예시한다.
도 32a에 예시된 바와 같이, 적어도 하나의 실시예에서, 스레드 실행 로직(3200)은, 셰이더 프로세서(3202), 스레드 디스패처(3204), 명령어 캐시(3206), 복수의 실행 유닛들(3207A-3207N 및 3208A-3208N)을 포함하는 확장가능 실행 유닛 어레이, 샘플러(3210), 데이터 캐시(3212), 및 데이터 포트(3214)를 포함한다. 적어도 하나의 실시예에서, 확장가능 실행 유닛 어레이는, 예컨대, 작업부하의 계산 요건들에 기반하여, 하나 이상의 실행 유닛(예컨대, 실행 유닛(3208A-N 또는 3207A-N) 중 임의의 것)을 인에이블링 또는 디스에이블링함으로써 동적으로 스케일링할 수 있다. 적어도 하나의 실시예에서, 확장가능 실행 유닛들은 각각의 실행 유닛에 링크되는 상호연결 패브릭을 통해 상호연결된다. 적어도 하나의 실시예에서, 스레드 실행 로직(3200)은, 명령어 캐시(3206), 데이터 포트(3214), 샘플러(3210), 및 실행 유닛들(3207 또는 3208) 중 하나 이상을 통한, 메모리, 이를테면, 시스템 메모리 또는 캐시 메모리에 대한 하나 이상의 연결을 포함한다. 적어도 하나의 실시예에서, 각각의 실행 유닛(예컨대, 3207A)은, 각각의 스레드에 대해 다수의 데이터 요소들을 병렬로 처리하면서 다수의 동시적 하드웨어 스레드들을 실행하는 것이 가능한 독립형 프로그래밍가능 범용 계산 유닛이다. 적어도 하나의 실시예에서, 실행 유닛들(3207 및/또는 3208)의 어레이는 임의의 수의 개별 실행 유닛을 포함하도록 확장가능하다.
적어도 하나의 실시예에서, 실행 유닛들(3207 및/또는 3208)은 주로 셰이더 프로그램들을 실행하는 데 사용된다. 적어도 하나의 실시예에서, 셰이더 프로세서(3202)는, 다양한 셰이더 프로그램들을 처리하고 스레드 디스패처(3204)를 통해 셰이더 프로그램들과 연관된 실행 스레드를 디스패치할 수 있다. 적어도 하나의 실시예에서, 스레드 디스패처(3204)는, 그래픽 및 미디어 파이프라인들로부터의 스레드 개시 요청들을 중재하고 실행 유닛들(3207 및/또는 3208) 내의 하나 이상의 실행 유닛에 대한 요청된 스레드들을 인스턴스화하기 위한 로직을 포함한다. 예컨대, 적어도 하나의 실시예에서, 지오메트리 파이프라인은, 정점, 테셀레이션, 또는 지오메트리 셰이더들을 처리를 위해 스레드 실행 로직에 디스패치할 수 있다. 적어도 하나의 실시예에서, 스레드 디스패처(3204)는 또한, 실행 중인 셰이더 프로그램들로부터의 런타임 스레드 생성 요청들을 처리할 수 있다.
적어도 하나의 실시예에서, 실행 유닛들(3207 및/또는 3208)은, 그래픽 라이브러리들(예컨대, 다이렉트 3D 및 OpenGL)로부터의 셰이더 프로그램들이 최소의 변환으로 실행되도록, 많은 표준 3D 그래픽 셰이더 명령어들에 대한 고유한 지원을 포함하는 명령어 세트를 지원한다. 적어도 하나의 실시예에서, 실행 유닛들은, 정점 및 지오메트리 처리(예컨대, 정점 프로그램들, 지오메트리 프로그램들, 및/또는 정점 셰이더들), 픽셀 처리(예컨대, 픽셀 셰이더들, 프래그먼트 셰이더들), 및 범용 처리(예컨대, 컴퓨팅 및 미디어 셰이더들)를 지원한다. 적어도 하나의 실시예에서, 하나 이상의 산술 로직 유닛(ALU)을 포함하는 실행 유닛들(3207 및/또는 3208) 각각은 다중-송출 단일 명령어 다중 데이터(SIMD) 실행이 가능하고, 멀티스레드형 연산은 더 높은 레이턴시 메모리 액세스들에도 불구하고 효율적인 실행 환경을 가능하게 한다. 적어도 하나의 실시예에서, 각각의 실행 유닛 내의 각각의 하드웨어 스레드는 전용의 높은 대역폭 레지스터 파일 및 연관된 독립적인 스레드 상태를 갖는다. 적어도 하나의 실시예에서, 실행은, 정수, 단정밀도 및 배정밀도 부동 소수점 연산들, SIMD 분기 능력, 논리적 연산들, 초월 연산들, 및 다른 기타 연산들이 가능한 파이프라인들에 대한 클록당 다중-송출이다. 적어도 하나의 실시예에서, 메모리 또는 공유 기능들 중 하나로부터 데이터를 대기하는 동안, 실행 유닛들(3207 및/또는 3208) 내의 종속성 로직은, 요청된 데이터가 반환될 때까지 대기 스레드가 휴면되게 한다. 적어도 하나의 실시예에서, 대기 스레드가 휴면 중인 동안, 하드웨어 리소스들은 다른 스레드들을 처리하는 데 전용될 수 있다. 예컨대, 적어도 하나의 실시예에서, 정점 셰이더 연산과 연관된 지연 동안, 실행 유닛은, 픽셀 셰이더, 프래그먼트 셰이더, 또는 상이한 정점 셰이더를 포함하는 다른 유형의 셰이더 프로그램에 대한 연산들을 수행할 수 있다.
적어도 하나의 실시예에서, 실행 유닛들(3207 및/또는 3208) 내의 각각의 실행 유닛은 데이터 요소들의 어레이들에 대해 동작한다. 적어도 하나의 실시예에서, 데이터 요소들의 수는 "실행 크기", 또는 명령어에 대한 채널들의 수이다. 적어도 하나의 실시예에서, 실행 채널은, 명령어들 내의 데이터 요소 액세스, 마스킹, 및 흐름 제어를 위한 실행의 논리적 유닛이다. 적어도 하나의 실시예에서, 채널들의 수는 특정 그래픽 프로세서에 대한 물리적 산술 로직 유닛(ALU) 또는 부동 소수점 유닛(FPU)의 수와 독립적일 수 있다. 적어도 하나의 실시예에서, 실행 유닛들(3207 및/또는 3208)은 정수 및 부동 소수점 데이터 유형들을 지원한다.
적어도 하나의 실시예에서, 실행 유닛 명령어 세트는 SIMD 명령어들을 포함한다. 적어도 하나의 실시예에서, 다양한 데이터 요소들이 패킹된 데이터 유형으로서 레지스터에 저장될 수 있고, 실행 유닛은 요소들의 데이터 크기에 기반하여 다양한 요소들을 처리할 것이다. 예컨대, 적어도 하나의 실시예에서, 256 비트 폭 벡터에 대해 동작할 때, 벡터의 256 비트는 레지스터에 저장되고, 실행 유닛은, 벡터에 대해 4개의 별개의 64 비트 패킹된 데이터 요소들(쿼드-워드(QW) 크기 데이터 요소들), 8개의 별개의 32 비트 패킹된 데이터 요소들(더블-워드(DW) 크기 데이터 요소들), 16개의 별개의 16 비트 패킹된 데이터 요소들(워드(W) 크기 데이터 요소들), 또는 32개의 별개의 8 비트 데이터 요소들(바이트(B) 크기 데이터 요소들)로서 동작한다. 그러나, 적어도 하나의 실시예에서, 상이한 벡터 폭들 및 레지스터 크기들이 가능하다.
적어도 하나의 실시예에서, 하나 이상의 실행 유닛은, 실행 유닛(3207A)과 실행 유닛(3208A)이 융합되는 융합된 실행 유닛(3209A)과 같은 융합된 EU들에 공통인 스레드 제어 로직(3211A-3211N)을 갖는 융합된 실행 유닛(3209A-3209N)으로 결합될 수 있다. 적어도 하나의 실시예에서, 다수의 EU들이 EU 그룹으로 융합될 수 있다. 적어도 하나의 실시예에서, 융합된 EU 그룹 내의 각각의 EU는 별개의 SIMD 하드웨어 스레드를 실행하도록 구성될 수 있으며, 융합된 EU 그룹 내의 EU들의 수는 다양한 실시예에 따라 다를 수 있다. 적어도 하나의 실시예에서, SIMD8, SIMD16, 및 SIMD32를 포함하지만 이에 제한되지 않는 다양한 SIMD 폭들이 EU별로 수행될 수 있다. 적어도 하나의 실시예에서, 각각의 융합된 그래픽 실행 유닛(3209A-3209N)은 적어도 2개의 실행 유닛을 포함한다. 예컨대, 적어도 하나의 실시예에서, 융합된 실행 유닛(3209A)은, 제1 EU(3207A), 제2 EU(3208A), 및 제1 EU(3207A)와 제2 EU(3208A)에 공통인 스레드 제어 로직(3211A)을 포함한다. 적어도 하나의 실시예에서, 스레드 제어 로직(3211A)은 융합된 그래픽 실행 유닛(3209A) 상에서 실행되는 스레드들을 제어하여, 융합된 실행 유닛들(3209A-3209N) 내의 각각의 EU가 공통 명령어 포인터 레지스터를 사용하여 실행되는 것을 허용한다.
적어도 하나의 실시예에서, 실행 유닛들에 대한 스레드 명령어들을 캐싱하기 위해 하나 이상의 내부 명령어 캐시(예컨대, 3206)가 스레드 실행 로직(3200)에 포함된다. 적어도 하나의 실시예에서, 스레드 실행 동안 스레드 데이터를 캐싱하기 위해 하나 이상의 데이터 캐시(예컨대, 3212)가 포함된다. 적어도 하나의 실시예에서, 3D 연산들을 위한 텍스처 샘플링 및 미디어 연산들을 위한 미디어 샘플링을 제공하기 위해 샘플러(3210)가 포함된다. 적어도 하나의 실시예에서, 샘플러(3210)는, 샘플링된 데이터를 실행 유닛에 제공하기 전에 샘플링 프로세스 동안 텍스처 또는 미디어 데이터를 처리하는 특수화된 텍스처 또는 미디어 샘플링 기능성을 포함한다.
실행 동안, 적어도 하나의 실시예에서, 그래픽 및 미디어 파이프라인들은, 스레드 생성 및 디스패치 로직을 통해 스레드 개시 요청들을 스레드 실행 로직(3200)에 전송한다. 적어도 하나의 실시예에서, 일단 기하학적 객체들의 그룹이 처리되고 픽셀 데이터로 래스터화되었으면, 셰이더 프로세서(3202) 내의 픽셀 프로세서 로직(예컨대, 픽셀 셰이더 로직, 프래그먼트 셰이더 로직 등)이 호출되어, 출력 정보를 추가로 컴퓨팅하고 결과들이 출력 표면들(예컨대, 컬러 버퍼들, 깊이 버퍼들, 스텐실 버퍼들 등)에 기입되게 한다. 적어도 하나의 실시예에서, 픽셀 셰이더 또는 프래그먼트 셰이더는, 래스터화된 객체에 걸쳐 보간될 다양한 정점 속성들의 값들을 계산한다. 적어도 하나의 실시예에서, 셰이더 프로세서(3202) 내의 픽셀 프로세서 로직은 이어서, 애플리케이션 프로그래밍 인터페이스(API)에 의해 공급된 픽셀 또는 프래그먼트 셰이더 프로그램을 실행한다. 적어도 하나의 실시예에서, 셰이더 프로그램을 실행하기 위해, 셰이더 프로세서(3202)는 스레드 디스패처(3204)를 통해 스레드들을 실행 유닛(예컨대, 3208A)에 디스패치한다. 적어도 하나의 실시예에서, 셰이더 프로세서(3202)는 메모리에 저장된 텍스처 맵들의 텍스처 데이터에 액세스하기 위해 샘플러(3210) 내의 텍스처 샘플링 로직을 사용한다. 적어도 하나의 실시예에서, 텍스처 데이터 및 입력 지오메트리 데이터에 관한 산술 연산들은, 각각의 기하학적 프래그먼트에 대한 픽셀 컬러 데이터를 컴퓨팅하거나, 또는 추가적인 처리로부터 하나 이상의 픽셀을 폐기한다.
적어도 하나의 실시예에서, 데이터 포트(3214)는, 스레드 실행 로직(3200)이 처리된 데이터를 그래픽 프로세서 출력 파이프라인 상에서의 추가적인 처리를 위해 출력하기 위한 메모리 액세스 메커니즘을 제공한다. 적어도 하나의 실시예에서, 데이터 포트(3214)는 하나 이상의 캐시 메모리(예컨대, 데이터 캐시(3212))를 포함하거나 그에 결합되어, 데이터 포트를 통해, 메모리 액세스에 대한 데이터를 캐싱한다.
도 32b에 예시된 바와 같이, 적어도 하나의 실시예에서, 그래픽 실행 유닛(3208)은, 명령어 페치 유닛(3237), 일반 레지스터 파일 어레이(GRF)(3224), 아키텍처 레지스터 파일 어레이(ARF)(3226), 스레드 중재기(3222), 전송 유닛(3230), 분기 유닛(3232), 한 세트의 SIMD 부동 소수점 유닛(FPU)들(3234), 및 한 세트의 전용 정수 SIMD ALU들(3235)을 포함할 수 있다. 적어도 하나의 실시예에서, GRF(3224) 및 ARF(3226)는, 그래픽 실행 유닛(3208)에서 활성일 수 있는 각각의 동시적 하드웨어 스레드와 연관된 아키텍처 레지스터 파일들 및 일반 레지스터 파일들의 세트를 포함한다. 적어도 하나의 실시예에서, 스레드별 아키텍처 상태는 ARF(3226)에서 유지되는 반면, 스레드 실행 동안 사용되는 데이터는 GRF(3224)에 저장된다. 적어도 하나의 실시예에서, 각각의 스레드에 대한 명령어 포인터들을 포함하는 각각의 스레드의 실행 상태는 ARF(3226)의 스레드 특정 레지스터들에 유지될 수 있다.
적어도 하나의 실시예에서, 그래픽 실행 유닛(3208)은 동시적 멀티스레딩(SMT)과 세밀화된 인터리빙된 멀티스레딩(Interleaved Multi-Threading)(IMT)의 조합인 아키텍처를 갖는다. 적어도 하나의 실시예에서, 아키텍처는, 동시적 스레드들의 타깃 수 및 실행 유닛당 레지스터들의 수에 기반하여 설계 시간에 정밀-조정될 수 있는 모듈식 구성을 가지며, 여기서, 실행 유닛 리소스들은 다수의 동시적 스레드들을 실행하는 데 사용되는 로직에 걸쳐 분할된다.
적어도 하나의 실시예에서, 그래픽 실행 유닛(3208)은, 각각이 상이한 명령어들일 수 있는 다수의 명령어들을 공동-송출할 수 있다. 적어도 하나의 실시예에서, 그래픽 실행 유닛 스레드(3208)의 스레드 중재기(3222)는, 실행을 위해 전송 유닛(3230), 분기 유닛(3232), 또는 SIMD FPU(들)(3234) 중 하나에 명령어들을 디스패치할 수 있다. 적어도 하나의 실시예에서, 각각의 실행 스레드는 GRF(3224) 내의 128개의 범용 레지스터에 액세스할 수 있으며, 여기서, 각각의 레지스터는, 32 비트 데이터 요소들의 SIMD 8-요소 벡터로서 액세스가능한 32 바이트를 저장할 수 있다. 적어도 하나의 실시예에서, 각각의 실행 유닛 스레드는 GRF(3224) 내의 4 킬로바이트에 대한 액세스를 갖지만, 실시예들은 그렇게 제한되지 않고, 다른 실시예들에서 더 많거나 더 적은 레지스터 리소스들이 제공될 수 있다. 적어도 하나의 실시예에서, 최대 7개의 스레드가 동시에 실행될 수 있지만, 실행 유닛당 스레드들의 수가 또한 실시예들에 따라 다를 수 있다. 7개의 스레드가 4 킬로바이트에 액세스할 수 있는 적어도 하나의 실시예에서, GRF(3224)는 총 28 킬로바이트를 저장할 수 있다. 적어도 하나의 실시예에서, 유연한 어드레싱 모드들은, 레지스터들이 함께 어드레싱되는 것을 허용하여 효과적으로 더 넓은 레지스터를 구축하거나 스트라이딩된 직사각형 블록 데이터 구조들을 표현할 수 있다.
적어도 하나의 실시예에서, 메모리 연산들, 샘플러 연산들, 및 다른 더 긴 레이턴시 시스템 통신들은 전송 유닛(3230) 전달되는 메시지에 의해 실행되는 "전송" 명령어들을 통해 디스패치된다. 적어도 하나의 실시예에서, 분기 명령어들은 SIMD 분기 및 최종 수렴을 용이하게 하기 위해 분기 유닛(3232)으로 디스패치된다.
적어도 하나의 실시예에서, 그래픽 실행 유닛(3208)은 부동 소수점 연산들을 수행하기 위한 하나 이상의 SIMD 부동 소수점 유닛(FPU(들))(3234)을 포함한다. 적어도 하나의 실시예에서, FPU(들)(3234)는 또한, 정수 계산을 지원한다. 적어도 하나의 실시예에서, FPU(들)(3234)는 최대 M개의 32 비트 부동 소수점(또는 정수) 연산을 SIMD 실행하거나, 최대 2M개의 16 비트 정수 또는 16 비트 부동 소수점 연산을 SIMD 실행할 수 있다. 적어도 하나의 실시예에서, FPU(들) 중 적어도 하나는 높은 처리량 초월 수학 함수 및 배정밀도 64 비트 부동 소수점을 지원하는 확장된 수학 능력을 제공한다. 적어도 하나의 실시예에서, 한 세트의 8 비트 정수 SIMD ALU들(3235)이 또한 존재하고, 기계 학습 계산들과 연관된 연산들을 수행하도록 특별하게 최적화될 수 있다.
적어도 하나의 실시예에서, 그래픽 실행 유닛(3208)의 다수의 인스턴스들의 어레이들은 그래픽 서브코어 그룹화(예컨대, 서브슬라이스)에서 인스턴스화될 수 있다. 적어도 하나의 실시예에서, 실행 유닛(3208)은 복수의 실행 채널들에 걸쳐 명령어들을 실행할 수 있다. 적어도 하나의 실시예에서, 그래픽 실행 유닛(3208) 상에서 실행되는 각각의 스레드는 상이한 채널 상에서 실행된다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 추론 및/또는 훈련 로직(815)의 부분들 또는 그 전부가 스레드 실행 로직(3200)에 통합될 수 있다. 더욱이, 적어도 하나의 실시예에서, 본원에 설명된 추론 및/또는 훈련 연산들은 도 8a 또는 도 8b에 예시된 로직 이외의 로직을 사용하여 행해질 수 있다. 적어도 하나의 실시예에서, 가중치 파라미터들은, 본원에 설명된 하나 이상의 기계 학습 알고리즘, 신경망 아키텍처, 사용 경우, 또는 훈련 기법을 수행하도록 실행 로직(3200)의 ALU 스레드들을 구성하는 온-칩 또는 오프-칩 메모리 및/또는 레지스터들(도시되거나 도시되지 않음)에 저장될 수 있다.
도 33은 적어도 하나의 실시예에 따른 병렬 처리 유닛("PPU")(3300)을 예시한다. 적어도 하나의 실시예에서, PPU(3300)는, PPU(3300)에 의해 실행되는 경우, PPU(3300)로 하여금 본 개시내용 전반에 걸쳐 설명된 프로세스들 및 기법들 중 일부 또는 그 전부를 수행하게 하는 기계 판독가능 코드로 구성된다. 적어도 하나의 실시예에서, PPU(3300)는, 하나 이상의 집적 회로 디바이스 상에서 구현되고 컴퓨터 판독가능 명령어들(기계 판독가능 명령어들 또는 단순히 명령어들로 또한 지칭됨)을 다중 스레드들 상에서 병렬로 처리하도록 설계된 레이턴시-은닉 기법으로서 멀티스레딩을 활용하는 멀티스레드형 프로세서이다. 적어도 하나의 실시예에서, 스레드는 실행 스레드를 지칭하고, PPU(3300)에 의해 실행되도록 구성되는 명령어들의 세트의 인스턴스화이다. 적어도 하나의 실시예에서, PPU(3300)는, 액정 디스플레이("LCD") 디바이스와 같은 디스플레이 디바이스 상에 디스플레이하기 위한 2차원("2D") 이미지 데이터를 생성하기 위해 3차원("3D") 그래픽 데이터를 처리하기 위한 그래픽 렌더링 파이프라인을 구현하도록 구성되는 그래픽 처리 유닛("GPU")이다. 적어도 하나의 실시예에서, PPU(3300)는, 선형 대수 연산들 및 기계 학습 동작들과 같은 계산들을 수행하는 데 활용된다. 도 33은 단지 예시적인 목적들을 위한 예시적인 병렬 프로세서를 예시하고, 본 개시내용의 범위 내에서 고려되는 프로세서 아키텍처들의 비-제한적인 예로서 해석되어야 하며, 임의의 적합한 프로세서가 이를 보완 및/또는 대체하기 위해 이용될 수 있다.
적어도 하나의 실시예에서, 하나 이상의 PPU(3300)는, 고성능 컴퓨팅("HPC"), 데이터 센터, 및 기계 학습 애플리케이션들을 가속하도록 구성된다. 적어도 하나의 실시예에서, PPU(3300)는, 다음의 비-제한적인 예들: 자율 차량 플랫폼들, 심층 학습, 높은 정확도의 음성, 이미지, 텍스트 인식 시스템들, 지능형 비디오 분석, 분자 시뮬레이션들, 신약 개발, 질환 진단, 일기 예보, 빅 데이터 분석, 천문학, 분자 역학 시뮬레이션, 재무 모델링, 로봇 공학, 공장 자동화, 실시간 언어 번역, 온라인 검색 최적화들, 및 개인화된 사용자 추천들 등을 포함하는 심층 학습 시스템들 및 애플리케이션들을 가속하도록 구성된다.
적어도 하나의 실시예에서, PPU(3300)는, 제한 없이, 입력/출력("I/O") 유닛(3306), 프론트 엔드 유닛(3310), 스케줄러 유닛(3312), 작업 분배 유닛(3314), 허브(3316), 크로스바("XBar")(3320), 하나 이상의 일반 처리 클러스터("GPC")(3318), 및 하나 이상의 파티션 유닛("메모리 파티션 유닛")(3322)을 포함한다. 적어도 하나의 실시예에서, PPU(3300)는, 하나 이상의 고속 GPU 상호연결부("GPU 상호연결부")(3308)를 통해 호스트 프로세서 또는 다른 PPU(3300)에 연결된다. 적어도 하나의 실시예에서, PPU(3300)는 시스템 버스(3302)를 통해 호스트 프로세서 또는 다른 주변 디바이스들에 연결된다. 적어도 하나의 실시예에서, PPU(3300)는 하나 이상의 메모리 디바이스("메모리")(3304)를 포함하는 로컬 메모리에 연결된다. 적어도 하나의 실시예에서, 메모리 디바이스(3304)는, 제한 없이, 하나 이상의 동적 랜덤 액세스 메모리("DRAM") 디바이스를 포함한다. 적어도 하나의 실시예에서, 하나 이상의 DRAM 디바이스는, 다수의 DRAM 다이들이 각각의 디바이스 내에 스택을 이루는 고-대역폭 메모리("HBM") 서브시스템들로서 구성되고/거나 구성가능하다.
적어도 하나의 실시예에서, 고속 GPU 상호연결부(3308)는, 하나 이상의 중앙 처리 유닛("CPU")과 결합된 하나 이상의 PPU(3300)를 포함하고 스케일링하도록 시스템들에 의해 사용되고, PPU(3300)와 CPU들 사이의 캐시 일관성 및 CPU 마스터링을 지원하는 유선 기반 다중-레인 통신 링크를 지칭할 수 있다. 적어도 하나의 실시예에서, 데이터 및/또는 명령들은, 하나 이상의 복사 엔진, 비디오 인코더, 비디오 디코더, 전력 관리 유닛, 및 도 33에 명시적으로 예시되지 않을 수 있는 다른 구성요소와 같은 PPU(3300)의 다른 유닛들로/로부터 허브(3316)를 통해 고속 GPU 상호연결부(3308)에 의해 송신된다.
적어도 하나의 실시예에서, I/O 유닛(3306)은, 시스템 버스(3302)를 통해 호스트 프로세서(도 33에 예시되지 않음)로부터 통신들(예컨대, 명령들, 데이터)을 송신 및 수신하도록 구성된다. 적어도 하나의 실시예에서, I/O 유닛(3306)은, 시스템 버스(3302)를 통해 직접 또는 메모리 브릿지와 같은 하나 이상의 중간 디바이스를 통해 호스트 프로세서와 통신한다. 적어도 하나의 실시예에서, I/O 유닛(3306)은 시스템 버스(3302)를 통해 PPU들(3300) 중 하나 이상과 같은 하나 이상의 다른 프로세서와 통신할 수 있다. 적어도 하나의 실시예에서, I/O 유닛(3306)은 주변 구성요소 상호연결 익스프레스("PCIe") 버스를 통한 통신들을 위한 PCIe 인터페이스를 구현한다. 적어도 하나의 실시예에서, I/O 유닛(3306)은 외부 디바이스들과 통신하기 위한 인터페이스들을 구현한다.
적어도 하나의 실시예에서, I/O 유닛(3306)은 시스템 버스(3302)를 통해 수신된 패킷들을 디코딩한다. 적어도 하나의 실시예에서, 적어도 일부 패킷은 PPU(3300)로 하여금 다양한 동작들을 수행하게 하도록 구성되는 명령들을 표현한다. 적어도 하나의 실시예에서, I/O 유닛(3306)은 디코딩된 명령들을 명령들에 의해 특정된 PPU(3300)의 다양한 다른 유닛들에 송신한다. 적어도 하나의 실시예에서, 명령들은 프론트 엔드 유닛(3310)에 송신되고/거나, 허브(3316) 또는 PPU(3300)의 다른 유닛들, 이를테면, (도 33에 명시적으로 예시되지 않은) 하나 이상의 복사 엔진, 비디오 인코더, 비디오 디코더, 전력 관리 유닛 등에 송신된다. 적어도 하나의 실시예에서, I/O 유닛(3306)은 PPU(3300)의 다양한 논리적 유닛들 사이에서 그리고 그들 간에 통신들을 라우팅하도록 구성된다.
적어도 하나의 실시예에서, 호스트 프로세서에 의해 실행되는 프로그램은, 처리를 위해 작업부하들을 PPU(3300)에 제공하는 버퍼 내의 명령 스트림을 인코딩한다. 적어도 하나의 실시예에서, 작업부하는 명령어들 및 그 명령어들에 의해 처리될 데이터를 포함한다. 적어도 하나의 실시예에서, 버퍼는, 호스트 프로세서 및 PPU(3300) 둘 모두에 의해 액세스가능한(예컨대, 판독/기입) 메모리의 구역이며 ― 호스트 인터페이스 유닛은, I/O 유닛(3306)에 의해 시스템 버스(3302)를 통해 송신된 메모리 요청들을 통해 시스템 버스(3302)에 연결된 시스템 메모리 내의 그 버퍼에 액세스하도록 구성될 수 있다. 적어도 하나의 실시예에서, 호스트 프로세서는 명령 스트림을 버퍼에 기입하고, 이어서, 명령 스트림의 시작에 대한 포인터를 PPU(3300)에 송신하며, 이에 따라, 프론트 엔드 유닛(3310)이, 하나 이상의 명령 스트림에 대한 포인터들을 수신하고 하나 이상의 명령 스트림을 관리하여, 명령 스트림들로부터 명령들을 판독하고 명령들을 PPU(3300)의 다양한 유닛들에 전달한다.
적어도 하나의 실시예에서, 프론트 엔드 유닛(3310)은, 하나 이상의 명령 스트림에 의해 정의된 작업들을 처리하도록 다양한 GPC(3318)를 구성하는 스케줄러 유닛(3312)에 결합된다. 적어도 하나의 실시예에서, 스케줄러 유닛(3312)은 스케줄러 유닛(3312)에 의해 관리되는 다양한 작업들과 관련된 상태 정보를 추적하도록 구성되고, 여기서, 상태 정보는, 작업이 GPC들(3318) 중 어느 GPC에 배정되는지, 작업이 활성인지 또는 비활성인지, 작업과 연관된 우선순위 레벨 등을 표시할 수 있다. 적어도 하나의 실시예에서, 스케줄러 유닛(3312)은 GPC들(3318) 중 하나 이상 상에서의 복수의 작업들의 실행을 관리한다.
적어도 하나의 실시예에서, 스케줄러 유닛(3312)은, GPC들(3318) 상에서의 실행을 위해 작업들을 디스패치하도록 구성되는 작업 분배 유닛(3314)에 결합된다. 적어도 하나의 실시예에서, 작업 분배 유닛(3314)은 스케줄러 유닛(3312)으로부터 수신된 다수의 스케줄링된 작업들을 추적하고, 작업 분배 유닛(3314)은 GPC들(3318) 각각에 대한 계류 중 작업 풀 및 활성 작업 풀을 관리한다. 적어도 하나의 실시예에서, 계류 중 작업 풀은 특정 GPC(3318)에 의해 처리되도록 배정된 작업들을 포함하는 다수의 슬롯들(예컨대, 32개의 슬롯)을 포함하고; 활성 작업 풀은 GPC들(3318)에 의해 활성으로 처리되고 있는 작업들에 대한 다수의 슬롯들(예컨대, 4개의 슬롯)을 포함할 수 있으며, 이에 따라, GPC들(3318) 중 하나가 작업의 실행을 완료하는 경우, 그 작업은 GPC(3318)에 대한 활성 작업 풀로부터 퇴거되고, 계류 중 작업 풀로부터의 다른 작업이 GPC(3318) 상에서의 실행을 위해 선택되고 스케줄링된다. 적어도 하나의 실시예에서, 활성 작업이, 이를테면, 데이터 종속성이 해결되기를 대기하는 동안, GPC(3318) 상에서 유휴인 경우, 그 활성 작업은 GPC(3318)로부터 퇴거되어 그 계류 중 작업 풀로 반환되는 한편, 그 계류 중 작업 풀 내의 다른 작업이 GPC(3318) 상에서의 실행을 위해 선택되고 스케줄링된다.
적어도 하나의 실시예에서, 작업 분배 유닛(3314)은 XBar(3320)를 통해 하나 이상의 GPC(3318)와 통신한다. 적어도 하나의 실시예에서, XBar(3320)는, PPU(3300)의 유닛들 중 많은 유닛을 PPU(3300)의 다른 유닛들에 결합하고 작업 분배 유닛(3314)을 특정 GPC(3318)에 결합하도록 구성될 수 있는 상호연결 네트워크이다. 적어도 하나의 실시예에서, PPU(3300)의 하나 이상의 다른 유닛은 또한, 허브(3316)를 통해 XBar(3320)에 연결될 수 있다.
적어도 하나의 실시예에서, 작업들은 스케줄러 유닛(3312)에 의해 관리되고 작업 분배 유닛(3314)에 의해 GPC들(3318) 중 하나에 디스패치된다. 적어도 하나의 실시예에서, GPC(3318)는 작업을 처리하고 결과들을 생성하도록 구성된다. 적어도 하나의 실시예에서, 결과들은, GPC(3318) 내의 다른 작업들에 의해 소비되거나, XBar(3320)를 통해 상이한 GPC(3318)에 라우팅되거나, 또는 메모리(3304)에 저장될 수 있다. 적어도 하나의 실시예에서, 결과들은, 메모리(3304)에/로부터 데이터를 기입하고 판독하기 위한 메모리 인터페이스를 구현하는 파티션 유닛들(3322)을 통해 메모리(3304)에 기입될 수 있다. 적어도 하나의 실시예에서, 결과들은 고속 GPU 상호연결부(3308)를 통해 다른 PPU(3304) 또는 CPU에 송신될 수 있다. 적어도 하나의 실시예에서, PPU(3300)는, 도 35와 연계하여 본원에서 더 상세히 설명된 바와 같이, 제한 없이, PPU(3300)에 결합된 별개의 그리고 개별 메모리 디바이스(3304)의 수와 동일한 수(U)의 파티션 유닛(3322)을 포함한다.
적어도 하나의 실시예에서, 호스트 프로세서는, 호스트 프로세서 상에서 실행되는 하나 이상의 애플리케이션이 PPU(3300) 상에서의 실행을 위한 연산들을 스케줄링하는 것을 가능하게 하는 애플리케이션 프로그래밍 인터페이스("API")를 구현하는 드라이버 커널을 실행한다. 적어도 하나의 실시예에서, 다수의 컴퓨팅 애플리케이션들이 PPU(3300)에 의해 동시에 실행되고, PPU(3300)는 다수의 컴퓨팅 애플리케이션을 위한 격리, 서비스 품질("QoS"), 및 독립적인 어드레스 공간들을 제공한다. 적어도 하나의 실시예에서, 애플리케이션은, 드라이버 커널이 PPU(3300)에 의한 실행을 위한 하나 이상의 작업을 생성하게 하고, 드라이버 커널이 PPU(3300)에 의해 처리되는 하나 이상의 스트림에 작업들을 출력하는, (예컨대, API 호출의 형태들의) 명령어들을 생성한다. 적어도 하나의 실시예에서, 각각의 작업은, 워프로 지칭될 수 있는 관련 스레드들의 하나 이상의 그룹을 포함한다. 적어도 하나의 실시예에서, 워프는, 병렬로 실행될 수 있는 복수의 관련된 스레드들(예컨대, 32개의 스레드)을 포함한다. 적어도 하나의 실시예에서, 협력 스레드들은, 작업을 수행하고 공유 메모리를 통해 데이터를 교환하는 명령어들을 포함하는 복수의 스레드들을 지칭할 수 있다. 적어도 하나의 실시예에서, 스레드들 및 협력 스레드들은 도 35와 연계하여 더 상세히 설명된다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서는, PPU(3300)에 제공된 정보를 예측 또는 추론하기 위해 신경망과 같은 기계 학습 모델을 훈련시키는 데 사용된다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서(3300)는, 다른 프로세서 또는 시스템에 의해 또는 PPU(3300)에 의해 훈련이 이루어진 훈련된 기계 학습 모델(예컨대, 신경망)에 기반하여 정보를 추론 또는 예측하는 데 사용된다. 적어도 하나의 실시예에서, PPU(3300)는 본원에 설명된 하나 이상의 신경망 사용 경우를 수행하는 데 사용될 수 있다.
도 34는 적어도 하나의 실시예에 따른 일반 처리 클러스터("GPC")(3400)를 예시한다. 적어도 하나의 실시예에서, GPC(3400)는 도 33의 GPC(3318)이다. 적어도 하나의 실시예에서, 각각의 GPC(3400)는, 제한 없이, 처리 작업들을 위한 다수의 하드웨어 유닛을 포함하고, 각각의 GPC(3400)는, 제한 없이, 파이프라인 관리자(3402), 사전-래스터 연산 유닛("preROP")(3404), 래스터 엔진(3408), 작업 분배 크로스바("WDX")(3416), 메모리 관리 유닛("MMU")(3418), 하나 이상의 데이터 처리 클러스터("DPC")(3406), 및 부분들의 임의의 적합한 조합을 포함한다.
적어도 하나의 실시예에서, GPC(3400)의 동작은 파이프라인 관리자(3402)에 의해 제어된다. 적어도 하나의 실시예에서, 파이프라인 관리자(3402)는, GPC(3400)에 할당된 작업들을 처리하기 위한 하나 이상의 DPC(3406)의 구성을 관리한다. 적어도 하나의 실시예에서, 파이프라인 관리자(3402)는, 그래픽 렌더링 파이프라인의 적어도 일부분을 구현하도록 하나 이상의 DPC(3406) 중 적어도 하나를 구성한다. 적어도 하나의 실시예에서, DPC(3406)는 프로그래밍가능 스트리밍 멀티프로세서("SM")(3414) 상에서 정점 셰이더 프로그램을 실행하도록 구성된다. 적어도 하나의 실시예에서, 파이프라인 관리자(3402)는, 적어도 하나의 실시예에서, 작업 분배 유닛으로부터 수신된 패킷들을 GPC(3400) 내의 적절한 논리적 유닛들에 라우팅하도록 구성되고, 일부 패킷들은 preROP(3404) 및/또는 래스터 엔진(3408) 내의 고정 기능 하드웨어 유닛들에 라우팅될 수 있는 한편, 다른 패킷들은 프리미티브 엔진(3412) 또는 SM(3414)에 의한 처리를 위해 DPC들(3406)에 라우팅될 수 있다. 적어도 하나의 실시예에서, 파이프라인 관리자(3402)는, 신경망 모델 및/또는 컴퓨팅 파이프라인을 구현하도록 DPC들(3406) 중 적어도 하나를 구성한다.
적어도 하나의 실시예에서, preROP 유닛(3404)은, 적어도 하나의 실시예에서, 래스터 엔진(3408) 및 DPC들(3406)에 의해 생성된 데이터를 도 33과 연계하여 위에서 더 상세히 설명된 파티션 유닛(3322) 내의 래스터 연산("ROP") 유닛에 라우팅하도록 구성된다. 적어도 하나의 실시예에서, preROP 유닛(3404)은, 컬러 블렌딩을 위한 최적화들을 수행하고, 픽셀 데이터를 조직화하고, 어드레스 변환들을 수행하는 등을 행하도록 구성된다. 적어도 하나의 실시예에서, 래스터 엔진(3408)은, 적어도 하나의 실시예에서, 제한 없이, 다양한 래스터 연산들을 수행하도록 구성되는 다수의 고정 기능 하드웨어 유닛을 포함하고, 래스터 엔진(3408)은, 제한 없이, 설정 엔진, 개략 래스터 엔진, 컬링 엔진, 클리핑 엔진, 정밀한 래스터 엔진, 타일 합침 엔진, 및 이들의 임의의 적합한 조합을 포함한다. 적어도 하나의 실시예에서, 설정 엔진은 변환된 정점들을 수신하여 정점들에 의해 정의된 기하학적 프리미티브와 연관된 평면 방정식들을 생성하고; 평면 방정식들은 개략적 래스터 엔진에 송신되어 프리미티브에 대한 커버리지 정보(예컨대, 타일에 대한 x, y 커버리지 마스크)를 생성하고; 개략적 래스터 엔진의 출력은 z 테스트를 실패한 프리미티브와 연관된 프래그먼트들이 컬링되는 컬링 엔진에 송신되고, 관측 절두체(viewing frustum) 외부에 놓인 프래그먼트들이 클리핑되는 클리핑 엔진에 송신된다. 적어도 하나의 실시예에서, 클리핑 및 컬링에서 잔존한 프래그먼트들은, 정밀한 래스터 엔진에 전달되어, 설정 엔진에 의해 생성된 평면 방정식들에 기반하여 픽셀 프래그먼트들에 대한 속성들을 생성한다. 적어도 하나의 실시예에서, 래스터 엔진(3408)의 출력은, 임의의 적합한 엔티티에 의해, 이를테면 DPC(3406) 내에 구현된 프래그먼트 셰이더에 의해 처리될 프래그먼트들을 포함한다.
적어도 하나의 실시예에서, GPC(3400)에 포함된 각각의 DPC(3406)는, 제한 없이, M-파이프 제어기("MPC")(3410); 프리미티브 엔진(3412); 하나 이상의 SM(3414); 및 이들의 임의의 적합한 조합을 포함한다. 적어도 하나의 실시예에서, MPC(3410)는 DPC(3406)의 동작을 제어하여, 파이프라인 관리자(3402)로부터 수신된 패킷들을 DPC(3406) 내의 적절한 유닛들에 라우팅한다. 적어도 하나의 실시예에서, 정점과 연관된 패킷들은, 메모리로부터 정점과 연관된 정점 속성들을 페치하도록 구성되는 프리미티브 엔진(3412)에 라우팅되고; 대조적으로, 셰이더 프로그램과 연관된 패킷들은 SM(3414)에 송신될 수 있다.
적어도 하나의 실시예에서, SM(3414)은, 제한 없이, 다수의 스레드들에 의해 표현된 작업들을 처리하도록 구성되는 프로그래밍가능 스트리밍 프로세서를 포함한다. 적어도 하나의 실시예에서, SM(3414)은 멀티스레딩되어 특정 그룹의 스레드들로부터의 복수의 스레드들(예컨대, 32개의 스레드)을 동시에 실행하도록 구성되고, 스레드들의 그룹(예컨대, 워프) 내의 각각의 스레드가 동일한 세트의 명령어들에 기반하여 상이한 세트의 데이터를 처리하도록 구성되는 단일 명령어 다중 데이터(SIMD) 아키텍처를 구현한다. 적어도 하나의 실시예에서, 스레드들의 그룹 내의 모든 스레드들은 공통 세트의 명령어들을 실행한다. 적어도 하나의 실시예에서, SM(3414)은, 단일 명령어 다중 스레드("SIMT)" 아키텍처를 구현하며, 여기서, 스레드들의 그룹 내의 각각의 스레드는 그 공통 세트의 명령어들에 기반하여 상이한 세트의 데이터를 처리하도록 구성되지만, 스레드들의 그룹 내의 개별 스레드들은 실행 동안에 분기하는 것이 허용된다. 적어도 하나의 실시예에서, 프로그램 계수기, 호출 스택, 및 실행 상태가 각각의 워프에 대해 유지되어, 워프 내의 스레드들이 분기할 때 워프들과 워프들 내의 직렬 실행 사이의 동시성이 가능해진다. 다른 실시예에서, 프로그램 계수기, 호출 스택, 및 실행 상태가 각각의 개별 스레드에 대해 유지되어, 워프들 내의 그리고 워프들 사이의 모들 스레드들 사이의 동일한 동시성이 가능해진다. 적어도 하나의 실시예에서, 실행 상태가 각각의 개별 스레드에 대해 유지되고, 공통 명령어들을 실행하는 스레드들은 더 양호한 효율성을 위해 수렴되어 병렬로 실행될 수 있다. SM(3414)의 적어도 하나의 실시예가 본원에서 더 상세히 설명된다.
적어도 하나의 실시예에서, MMU(3418)는 GPC(3400)와 메모리 파티션 유닛(예컨대, 도 33의 파티션 유닛(3322)) 사이에 인터페이스를 제공하고, MMU(3418)는 가상 어드레스들의 물리 어드레스들로의 변환, 메모리 보호, 및 메모리 요청들의 중재를 제공한다. 적어도 하나의 실시예에서, MMU(3418)는 가상 어드레스들의 메모리 내의 물리 어드레스들로의 변환을 수행하기 위한 하나 이상의 변환 색인 버퍼("TLB")를 제공한다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서는, GPC(3400)에 제공된 정보를 예측 또는 추론하기 위해 신경망과 같은 기계 학습 모델을 훈련시키는 데 사용된다. 적어도 하나의 실시예에서, GPC(3400)는, 다른 프로세서 또는 시스템에 의해 또는 GPC(3400)에 의해 훈련이 이루어진 훈련된 기계 학습 모델(예컨대, 신경망)에 기반하여 정보를 추론 또는 예측하는 데 사용된다. 적어도 하나의 실시예에서, GPC(3400)는 본원에 설명된 하나 이상의 신경망 사용 경우를 수행하는 데 사용될 수 있다.
도 35는 적어도 하나의 실시예에 따른 병렬 처리 유닛("PPU")의 메모리 파티션 유닛(3500)을 예시한다. 적어도 하나의 실시예에서, 메모리 파티션 유닛(3500)은, 제한 없이, 래스터 연산("ROP") 유닛(3502), 레벨 2("L2") 캐시(3504), 메모리 인터페이스(3506), 및 이들의 임의의 적합한 조합을 포함한다. 적어도 하나의 실시예에서, 메모리 인터페이스(3506)는 메모리에 결합된다. 적어도 하나의 실시예에서, 메모리 인터페이스(3506)는, 고속 데이터 전송을 위해 32 비트, 64 비트, 128 비트, 1024 비트 데이터 버스들 등을 구현할 수 있다. 적어도 하나의 실시예에서, PPU는 파티션 유닛(3500)들의 쌍당 하나의 메모리 인터페이스(3506)로 U개의 메모리 인터페이스(3506)를 포함하며, 여기서, U는 양의 정수이고, 파티션 유닛들(3500)의 각각의 쌍은 대응하는 메모리 디바이스에 연결된다. 예컨대, 적어도 하나의 실시예에서, PPU는 높은 대역폭 메모리 스택들 또는 그래픽 2배 데이터율, 버전 5, 동기식 동적 랜덤 액세스 메모리("GDDR5 SDRAM")와 같은 최대 Y개의 메모리 디바이스에 연결될 수 있다.
적어도 하나의 실시예에서, 메모리 인터페이스(3506)는 고-대역폭 메모리 2세대("HBM2") 메모리 인터페이스를 구현하며, Y는 U의 절반과 동일하다. 적어도 하나의 실시예에서, HBM2 메모리 스택들은 PPU와 함께 물리적 패키지 상에 위치되어, 종래의 GDDR5 SDRAM 시스템과 비교하여 상당한 전력 및 면적 절약을 제공한다. 적어도 하나의 실시예에서, 각각의 HBM2 스택은, 제한 없이, Y = 4인 4개의 메모리 다이를 포함하며, 각각의 HBM2 스택은 총 8개의 채널 및 1024 비트의 데이터 버스 폭을 위해 다이당 2개의 128 비트 채널을 포함한다. 적어도 하나의 실시예에서, 메모리는 데이터를 보호하기 위해 단일 에러 정정 이중 에러 검출(Single-Error Correcting Double-Error Detecting)("SECDED") 에러 정정 코드("ECC")를 지원한다. 적어도 하나의 실시예에서, ECC는 데이터 손상에 민감한 컴퓨팅 애플리케이션들에 대해 더 높은 신뢰성을 제공할 수 있다.
적어도 하나의 실시예에서, PPU는 다중-레벨 메모리 계층구조를 구현한다. 적어도 하나의 실시예에서, 메모리 파티션 유닛(3500)은 중앙 처리 유닛("CPU") 및 PPU 메모리를 위한 단일의 통합 가상 어드레스 공간을 제공하는 통합 메모리를 지원하여, 가상 메모리 시스템들 사이에서의 데이터 공유를 가능하게 한다. 적어도 하나의 실시예에서, 메모리 페이지들이 페이지들에 더 빈번하게 액세스하는 PPU의 물리적 메모리로 이동되는 것을 보장하기 위해, 다른 프로세서들 상에 위치된 메모리에 대한 PPU의 액세스들의 빈도가 추적된다. 적어도 하나의 실시예에서, 고속 GPU 상호연결부(3308)는, PPU가 CPU의 페이지 테이블들에 직접 액세스하는 것을 허용하고 PPU에 의한 CPU 메모리에 대한 완전한 액세스를 제공하는 어드레스 변환 서비스들을 지원한다.
적어도 하나의 실시예에서, 복사 엔진들은 다수의 PPU들 사이에서 또는 PPU들과 CPU들 사이에서 데이터를 전송한다. 적어도 하나의 실시예에서, 복사 엔진들은, 페이지 테이블들에 맵핑되지 않은 어드레스들에 대한 페이지 장애들을 생성할 수 있고, 메모리 파티션 유닛(3500)은 이어서, 페이지 장애들을 서비스하여 어드레스들을 페이지 테이블에 맵핑하며, 그 후, 복사 엔진이 전송을 수행한다. 적어도 하나의 실시예에서, 메모리는 다수의 프로세서들 사이에서의 다수의 복사 엔진 동작들을 위해 고정(즉, 페이징 불가)되어, 이용가능 메모리를 상당히 감소시킨다. 적어도 하나의 실시예에서, 하드웨어 페이지 장애가 있으면, 메모리 페이지들이 상주하는지 여부에 관계없이 어드레스들이 복사 엔진들에 전달될 수 있고, 복사 프로세스가 투명하다.
적어도 하나의 실시예에 따르면, 도 33의 메모리(3304) 또는 다른 시스템 메모리로부터의 데이터는 메모리 파티션 유닛(3500)에 의해 페치되어 L2 캐시(3504)에 저장되며, 그 L2 캐시는 온-칩 위치되고 다양한 GPC들 사이에서 공유된다. 각각의 메모리 파티션 유닛(3500)은, 적어도 하나의 실시예에서, 제한 없이, 대응하는 메모리 디바이스와 연관된 L2 캐시의 적어도 일부분을 포함한다. 적어도 하나의 실시예에서, 하위 레벨 캐시들은 GPC들 내에서 다양한 유닛들로 구현된다. 적어도 하나의 실시예에서, 도 34의 SM들(3414) 각각은 레벨 1("L1") 캐시를 구현할 수 있으며, 여기서, L1 캐시는 특정 SM(3414)에 전용인 사적 메모리이고, SM(3414)의 기능적 유닛들에서의 처리를 위해 L2 캐시(3504)로부터의 데이터가 페치되어 각각의 L1 캐시에 저장된다. 적어도 하나의 실시예에서, L2 캐시(3504)는 도 33에 도시된 메모리 인터페이스(3506) 및 XBar(3320)에 결합된다.
ROP 유닛(3502)은, 적어도 하나의 실시예에서, 컬러 압축, 픽셀 블렌딩 등과 같은 픽셀 컬러와 관련된 그래픽 래스터 연산들을 수행한다. ROP 유닛(3502)은, 적어도 하나의 실시예에서, 래스터 엔진(3408)과 연계하여 깊이 테스팅을 구현하여, 래스터 엔진(3408)의 컬링 엔진으로부터 픽셀 프래그먼트와 연관된 샘플 위치에 대한 깊이를 수신한다. 적어도 하나의 실시예에서, 깊이는 프래그먼트와 연관된 샘플 위치에 대한 깊이 버퍼에서의 대응하는 깊이에 대하여 테스팅된다. 적어도 하나의 실시예에서, 그 프래그먼트가 그 샘플 위치에 대한 그 깊이 테스트를 통과하는 경우, ROP 유닛(3502)은 깊이 버퍼를 업데이트하고 그 깊이 테스트의 결과를 래스터 엔진(3408)에 송신한다. 파티션 유닛들(3500)의 수는 GPC들의 수와 상이할 수 있고, 따라서, 각각의 ROP 유닛(3502)은, 적어도 하나의 실시예에서, 각각의 GPC에 결합될 수 있다는 것이 인식될 것이다. 적어도 하나의 실시예에서, ROP 유닛(3502)은 상이한 GPC들로부터 수신된 패킷들을 추적하고, ROP 유닛(3502)에 의해 생성된 결과가 XBar(3320)를 통해 라우팅되어야 하는지 여부를 결정한다.
도 36은 적어도 하나의 실시예에 따른 스트리밍 멀티프로세서("SM")(3600)를 예시한다. 적어도 하나의 실시예에서, SM(3600)은 도 34의 SM이다. 적어도 하나의 실시예에서, SM(3600)은, 제한 없이, 명령어 캐시(3602), 하나 이상의 스케줄러 유닛(3604), 레지스터 파일(3608), 하나 이상의 처리 코어("코어")(3610), 하나 이상의 특수 기능 유닛("SFU")(3612), 하나 이상의 로딩/저장 유닛("LSU")(3614), 상호연결 네트워크(3616), 공유 메모리/레벨 1("L1") 캐시(3618), 및/또는 이들의 임의의 적합한 조합을 포함한다.
적어도 하나의 실시예에서, 작업 분배 유닛은 병렬 처리 유닛("PPU")들의 일반 처리 클러스터("GPC")들 상에서의 실행을 위해 작업들을 디스패치하고, 각각의 작업은 GPC 내의 특정 데이터 처리 클러스터("DPC")에 할당되고, 작업이 셰이더 프로그램과 연관되는 경우, 작업은 SM들(3600) 중 하나에 할당된다. 적어도 하나의 실시예에서, 스케줄러 유닛(3604)은 작업 분배 유닛으로부터 작업들을 수신하고 SM(3600)에 배정된 하나 이상의 스레드 블록에 대한 명령어 스케줄링을 관리한다. 적어도 하나의 실시예에서, 스케줄러 유닛(3604)은 병렬 스레드들의 워프들로서의 실행을 위해 스레드 블록들을 스케줄링하고, 여기서, 각각의 스레드 블록은 적어도 하나의 워프를 할당받는다. 적어도 하나의 실시예에서, 각각의 워프는 스레드들을 실행한다. 적어도 하나의 실시예에서, 스케줄러 유닛(3604)은 복수의 상이한 스레드 블록들을 관리하고, 워프들을 상이한 스레드 블록들에 할당하고, 이어서, 각각의 클록 사이클 동안, 명령어들을, 복수의 상이한 협력 그룹으로부터 다양한 기능적 유닛들(예컨대, 처리 코어들(3610), SFU들(3612), 및 LSU들(3614))에 디스패치한다.
적어도 하나의 실시예에서, 협력 그룹들은, 개발자들이, 스레드들이 통신하는 세분도를 표현할 수 있게 하여 더 풍부하고 더 효율적인 병렬 분해들의 표현을 가능하게 하는, 통신하는 스레드들의 그룹들을 조직화하기 위한 프로그래밍 모델을 지칭할 수 있다. 적어도 하나의 실시예에서, 협력 론칭 API들은 병렬 알고리즘들의 실행을 위한 스레드 블록들 간의 동기화를 지원한다. 적어도 하나의 실시예에서, 종래의 프로그래밍 모델들의 애플리케이션들은, 협력 스레드들을 동기화하기 위한 단일의 간단한 구성, 즉, 스레드 블록의 모든 스레드들에 걸친 장벽(예컨대, syncthreads() 함수)을 제공한다. 그러나, 적어도 하나의 실시예에서, 프로그래머들은, 스레드 블록 세분도들보다 작은 스레드들의 그룹들을 정의하고 정의된 그룹들 내에서 동기화하여 집합적인 그룹 전체에 걸친 기능 인터페이스들의 형태로 더 높은 성능, 설계 유연성 및 소프트웨어 재사용을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 협력 그룹들은, 프로그래머들이 서브-블록(즉, 단일 스레드만큼 작음) 및 다중-블록 세분도들에서 명시적으로 스레드들의 그룹들을 정의하고 협력 그룹 내의 스레드들에 대한 동기화 등의 집합적 동작들을 수행하는 것을 가능하게 한다. 적어도 하나의 실시예에서, 그 프로그래밍 모델은 소프트웨어 경계들에 걸쳐 명확한 구성(clean composition)을 지원하며, 이에 따라, 라이브러리들 및 유틸리티 기능들은 수렴에 대한 가정들을 할 필요 없이 그들의 로컬 컨텍스트 내에서 안전하게 동기화할 수 있다. 적어도 하나의 실시예에서, 협력 그룹 프리미티브들은, 생성자-소비자 병렬화, 기회주의적 병렬화, 및 스레드 블록들의 전체 그리드에 걸친 전역적 동기화를 제한 없이 포함하는 협력적 병렬화의 새로운 패턴들을 가능하게 한다.
적어도 하나의 실시예에서, 디스패치 유닛(3606)은 하나 이상의 기능적 유닛들 및 스케줄러 유닛(3604)에 명령어들을 송신하도록 구성되고, 제한 없이, 각각의 클록 사이클 동안 동일한 워프로부터의 2개의 상이한 명령어가 디스패치될 수 있게 하는 2개의 디스패치 유닛(3606)을 포함한다. 적어도 하나의 실시예에서, 각각의 스케줄러 유닛(3604)은 단일 디스패치 유닛(3606) 또는 부가적인 디스패치 유닛들(3606)을 포함한다.
적어도 하나의 실시예에서, 각각의 SM(3600)은, 적어도 하나의 실시예에서, 제한 없이, SM(3600)의 기능적 유닛들에 대한 레지스터들의 세트를 제공하는 레지스터 파일(3608)을 포함한다. 적어도 하나의 실시예에서, 레지스터 파일(3608)은, 각각의 기능적 유닛이 레지스터 파일(3608)의 전용 부분을 할당받도록 각각의 기능적 유닛 사이에서 분할된다. 적어도 하나의 실시예에서, 레지스터 파일(3608)은 SM(3600)에 의해 실행되는 상이한 워프들 사이에 분할되고, 레지스터 파일(3608)은 기능적 유닛들의 데이터 경로들에 연결된 피연산자들을 위한 일시적 저장을 제공한다. 적어도 하나의 실시예에서, 각각의 SM(3600)은, 제한 없이, 복수(L개)의 처리 코어(3610)를 포함하며, 여기서 L은 양의 정수이다. 적어도 하나의 실시예에서, SM(3600)은, 제한 없이, 많은 수(예컨대, 128개 이상)의 별개의 처리 코어(3610)를 포함한다. 적어도 하나의 실시예에서, 각각의 처리 코어(3610)는, 제한 없이, 부동 소수점 산술 로직 유닛 및 정수 산술 로직 유닛을 제한 없이 포함하는, 완전 파이프라이닝된, 단정밀도, 배정밀도, 및/또는 혼합 정밀도 처리 유닛을 포함한다. 적어도 하나의 실시예에서, 부동 소수점 산술 로직 유닛은 부동 소수점 산술을 위한 IEEE 754-2008 표준을 구현한다. 적어도 하나의 실시예에서, 처리 코어(3610)는, 제한 없이, 64개의 단정밀도(32 비트) 부동 소수점 코어들, 64개의 정수 코어들, 32개의 배정밀도(64 비트) 부동 소수점 코어들, 및 8개의 텐서 코어들을 포함한다.
텐서 코어들은, 적어도 하나의 실시예에 따라 행렬 연산들을 수행하도록 구성된다. 적어도 하나의 실시예에서, 하나 이상의 텐서 코어가 처리 코어들(3610)에 포함된다. 적어도 하나의 실시예에서, 텐서 코어들은, 심층 학습 행렬 산술, 이를테면, 신경망 훈련 및 추론을 위한 콘볼루션 연산들을 수행하도록 구성된다. 적어도 하나의 실시예에서, 각각의 텐서 코어는 4 x 4 행렬에 대해 동작하고, 행렬 곱셈 및 누산 연산, 즉, D = A X B + C를 수행하며, 여기서, A, B, C, 및 D는 4 x 4 행렬들이다.
적어도 하나의 실시예에서, 행렬 곱셈 입력들 A 및 B는 16 비트 부동 소수점 행렬들이고, 누산 행렬들 C 및 D는 16 비트 부동 소수점 또는 32 비트 부동 소수점 행렬들이다. 적어도 하나의 실시예에서, 텐서 코어들은, 32 비트 부동 소수점 누산으로 16 비트 부동 소수점 입력 데이터에 대해 동작한다. 적어도 하나의 실시예에서, 16 비트 부동 소수점 곱셈은 64개의 연산을 사용하고 완전한 정밀도 곱을 생성하는데, 그 완전한 정밀도 곱은 이어서, 4 x 4 x 4 행렬 곱셈을 위해 다른 중간 곱들과 함께 32 비트 부동 소수점 가산을 사용하여 누산된다. 텐서 코어들은, 적어도 하나의 실시예에서, 이러한 더 작은 요소들로부터 구축되는, 훨씬 더 큰 2차원 또는 더 높은 차원의 행렬 연산들을 수행하는 데 사용된다. 적어도 하나의 실시예에서, CUDA 9 C++ API와 같은 API는 특수화된 행렬 로딩, 행렬 곱셈 및 누산, 및 행렬 저장 연산들을 노출시켜 CUDA-C++ 프로그램으로부터 텐서 코어들을 효율적으로 사용한다. 적어도 하나의 실시예에서, CUDA 레벨에서, 워프-레벨 인터페이스는, 워프의 32개의 스레드 모두에 걸쳐 있는 16 x 16 크기 행렬들을 가정한다.
적어도 하나의 실시예에서, 각각의 SM(3600)은, 제한 없이, 특수 기능들(예컨대, 속성 평가, 역수 제곱근 등)을 수행하는 M개의 SFU(3612)를 포함한다. 적어도 하나의 실시예에서, SFU들(3612)은, 제한 없이, 계층구조적 트리 데이터 구조를 순회(traverse)하도록 구성되는 트리 순회 유닛을 포함한다. 적어도 하나의 실시예에서, SFU들(3612)은, 제한 없이, 텍스처 맵 필터링 연산들을 수행하도록 구성되는 텍스처 유닛을 포함한다. 적어도 하나의 실시예에서, 텍스처 유닛들은 SM(3600)에 의해 실행되는 셰이더 프로그램들에서 사용하기 위한 샘플링된 텍스처 값들을 생성하기 위해 메모리 및 샘플 텍스처 맵들로부터 텍스처 맵들(예컨대, 텍셀들의 2D 어레이)을 로딩하도록 구성된다. 적어도 하나의 실시예에서, 텍스처 맵들은 공유 메모리/L1 캐시(3618)에 저장된다. 적어도 하나의 실시예에서, 텍스처 유닛들은, 적어도 하나의 실시예에 따라, 밉맵(mip-map)들(예컨대, 다양한 레벨들의 세부사항의 텍스처 맵들)을 사용하는 필터링 연산들과 같은 텍스처 연산들을 구현한다. 적어도 하나의 실시예에서, 각각의 SM(3600)은, 제한 없이, 2개의 텍스처 유닛을 포함한다.
각각의 SM(3600)은, 적어도 하나의 실시예에서, 제한 없이, 공유 메모리/L1 캐시(3618)와 레지스터 파일(3608) 사이의 로딩 및 저장 동작들을 구현하는 N개의 LSU(3614)를 포함한다. 상호연결 네트워크(3616)는, 적어도 하나의 실시예에서, 각각의 기능적 유닛을 레지스터 파일(3608)에 그리고 LSU(3614)를 레지스터 파일(3608) 및 공유 메모리/L1 캐시(3618)에 연결한다. 적어도 하나의 실시예에서, 상호연결 네트워크(3616)는, 임의의 기능적 유닛들을 레지스터 파일(3608) 내의 임의의 레지스터들에 연결하고 LSU들(3614)을 레지스터 파일(3608) 및 공유 메모리/L1 캐시(3618) 내의 메모리 위치들에 연결하도록 구성될 수 있는 크로스바이다.
적어도 하나의 실시예에서, 공유 메모리/L1 캐시(3618)는, 적어도 하나의 실시예에서, SM(3600)과 프리미티브 엔진 사이 및 SM(3600)의 스레드들 사이에서의 데이터 저장 및 통신을 허용하는 온-칩 메모리의 어레이이다. 적어도 하나의 실시예에서, 공유 메모리/L1 캐시(3618)는, 제한 없이, 128 KB의 저장 용량을 포함하고, SM(3600)으로부터 파티션 유닛으로의 경로 내에 있다. 적어도 하나의 실시예에서, 공유 메모리/L1 캐시(3618)는, 적어도 하나의 실시예에서, 판독들 및 기입들을 캐싱하는 데 사용된다. 적어도 하나의 실시예에서, 공유 메모리/L1 캐시(3618), L2 캐시, 및 메모리 중 하나 이상은 백킹 저장소(backing store)이다.
데이터 캐시와 공유 메모리 기능성을 단일 메모리 블록으로 결합하는 것은, 적어도 하나의 실시예에서, 둘 모두의 유형들의 메모리 액세스들에 대해 개선된 성능을 제공한다. 적어도 하나의 실시예에서, 이를테면, 공유 메모리가 용량의 절반을 사용하도록 구성되는 경우, 용량은 공유 메모리를 사용하지 않는 프로그램들에 의해 캐시로서 사용되거나 캐시로서 사용가능하며, 텍스처 및 로딩/저장 동작들은 나머지 용량을 사용할 수 있다. 공유 메모리/L1 캐시(3618) 내의 통합은, 적어도 하나의 실시예에 따라, 공유 메모리/L1 캐시(3618)가 스트리밍 데이터를 위한 높은 처리량 도관으로서 기능하는 한편, 동시에, 빈번하게 재사용되는 데이터에 대한 높은 대역폭 및 낮은 레이턴시 액세스를 제공하는 것을 가능하게 한다. 적어도 하나의 실시예에서, 범용 병렬 계산을 위해 구성될 때, 그래픽 처리와 비교할 때 더 간단한 구성이 사용될 수 있다. 적어도 하나의 실시예에서, 고정 기능 그래픽 처리 유닛들이 우회되어, 훨씬 더 간단한 프로그래밍 모델이 생성된다. 범용 병렬 계산 구성에서, 작업 분배 유닛은, 적어도 하나의 실시예에서, 스레드들의 블록들을 DPC들에 직접 배정 및 분배한다. 적어도 하나의 실시예에서, 블록 내의 스레드들은, 공통 프로그램을 실행하여, 계산에서 고유 스레드 ID를 사용하여 각각의 스레드가 고유 결과들을 생성하는 것을 보장하고, SM(3600)을 사용하여 프로그램을 실행하고 계산들을 수행하고, 공유 메모리/L1 캐시(3618)를 사용하여 스레드들 사이에서 통신하고, LSU(3614)를 사용하여 공유 메모리/L1 캐시(3618) 및 메모리 파티션 유닛을 통해 전역 메모리를 판독하고 기입한다. 적어도 하나의 실시예에서, 범용 병렬 계산을 위해 구성될 때, SM(3600)은, 스케줄러 유닛(3604)이 DPC들 상에 새로운 작업을 론칭하는 데 사용할 수 있는 명령들을 기입한다.
적어도 하나의 실시예에서, PPU는, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버들, 슈퍼컴퓨터들, 스마트폰(예컨대, 무선, 핸드헬드 디바이스), 개인 휴대 정보 단말기("PDA”), 디지털 카메라, 차량, 헤드 장착형 디스플레이, 핸드헬드 전자 디바이스 등에 포함되거나 그에 결합된다. 적어도 하나의 실시예에서, PPU는 단일 반도체 기판 상에 구현된다. 적어도 하나의 실시예에서, PPU는, 하나 이상의 다른 디바이스, 이를테면, 부가적인 PPU들, 메모리, 축소 명령어 세트 컴퓨터("RISC") CPU, 메모리 관리 유닛("MMU"), 디지털-아날로그 변환기("DAC") 등과 함께 시스템 온 칩("SoC")에 포함된다.
적어도 하나의 실시예에서, PPU는 하나 이상의 메모리 디바이스를 포함하는 그래픽 카드 상에 포함될 수 있다. 적어도 하나의 실시예에서, 그 그래픽 카드는, 데스크톱 컴퓨터의 마더보드 상의 PCIe 슬롯과 인터페이싱하도록 구성될 수 있다. 적어도 하나의 실시예에서, 그 PPU는 마더보드의 칩셋에 포함된 통합 그래픽 처리 유닛("iGPU")일 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다. 적어도 하나의 실시예에서, 심층 학습 애플리케이션 프로세서는, SM(3600)에 제공된 정보를 예측 또는 추론하기 위해 신경망과 같은 기계 학습 모델을 훈련시키는 데 사용된다. 적어도 하나의 실시예에서, SM(3600)은, 다른 프로세서 또는 시스템에 의해 또는 SM(3600)에 의해 훈련이 이루어진 훈련된 기계 학습 모델(예컨대, 신경망)에 기반하여 정보를 추론 또는 예측하는 데 사용된다. 적어도 하나의 실시예에서, SM(3600)은 본원에 설명된 하나 이상의 신경망 사용 경우를 수행하는 데 사용될 수 있다.
의료 애플리케이션들에서의 이미지 추론 및 이미지 처리와 같은 진보된 컴퓨팅을 위한 가상화된 컴퓨팅 플랫폼과 관련된 실시예들이 개시된다. 제한 없이, 실시예들은, 방사선촬영, 자기 공명 이미징(MRI), 핵 의학, 초음파, 초음파검사, 탄성영상, 광음향 이미징, 단층촬영, 심초음파검사, 기능적 근적외선 분광법, 및 자기 입자 이미징, 또는 이들의 조합을 포함할 수 있다. 적어도 하나의 실시예에서, 본원에 설명된 가상화된 컴퓨팅 플랫폼 및 연관된 프로세스들은 부가적으로 또는 대안적으로, 제한 없이, 과학 수사 분석, 지하 탐지 및 이미징(예컨대, 유전 탐사, 고고학, 고생물학 등), 지형학, 해양학, 지질학, 골학, 기상학, 지능형 영역 또는 객체 추적 및 모니터링, 센서 데이터 처리(예컨대, RADAR, SONAR, LIDAR 등), 및/또는 유전체학 및 유전자 시퀀싱에서 사용될 수 있다.
도 37을 참조하면, 도 37은 적어도 하나의 실시예에 따른, 이미지 처리 및 추론 파이프라인을 생성 및 배치하는 프로세스(3700)에 대한 예시적인 데이터 흐름도이다. 적어도 하나의 실시예에서, 프로세스(3700)는, 하나 이상의 시설(3702), 이를테면, 의료 시설들, 병원들, 의료 기관들, 클리닉들, 연구 또는 진단 실험실 등에서, 이미징 디바이스들, 처리 디바이스들, 유전체학 디바이스들, 유전자 시퀀싱 디바이스들, 방사선학 디바이스들, 및/또는 다른 디바이스 유형들과 함께 사용하기 위해 배치될 수 있다. 적어도 하나의 실시예에서, 프로세스(3700)는, 유전체 분석 및 시퀀싱 데이터에 대한 추론을 수행하도록 배치될 수 있다. 본원에 설명된 시스템 및 프로세스들을 사용하여 수행될 수 있는 유전체 분석들의 예들은, 제한 없이, 변이 추출(variant calling), 돌연변이 검출, 및 유전자 발현 정량화를 포함한다.
적어도 하나의 실시예에서, 프로세스(3700)는, 훈련 시스템(3704) 및/또는 배치 시스템(3706) 내에서 실행될 수 있다. 적어도 하나의 실시예에서, 훈련 시스템(3704)은, 배치 시스템(3706)에서 사용하기 위한 기계 학습 모델들(예컨대, 신경망들, 객체 검출 알고리즘들, 컴퓨터 비전 알고리즘들 등)의 훈련, 배치, 및 구현을 수행하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706)은, 시설(3702)에서의 기반구조 요건들을 감소시키기 위해 분산 컴퓨팅 환경 간에 처리 및 컴퓨팅 리소스들을 오프로드하도록 구성될 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706)은, 시설(3702)에 있는 이미징 디바이스들(예컨대, MRI, CT 스캔, X선, 초음파 등) 또는 시퀀싱 디바이스들과 함께 사용하기 위한 가상 기기들을 선택, 맞춤화, 및 구현하기 위한 간소화된 플랫폼을 제공할 수 있다. 적어도 하나의 실시예에서, 가상 기기들은, 이미징 디바이스들, 시퀀싱 디바이스들, 방사선학 디바이스들, 및/또는 다른 디바이스 유형들에 의해 생성되는 이미징 데이터에 대해 하나 이상의 처리 연산을 수행하기 위한, 소프트웨어에 의해 정의되는 애플리케이션들을 포함할 수 있다. 적어도 하나의 실시예에서, 파이프라인 내의 하나 이상의 애플리케이션은, 애플리케이션들의 실행 동안 배치 시스템(3706)의 서비스들(예컨대, 추론, 시각화, 컴퓨팅, AI 등)을 사용하거나 호출할 수 있다.
적어도 하나의 실시예에서, 진보된 처리 및 추론 파이프라인들에서 사용되는 애플리케이션들 중 일부는, 하나 이상의 처리 단계를 수행하기 위해 기계 학습 모델들 또는 다른 AI를 사용할 수 있다. 적어도 하나의 실시예에서, 기계 학습 모델들은, 시설(3702)에서 생성된(그리고 시설(3702)에 있는 하나 이상의 의료영상 저장 및 통신 시스템(picture archiving and communication system)(PACS) 서버 상에 저장된) 데이터(3708)(이를테면, 이미징 데이터)를 사용하여 시설(3702)에서 훈련될 수 있거나, 다른 시설 또는 시설들(예컨대, 상이한 병원, 실험실, 클리닉 등)로부터의 이미징 또는 시퀀싱 데이터(3708)를 사용하여 훈련될 수 있거나, 또는 이들의 조합일 수 있다. 적어도 하나의 실시예에서, 훈련 시스템(3704)은, 배치 시스템(3706)에 대한 작동하고 배치가능한 기계 학습 모델들을 생성하기 위한 애플리케이션들, 서비스들, 및/또는 다른 리소스들을 제공하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 모델 레지스트리(3724)는 버전관리(versioning) 및 객체 메타데이터를 지원할 수 있는 객체 저장소에 의해 백킹될 수 있다. 적어도 하나의 실시예에서, 객체 저장소는, 예컨대, 클라우드 플랫폼 내로부터 클라우드 저장소(예컨대, 도 38의 클라우드(3826)) 호환가능 애플리케이션 프로그래밍 인터페이스(API)를 통해 액세스가능할 수 있다. 적어도 하나의 실시예에서, 모델 레지스트리(3724) 내의 기계 학습 모델들은, API와 상호작용하는 시스템의 개발자들 또는 파트너들에 의해 업로드, 목록화, 수정, 또는 삭제될 수 있다. 적어도 하나의 실시예에서, API는, 적절한 자격증명들을 갖는 사용자들이 모델들을 애플리케이션들과 연관시키는 것을 허용하는 방법들에 대한 액세스를 제공할 수 있으며, 이에 따라, 모델들은 애플리케이션들의 컨테이너화된 인스턴스화(containerized instantiation)들의 실행의 일부로서 실행될 수 있다.
적어도 하나의 실시예에서, 훈련 파이프라인(3804)(도 38)은, 시설(3702)이 그들 자신의 기계 학습 모델을 훈련시키고 있거나 또는 최적화되거나 업데이트될 필요가 있는 기존 기계 학습 모델을 갖고 있는 시나리오를 포함할 수 있다. 적어도 하나의 실시예에서, 이미징 디바이스(들), 시퀀싱 디바이스들, 및/또는 다른 디바이스 유형들에 의해 생성된 이미징 데이터(3708)가 수신될 수 있다. 적어도 하나의 실시예에서, 일단 이미징 데이터(3708)가 수신되면, AI-보조 주석(3710)은 기계 학습 모델에 대한 실측 정보 데이터로서 사용될 이미징 데이터(3708)에 대응하는 주석들을 생성하는 데 도움을 주기 위해 사용될 수 있다. 적어도 하나의 실시예에서, AI-보조 주석(3710)은, (예컨대, 특정 디바이스로부터의) 특정 유형들의 이미징 데이터(3708) 및/또는 이미징 데이터(3708) 내의 특정 유형들의 이상들에 대응하는 주석들을 생성하도록 훈련될 수 있는 하나 이상의 기계 학습 모델(예컨대, 콘볼루션 신경망(CNN))을 포함할 수 있다. 적어도 하나의 실시예에서, AI-보조 주석들(3710)은 직접 사용될 수 있거나, (예컨대, 연구자, 임상의, 의사, 과학자 등에 의해) 주석 툴을 사용하여 조정 또는 정밀-조정되어 실측 정보 데이터를 생성할 수 있다. 적어도 하나의 실시예에서, 일부 예들에서, 라벨링된 클리닉 데이터(3712)(예컨대, 임상의, 의사, 과학자, 기술자 등에 의해 제공된 주석들)는 기계 학습 모델을 훈련시키기 위한 실측 정보 데이터로서 사용될 수 있다. 적어도 하나의 실시예에서, AI-보조 주석(3710), 라벨링된 클리닉 데이터(3712), 또는 이들의 조합은 기계 학습 모델을 훈련시키기 위한 실측 정보 데이터로서 사용될 수 있다. 적어도 하나의 실시예에서, 훈련된 기계 학습 모델은 출력 모델(3716)로 지칭될 수 있고, 본원에 설명된 바와 같은 배치 시스템(3706)에 의해 사용될 수 있다.
적어도 하나의 실시예에서, 훈련 파이프라인(3804)(도 38)은, 시설(3702)이 배치 시스템(3706) 내의 하나 이상의 애플리케이션에 대한 하나 이상의 처리 작업을 수행하는 데 사용하기 위한 기계 학습 모델을 필요로 하지만 시설(3702)이 현재 그러한 기계 학습 모델을 갖고 있지 않을 수 있는(또는 그러한 목적들에 최적화되거나, 효율적이거나, 효과적인 모델을 갖고 있지 않을 수 있는) 시나리오를 포함할 수 있다. 적어도 하나의 실시예에서, 기존 기계 학습 모델은 모델 레지스트리(3724)로부터 선택될 수 있다. 적어도 하나의 실시예에서, 모델 레지스트리(3724)는, 이미징 데이터에 대해 다양한 상이한 추론 작업들을 수행하도록 훈련된 기계 학습 모델을 포함할 수 있다. 적어도 하나의 실시예에서, 모델 레지스트리(3724) 내의 기계 학습 모델들은 시설(3702)과 상이한 시설들(예컨대, 원격으로 위치된 시설들)로부터의 이미징 데이터에 대해 훈련되었을 수 있다. 적어도 하나의 실시예에서, 기계 학습 모델들은, 하나의 위치, 2개의 위치, 또는 임의의 수의 위치로부터의 이미징 데이터에 대해 훈련되었을 수 있다. 적어도 하나의 실시예에서, 특정 위치로부터의 이미징 데이터에 대해 훈련될 때, 훈련은 그 위치에서, 또는 적어도 (예컨대, HIPAA 규정, 개인정보(privacy) 규정들 등을 준수하기 위해) 이미징 데이터의 기밀성을 보호하거나 이미징 데이터가 구외(off-premise)로 전송되는 것을 제한하는 방식으로 발생할 수 있다. 적어도 하나의 실시예에서, 일단 모델이 하나의 위치에서 훈련 ― 또는 부분적으로 훈련 ― 되면, 기계 학습 모델은 모델 레지스트리(3724)에 부가될 수 있다. 적어도 하나의 실시예에서, 기계 학습 모델은 이어서, 임의의 수의 다른 시설에서 재훈련되거나 업데이트될 수 있고, 재훈련되거나 업데이트된 모델은 모델 레지스트리(3724)에서 이용가능하게 될 수 있다. 적어도 하나의 실시예에서, 이어서, 모델 레지스트리(3724)로부터 기계 학습 모델 ― 출력 모델(3716)로 지칭됨 ― 이 선택될 수 있고, 배치 시스템(3706)에서 사용되어, 배치 시스템의 하나 이상의 애플리케이션에 대한 하나 이상의 처리 작업을 수행할 수 있다.
적어도 하나의 실시예에서, 훈련 파이프라인(3804)(도 38)은, 시설(3702)이 배치 시스템(3706) 내의 하나 이상의 애플리케이션에 대한 하나 이상의 처리 작업을 수행하는 데 사용하기 위한 기계 학습 모델을 요구하지만 시설(3702)이 현재 그러한 기계 학습 모델을 갖고 있지 않을 수 있는(또는 그러한 목적들에 최적화되거나, 효율적이거나, 효과적인 모델을 갖고 있지 않을 수 있는) 것을 포함하는 시나리오에서 사용될 수 있다. 적어도 하나의 실시예에서, 모델 레지스트리(3724)로부터 선택된 기계 학습 모델은, 모집단들의 차이들, 유전적 변이들, 기계 학습 모델을 훈련시키는 데 사용되는 훈련 데이터의 강건성, 훈련 데이터의 이상들의 다양성, 및/또는 훈련 데이터의 다른 문제들 때문에, 시설(3702)에서 생성된 이미징 데이터(3708)에 대해 정밀-조정되거나 최적화되지 않았을 수 있다. 적어도 하나의 실시예에서, AI-보조 주석(3710)은 기계 학습 모델을 재훈련시키거나 업데이트하기 위한 실측 정보 데이터로서 사용될 이미징 데이터(3708)에 대응하는 주석들을 생성하는 것을 돕기 위해 사용될 수 있다. 적어도 하나의 실시예에서, 라벨링된 클리닉 데이터(3712)(예컨대, 임상의, 의사, 과학자 등에 의해 제공된 주석들)는 기계 학습 모델을 훈련시키기 위한 실측 정보 데이터로서 사용될 수 있다. 적어도 하나의 실시예에서, 기계 학습 모델을 재훈련시키거나 업데이트하는 것은 모델 훈련(3714)으로 지칭될 수 있다. 적어도 하나의 실시예에서, 모델 훈련(3714) ― 예컨대, AI-보조 주석(3710), 라벨링된 클리닉 데이터(3712), 또는 이들의 조합 ― 은 기계 학습 모델을 재훈련시키거나 업데이트하기 위한 실측 정보 데이터로서 사용될 수 있다.
적어도 하나의 실시예에서, 배치 시스템(3706)은, 소프트웨어(3718), 서비스들(3720), 하드웨어(3722), 및/또는 다른 구성요소들, 특징들, 및 기능성을 포함할 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706)은 소프트웨어 "스택"을 포함할 수 있으며, 이에 따라, 소프트웨어(3718)는, 서비스들(3720) 위에 구축될 수 있고 서비스들(3720)을 사용하여 처리 작업들 중 일부 또는 그 전부를 수행할 수 있고, 서비스들(3720) 및 소프트웨어(3718)는, 하드웨어(3722) 위에 구축될 수 있고 하드웨어(3722)를 사용하여 배치 시스템(3706)의 처리, 저장, 및/또는 다른 컴퓨팅 작업들을 실행할 수 있다.
적어도 하나의 실시예에서, 소프트웨어(3718)는 임의의 수의 상이한 컨테이너를 포함할 수 있으며, 여기서, 각각의 컨테이너는 애플리케이션의 인스턴스화를 실행할 수 있다. 적어도 하나의 실시예에서, 각각의 애플리케이션은 진보된 처리 및 추론 파이프라인에서 하나 이상의 처리 작업(예컨대, 추론, 객체 검출, 피쳐 검출, 세그먼트화, 이미지 향상, 교정 등)을 수행할 수 있다. 적어도 하나의 실시예에서, 각각의 유형의 이미징 디바이스(예컨대, CT, MRI, X선, 초음파, 초음파검사, 심초음파검사 등), 시퀀싱 디바이스, 방사선학 디바이스, 유전체학 디바이스 등에 대해, 디바이스에 의해 생성된 이미징 데이터(3708)(또는 본원에 설명된 것들과 같은 다른 데이터 유형들)에 관하여 데이터 처리 작업을 수행할 수 있는 임의의 수의 컨테이너가 존재할 수 있다. 적어도 하나의 실시예에서, 진보된 처리 및 추론 파이프라인은, (예컨대, 시설(3702)에서의 저장 및 디스플레이를 위해 출력들을 다시, 사용가능한 데이터 유형, 이를테면, 의료용 디지털 이미징 및 통신(DICOM) 데이터, 방사선학 정보 시스템(RIS) 데이터, 임상 정보 시스템(CIS) 데이터, 원격 절차 호출(RPC) 데이터, 표현 상태 전송(REST) 인터페이스를 실질적으로 준수하는 데이터, 파일-기반 인터페이스를 실질적으로 준수하는 데이터, 및/또는 미가공 데이터로 변환하기 위해) 파이프라인을 통한 처리 후에 각각의 컨테이너에 의한 사용을 위해 그리고/또는 시설(3702)에 의한 사용을 위해 이미징 데이터를 수신 및 구성하는 컨테이너들에 부가하여, 이미징 데이터(3708)를 처리하기 위해 요망되거나 요구되는 상이한 컨테이너들의 선택들에 기반하여 정의될 수 있다. 적어도 하나의 실시예에서, (예컨대, 파이프라인을 구성하는) 소프트웨어(3718) 내의 컨테이너들의 조합은 (본원에서 더 상세히 설명되는 바와 같이) 가상 기기로 지칭될 수 있고, 가상 기기는 서비스(3720) 및 하드웨어(3722)를 활용하여 컨테이너들 내에 인스턴스화된 애플리케이션들의 일부 또는 모든 처리 작업들을 실행할 수 있다.
적어도 하나의 실시예에서, 데이터 처리 파이프라인은, 추론 요청(예컨대, 임상의, 의사, 방사선 전문의 등과 같은 배치 시스템(3706)의 사용자로부터의 요청)에 대한 응답으로, DICOM, RIS, CIS, REST 준수, RPC, 미가공, 및/또는 다른 포맷의 입력 데이터(예컨대, 이미징 데이터(3708))를 수신할 수 있다. 적어도 하나의 실시예에서, 입력 데이터는, 하나 이상의 이미징 디바이스, 시퀀싱 디바이스, 방사선학 디바이스, 유전체학 디바이스, 및/또는 다른 디바이스 유형에 의해 생성된 하나 이상의 이미지, 비디오, 및/또는 다른 데이터 표현을 나타낼 수 있다. 적어도 하나의 실시예에서, 데이터는, 하나 이상의 애플리케이션에 의한 처리를 위해 데이터를 준비하기 위한 데이터 처리 파이프라인의 일부로서 사전-처리를 겪을 수 있다. 적어도 하나의 실시예에서, 다음 애플리케이션을 위한 출력 데이터를 준비하기 위해 그리고/또는 (예컨대, 추론 요청에 대한 응답으로서) 송신을 위한 그리고/또는 사용자에 의한 사용을 위한 출력 데이터를 준비하기 위해 파이프라인의 하나 이상의 추론 작업 또는 다른 처리 작업의 출력에 대해 사후-처리가 수행될 수 있다. 적어도 하나의 실시예에서, 추론 작업들은, 하나 이상의 기계 학습 모델, 이를테면, 훈련 시스템(3704)의 출력 모델들(3716)을 포함할 수 있는 훈련된 또는 배치된 신경망들에 의해 수행될 수 있다.
적어도 하나의 실시예에서, 데이터 처리 파이프라인의 작업들은, 기계 학습 모델들을 참조할 수 있는 애플리케이션 및 가상화된 컴퓨팅 환경의 별개의 완전히 기능적인 인스턴스화를 각각이 표현하는 컨테이너(들) 내에 캡슐화될 수 있다. 적어도 하나의 실시예에서, 컨테이너들 또는 애플리케이션들은 (본원에서 더 상세히 설명되는) 컨테이너 레지스트리의 사적(예컨대, 제한된 액세스) 영역 내에 게시될 수 있고, 훈련된 또는 배치된 모델들은 모델 레지스트리(3724)에 저장되고 하나 이상의 애플리케이션과 연관될 수 있다. 적어도 하나의 실시예에서, 애플리케이션들의 이미지들(예컨대, 컨테이너 이미지들)은 컨테이너 레지스트리에서 이용가능할 수 있고, 일단 파이프라인에서의 배치를 위해 컨테이너 레지스트리로부터 사용자에 의해 선택되면, 이미지는, 사용자의 시스템에 의한 사용을 위해 애플리케이션의 인스턴스화를 위한 컨테이너를 생성하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 개발자들(예컨대, 소프트웨어 개발자들, 임상의들, 의사들 등)은 공급된 데이터에 대해 이미지 처리 및/또는 추론을 수행하기 위한 애플리케이션들을 (예컨대, 컨테이너들로서) 개발, 게시, 및 저장할 수 있다. 적어도 하나의 실시예에서, 개발, 게시, 및/또는 저장은 (예컨대, 개발된 애플리케이션 및/또는 컨테이너가 시스템을 준수하거나 그와 호환가능한 것을 보장하기 위해) 시스템과 연관된 소프트웨어 개발 키트(SDK)를 사용하여 수행될 수 있다. 적어도 하나의 실시예에서, 개발되는 애플리케이션은 시스템(예컨대, 도 38의 시스템(3800))으로 서비스들(3720) 중 적어도 일부를 지원할 수 있는 SDK로 로컬로(예컨대, 제1 시설에서, 제1 시설로부터의 데이터에 대해) 테스팅될 수 있다. 적어도 하나의 실시예에서, DICOM 객체들은 1개 내지 수백 개의 이미지 또는 다른 데이터 유형 중 임의의 것을 포함할 수 있기 때문에, 그리고 데이터의 변동으로 인해, 개발자는 착신 DICOM 데이터의 추출 및 준비를 관리하는 것(예컨대, 애플리케이션에 대한 구성들을 설정하는 것, 애플리케이션으로의 사전-처리를 구축하는 것 등)을 담당할 수 있다. 적어도 하나의 실시예에서, 일단 시스템(3800)에 의해 (예컨대, 정확도, 안전성, 환자 개인정보 등에 대해) 검증되면, 애플리케이션은, 사용자의 시설(예컨대, 제2 시설)에서 데이터에 관한 하나 이상의 처리 작업을 수행하기 위한 사용자(예컨대, 병원, 클리닉, 실험실, 의료인 등)에 의한 선택 및/또는 구현에 대해 컨테이너 레지스트리에서 이용가능할 수 있다.
적어도 하나의 실시예에서, 개발자는 이어서, 시스템(예컨대, 도 38의 시스템(3800))의 사용자들에 의한 액세스 및 사용을 위해 네트워크를 통해 애플리케이션들 또는 컨테이너들을 공유할 수 있다. 적어도 하나의 실시예에서, 완료되고 검증된 애플리케이션들 또는 컨테이너들은 컨테이너 레지스트리에 저장될 수 있고, 연관된 기계 학습 모델들은 모델 레지스트리(3724)에 저장될 수 있다. 적어도 하나의 실시예에서, 요청 엔티티(예컨대, 의료 시설의 사용자) ― 추론 또는 이미지 처리 요청을 제공함 ― 는, 애플리케이션, 컨테이너, 데이터세트, 기계 학습 모델 등에 대한 컨테이너 레지스트리 및/또는 모델 레지스트리(3724)를 열람하고, 데이터 처리 파이프라인에 포함시키기 위한 요소들의 요망되는 조합을 선택하고, 이미징 처리 요청을 제출할 수 있다. 적어도 하나의 실시예에서, 요청은, 요청을 수행하는 데 필요한 입력 데이터(및 일부 예들에서는, 연관된 환자 데이터)를 포함할 수 있고/거나, 요청을 처리하는 데 실행될 애플리케이션(들) 및/또는 기계 학습 모델들의 선택을 포함할 수 있다. 적어도 하나의 실시예에서, 요청은 이어서, 데이터 처리 파이프라인의 처리를 수행하기 위해 배치 시스템(3706)의 하나 이상의 구성요소(예컨대, 클라우드)에 전달될 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706)에 의한 처리는 컨테이너 레지스트리 및/또는 모델 레지스트리(3724)로부터 선택된 요소들(예컨대, 애플리케이션들, 컨테이너들, 모델들 등)을 참조하는 것을 포함할 수 있다. 적어도 하나의 실시예에서, 일단 결과들이 파이프라인에 의해 생성되면, 결과들은 (예컨대, 로컬, 구내(on-premise) 워크스테이션 또는 단말기 상에서 실행되는 보기 애플리케이션 제품군에서 보기 위한) 참조를 위해 사용자에게 반환될 수 있다. 적어도 하나의 실시예에서, 방사선 전문의는 임의의 수의 애플리케이션 및/또는 컨테이너를 포함하는 데이터 처리 파이프라인으로부터 결과를 수신할 수 있고, 여기서, 결과들은 X선들, CT 스캔들, MRI들 등에서의 이상 검출을 포함할 수 있다.
적어도 하나의 실시예에서, 파이프라인들 내의 애플리케이션들 또는 컨테이너들의 처리 또는 실행을 돕기 위해, 서비스들(3720)이 활용될 수 있다. 적어도 하나의 실시예에서, 서비스들(3720)은, 컴퓨팅 서비스들, 인공 지능(AI) 서비스들, 시각화 서비스들, 및/또는 다른 서비스 유형들을 포함할 수 있다. 적어도 하나의 실시예에서, 서비스들(3720)은, 소프트웨어(3718) 내의 하나 이상의 애플리케이션에 공통인 기능성을 제공할 수 있고, 그러므로, 기능성은 애플리케이션들에 의해 호출되거나 활용될 수 있는 서비스에 추상화될 수 있다. 적어도 하나의 실시예에서, 서비스들(3720)에 의해 제공되는 기능성은, (예컨대, 병렬 컴퓨팅 플랫폼(3830)(도 38)을 사용하여) 애플리케이션들이 데이터를 병렬로 처리하는 것을 허용함으로써 동적으로 그리고 더 효율적으로 실행되면서 또한 양호하게 스케일링될 수 있다. 적어도 하나의 실시예에서, 서비스(3720)는, 서비스(3720)의 개개의 인스턴스를 갖도록 요구되는 서비스(3720)에 의해 제공되는 동일한 기능성을 공유하는 각각의 애플리케이션이 아니라, 다양한 애플리케이션들 사이에 그리고 그들 간에 공유될 수 있다. 적어도 하나의 실시예에서, 서비스들은, 비-제한적인 예들로서, 검출 또는 세그먼트화 작업들을 실행하는 데 사용될 수 있는 추론 서버 또는 엔진을 포함할 수 있다. 적어도 하나의 실시예에서, 기계 학습 모델 훈련 및/또는 재훈련 능력들을 제공할 수 있는 모델 훈련 서비스가 포함될 수 있다. 적어도 하나의 실시예에서, GPU-가속된 데이터(예컨대, DICOM, RIS, CIS, REST 준수, RPC, 미가공 등) 추출, 크기조정, 스케일링, 및/또는 다른 증강을 제공할 수 있는 데이터 증강 서비스가 더 포함될 수 있다. 적어도 하나의 실시예에서, 2차원(2D) 및/또는 3차원(3D) 모델들에 현실감을 부가하기 위해, 이미지 렌더링 효과들 ― 이를테면, 광선-추적, 래스터화, 잡음제거, 선명화 등 ― 을 부가할 수 있는 시각화 서비스가 사용될 수 있다. 적어도 하나의 실시예에서, 빔-형성, 세그먼트화, 추론, 이미징, 및/또는 가상 기기들의 파이프라인들 내의 다른 애플리케이션들에 대한 지원을 제공하는 가상 기기 서비스들이 포함될 수 있다.
적어도 하나의 실시예에서, 서비스(3720)가 AI 서비스(예컨대, 추론 서비스)를 포함하는 경우, 이상(예컨대, 종양, 발육 이상들, 흉터 등) 검출을 위한 애플리케이션과 연관된 하나 이상의 기계 학습 모델은, 애플리케이션 실행의 일부로서, 기계 학습 모델(들) 또는 그의 처리를 실행하기 위해 추론 서비스(예컨대, 추론 서버)를 (예컨대, API 호출로) 호출함으로써 실행될 수 있다. 적어도 하나의 실시예에서, 다른 애플리케이션이 세그먼트화 작업들을 위한 하나 이상의 기계 학습 모델을 포함하는 경우, 애플리케이션은, 세그먼트화 작업들과 연관된 처리 연산들 중 하나 이상을 수행하기 위한 기계 학습 모델들을 실행하기 위해 추론 서비스를 호출할 수 있다. 적어도 하나의 실시예에서, 세그먼트화 애플리케이션 및 이상 검출 애플리케이션을 포함하는 진보된 처리 및 추론 파이프라인을 구현하는 소프트웨어(3718)는 간소화될 수 있는데, 그 이유는, 각각의 애플리케이션이 하나 이상의 추론 작업을 수행하기 위해 동일한 추론 서비스를 호출할 수 있기 때문이다.
적어도 하나의 실시예에서, 하드웨어(3722)는, GPU들, CPU들, 그래픽 카드들, AI/심층 학습 시스템(예컨대, AI 슈퍼컴퓨터, 이를테면, 엔비디아의 DGX 슈퍼컴퓨터 시스템), 클라우드 플랫폼, 또는 이들의 조합을 포함할 수 있다. 적어도 하나의 실시예에서, 상이한 유형들의 하드웨어(3722)는 배치 시스템(3706)에서 소프트웨어(3718) 및 서비스들(3720)에 대한 효율적이고 특정 목적으로 구축된 지원을 제공하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, GPU 처리의 사용은, 이미지 처리, 이미지 재구성, 세그먼트화, MRI 검사들, (예컨대, 실시간으로의) 뇌졸증(stroke) 또는 심장 마비 검출, 렌더링에서의 이미지 품질 등의 효율, 정확도, 및 효능을 개선하기 위해 배치 시스템(3706)의 AI/심층 학습 시스템 내에서, 클라우드 시스템에서, 그리고/또는 다른 처리 구성요소들에서 로컬로(예컨대, 시설(3702)에서) 처리하기 위해 구현될 수 있다. 적어도 하나의 실시예에서, 시설은, 이미징 디바이스들, 유전체학 디바이스들, 시퀀싱 디바이스들, 및/또는 피험자의 해부학적 구조를 나타내는 이미징 데이터를 생성하기 위해 GPU들을 활용할 수 있는 구내의 다른 디바이스 유형들을 포함할 수 있다.
적어도 하나의 실시예에서, 소프트웨어(3718) 및/또는 서비스(3720)는, 비-제한적인 예들로서, 심층 학습, 기계 학습, 및/또는 고성능 컴퓨팅에 관한 GPU 처리에 대해 최적화될 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706) 및/또는 훈련 시스템(3704)의 컴퓨팅 환경의 적어도 일부는, GPU-최적화된 소프트웨어(예컨대, 엔비디아의 DGX 시스템의 하드웨어 및 소프트웨어 조합)를 갖는 데이터 센터의 하나 이상의 슈퍼컴퓨터 또는 고성능 컴퓨팅 시스템들에서 실행될 수 있다. 적어도 하나의 실시예에서, 데이터 센터들은, 이미징 데이터 및/또는 다른 환자 데이터의 수신, 처리, 및 송신이 환자 데이터의 개인정보에 관하여 보안되게 처리되도록, HIPAA의 프로비전들을 준수할 수 있다. 적어도 하나의 실시예에서, 하드웨어(3722)는, 본원에 설명된 바와 같이, 병렬로 데이터의 처리를 수행하기 위해 호출될 수 있는 임의의 수의 GPU를 포함할 수 있다. 적어도 하나의 실시예에서, 클라우드 플랫폼은, 심층 학습 작업들, 기계 학습 작업들, 또는 다른 컴퓨팅 작업들의 GPU-최적화된 실행을 위한 GPU 처리를 더 포함할 수 있다. 적어도 하나의 실시예에서, 클라우드 플랫폼(예컨대, 엔비디아의 NGC)은, 하드웨어 추상화 및 스케일링 플랫폼으로서 AI/심층 학습 슈퍼컴퓨터(들) 및/또는 (예컨대, 엔비디아의 DGX 시스템들 상에서 제공되는 바와 같은) GPU-최적화된 소프트웨어를 사용하여 실행될 수 있다. 적어도 하나의 실시예에서, 클라우드 플랫폼은, 다수의 GPU들 상에 애플리케이션 컨테이너 클러스터링 시스템 또는 조율 시스템(예컨대, 쿠버네티스(KUBERNETES))을 통합하여 매끄러운 스케일링 및 부하 균형맞춤을 가능하게 할 수 있다.
도 38은 적어도 하나의 실시예에 따른, 이미징 배치 파이프라인을 생성하고 배치하기 위한 예시적인 시스템(3800)에 대한 시스템도이다. 적어도 하나의 실시예에서, 시스템(3800)은, 도 37의 프로세스(3700) 및/또는 진보된 처리 및 추론 파이프라인들을 포함하는 다른 프로세스들을 구현하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 시스템(3800)은, 훈련 시스템(3704) 및 배치 시스템(3706)을 포함할 수 있다. 적어도 하나의 실시예에서, 훈련 시스템(3704) 및 배치 시스템(3706)은, 본원에 설명된 바와 같이, 소프트웨어(3718), 서비스들(3720), 및/또는 하드웨어(3722)를 사용하여 구현될 수 있다.
적어도 하나의 실시예에서, 시스템(3800)(예컨대, 훈련 시스템(3704) 및/또는 배치 시스템(3706))은 (예컨대, 클라우드(3826)를 사용하여) 클라우드 컴퓨팅 환경에서 구현될 수 있다. 적어도 하나의 실시예에서, 시스템(3800)은, 의료 서비스 시설에 관해 로컬로, 또는 클라우드 및 로컬 컴퓨팅 리소스들 둘 모두의 조합으로서 구현될 수 있다. 적어도 하나의 실시예에서, 클라우드 컴퓨팅이 구현되는 실시예들에서, 환자 데이터는, 처리가 HIPAA 및/또는 다른 데이터 처리 및 개인정보 규정들 또는 법들에 준수하지 않게 할 시스템(3800)의 하나 이상의 구성요소로부터 분리되거나 그에 의해 처리되지 않을 수 있다. 적어도 하나의 실시예에서, 클라우드(3826) 내의 API에 대한 액세스는 규정된 보안 조치들 또는 프로토콜을 통해 허가된 사용자들로 제한될 수 있다. 적어도 하나의 실시예에서, 보안 프로토콜은, 인증(예컨대, AuthN, AuthZ, Gluecon 등) 서비스에 의해 서명될 수 있고 적절한 허가를 전달할 수 있는 웹 토큰들을 포함할 수 있다. 적어도 하나의 실시예에서, (본원에 설명된) 가상 기기들의 API들 또는 시스템(3800)의 다른 인스턴스화들은, 상호작용에 대해 심사(vet)되거나 허가된 공용 IP들의 세트로 제한될 수 있다.
적어도 하나의 실시예에서, 시스템(3800)의 다양한 구성요소들은, 유선 및/또는 무선 통신 프로토콜들을 통해, 근거리 네트워크(LAN)들 및/또는 광역 네트워크(WAN)들을 포함하지만 이에 제한되지 않는 다양한 상이한 네트워크 유형들 중 임의의 것을 사용하여 서로의 사이에서 그리고 서로 간에 통신할 수 있다. 적어도 하나의 실시예에서, 시설들과 (예컨대, 추론 요청들을 송신하는 것, 추론 요청들의 결과들을 수신하는 것 등을 위한) 시스템(3800)의 구성요소들 사이의 통신은 데이터 버스 또는 데이터 버스들, 무선 데이터 프로토콜들(와이파이), 유선 데이터 프로토콜들(예컨대, 이더넷) 등을 통해 통신될 수 있다.
적어도 하나의 실시예에서, 훈련 시스템(3704)은 도 37과 관련하여 본원에 설명된 것들과 유사한 훈련 파이프라인들(3804)을 실행할 수 있다. 적어도 하나의 실시예에서, 하나 이상의 기계 학습 모델이 배치 시스템(3706)에 의해 배치 파이프라인들(3810)에서 사용될 것인 경우, 훈련 파이프라인들(3804)은 하나 이상의 (예컨대, 사전 훈련된) 모델들을 훈련 또는 재훈련시키고/거나 사전 훈련된 모델들(3806) 중 하나 이상을 (예컨대, 재훈련 또는 업데이트를 필요로 하지 않으면서) 구현하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 훈련 파이프라인들(3804)의 결과로서, 출력 모델(들)(3716)이 생성될 수 있다. 적어도 하나의 실시예에서, 훈련 파이프라인들(3804)은, (예컨대, DICOM 이미지들을 개개의 기계 학습 모델들에 의한 처리에 적합한 다른 포맷, 이를테면, 신경영상 정보과학 기술 발의(Neuroimaging Informatics Technology Initiative)(NIfTI) 포맷으로 변환하기 위해 DICOM 어댑터(3802A)를 사용하는) 이미징 데이터(또는 다른 입력 데이터) 변환 또는 적응, AI-보조 주석(3710), 라벨링된 클리닉 데이터(3712)를 생성하기 위한 이미징 데이터(3708)의 라벨링 또는 주석부기, 모델 레지스트리로부터의 모델 선택, 모델 훈련(3714), 훈련, 재훈련, 또는 모델들의 업데이트, 및/또는 다른 처리 단계들과 같은, 그러나 이에 제한되지 않는 임의의 수의 처리 단계를 포함할 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706)에 의해 사용되는 상이한 기계 학습 모델들에 대해, 상이한 훈련 파이프라인들(3804)이 사용될 수 있다. 적어도 하나의 실시예에서, 도 37과 관련하여 설명된 제1 예와 유사한 훈련 파이프라인(3804)은 제1 기계 학습 모델에 사용될 수 있고, 도 37과 관련하여 설명된 제2 예와 유사한 훈련 파이프라인(3804)은 제2 기계 학습 모델에 사용될 수 있고, 도 37과 관련하여 설명된 제3 예와 유사한 훈련 파이프라인(3804)은 제3 기계 학습 모델에 사용될 수 있다. 적어도 하나의 실시예에서, 훈련 시스템(3704) 내의 작업들의 임의의 조합은 각각의 개개의 기계 학습 모델에 대해 요구되는 것에 따라 사용될 수 있다. 적어도 하나의 실시예에서, 기계 학습 모델들 중 하나 이상이 이미 훈련되어 배치를 위해 준비되어 있을 수 있으므로, 기계 학습 모델들은 훈련 시스템(3704)에 의한 임의의 처리를 겪지 않을 수 있고, 배치 시스템(3706)에 의해 구현될 수 있다.
적어도 하나의 실시예에서, 출력 모델(들)(3716) 및/또는 사전 훈련된 모델(들)(3806)은 구현 또는 실시예에 따라 임의의 유형들의 기계 학습 모델들을 포함할 수 있다. 적어도 하나의 실시예에서, 그리고 제한 없이, 시스템(3800)에 의해 사용되는 기계 학습 모델들은, 선형 회귀, 로지스틱 회귀, 결정 트리들, 서포트 벡터 기계(SVM)들, 나이브 베이즈(
Figure pct00006
), k-최근접 이웃(Knn), K 평균 클러스터링, 랜덤 포레스트(random forest), 차원수 감소 알고리즘들, 구배 부스팅 알고리즘들, 신경망들(예컨대, 오토-인코더들, 콘볼루션, 재귀, 퍼셉트론(perceptron)들, 장단기 메모리(LSTM), 홉필드(Hopfield), 볼츠만(Boltzmann), 심층 신뢰, 디콘볼루션, 생성적 대립, 액체 상태 기계 등), 및/또는 다른 유형들의 기계 학습 모델들을 사용하는 기계 학습 모델(들)을 포함할 수 있다.
적어도 하나의 실시예에서, 훈련 파이프라인들(3804)은, 적어도 도 41b와 관련하여 본원에서 더 상세히 설명되는 바와 같은 AI-보조 주석을 포함할 수 있다. 적어도 하나의 실시예에서, 라벨링된 클리닉 데이터(3712)(예컨대, 통상의 주석)는 임의의 수의 기법들에 의해 생성될 수 있다. 적어도 하나의 실시예에서, 라벨들 또는 다른 주석들은, 드로잉 프로그램(예컨대, 주석 프로그램), 컴퓨터 지원 설계(CAD) 프로그램, 라벨링 프로그램, 실측 정보에 대한 주석들 또는 라벨들을 생성하기에 적합한 다른 유형의 프로그램 내에서 생성될 수 있고/거나 일부 예들에서는 손으로 그려질 수 있다. 적어도 하나의 실시예에서, 실측 정보 데이터는, 합성적으로 생성(예컨대, 컴퓨터 모델들 또는 렌더링들로부터 생성)되거나, 실제 생성(예컨대, 실세계 데이터로부터 설계되고 생성)되거나, (예컨대, 데이터로부터 피쳐들을 추출한 다음 라벨을 생성하기 위해 피쳐 분석 및 학습을 사용하여) 기계 자동화되거나, 인간에 의해 주석부기(예컨대, 라벨러, 또는 주석 전문가가 라벨들의 위치를 정의함) 되고/거나, 이들의 조합일 수 있다. 적어도 하나의 실시예에서, 이미징 데이터(3708)의 각각의 인스턴스(또는 기계 학습 모델들에 의해 사용되는 다른 데이터 유형)에 대해, 훈련 시스템(3704)에 의해 생성된 대응하는 실측 정보 데이터가 존재할 수 있다. 적어도 하나의 실시예에서, AI-보조 주석은, 훈련 파이프라인(3804)에 포함된 AI-보조 주석에 부가하여 또는 그 대신에, 배치 파이프라인(3810)의 일부로서 수행될 수 있다. 적어도 하나의 실시예에서, 시스템(3800)은, 하나 이상의 의료 이미징 및 진단 기능을 수행할 수 있는 진단 애플리케이션들(또는 다른 애플리케이션 유형들)의 소프트웨어 계층(예컨대, 소프트웨어(3718))을 포함할 수 있는 다중-계층 플랫폼을 포함할 수 있다. 적어도 하나의 실시예에서, 시스템(3800)은, 하나 이상의 시설의 PACS 서버 네트워크에 (예컨대, 암호화된 링크들을 통해) 통신가능하게 결합될 수 있다. 적어도 하나의 실시예에서, 시스템(3800)은, (예컨대, DICOM 어댑터(3802), 또는 다른 데이터 유형 어댑터, 이를테면 RIS, CIS, REST 준수, RPC, 미가공 등을 통해) PACS 서버로부터의 데이터(예컨대, DICOM 데이터, RIS 데이터, 미가공 데이터, CIS 데이터, REST 준수 데이터, RPC 데이터, 미가공 데이터 등)에 액세스하고 참조하여, 동작들, 이를테면, 기계 학습 모델들을 훈련시키는 것, 기계 학습 모델들을 배치하는 것, 이미지 처리, 추론, 및/또는 다른 동작들을 수행하도록 구성될 수 있다.
적어도 하나의 실시예에서, 소프트웨어 계층은, 애플리케이션들 또는 컨테이너들이 외부 환경(들)(예컨대, 시설(3702))으로부터 호출(invoke)(예컨대, 호출(call))될 수 있는 보안, 암호화된, 그리고/또는 인증된 API로서 구현될 수 있다. 적어도 하나의 실시예에서, 애플리케이션들은 이어서, 개개의 애플리케이션들과 연관된 컴퓨팅, AI, 또는 시각화 작업들을 수행하기 위해 하나 이상의 서비스(3720)를 호출 또는 실행할 수 있고, 소프트웨어(3718) 및/또는 서비스들(3720)은 하드웨어(3722)를 활용하여 효과적이고 효율적인 방식으로 처리 작업들을 수행할 수 있다.
적어도 하나의 실시예에서, 배치 시스템(3706)은 배치 파이프라인들(3810)을 실행할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인들(3810)은, 위에 설명된 바와 같이, AI-보조 주석을 포함하여, 이미징 디바이스들, 시퀀싱 디바이스들, 유전체학 디바이스들 등에 의해 생성되는 이미징 데이터(및/또는 다른 데이터 유형들)에 순차적으로, 비-순차적으로, 또는 다른 방식으로 적용될 수 있는 임의의 수의 애플리케이션을 포함할 수 있다. 적어도 하나의 실시예에서, 본원에 설명된 바와 같이, 개별 디바이스에 대한 배치 파이프라인(3810)은 디바이스에 대한 가상 기기(예컨대, 가상 초음파 기기, 가상 CT 스캔 기기, 가상 시퀀싱 기기 등)로 지칭될 수 있다. 적어도 하나의 실시예에서, 단일 디바이스에 대해, 디바이스에 의해 생성되는 데이터로부터 요망되는 정보에 따라 하나 초과의 배치 파이프라인(3810)이 존재할 수 있다. 적어도 하나의 실시예에서, MRI 기계로부터 이상들의 검출들이 요망되는 경우, 제1 배치 파이프라인(3810)이 존재할 수 있고, MRI 기계의 출력으로부터 이미지 향상이 요망되는 경우, 제2 배치 파이프라인(3810)이 존재할 수 있다.
적어도 하나의 실시예에서, 배치 파이프라인들(3810)에 대해 이용가능한 애플리케이션들은, 디바이스들로부터의 이미징 데이터 또는 다른 데이터에 대해 처리 작업들을 수행하는 데 사용될 수 있는 임의의 애플리케이션을 포함할 수 있다. 적어도 하나의 실시예에서, 상이한 애플리케이션들은, 이미지 향상, 세그먼트화, 재구성, 이상 검출, 객체 검출, 피쳐 검출, 치료 계획, 선량 측정, 빔 계획(또는 다른 방사선 치료 절차들), 및/또는 다른 분석, 이미지 처리, 또는 추론 작업들을 담당할 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706)은, 배치 시스템(3706)의 사용자들(예컨대, 의료 시설들, 실험실들, 클리닉들 등)이 구성들을 이해하고 그들 개개의 시설 내에서의 구현을 위해 애플리케이션들을 적응시킬 수 있도록, 애플리케이션들 각각에 대한 구성들을 정의할 수 있다. 적어도 하나의 실시예에서, 이미지 재구성을 위한 애플리케이션이 배치 파이프라인(3810)에 포함되도록 선택될 수 있지만, 이미징 디바이스에 의해 생성되는 데이터 유형은 애플리케이션 내에서 사용되는 데이터 유형과 상이할 수 있다. 적어도 하나의 실시예에서, DICOM 어댑터(3802B)(및/또는 DICOM 판독기) 또는 다른 데이터 유형 어댑터 또는 판독기(예컨대, RIS, CIS, REST 준수, RPC, 미가공 등)가 배치 파이프라인(3810) 내에서 사용되어 데이터를 배치 시스템(3706) 내의 애플리케이션에 의해 사용가능한 형태로 변환할 수 있다. 적어도 하나의 실시예에서, DICOM, RIS, CIS, REST 준수, RPC, 미가공, 및/또는 다른 데이터 유형 라이브러리들에 대한 액세스가 누적되고 사전-처리될 수 있는데, 이는, 디코딩, 추출, 및/또는 임의의 콘볼루션들, 컬러 보정들, 선명도, 감마, 및/또는 데이터에 대한 다른 증강들을 수행하는 것을 포함한다. 적어도 하나의 실시예에서, DICOM, RIS, CIS, REST 준수, RPC, 및/또는 미가공 데이터는 정렬되지 않을 수 있고, 프리-패스(pre-pass)가 실행되어 수집된 데이터를 조직화 또는 분류할 수 있다. 적어도 하나의 실시예에서, 다양한 애플리케이션들이 공통 이미지 연산들을 공유할 수 있기 때문에, 일부 실시예들에서, (예컨대, 서비스들(3720) 중 하나로서의) 데이터 증강 라이브러리가 이러한 연산들을 가속하는 데 사용될 수 있다. 적어도 하나의 실시예에서, CPU 처리에 의존하는 종래의 처리 접근법들의 병목현상들을 회피하기 위해, 병렬 컴퓨팅 플랫폼(3830)이 이러한 처리 작업들의 GPU 가속에 사용될 수 있다.
적어도 하나의 실시예에서, 이미지 재구성 애플리케이션은 기계 학습 모델의 사용을 포함하는 처리 작업을 포함할 수 있다. 적어도 하나의 실시예에서, 사용자는, 그 자신의 기계 학습 모델을 사용하거나 모델 레지스트리(3724)로부터 기계 학습 모델을 선택하기를 요망할 수 있다. 적어도 하나의 실시예에서, 사용자는, 그 자신의 기계 학습 모델을 구현하거나 처리 작업을 수행하기 위해 애플리케이션에 포함시키기 위한 기계 학습 모델을 선택할 수 있다. 적어도 하나의 실시예에서, 애플리케이션은 선택가능하고 맞춤화가능할 수 있으며, 애플리케이션들의 구성들을 정의함으로써, 특정 사용자에 대한 애플리케이션들의 배치 및 구현은 더 매끄러운 사용자 경험으로 제시된다. 적어도 하나의 실시예에서, 시스템(3800)의 다른 특징들 ― 이를테면, 서비스들(3720) 및 하드웨어(3722) ― 을 활용함으로써, 배치 파이프라인들(3810)은, 훨씬 더 사용자 친화적이고, 더 용이한 통합을 제공하고, 더 정확하고 효율적이고 시기적절한 결과들을 생성할 수 있다.
적어도 하나의 실시예에서, 배치 시스템(3706)은, 배치 파이프라인(들)(3810)에 포함시키기 위한 애플리케이션들을 선택하고, 애플리케이션들을 배열하고, 애플리케이션들 또는 그의 파라미터들 또는 구성들을 수정 또는 변경하고, 설정 및/또는 배치 동안 배치 파이프라인(들)(3810)을 사용하고 그와 상호작용하고/거나 다른 방식으로 배치 시스템(3706)과 상호작용하는 데 사용될 수 있는 사용자 인터페이스(3814)(예컨대, 그래픽 사용자 인터페이스, 웹 인터페이스 등)를 포함할 수 있다. 적어도 하나의 실시예에서, 훈련 시스템(3704)과 관련하여 예시되진 않지만, 사용자 인터페이스(3814)(또는 상이한 사용자 인터페이스)는, 배치 시스템(3706)에서 사용하기 위한 모델들을 선택하고, 훈련 시스템(3704)에서 훈련 또는 재훈련을 위한 모델들을 선택하고/거나, 다른 방식으로 훈련 시스템(3704)과 상호작용하는 데 사용될 수 있다.
적어도 하나의 실시예에서, 파이프라인 관리자(3812)는, 애플리케이션 조율 시스템(3828)에 부가하여, 배치 파이프라인(들)(3810)의 애플리케이션들 또는 컨테이너들과 서비스들(3720) 및/또는 하드웨어(3722) 사이의 상호작용을 관리하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 파이프라인 관리자(3812)는, 애플리케이션으로부터 애플리케이션으로의, 애플리케이션으로부터 서비스(3720)로의, 그리고/또는 애플리케이션 또는 서비스로부터 하드웨어(3722)로의 상호작용들을 용이하게 하도록 구성될 수 있다. 적어도 하나의 실시예에서, 소프트웨어(3718)에 포함된 것으로 예시되진 않지만, 이는 제한적인 것으로 의도되지 않으며, (예컨대, 도 39에 예시된 바와 같은) 일부 예들에서, 파이프라인 관리자(3812)는 서비스들(3720)에 포함될 수 있다. 적어도 하나의 실시예에서, 애플리케이션 조율 시스템(3828)(예컨대, 쿠버네티스, 도커(DOCKER) 등)은, 애플리케이션들을 조정, 관리, 스케일링, 및 배치를 위한 논리적 유닛들로서 컨테이너들로 그룹화할 수 있는 컨테이너 조율 시스템을 포함할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인(들)(3810)으로부터의 애플리케이션들(예컨대, 재구성 애플리케이션, 세그먼트화 애플리케이션 등)을 개별 컨테이너들과 연관시킴으로써, 각각의 애플리케이션이 자립형 환경에서(예컨대, 커널 레벨에서) 실행되어 속도 및 효율성이 증가될 수 있다.
적어도 하나의 실시예에서, 각각의 애플리케이션 및/또는 컨테이너(또는 그의 이미지)는 개별적으로 개발, 수정, 및 배치될 수 있으며(예컨대, 제1 사용자 또는 개발자는 제1 애플리케이션을 개발, 수정, 및 배치할 수 있고, 제1 사용자 또는 개발자와는 별개인 제2 사용자 또는 개발자는 제2 애플리케이션을 개발, 수정, 및 배치할 수 있음), 이는, 다른 애플리케이션(들) 또는 컨테이너(들)의 작업들에 의해 방해를 받음이 없이 단일 애플리케이션 및/또는 컨테이너(들)의 작업에 집중하고 그에 주의를 기울이는 것을 허용할 수 있다. 적어도 하나의 실시예에서, 상이한 컨테이너들 또는 애플리케이션들 사이의 통신 및 협력은 파이프라인 관리자(3812) 및 애플리케이션 조율 시스템(3828)에 의해 도움을 받을 수 있다. 적어도 하나의 실시예에서, 각각의 컨테이너 또는 애플리케이션의 예상 입력 및/또는 출력이 (예컨대, 애플리케이션들 또는 컨테이너들의 구성들에 기반하여) 시스템에게 알려져 있는 한, 애플리케이션 조율 시스템(3828) 및/또는 파이프라인 관리자(3812)는 애플리케이션들 또는 컨테이너들 각각 간의 그리고 그들 사이의 통신, 및 애플리케이션들 또는 컨테이너들 각각 간의 그리고 그들 사이에서의 리소스들의 공유를 용이하게 할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인(들)(3810) 내의 애플리케이션들 또는 컨테이너들 중 하나 이상이 동일한 서비스들 및 리소스들을 공유할 수 있기 때문에, 애플리케이션 조율 시스템(3828)은, 다양한 애플리케이션들 또는 컨테이너들 사이의 그리고 그들 간의 서비스들 또는 리소스들의 공유를 조율하고, 부하 균형을 맞추고, 결정할 수 있다. 적어도 하나의 실시예에서, 애플리케이션들 또는 컨테이너들의 리소스 요건들, 이러한 리소스들의 현재 사용 또는 계획된 사용, 및 리소스 이용가능성을 추적하기 위해 스케줄러가 사용될 수 있다. 적어도 하나의 실시예에서, 스케줄러는 그에 따라, 시스템의 요건들 및 이용가능성을 고려하여 리소스들을 상이한 애플리케이션들에 할당하고 리소스들을 애플리케이션들 사이에 그리고 그들 간에 분배할 수 있다. 일부 예들에서, 스케줄러(및/또는 애플리케이션 조율 시스템(3828)의 다른 구성요소)는, 서비스 품질(QoS), (예컨대, 실시간 처리를 실행할지 또는 지연된 처리를 실행할지를 결정하기 위한) 데이터 출력들에 대한 필요성의 긴급성 등과 같은, 시스템에 부과된 제약들(예컨대, 사용자 제약들)에 기반하여 리소스 이용가능성 및 분배를 결정할 수 있다.
적어도 하나의 실시예에서, 배치 시스템(3706) 내의 애플리케이션들 또는 컨테이너들에 의해 활용되고 공유되는 서비스들(3720)은, 컴퓨팅 서비스들(3816), AI 서비스들(3818), 시각화 서비스들(3820), 및/또는 다른 서비스 유형들을 포함할 수 있다. 적어도 하나의 실시예에서, 애플리케이션들은 애플리케이션에 대한 처리 연산들을 수행하기 위해 서비스들(3720) 중 하나 이상을 호출(예컨대, 실행)할 수 있다. 적어도 하나의 실시예에서, 컴퓨팅 서비스들(3816)은, 슈퍼컴퓨팅 또는 다른 고성능 컴퓨팅(HPC) 작업들을 수행하기 위해 애플리케이션들에 의해 활용될 수 있다. 적어도 하나의 실시예에서, 컴퓨팅 서비스(들)(3816)는, 애플리케이션들 중 하나 이상 및/또는 단일 애플리케이션의 하나 이상의 작업을 통해 데이터를 실질적으로 동시에 처리하기 위한 병렬 처리를 (예컨대, 병렬 컴퓨팅 플랫폼(3830)을 사용하여) 수행하기 위해 활용될 수 있다. 적어도 하나의 실시예에서, 병렬 컴퓨팅 플랫폼(3830)(예컨대, 엔비디아의 CUDA)은 GPU들(GPGPU)(예컨대, GPU들(3822)) 상의 범용 컴퓨팅을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 병렬 컴퓨팅 플랫폼(3830)의 소프트웨어 계층은, 컴퓨팅 커널들의 실행을 위한 GPU들의 병렬 계산 요소들 및 가상 명령어 세트들에 대한 액세스를 제공할 수 있다. 적어도 하나의 실시예에서, 병렬 컴퓨팅 플랫폼(3830)은 메모리를 포함할 수 있고, 일부 실시예들에서, 메모리는 다수의 컨테이너들 사이에서 그리고 그들 간에 그리고/또는 단일 컨테이너 내의 상이한 처리 작업들 사이에서 그리고 그들 간에 공유될 수 있다. 적어도 하나의 실시예에서, (예컨대, 애플리케이션의 다수의 상이한 스테이지들 또는 다수의 애플리케이션들이 동일한 정보를 처리하고 있는 경우) 병렬 컴퓨팅 플랫폼(3830)의 메모리의 공유 세그먼트로부터의 동일한 데이터를 사용하기 위해 다수의 컨테이너에 대해 그리고/또는 컨테이너 내의 다수의 프로세스에 대해 프로세스 간 통신(IPC) 호출들이 생성될 수 있다. 적어도 하나의 실시예에서, 데이터의 사본을 만들고 데이터를 메모리 내의 상이한 위치들로 이동시키는 것(예컨대, 판독/기입 동작)이 아니라, 메모리의 동일한 위치 내의 동일한 데이터가 임의의 수의 처리 작업들에 (예컨대, 동시에, 상이한 시간들에 등으로) 사용될 수 있다. 적어도 하나의 실시예에서, 데이터가 처리의 결과로서 새로운 데이터를 생성하는 데 사용되는 경우, 이러한 데이터의 새로운 위치의 정보가 저장되고 다양한 애플리케이션들 사이에 공유될 수 있다. 적어도 하나의 실시예에서, 데이터의 위치 및 업데이트되거나 수정된 데이터의 위치는 페이로드가 컨테이너들 내에서 어떻게 이해되는지의 정의의 일부일 수 있다.
적어도 하나의 실시예에서, AI 서비스들(3818)은, 애플리케이션들과 연관된(예컨대, 애플리케이션의 하나 이상의 처리 작업을 수행하는 작업을 맡은) 기계 학습 모델(들)을 실행하기 위한 추론 서비스들을 수행하기 위해 활용될 수 있다. 적어도 하나의 실시예에서, AI 서비스들(3818)은, 세그먼트화, 재구성, 객체 검출, 피쳐 검출, 분류, 및/또는 다른 추론 작업들을 위해서 기계 학습 모델(들)(예컨대, CNN들과 같은 신경망들)을 실행하기 위해 AI 시스템(3824)을 활용할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인(들)(3810)의 애플리케이션들은, 훈련 시스템(3704)으로부터의 출력 모델들(3716) 중 하나 이상 및/또는 애플리케이션들의 다른 모델들을 사용하여 이미징 데이터(예컨대, DICOM 데이터, RIS 데이터, CIS 데이터, REST 준수 데이터, RPC 데이터, 미가공 데이터 등)에 대한 추론을 수행할 수 있다. 적어도 하나의 실시예에서, 애플리케이션 조율 시스템(3828)(예컨대, 스케줄러)을 사용하는 추론의 2개 이상의 예가 이용가능할 수 있다. 적어도 하나의 실시예에서, 제1 범주는, 이를테면 긴급 시 긴급 요청들에 대한 추론을 수행하는 것에 대해 또는 진단 동안 방사선 전문의에 대해 더 높은 서비스 레벨 합의들을 달성할 수 있는 높은 우선순위/낮은 레이턴시 경로를 포함할 수 있다. 적어도 하나의 실시예에서, 제2 범주는, 비-긴급일 수 있는 요청들에 대해 사용될 수 있는 또는 분석이 나중에 수행될 수 있는 표준 우선순위 경로를 포함할 수 있다. 적어도 하나의 실시예에서, 애플리케이션 조율 시스템(3828)은, AI 서비스들(3818)의 상이한 추론 작업들에 대한 우선순위 경로들에 기반하여 리소스들(예컨대, 서비스들(3720) 및/또는 하드웨어(3722))을 분배할 수 있다.
적어도 하나의 실시예에서, 공유 저장소는 시스템(3800) 내의 AI 서비스들(3818)에 장착될 수 있다. 적어도 하나의 실시예에서, 공유 저장소는 캐시(또는 다른 저장 디바이스 유형)로서 동작할 수 있고, 애플리케이션들로부터의 추론 요청들을 처리하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 추론 요청이 제출될 때, 요청은 배치 시스템(3706)의 API 인스턴스들의 세트에 의해 수신될 수 있고, 요청을 처리하기 위해(예컨대, 최적합, 부하 균형맞춤 등을 위해) 하나 이상의 인스턴스가 선택될 수 있다. 적어도 하나의 실시예에서, 요청을 처리하기 위해, 요청은 데이터베이스에 입력될 수 있고, 기계 학습 모델은 이미 캐시에 있지 않은 경우 모델 레지스트리(3724)로부터 로케이팅될 수 있고, 검증 단계는 적절한 기계 학습 모델이 캐시(예컨대, 공유 저장소)에 로딩되는 것을 보장할 수 있고/거나, 모델의 사본이 캐시에 저장될 수 있다. 적어도 하나의 실시예에서, (예컨대, 파이프라인 관리자(3812)의) 스케줄러는, 애플리케이션이 아직 실행 중이 아니거나 애플리케이션의 충분한 인스턴스들이 존재하지 않는 경우, 요청에서 참조되는 애플리케이션을 론칭하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 추론 서버가 아직 모델을 실행하도록 론칭되지 않은 경우, 추론 서버가 론칭될 수 있다. 적어도 하나의 실시예에서, 모델별로 임의의 수의 추론 서버가 론칭될 수 있다. 적어도 하나의 실시예에서, 추론 서버들이 클러스터링되는 풀 모델(pull model)에서, 부하 균형맞춤이 유리할 때마다 모델들이 캐싱될 수 있다. 적어도 하나의 실시예에서, 추론 서버들은 대응하는 분산형 서버들에 정적으로 로딩될 수 있다.
적어도 하나의 실시예에서, 추론은 컨테이너에서 실행되는 추론 서버를 사용하여 수행될 수 있다. 적어도 하나의 실시예에서, 추론 서버의 인스턴스는 모델(그리고 임의적으로는 복수의 버전들의 모델)과 연관될 수 있다. 적어도 하나의 실시예에서, 모델에 대한 추론을 수행하라는 요청이 수신될 때 추론 서버의 인스턴스가 존재하지 않는 경우, 새로운 인스턴스가 로딩될 수 있다. 적어도 하나의 실시예에서, 추론 서버를 시작할 때, 추론 서버가 상이한 인스턴스로서 실행되는 한 동일한 컨테이너가 상이한 모델들을 서빙하는 데 사용될 수 있도록 모델이 추론 서버에 전달될 수 있다.
적어도 하나의 실시예에서, 애플리케이션 실행 동안, 주어진 애플리케이션에 대한 추론 요청이 수신될 수 있고, (예컨대, 추론 서버의 인스턴스를 호스팅하는) 컨테이너가 (아직 그렇지 않은 경우) 로딩될 수 있고, 시작 절차가 호출될 수 있다. 적어도 하나의 실시예에서, 컨테이너 내의 사전 처리 로직은 (예컨대, CPU(들) 및/또는 GPU(들)를 사용하여) 착신 데이터에 대해 로딩, 디코딩, 및/또는 임의의 부가적인 사전 처리를 수행할 수 있다. 적어도 하나의 실시예에서, 일단 데이터가 추론을 위해 준비되면, 컨테이너는 데이터에 대해 필요에 따라 추론을 수행할 수 있다. 적어도 하나의 실시예에서, 이는, 하나의 이미지(예컨대, 손 X선)에 대한 단일 추론 호출을 포함할 수 있거나, 수백 개의 이미지(예컨대, 흉부 CT)에 대한 추론을 요구할 수 있다. 적어도 하나의 실시예에서, 애플리케이션은 완료 전에 결과들을 요약할 수 있고, 이는, 제한 없이, 단일 신뢰도 점수, 픽셀 레벨-세그먼트화, 복셀-레벨 세그먼트화, 시각화의 생성, 또는 발견들을 요약하기 위한 텍스트의 생성을 포함할 수 있다. 적어도 하나의 실시예에서, 상이한 모델들 또는 애플리케이션들은 상이한 우선순위들을 배정받을 수 있다. 예컨대, 일부 모델들은 실시간(1 분 미만의 TAT) 우선순위를 가질 수 있는 반면, 다른 모델들은 더 낮은 우선순위(예컨대, 10 분 미만의 TAT)를 가질 수 있다. 적어도 하나의 실시예에서, 모델 실행 시간들이 요청 기관 또는 엔티티로부터 측정될 수 있고, 파트너 네트워크 순회 시간뿐만 아니라 추론 서비스에 대한 실행을 포함할 수 있다.
적어도 하나의 실시예에서, 서비스들(3720)과 추론 애플리케이션들 사이에서의 요청들의 전송은 소프트웨어 개발 키트(SDK) 뒤에 은닉될 수 있고, 큐를 통해 강건한 전송이 제공될 수 있다. 적어도 하나의 실시예에서, 요청은 개별 애플리케이션/테넌트(tenant) ID 조합에 대한 API를 통해 큐에 배치될 것이고, SDK는 큐로부터 요청을 풀링하여 애플리케이션에 요청을 제공할 것이다. 적어도 하나의 실시예에서, 큐의 이름은 SDK가 큐를 픽업할 환경에서 제공될 수 있다. 적어도 하나의 실시예에서, 큐를 통한 비동기식 통신은, 애플리케이션의 임의의 인스턴스가, 이용가능하게 되는 경우 작업을 픽업하게 할 수 있게 하기 때문에 유용할 수 있다. 적어도 하나의 실시예에서, 결과들은 큐를 통해 다시 전송되어, 데이터가 손실되지 않는 것을 보장할 수 있다. 적어도 하나의 실시예에서, 큐들은 또한 작업을 세그먼트화하는 능력을 제공할 수 있는데, 그 이유는, 가장 높은 우선순위 작업이 그에 연결된 애플리케이션의 대부분의 인스턴스들을 갖는 큐로 갈 수 있는 한편, 가장 낮은 우선순위 작업은 수신된 순서로 작업들을 처리하는 그에 연결된 단일 인스턴스를 갖는 큐로 갈 수 있기 때문이다. 적어도 하나의 실시예에서, 애플리케이션은 클라우드(3826)에서 생성되는 GPU-가속된 인스턴스 상에서 실행될 수 있고, 추론 서비스는 GPU 상에서 추론을 수행할 수 있다.
적어도 하나의 실시예에서, 시각화 서비스들(3820)은, 애플리케이션들 및/또는 배치 파이프라인(들)(3810)의 출력들을 보기 위한 시각화들을 생성하기 위해 활용될 수 있다. 적어도 하나의 실시예에서, GPU들(3822)은 시각화들을 생성하기 위해 시각화 서비스들(3820)에 의해 활용될 수 있다. 적어도 하나의 실시예에서, 광선-추적과 같은 렌더링 효과들이 시각화 서비스들(3820)에 의해 구현되어 더 높은 품질의 시각화들을 생성할 수 있다. 적어도 하나의 실시예에서, 시각화들은, 제한 없이, 2D 이미지 렌더링들, 3D 볼륨 렌더링들, 3D 볼륨 재구성, 2D 단층촬영 슬라이스들, 가상 현실 디스플레이들, 증강 현실 디스플레이들 등을 포함할 수 있다. 적어도 하나의 실시예에서, 가상화된 환경들은 시스템의 사용자들(예컨대, 의사들, 간호사들, 방사선 전문의들 등)에 의한 상호작용을 위한 가상 대화형 디스플레이 또는 환경(예컨대, 가상 환경)을 생성하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, 시각화 서비스들(3820)은, 내부 시각화기, 시네마틱스(cinematics), 및/또는 다른 렌더링 또는 이미지 처리 능력들 또는 기능성(예컨대, 광선-추적, 래스터화, 내부 광학 등)을 포함할 수 있다.
적어도 하나의 실시예에서, 하드웨어(3722)는, GPU들(3822), AI 시스템(3824), 클라우드(3826), 및/또는 훈련 시스템(3704) 및/또는 배치 시스템(3706)을 실행하기 위해 사용되는 임의의 다른 하드웨어를 포함할 수 있다. 적어도 하나의 실시예에서, GPU들(3822)(예컨대, 엔비디아의 테슬라(TESLA) 및/또는 쿼드로(QUADRO) GPU들)은, 컴퓨팅 서비스들(3816), AI 서비스들(3818), 시각화 서비스들(3820), 다른 서비스들, 및/또는 소프트웨어(3718)의 특징들 또는 기능성 중 임의의 것의 처리 작업들을 실행하기 위해 사용될 수 있는 임의의 수의 GPU를 포함할 수 있다. 예컨대, AI 서비스들(3818)과 관련하여, GPU들(3822)은 이미징 데이터(또는 기계 학습 모델들에 의해 사용되는 다른 데이터 유형들)에 대해 사전-처리를 수행하고, 기계 학습 모델들의 출력들에 대해 사후-처리를 수행하고/거나 추론을 수행하기 위해(예컨대, 기계 학습 모델들을 실행하기 위해) 사용될 수 있다. 적어도 하나의 실시예에서, 클라우드(3826), AI 시스템(3824), 및/또는 시스템(3800)의 다른 구성요소들이 GPU들(3822)을 사용할 수 있다. 적어도 하나의 실시예에서, 클라우드(3826)는 심층 학습 작업들을 위한 GPU-최적화된 플랫폼을 포함할 수 있다. 적어도 하나의 실시예에서, AI 시스템(3824)은 GPU들을 사용할 수 있고, 하나 이상의 AI 시스템들(3824)을 사용하여 클라우드(3826) ― 또는 심층 학습 또는 추론 작업을 맡은 적어도 일부분 ― 가 실행될 수 있다. 그러므로, 하드웨어(3722)는 별개의 구성요소들로서 예시되지만, 이는 제한적인 것으로 의도되지 않고, 하드웨어(3722)의 임의의 구성요소들은 하드웨어(3722)의 임의의 다른 구성요소들과 조합되거나 그에 의해 활용될 수 있다.
적어도 하나의 실시예에서, AI 시스템(3824)은, 추론, 심층 학습, 기계 학습, 및/또는 다른 인공 지능 작업들을 위해 구성된 특정 목적으로 구축된 컴퓨팅 시스템(예컨대, 슈퍼컴퓨터 또는 HPC)을 포함할 수 있다. 적어도 하나의 실시예에서, AI 시스템(3824)(예컨대, 엔비디아의 DGX)은, CPU들, RAM, 저장소, 및/또는 다른 구성요소들, 특징들, 또는 기능성에 부가하여, 복수의 GPU들(3822)을 사용하여 실행될 수 있는 GPU-최적화된 소프트웨어(예컨대, 소프트웨어 스택)를 포함할 수 있다. 적어도 하나의 실시예에서, 하나 이상의 AI 시스템(3824)은, 시스템(3800)의 AI 기반 처리 작업들 중 일부 또는 그 전부를 수행하기 위해 클라우드(3826)에서(예컨대, 데이터 센터에서) 구현될 수 있다.
적어도 하나의 실시예에서, 클라우드(3826)는, 시스템(3800)의 처리 작업들을 실행하기 위한 GPU-최적화된 플랫폼을 제공할 수 있는 GPU-가속된 기반구조(예컨대, 엔비디아의 NGC)를 포함할 수 있다. 적어도 하나의 실시예에서, 클라우드(3826)는, (예컨대, 하드웨어 추상화 및 스케일링 플랫폼으로서) 시스템(3800)의 AI 기반 작업들 중 하나 이상을 수행하기 위한 AI 시스템(들)(3824)을 포함할 수 있다. 적어도 하나의 실시예에서, 클라우드(3826)는, 다수의 GPU들을 활용하는 애플리케이션 조율 시스템(3828)과 통합되어, 애플리케이션들 및 서비스들(3720) 사이에서의 그리고 그들 간의 매끄러운 스케일링 및 부하 균형맞춤을 가능하게 할 수 있다. 적어도 하나의 실시예에서, 클라우드(3826)는, 본원에 설명된 바와 같이, 컴퓨팅 서비스들(3816), AI 서비스들(3818), 및/또는 시각화 서비스들(3820)을 포함하는, 시스템(3800)의 서비스들(3720) 중 적어도 일부를 실행하는 작업을 맡을 수 있다. 적어도 하나의 실시예에서, 클라우드(3826)는, 작고 큰 뱃치 추론(예컨대, 엔비디아의 TENSOR RT를 실행하는 것)을 수행할 수 있고, 가속된 병렬 컴퓨팅 API 및 플랫폼(3830)(예컨대, 엔비디아의 CUDA)을 제공할 수 있고, 애플리케이션 조율 시스템(3828)(예컨대, 쿠버네티스)을 실행할 수 있고, (예컨대, 광선-추적, 2D 그래픽, 3D 그래픽, 및/또는 더 높은 품질의 시네마틱스를 생성하기 위한 다른 렌더링 기법들을 위한) 그래픽 렌더링 API 및 플랫폼을 제공할 수 있고/거나, 시스템(3800)에 대한 다른 기능성을 제공할 수 있다.
적어도 하나의 실시예에서, (예컨대, 환자 데이터 또는 기록들이 구외에서 사용되어야 하는 경우) 환자 기밀성을 보존하기 위한 노력으로, 클라우드(3826)는 레지스트리, 이를테면, 심층 학습 컨테이너 레지스트리를 포함할 수 있다. 적어도 하나의 실시예에서, 레지스트리는, 환자 데이터에 대해 사전-처리, 사후-처리, 또는 다른 처리 작업들을 수행할 수 있는 애플리케이션들의 인스턴스화들을 위한 컨테이너들을 저장할 수 있다. 적어도 하나의 실시예에서, 클라우드(3826)는, 컨테이너 내의 센서 데이터뿐만 아니라 환자 데이터를 포함하는 데이터를 수신하고, 그 컨테이너 내의 센서 데이터에 대해서만 요청된 처리를 수행하고, 이어서, 결과적인 출력 및/또는 시각화들을 적절한 당사자들 및/또는 디바이스들(예컨대, 시각화 또는 진단들에 사용되는 구내 의료 디바이스들)에 전달할 수 있으며, 이들 모두에서, 환자 데이터를 추출하거나, 저장하거나, 또는 다른 방식으로 그에 액세스할 필요가 없다. 적어도 하나의 실시예에서, 환자 데이터의 기밀성은 HIPAA 및/또는 다른 데이터 규정들을 준수하여 보존된다.
도 39는 적어도 하나의 실시예에 따른, 이미징 데이터를 처리하기 위한 배치 파이프라인(3810A)의 예시적인 예시를 포함한다. 적어도 하나의 실시예에서, 시스템(3800) ― 및 구체적으로는 배치 시스템(3706) ― 은 배치 파이프라인(들)(3810A)을 하나 이상의 제작 환경들로 맞춤화, 업데이트, 및/또는 통합하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, 도 39의 배치 파이프라인(3810A)은, 시설에 있는(예컨대, 병원, 클리닉, 실험실, 연구 환경 등에 있는) 특정의 사용자(또는 사용자들의 팀)에 의해 맞춤 정의될 수 있는 배치 파이프라인(3810A)의 비-제한적인 예를 포함한다. 적어도 하나의 실시예에서, CT 스캐너(3902)에 대한 배치 파이프라인(3810A)을 정의하기 위해, 사용자는 CT 스캐너(3902)에 의해 생성되는 이미징 데이터에 대한 특정 기능들 또는 작업들을 수행하는 하나 이상의 애플리케이션을 ― 예컨대, 컨테이너 레지스트리로부터 ― 선택할 수 있다. 적어도 하나의 실시예에서, 애플리케이션들은, 시스템(3800)의 서비스들(3720) 및/또는 하드웨어(3722)를 활용할 수 있는 컨테이너들로서 배치 파이프라인(3810A)에 적용될 수 있다. 게다가, 배치 파이프라인(3810A)은, 애플리케이션들에 의해 사용하기 위한 데이터를 준비하기 위해 구현될 수 있는 부가적인 처리 작업들 또는 애플리케이션들을 포함할 수 있다(예컨대, DICOM 어댑터(3802B) 및 DICOM 판독기(3906)는 CT 재구성(3908), 장기 세그먼트화(3910) 등에 의해 사용하기 위한 데이터를 준비하기 위해 배치 파이프라인(3810A)에서 사용될 수 있음). 적어도 하나의 실시예에서, 배치 파이프라인(3810A)은 일관된 배치를 위해, 한 번의 사용을 위해, 또는 다른 빈도 또는 간격을 위해 맞춤화 또는 선택될 수 있다. 적어도 하나의 실시예에서, 사용자는, 특정 간격에 걸쳐 여러 피험자들에 대해 CT 재구성(3908) 및 장기 세그먼트화(3910)를 갖기를 요망할 수 있고, 그에 따라, 그 시간 기간 동안 파이프라인(3810A)을 배치할 수 있다. 적어도 하나의 실시예에서, 사용자는, 시스템(3800)으로부터의 각각의 요청에 대해, 사용자가 그 요청에 대한 그 데이터에 대해 처리를 수행하기를 원하는 애플리케이션들을 선택할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인(3810A)은 임의의 간격으로 조절될 수 있고, 시스템(3800) 내에서의 컨테이너 구조의 적응가능성 및 확장가능성 때문에, 이는 매끄러운 프로세스일 수 있다.
적어도 하나의 실시예에서, 도 39의 배치 파이프라인(3810A)은 환자 또는 피험자의 이미징 데이터를 생성하는 CT 스캐너(3902)를 포함할 수 있다. 적어도 하나의 실시예에서, CT 스캐너(3902)로부터의 이미징 데이터는, CT 스캐너(3902)를 수납하는 시설과 연관된 PACS 서버(들)(3904) 상에 저장될 수 있다. 적어도 하나의 실시예에서, PACS 서버(들)(3904)는 시설에서 이미징 양태들(예컨대, CT 스캐너(3902))과 직접 인터페이스할 수 있는 소프트웨어 및/또는 하드웨어 구성요소들을 포함할 수 있다. 적어도 하나의 실시예에서, DICOM 어댑터(3802B)는 DICOM 프로토콜들을 사용하여 DICOM 객체들의 전송 및 수신을 가능하게 할 수 있다. 적어도 하나의 실시예에서, DICOM 어댑터(3802B)는, 배치 파이프라인(3810A)에 의한 사용을 위해 PACS 서버(들)(3904)로부터의 DICOM 데이터의 준비 또는 구성에 도움을 줄 수 있다. 적어도 하나의 실시예에서, 일단 DICOM 데이터가 DICOM 어댑터(3802B)를 통해 처리되면, 파이프라인 관리자(3812)는 배치 파이프라인(3810A)으로 데이터를 라우팅할 수 있다. 적어도 하나의 실시예에서, DICOM 판독기(3906)는 DICOM 데이터로부터 이미지 파일들 및 임의의 연관된 메타데이터(예컨대, 시각화(3916A)에 예시된 바와 같은, 미가공 사이노그램(sinogram) 데이터)를 추출할 수 있다. 적어도 하나의 실시예에서, 추출되는 작업 파일들은 배치 파이프라인(3810A) 내의 다른 애플리케이션들에 의한 더 빠른 처리를 위해 캐시에 저장될 수 있다. 적어도 하나의 실시예에서, 일단 DICOM 판독기(3906)가 데이터를 추출 및/또는 저장하는 것을 완료하면, 완료의 신호가 파이프라인 관리자(3812)에게 통신될 수 있다. 적어도 하나의 실시예에서, 파이프라인 관리자(3812)는 이어서, 배치 파이프라인(3810A) 내의 하나 이상의 다른 애플리케이션 또는 컨테이너를 개시 또는 호출할 수 있다.
적어도 하나의 실시예에서, CT 재구성(3908) 애플리케이션 및/또는 컨테이너는, 일단 데이터(예컨대, 미가공 사이노그램 데이터)가 CT 재구성(3908) 애플리케이션에 의한 처리를 위해 이용가능하면 실행될 수 있다. 적어도 하나의 실시예에서, CT 재구성(3908)은 캐시로부터 미가공 사이노그램 데이터를 판독하고, (예컨대, 시각화(3916B)에서 예시된 바와 같이) 미가공 사이노그램 데이터로부터 이미지 파일을 재구성하고, 결과적인 이미지 파일을 캐시에 저장할 수 있다. 적어도 하나의 실시예에서, 재구성의 완료 시, 파이프라인 관리자(3812)에게, 재구성 작업이 완료되었음이 시그널링될 수 있다. 적어도 하나의 실시예에서, 일단 재구성이 완료되고, 재구성된 이미지 파일이 캐시(또는 다른 저장 디바이스)에 저장되면, 장기 세그먼트화(3910) 애플리케이션 및/또는 컨테이너가 파이프라인 관리자(3812)에 의해 트리거링될 수 있다. 적어도 하나의 실시예에서, 장기 세그먼트화(3910) 애플리케이션 및/또는 컨테이너는, 캐시로부터 이미지 파일을 판독하고, 이미지 파일을 정규화하거나 추론에 적합한 포맷으로 변환(예컨대, 이미지 파일을 기계 학습 모델의 입력 해상도로 변환)하고, 정규화된 이미지에 대해 추론을 실행할 수 있다. 적어도 하나의 실시예에서, 정규화된 이미지에 대한 추론을 실행하기 위해, 장기 세그먼트화(3910) 애플리케이션 및/또는 컨테이너는 서비스들(3720)에 의존할 수 있고, 파이프라인 관리자(3812) 및/또는 애플리케이션 조율 시스템(3828)은 장기 세그먼트화(3910) 애플리케이션 및/또는 컨테이너에 의한 서비스들(3720)의 사용을 용이하게 할 수 있다. 적어도 하나의 실시예에서, 예컨대, 장기 세그먼트화(3910) 애플리케이션 및/또는 컨테이너는, 정규화된 이미지에 대한 추론을 수행하기 위해 AI 서비스들(3818)을 활용할 수 있고, AI 서비스들(3818)은 하드웨어(3722)(예컨대, AI 시스템(3824))를 활용하여 AI 서비스들(3818)을 실행할 수 있다. 적어도 하나의 실시예에서, 추론의 결과는 캐시(또는 다른 저장 디바이스)에 저장될 수 있는 (예컨대, 시각화(3916C)에서 예시된 바와 같은) 마스크 파일일 수 있다.
적어도 하나의 실시예에서, 일단, DICOM 데이터 및/또는 DICOM 데이터로부터 추출된 데이터를 처리하는 애플리케이션들이 처리를 완료하면, 파이프라인 관리자(3812)에 대한 신호가 생성될 수 있다. 적어도 하나의 실시예에서, 파이프라인 관리자(3812)는 이어서, 캐시(또는 다른 저장 디바이스)로부터의 결과들을 판독하기 위해 DICOM 기입기(3912)를 실행하고, 요청을 생성한 시설에 있는 사용자들에 의해 사용하기 위해 결과들을 DICOM 포맷으로(예컨대, DICOM 출력(3914)으로서) 패키징할 수 있다. 적어도 하나의 실시예에서, DICOM 출력(3914)은 이어서 (예컨대, 시설에 있는 DICOM 관측자가 보기 위해) PACS 서버(들)(3904) 상의 저장을 위한 DICOM 출력(3914)을 준비하기 위해 DICOM 어댑터(3802B)로 송신될 수 있다. 적어도 하나의 실시예에서, 재구성 및 세그먼트화에 대한 요청에 대한 응답으로, 시각화들(3916B 및 3916C)이 생성되어, 진단, 연구, 및/또는 다른 목적들을 위해 사용자가 이용가능할 수 있다.
배치 파이프라인(3810A)에서 연속적인 애플리케이션으로서 예시되지만, CT 재구성(3908) 및 장기 세그먼트화(3910) 애플리케이션들은 적어도 하나의 실시예에서 병렬로 처리될 수 있다. 적어도 하나의 실시예에서, 애플리케이션들이 서로 종속성들을 갖지 않고, (예컨대, DICOM 판독기(3906)가 데이터를 추출한 후에) 각각의 애플리케이션에 대해 데이터가 이용가능한 경우, 애플리케이션들은 동시에, 실질적으로 동시에, 또는 일부 중첩으로 실행될 수 있다. 적어도 하나의 실시예에서, 2개 이상의 애플리케이션이 유사한 서비스들(3720)을 요구하는 경우, 다양한 애플리케이션들 사이에서 그리고 그들 간에 컴퓨팅 또는 처리 리소스들의 부하 균형을 맞추고 그 리소스들을 분배하기 위해 시스템(3800)의 스케줄러가 사용될 수 있다. 적어도 하나의 실시예에서, 일부 실시예들에서는, 애플리케이션들에 대한 병렬 처리를 수행하여 배치 파이프라인(3810A)의 런타임을 감소시킴으로써 실시간 결과들을 제공하기 위해 병렬 컴퓨팅 플랫폼(3830)이 사용될 수 있다.
적어도 하나의 실시예에서, 그리고 도 40a 내지 도 40b를 참조하면, 배치 시스템(3706)은, 이미징 디바이스들(예컨대, CT 스캐너들, X선 기계들, MRI 기계들 등), 시퀀싱 디바이스들, 유전체학 디바이스들, 및/또는 다른 디바이스 유형들로 ― 이미지 처리, 세그먼트화, 향상, AI, 시각화, 및 추론과 같은 ― 상이한 기능성들을 수행하기 위한 하나 이상의 가상 기기로서 구현될 수 있다. 적어도 하나의 실시예에서, 시스템(3800)은, 디바이스(들)에 의해 생성되는 미가공/미처리된 입력 데이터를 수신하고 처리된/재구성된 데이터를 출력할 수 있는 소프트웨어에 의해 정의된 배치 파이프라인(3810)을 포함할 수 있는 가상 기기들의 생성 및 프로비전을 허용할 수 있다. 적어도 하나의 실시예에서, 가상 기기들을 표현하는 배치 파이프라인들(3810)(예컨대, 3810A 및 3810B)은, 이를테면, 기계 학습 모델들을 활용함으로써, 파이프라인에 지능을 구현하여, 컨테이너화된 추론 지원을 시스템에 제공할 수 있다. 적어도 하나의 실시예에서, 가상 기기들은, 각각이 애플리케이션들의 인스턴스화들을 포함하는 임의의 수의 컨테이너를 실행할 수 있다. 적어도 하나의 실시예에서, 이를테면, 실시간 처리가 요망되는 경우, 가상 기기들을 표현하는 배치 파이프라인들(3810)은 정적(예컨대, 컨테이너들 및/또는 애플리케이션들이 설정될 수 있음)일 수 있는 한편, 다른 예들에서, 가상 기기들에 대한 컨테이너 및/또는 애플리케이션들은 (예컨대, 컨테이너 레지스트리 내의) 애플리케이션들 또는 리소스들의 풀로부터 (예컨대, 요청 기반으로) 선택될 수 있다.
적어도 하나의 실시예에서, 시스템(3800)은, 예컨대, 시설에서 방사선학 기계, 이미징 디바이스, 및/또는 다른 디바이스 유형 옆에 배치되거나 다른 방식으로 통신하는 컴퓨팅 시스템에서, 시설 구내의 하나 이상의 가상 기기로서 인스턴스화되거나 실행될 수 있다. 그러나, 적어도 하나의 실시예에서, 구내 설치는, 디바이스 자체의 컴퓨팅 시스템(예컨대, 이미징 디바이스에 통합된 컴퓨팅 시스템) 내에서, 로컬 데이터 센터(예컨대, 구내 데이터 센터)에서, 그리고/또는 클라우드-환경에서(예컨대, 클라우드(3826)에서)에서 인스턴스화되거나 실행될 수 있다. 적어도 하나의 실시예에서, 가상 기기로서 동작하는 배치 시스템(3706)은, 일부 예들에서, 슈퍼컴퓨터 또는 다른 HPC 시스템에 의해 인스턴스화될 수 있다. 적어도 하나의 실시예에서, 구내 설치는, 실시간 처리를 위한 (예컨대, 이더넷을 통한 RF와 같은 더 높은 처리량의 로컬 통신 인터페이스를 통한) 고대역폭 사용들을 허용할 수 있다. 적어도 하나의 실시예에서, 실시간 또는 거의 실시간 처리는, 가상 기기가 초음파 디바이스, 또는 정확한 진단 및 분석을 위해 즉각적인 시각화들이 예상되거나 요구되는 다른 이미징 양태를 지원하는 경우에 특히 유용할 수 있다. 적어도 하나의 실시예에서, 클라우드-컴퓨팅 아키텍처는, 로컬 수요가 구내 용량 또는 능력을 초과할 때, 클라우드 컴퓨팅 서비스 제공자, 또는 다른 컴퓨팅 클러스터로의 동적 버스팅이 가능할 수 있다. 적어도 하나의 실시예에서, 클라우드 아키텍처는, 구현될 때, 훈련 시스템(3704)에 관하여 본원에 설명된 바와 같이, 신경망들 또는 다른 기계 학습 모델들을 훈련시키도록 조정될 수 있다. 적어도 하나의 실시예에서, 훈련 파이프라인들이 제자리에 있으면, 기계 학습 모델들은 그들이 지원하는 디바이스들로부터의 부가적인 데이터를 처리함에 따라 지속적으로 학습되고 개선될 수 있다. 적어도 하나의 실시예에서, 가상 기기들은, 부가적인 데이터, 새로운 데이터, 기존의 기계 학습 모델들, 및/또는 새로운 또는 업데이트된 기계 학습 모델들을 사용하여 지속적으로 개선될 수 있다.
적어도 하나의 실시예에서, 컴퓨팅 시스템은 본원에 설명된 하드웨어(3722)의 일부 또는 그 전부를 포함할 수 있고, 하드웨어(3722)는, 디바이스 내에, 디바이스에 결합되고 그에 근접하게 위치된 컴퓨팅 디바이스의 일부로서, 시설의 로컬 데이터 센터에, 그리고/또는 클라우드(3826)에 있는 것을 포함하는 다수의 방식들 중 임의의 방식으로 분산될 수 있다. 적어도 하나의 실시예에서, 배치 시스템(3706) 및 연관된 애플리케이션들 또는 컨테이너들이 소프트웨어로(예컨대, 애플리케이션들의 별개의 컨테이너화된 인스턴스화들로서) 생성되기 때문에, 가상 기기들의 거동, 동작, 및 구성뿐만 아니라 가상 기기들에 의해 생성되는 출력들은, 가상 기기가 지원하는 디바이스의 미가공 출력을 변경하거나 바꿀 필요 없이, 요망되는 바와 같이 수정되거나 맞춤화될 수 있다.
도 40a는 적어도 하나의 실시예에 따른, 초음파 디바이스를 지원하는 가상 기기의 예시적인 데이터 흐름도를 포함한다. 적어도 하나의 실시예에서, 배치 파이프라인(3810B)은 시스템(3800)의 서비스들(3720) 중 하나 이상을 활용할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인(3810B) 및 서비스들(3720)은 로컬로 또는 클라우드(3826)에서 시스템의 하드웨어(3722)를 활용할 수 있다. 적어도 하나의 실시예에서, 예시되지는 않지만, 프로세스(4000)는 파이프라인 관리자(3812), 애플리케이션 조율 시스템(3828), 및/또는 병렬 컴퓨팅 플랫폼(3830)에 의해 용이해질 수 있다.
적어도 하나의 실시예에서, 프로세스(4000)는, 초음파 디바이스(4002)로부터의 이미징 데이터의 수신을 포함할 수 있다. 적어도 하나의 실시예에서, 이미징 데이터는 DICOM 포맷(또는 RIS, CIS, REST 준수, RPC, 미가공 등과 같은 다른 포맷)으로 PACS 서버(들) 상에 저장될 수 있고, 초음파 디바이스(4002)에 대한 가상 기기(예컨대, 가상 초음파)로서 선택되거나 맞춤화된 배치 파이프라인(3810)을 통한 처리를 위해 시스템(3800)에 의해 수신될 수 있다. 적어도 하나의 실시예에서, 이미징 데이터는 이미징 디바이스(예컨대, 초음파 디바이스(4002))로부터 직접 수신되고 가상 기기에 의해 처리될 수 있다. 적어도 하나의 실시예에서, 이미징 디바이스와 가상 기기 사이에 통신가능하게 결합되는 트랜스듀서 또는 다른 신호 변환기는, 이미징 디바이스에 의해 생성되는 신호 데이터를 가상 기기에 의해 처리될 수 있는 이미지 데이터로 변환할 수 있다. 적어도 하나의 실시예에서, 미가공 데이터 및/또는 이미지 데이터는 배치 파이프라인(3810B)의 애플리케이션들 또는 컨테이너들에 의한 사용을 위해서 데이터를 추출하기 위해 DICOM 판독기(3906)에 적용될 수 있다. 적어도 하나의 실시예에서, DICOM 판독기(3906)는, 애플리케이션들 또는 컨테이너들에 의한 사용을 위해서 데이터를 추출, 크기조정, 리스케일링, 및/또는 다른 방식으로 준비하기 위해 데이터 증강 라이브러리(4014)(예컨대, 엔비디아의 DALI)를 서비스(3720)로서(예컨대, 컴퓨팅 서비스(들)(3816) 중 하나로서) 활용할 수 있다.
적어도 하나의 실시예에서, 일단 데이터가 준비되면, 재구성(4006) 애플리케이션 및/또는 컨테이너가 실행되어 초음파 디바이스(4002)로부터의 데이터를 이미지 파일로 재구성할 수 있다. 적어도 하나의 실시예에서, 재구성(4006) 후에, 또는 재구성(4006)과 동시에, 이상 검출, 객체 검출, 피쳐 검출, 및/또는 데이터와 관련된 다른 검출 작업들을 위해 검출(4008) 애플리케이션 및/또는 컨테이너가 실행될 수 있다. 적어도 하나의 실시예에서, 재구성(4006) 동안에 생성된 이미지 파일은, 검출(4008) 동안, 이상들, 객체들, 피쳐들 등을 식별하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, 검출(4008) 애플리케이션은, (예컨대, AI 서비스(들)(3818) 중 하나로서) 추론 엔진(4016)을 활용하여, 검출들을 생성하기 위한 데이터에 대한 추론을 수행할 수 있다. 적어도 하나의 실시예에서, (예컨대, 훈련 시스템(3704)으로부터의) 하나 이상의 기계 학습 모델이 검출(4008) 애플리케이션에 의해 실행되거나 호출될 수 있다.
적어도 하나의 실시예에서, 일단 재구성(4006) 및/또는 검출(4008)이 완료되면, 이러한 애플리케이션 및/또는 컨테이너로들부터의 데이터 출력은, 워크스테이션 또는 디스플레이 단말기 상에 디스플레이되는 시각화(4012)(예컨대, 그레이스케일 출력)와 같은 시각화(4010)를 생성하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 시각화는 기술자 또는 다른 사용자가 초음파 디바이스(4002)에 관한 배치 파이프라인(3810B)의 결과들을 시각화하는 것을 허용할 수 있다. 적어도 하나의 실시예에서, 시각화(4010)는 시스템(3800)의 렌더링 구성요소(4018)(예컨대, 시각화 서비스(들)(3820) 중 하나)를 활용으로써 실행될 수 있다. 적어도 하나의 실시예에서, 렌더링 구성요소(4018)는 2D, OpenGL, 또는 광선-추적 서비스를 실행하여 시각화(4012)를 생성할 수 있다.
도 40b는 적어도 하나의 실시예에 따른, CT 스캐너를 지원하는 가상 기기의 예시적인 데이터 흐름도를 포함한다. 적어도 하나의 실시예에서, 배치 파이프라인(3810C)은 시스템(3800)의 서비스들(3720) 중 하나 이상을 활용할 수 있다. 적어도 하나의 실시예에서, 배치 파이프라인(3810C) 및 서비스들(3720)은 로컬로 또는 클라우드(3826)에서 시스템의 하드웨어(3722)를 활용할 수 있다. 적어도 하나의 실시예에서, 예시되지는 않지만, 프로세스(4020)는 파이프라인 관리자(3812), 애플리케이션 조율 시스템(3828), 및/또는 병렬 컴퓨팅 플랫폼(3830)에 의해 용이해질 수 있다.
적어도 하나의 실시예에서, 프로세스(4020)는, CT 스캐너(4022)가 DICOM 판독기(3906)에 의해 수신될 수 있는 미가공 데이터를 (예컨대, 처리 후에, PACS 서버(3904)를 통해, 직접 등으로) 생성하는 것을 포함할 수 있다. 적어도 하나의 실시예에서, (배치 파이프라인(3810C)에 의해 인스턴스화된) 가상 CT는, 환자(예컨대, 환자 움직임 검출 AI(4026))를 모니터링하기 위한 그리고/또는 (예컨대, 노출 제어 AI(4024)를 사용하여) CT 스캐너(4022)의 노출을 조정 또는 최적화하기 위한 제1 실시간 파이프라인을 포함할 수 있다. 적어도 하나의 실시예에서, 애플리케이션들(예컨대, 4024 및 4026) 중 하나 이상은 AI 서비스(들)(3818)와 같은 서비스(3720)를 활용할 수 있다. 적어도 하나의 실시예에서, 노출 제어 AI(4024) 애플리케이션(또는 컨테이너) 및/또는 환자 움직임 검출 AI(4026) 애플리케이션(또는 컨테이너)의 출력들은, 노출(또는 CT 스캐너(4022)의 다른 설정들)을 조정하고/거나 환자에게 덜 움직일 것을 알리기 위한 CT 스캐너(4022) 및/또는 기술자에 대한 피드백으로서 사용될 수 있다.
적어도 하나의 실시예에서, 배치 파이프라인(3810C)은 CT 스캐너(4022)에 의해 생성된 데이터를 분석하기 위한 비-실시간 파이프라인을 포함할 수 있다. 적어도 하나의 실시예에서, 제2 파이프라인은, CT 재구성(3908) 애플리케이션 및/또는 컨테이너, 개략 검출 AI(4028) 애플리케이션 및/또는 컨테이너, 정밀 검출 AI(4032) 애플리케이션 및/또는 컨테이너(예컨대, 여기서, 특정 결과들은 개략 검출 AI(4028)에 의해 검출됨), 시각화(4030) 애플리케이션 및/또는 컨테이너, 및 DICOM 기입기(3912)(및/또는 RIS, CIS, REST 준수, RPC, 미가공 등과 같은 다른 데이터 유형 기입기) 애플리케이션 및/또는 컨테이너를 포함할 수 있다. 적어도 하나의 실시예에서, CT 스캐너(4022)에 의해 생성된 미가공 데이터는 (가상 CT 기기로서 인스턴스화된) 배치 파이프라인(3810C)의 파이프라인들을 통해 전달되어 결과들을 생성할 수 있다. 적어도 하나의 실시예에서, DICOM 기입기(3912)로부터의 결과들은 디스플레이를 위해 송신될 수 있고/거나 기술자, 진료의 또는 다른 사용자에 의한 나중의 검색, 분석 또는 디스플레이를 위해 PACS 서버(들)(3904) 상에 저장될 수 있다.
도 41a는 적어도 하나의 실시예에 따른, 기계 학습 모델을 훈련시키거나, 재훈련시키거나, 또는 업데이트하는 프로세스(4100)에 대한 데이터 흐름도를 예시한다. 적어도 하나의 실시예에서, 프로세스(4100)는, 비-제한적인 예로서, 도 38의 시스템(3800)을 사용하여 실행될 수 있다. 적어도 하나의 실시예에서, 프로세스(4100)는, 본원에 설명된 바와 같이, 시스템(3800)의 서비스들(3720) 및/또는 하드웨어(3722)를 활용할 수 있다. 적어도 하나의 실시예에서, 프로세스(4100)에 의해 생성된 정교화된 모델들(4112)은 배치 파이프라인(3810) 내의 하나 이상의 컨테이너화된 애플리케이션에 대해 배치 시스템(3706)에 의해 실행될 수 있다.
적어도 하나의 실시예에서, 모델 훈련(3714)은, 새로운 훈련 데이터(예컨대, 고객 데이터세트(4106)와 같은 새로운 입력 데이터, 및/또는 입력 데이터와 연관된 새로운 실측 정보 데이터)를 사용하여 초기 모델(4104)(예컨대, 사전 훈련된 모델)을 재훈련 또는 업데이트하는 것을 포함할 수 있다. 적어도 하나의 실시예에서, 초기 모델(4104)을 재훈련 또는 업데이트하기 위해, 초기 모델(4104)의 출력 또는 손실 계층(들)은 리셋되거나, 삭제되고/거나 업데이트된 또는 새로운 출력 또는 손실 계층(들)으로 대체될 수 있다. 적어도 하나의 실시예에서, 초기 모델(4104)은 이전 훈련으로부터 남아 있는 이전에 정밀-조정된 파라미터들(예컨대, 가중치들 및/또는 바이어스들)을 가질 수 있으므로, 훈련 또는 재훈련(3714)은 스크래치로부터 모델을 훈련시키는 것만큼 오래 걸리거나 많은 처리를 요구하지 않을 수 있다. 적어도 하나의 실시예에서, 모델 훈련(3714) 동안, 초기 모델(4104)의 출력 또는 손실 계층(들)을 리셋하거나 대체함으로써, 파라미터들은, 새로운 고객 데이터세트(4106)(예컨대, 도 37의 이미지 데이터(3708))에 대한 예측들을 생성하는 것에서의 출력 또는 손실 계층(들)의 정확도와 연관된 손실 계산들에 기반하여 새로운 데이터세트에 대해 업데이트되고 재조정될 수 있다.
적어도 하나의 실시예에서, 사전 훈련된 모델들(3806)은 데이터 저장소 또는 레지스트리(예컨대, 도 37의 모델 레지스트리(3724))에 저장될 수 있다. 적어도 하나의 실시예에서, 사전 훈련된 모델들(3806)은 프로세스(4100)를 실행하는 시설 이외의 하나 이상의 시설에서 적어도 부분적으로 훈련되었을 수 있다. 적어도 하나의 실시예에서, 상이한 시설들의 환자들, 피험자들, 또는 클라이언트들의 개인정보 및 권리들을 보호하기 위해, 사전 훈련된 모델들(3806)은 구내에서 생성된 고객 또는 환자 데이터를 사용하여 구내에서 훈련되었을 수 있다. 적어도 하나의 실시예에서, 사전 훈련된 모델들(3806)은 클라우드(3826) 및/또는 다른 하드웨어(3722)를 사용하여 훈련될 수 있지만, 기밀의 개인정보 보호된 환자 데이터는 클라우드(3826)(또는 다른 구외 하드웨어)의 임의의 구성요소들로 전송되지 않거나, 그에 의해 사용되지 않거나, 또는 그에 액세스가능하지 않을 수 있다. 적어도 하나의 실시예에서, 사전 훈련된 모델(3806)이 하나 초과의 시설로부터의 환자 데이터를 사용하여 훈련되는 경우, 사전 훈련된 모델(3806)은 다른 시설로부터의 환자 또는 고객 데이터에 대해 훈련되기 전에 각각의 시설에 대해 개별적으로 훈련되었을 수 있다. 적어도 하나의 실시예에서, 이를테면, 고객 또는 환자 데이터가 (예컨대, 포기에 의해, 실험적 사용을 위해 등을 위해) 프라이버시 우려들이 해제된 경우, 또는 고객 또는 환자 데이터가 공공 데이터세트에 포함된 경우, 임의의 수의 시설로부터의 고객 또는 환자 데이터는 데이터 센터 또는 다른 클라우드 컴퓨팅 기반구조에서와 같이 구내 및/또는 구외에서 사전 훈련된 모델(3806)을 훈련시키는 데 사용될 수 있다.
적어도 하나의 실시예에서, 배치 파이프라인들(3810)에서 사용하기 위한 애플리케이션들을 선택할 때, 사용자는 또한, 특정 애플리케이션들에 대해 사용될 기계 학습 모델들을 선택할 수 있다. 적어도 하나의 실시예에서, 사용자는 사용할 모델을 갖지 않을 수 있고, 그러므로, 사용자는 애플리케이션과 함께 사용할 사전 훈련된 모델(3806)을 선택할 수 있다. 적어도 하나의 실시예에서, 사전 훈련된 모델(3806)은 (예컨대, 환자 다양성, 인구통계, 사용된 의료 이미징 디바이스들의 유형들 등에 기반하여) 사용자의 시설의 고객 데이터세트(4106)에 대한 정확한 결과들을 생성하도록 최적화되지 않을 수 있다. 적어도 하나의 실시예에서, 사전 훈련된 모델(3806)을 애플리케이션(들)과 함께 사용하기 위해 배치 파이프라인(3810)에 배치하기 전에, 사전 훈련된 모델(3806)은 개개의 시설에서의 사용을 위해 업데이트, 재훈련, 및/또는 정밀-조정될 수 있다.
적어도 하나의 실시예에서, 사용자는 업데이트, 재훈련, 및/또는 정밀-조정될 사전 훈련된 모델(3806)을 선택할 수 있고, 사전 훈련된 모델(3806)은 프로세스(4100) 내에서 훈련 시스템(3704)에 대한 초기 모델(4104)로 지칭될 수 있다. 적어도 하나의 실시예에서, 고객 데이터세트(4106)(예컨대, 이미징 데이터, 유전체학 데이터, 시퀀싱 데이터, 또는 시설에 있는 디바이스들에 의해 생성된 다른 데이터 유형들)는 정교화된 모델(4112)을 생성하기 위해 초기 모델(4104)에 대해 모델 훈련(3714)(제한 없이, 전이 학습을 포함할 수 있음)을 수행하는 데 사용될 수 있다. 적어도 하나의 실시예에서, 고객 데이터세트(4106)에 대응하는 실측 정보 데이터는 훈련 시스템(3704)에 의해 생성될 수 있다. 적어도 하나의 실시예에서, 실측 정보 데이터는, (예컨대, 도 37의 라벨링된 클리닉 데이터(3712)로서) 시설에서 임상의들, 과학자들, 의사들, 의료인들에 의해 적어도 부분적으로 생성될 수 있다.
적어도 하나의 실시예에서, AI-보조 주석(3710)이 일부 예들에서 실측 정보 데이터를 생성하기 위해 사용될 수 있다. 적어도 하나의 실시예에서, AI-보조 주석(3710)(예컨대, AI-보조 주석 SDK를 사용하여 구현됨)은 고객 데이터세트에 대한 제안된 또는 예측 실측 정보 데이터를 생성하기 위해 기계 학습 모델들(예컨대, 신경망들)을 활용할 수 있다. 적어도 하나의 실시예에서, 사용자(4110)는 컴퓨팅 디바이스(4108) 상의 사용자 인터페이스(그래픽 사용자 인터페이스(GUI)) 내의 주석 툴들을 사용할 수 있다.
적어도 하나의 실시예에서, 사용자(4110)는 컴퓨팅 디바이스(4108)를 통해 GUI와 상호작용하여 주석들 또는 자동-주석들을 편집 또는 정밀-조정할 수 있다. 적어도 하나의 실시예에서, 다각형의 정점들을 더 정확한 또는 정밀-조정된 위치들로 이동시키기 위해 다각형 편집 특징이 사용될 수 있다.
적어도 하나의 실시예에서, 일단 고객 데이터세트(4106)가 연관된 실측 정보 데이터를 가지면, 정교화된 모델(4112)을 생성하기 위해 모델 훈련(3714) 동안 이에 의해 (예컨대, AI-보조 주석, 수동 라벨링 등으로부터의) 실측 정보 데이터가 사용될 수 있다. 적어도 하나의 실시예에서, 고객 데이터세트(4106)는 초기 모델(4104)에 임의의 횟수로 적용될 수 있고, 정교화된 모델(4112)에 대해 수용가능한 정확도 레벨이 달성될 때까지 초기 모델(4104)의 파라미터들을 업데이트하기 위해 실측 정보 데이터가 사용될 수 있다. 적어도 하나의 실시예에서, 일단 정교화된 모델(4112)이 생성되면, 정교화된 모델(4112)은, 의료 이미징 데이터에 대한 하나 이상의 처리 작업을 수행하기 위해 시설에 있는 하나 이상의 배치 파이프라인(3810) 내에 배치될 수 있다.
적어도 하나의 실시예에서, 정교화된 모델(4112)은 다른 시설에 의해 선택되도록 모델 레지스트리(3724) 내의 사전 훈련된 모델들(3806)에 업로드될 수 있다. 적어도 하나의 실시예에서, 그의 프로세스는, 정교화된 모델(4112)이 더 범용적인 모델을 생성하기 위해 새로운 데이터세트들에 대해 임의의 횟수로 추가로 정교화될 수 있도록, 임의의 수의 시설에서 완료될 수 있다.
도 41b는 적어도 하나의 실시예에 따른, 사전 훈련된 주석 모델들로 주석 툴들을 향상시키기 위한 클라이언트-서버 아키텍처(4132)의 예시적인 예시이다. 적어도 하나의 실시예에서, AI-보조 주석 툴들(4136)은 클라이언트-서버 아키텍처(4132)에 기반하여 인스턴스화될 수 있다. 적어도 하나의 실시예에서, 이미징 애플리케이션들에서의 주석 툴들(4136)은, 방사선 전문의들이, 예컨대, 장기들 및 이상들을 식별하는 데 도움을 줄 수 있다. 적어도 하나의 실시예에서, 이미징 애플리케이션들은, 사용자(4110)가, 비-제한적인 예로서, (예컨대, 3D MRI 또는 CT 스캔에서의) 미가공 이미지들(4134) 내의 특정 관심 장기 상의 몇몇 변곡점(extreme point)들을 식별하고 특정 장기의 모든 2D 슬라이스들에 대한 자동-주석부기된 결과들을 수신하는 것을 돕는 소프트웨어 툴들을 포함할 수 있다. 적어도 하나의 실시예에서, 결과들은 훈련 데이터(4138)로서 데이터 저장소에 저장될 수 있고, (예컨대, 제한 없이) 훈련을 위한 실측 정보 데이터로서 사용될 수 있다. 적어도 하나의 실시예에서, 컴퓨팅 디바이스(4108)가 AI-보조 주석(3710)에 대한 변곡점들을 전송할 때, 심층 학습 모델은, 예컨대, 이러한 데이터를 입력으로서 수신하고 세그먼트화된 장기 또는 이상의 추론 결과들을 반환할 수 있다. 적어도 하나의 실시예에서, 도 41b의 AI-보조 주석 툴(4136B)과 같은 사전 인스턴스화된 주석 툴들은, 예컨대, 주석 모델 레지스트리에 저장된 사전 훈련된 모델들(4142)의 세트를 포함할 수 있는 주석 지원 서버(4140)와 같은 서버에 API 호출들(예컨대, API 호출(4144))을 행함으로써 향상될 수 있다. 적어도 하나의 실시예에서, 주석 모델 레지스트리는 특정 장기 또는 이상에 대해 AI-보조 주석을 수행하도록 사전 훈련되는 사전 훈련된 모델들(4142)(예컨대, 심층 학습 모델들과 같은 기계 학습 모델들)을 저장할 수 있다. 적어도 하나의 실시예에서, 이러한 모델들은 훈련 파이프라인들(3804)을 사용함으로써 추가로 업데이트될 수 있다. 적어도 하나의 실시예에서, 사전 설치된 주석 툴들은, 새로운 라벨링된 클리닉 데이터(3712)가 부가됨에 따라 시간 경과에 따라 개선될 수 있다.
추론 및/또는 훈련 로직(815)은, 하나 이상의 실시예와 연관된 추론 및/또는 훈련 연산들을 수행하는 데 사용된다. 추론 및/또는 훈련 로직(815)에 관한 세부사항들은 도 8a 및/또는 도 8b와 연계하여 본원에서 제공된다.
적어도 하나의 실시예에서, 단일 반도체 플랫폼은, 단독의 일체형 반도체 기반 집적 회로 또는 칩을 지칭할 수 있다. 적어도 하나의 실시예에서, 멀티칩 모듈들은, 온-칩 동작을 시뮬레이팅하고 종래의 중앙 처리 유닛("CPU") 및 버스 구현을 활용하는 것에 비해 상당한 개선들을 이루는 증가된 연결성으로 사용될 수 있다. 적어도 하나의 실시예에서, 다양한 모듈은 또한, 사용자의 요구들에 따라 별개로 또는 반도체 플랫폼들의 다양한 조합들로 위치될 수 있다.
적어도 하나의 실시예에서, 도 14를 다시 참조하면, 기계 판독가능 실행가능 코드 또는 컴퓨터 제어 로직 알고리즘들의 형태의 컴퓨터 프로그램들이 메인 메모리(1404) 및/또는 보조 저장소에 저장된다. 컴퓨터 프로그램은, 적어도 하나의 실시예에 따르면, 하나 이상의 프로세서에 의해 실행되는 경우, 시스템(1400)이 다양한 기능을 수행할 수 있게 한다. 적어도 하나의 실시예에서, 메모리(1404), 저장소, 및/또는 임의의 다른 저장소는 컴퓨터 판독가능 매체의 가능한 예들이다. 적어도 하나의 실시예에서, 보조 저장소는, 플로피 디스크 드라이브, 자기 테이프 드라이브, 콤팩트 디스크 드라이브, 디지털 다기능 디스크("DVD") 드라이브, 기록 디바이스, 범용 직렬 버스("USB") 플래시 메모리 등을 표현하는 하드 디스크 드라이브 및/또는 착탈식 저장 드라이브와 같은 임의의 적합한 저장 디바이스 또는 시스템을 지칭할 수 있다. 적어도 하나의 실시예에서, 다양한 이전 도면들의 아키텍처 및/또는 기능성은, CPU(1402), 병렬 처리 시스템(1412), CPU(1402)와 병렬 처리 시스템(1412) 둘 모두의 능력들의 적어도 일부분이 가능한 집적 회로, 칩셋(예컨대, 관련된 기능들을 수행하기 위한 유닛으로서 작동 및 판매되도록 설계된 집적 회로들의 그룹 등), 및/또는 집적 회로(들)의 임의의 적합한 조합의 맥락에서 구현된다.
적어도 하나의 실시예에서, 다양한 이전 도면들의 아키텍처 및/또는 기능성은, 일반 컴퓨터 시스템, 회로 기판 시스템, 엔터테인먼트 목적들에 전용인 게임 콘솔 시스템, 애플리케이션-특정 시스템 등의 맥락에서 구현된다. 적어도 하나의 실시예에서, 컴퓨터 시스템(1400)은, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버들, 슈퍼컴퓨터들, 스마트폰(예컨대, 무선, 핸드헬드 디바이스), 개인 휴대 정보 단말기("PDA”), 디지털 카메라, 차량, 헤드 장착형 디스플레이, 핸드헬드 전자 디바이스, 모바일폰 디바이스, 텔레비전, 워크스테이션, 게임 콘솔들, 임베디드 시스템, 및/또는 임의의 다른 유형의 로직의 형태를 취할 수 있다.
적어도 하나의 실시예에서, 병렬 처리 시스템(1412)은, 제한 없이, 복수의 병렬 처리 유닛("PPU")들(1414) 및 연관된 메모리들(1416)을 포함한다. 적어도 하나의 실시예에서, PPU들(1414)은, 상호연결부(1418) 및 스위치(1420) 또는 멀티플렉서를 통해 호스트 프로세서 또는 다른 주변 디바이스들에 연결된다. 적어도 하나의 실시예에서, 병렬 처리 시스템(1412)은 병렬화될 수 있는 PPU들(1414)에 걸쳐, 예컨대, 다수의 그래픽 처리 유닛("GPU") 스레드 블록들에 걸친 계산 작업들의 분배의 일부로서 계산 작업들을 분배한다. 적어도 하나의 실시예에서, 메모리는 PPU들(1414) 중 일부 또는 그 전체에 걸쳐 (예컨대, 판독 및/또는 기입 액세스에 대해) 공유되고 액세스가능하지만, 그러한 공유 메모리는 PPU(1414)에 상주하는 레지스터들 및 로컬 메모리의 사용에 대해 성능 페널티들을 초래할 수 있다. 적어도 하나의 실시예에서, PPU들(1414)의 동작은
Figure pct00007
와 같은 명령의 사용을 통해 동기화되며, 여기서, (예컨대, 다수의 PPU들(1414)에 걸쳐 실행되는) 블록 내의 모든 스레드들은 진행하기 전에 코드의 특정 실행 지점에 도달한다.
다른 변형들이 본 개시내용의 사상 내에 있다. 그에 따라, 개시된 기법들은 다양한 수정들 및 대안적인 구성들을 허용하지만, 그의 특정한 예시된 실시예들이 도면들에 도시되고 위에서 상세히 설명되었다. 그러나, 개시된 특정 형태 또는 형태들로 본 개시내용을 제한하려는 의도는 없지만, 첨부된 청구항들에서 정의되는 바와 같은 본 개시내용의 사상 및 범위 내에 속하는 모든 수정들, 대안적 구성들, 및 등가물들을 포함하는 것이 그 의도임이 이해되어야 한다.
본 개시내용의 적어도 하나의 실시예는 다음의 항목들을 고려하여 설명될 수 있다:
1. 프로세서는,
적어도, 프로세서에 의해 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하는 하나 이상의 회로를 포함한다.
2. 항목 1의 프로세서에서, 하나 이상의 회로는, 적어도, 하나 이상의 데이터 세트가 하나 이상의 구조적 희소도 제약을 따르는 하나 이상의 데이터 서브세트를 포함하도록 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 희소도에 대한 증가를 야기한다.
3. 항목 2의 프로세서에서, 하나 이상의 구조적 희소도 제약은, 하나 이상의 데이터 세트에 대해 제한을 부과하며, 이 제한에 의해, 하나 이상의 데이터 서브세트는 적어도, 제1 양(first quantity)의 영이 아닌 데이터 값 및 제2 양(second quantity)의 영 데이터 값을 포함한다.
4. 항목 2 또는 항목 3의 프로세서에서, 하나 이상의 회로는, 하나 이상의 데이터 세트 내의 제1 위치를 갖는, 하나 이상의 데이터 서브세트의 제1 서브세트를, 하나 이상의 데이터 세트 내의 제2 위치를 갖는, 하나 이상의 데이터 서브세트의 제2 서브세트와 스와핑함으로써, 하나 이상의 데이터 세트 내의 요소들을 재배열한다.
5. 항목 1 내지 항목 4 중 임의의 항목의 프로세서에서,
하나 이상의 데이터 세트는, 적어도 제1 인덱스 및 제2 인덱스를 사용하여 액세스가능한 수치 값들을 포함하고;
하나 이상의 데이터 세트는, 제1 인덱스와 연관된 제1 데이터 서브세트 및 제2 인덱스와 연관된 제2 데이터 서브세트를 포함하며;
하나 이상의 회로는, 적어도, 제1 인덱스와 연관된 제1 데이터 서브세트의 수치 값들을 제2 행렬과 연관된 제2 데이터 서브세트와 교환함으로써, 희소도에 대한 증가를 야기한다.
6. 항목 1 내지 항목 5 중 임의의 항목의 프로세서에서, 하나 이상의 데이터 세트는, 하나 이상의 신경망과 연관된 가중치 파라미터들에 대응하는 수치 값들을 포함한다.
7. 항목 1 내지 항목 6 중 임의의 항목의 프로세서에서, 하나 이상의 데이터 세트 내의 각각의 데이터 값은 제1 인덱스 값 및 제2 인덱스 값과 연관되고, 제1 인덱스 값 및 제2 인덱스 값은 하나 이상의 데이터 세트 내의 각각의 데이터 값의 위치를 표시한다.
8. 항목 1 내지 항목 7 중 임의의 항목의 프로세서에서, 하나 이상의 회로는, 하나 이상의 데이터 세트 내의 2개 이상의 데이터 서브세트를 스와핑하기 위한 변환들의 세트를 결정하기 위해 심층 학습 프레임워크를 사용하여 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하며, 심층 학습 프레임워크는 추가로, 2개 이상의 데이터 서브세트 내의 하나 이상의 데이터 값을 영으로 설정한다.
9. 시스템은,
하나 이상의 프로세서; 및
명령어들을 포함하는 메모리를 포함하며, 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금 적어도,
적어도, 하나 이상의 프로세서에 의해 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하게 한다.
10. 항목 9의 시스템에서, 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 심층 학습 프레임워크로 하여금, 하나 이상의 희소도 제약에 적어도 부분적으로 기반하여 하나 이상의 데이터 세트를 변환하게 하는 명령어들을 더 포함한다.
11. 항목 10의 시스템에서, 하나 이상의 희소도 제약은 적어도 하나의 제약을 포함하며, 하나 이상의 데이터 세트의 서브세트는 적어도, 제1 양의 영이 아닌 데이터 값 및 제2 양의 영 데이터 값을 포함한다.
12. 항목 10 또는 항목 11의 시스템에서, 심층 학습 프레임워크는, 제1 위치 값과 연관된, 하나 이상의 데이터 세트의 적어도 제1 서브세트를, 제2 위치 값과 연관된, 하나 이상의 데이터 세트의 적어도 제2 서브세트와 교환함으로써, 하나 이상의 데이터 세트를 변환한다.
13. 항목 10 내지 항목 12 중 임의의 항목의 시스템에서, 심층 학습 프레임워크는, 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
제1 위치 값과 연관된, 하나 이상의 데이터 세트의 제1 서브세트, 및 제2 위치 값과 연관된, 하나 이상의 데이터 세트의 제2 서브세트를 랜덤으로 선택하고;
제1 서브세트와 제2 서브세트를 교환하고;
제1 서브세트 및 제2 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정하고;
하나 이상의 데이터 세트에 대응하는 신경망과 연관된 메트릭을 계산하고;
메트릭이 다른 메트릭보다 큰 것의 결과로서, 제1 위치 값 및 제2 위치 값을 포함하는 변환을 변환들의 세트에 부가함으로써 결정한다.
14. 항목 9 내지 항목 13 중 임의의 항목의 시스템에서, 하나 이상의 데이터 세트는 신경망의 하나 이상의 계층과 연관되고, 하나 이상의 데이터 값 세트는 영이 아닌 수치 값들만을 포함한다.
15. 항목 9 내지 항목 14 중 임의의 항목의 시스템에서, 명령어들은, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 데이터 세트의 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정함으로써 희소도에 대한 증가를 야기하는 명령어들을 더 포함하며, 서브세트 내의 하나 이상의 데이터 값은 신경망과 연관된 하나 이상의 가중치 값을 표현하는 수치 값들이고, 서브세트는 희소도 제약에 적어도 부분적으로 기반하여 결정된다.
16. 항목 9 내지 항목 15 중 임의의 항목의 시스템에서, 하나 이상의 프로세서는 병렬 처리 유닛들이고, 병렬 처리 유닛들은, 하나 이상의 데이터 세트에 대한 하나 이상의 구조적 제약에 적어도 부분적으로 기반하여 하나의 계산 또는 계산들을 가속하는 하나 이상의 희소 텐서 코어를 포함한다.
17. 방법은,
적어도, 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하는 단계를 포함한다.
18. 항목 17의 방법은, 심층 학습 프레임워크를 사용하여 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하는 단계를 더 포함하며, 심층 학습 프레임워크는, 적어도, 하나 이상의 데이터 세트가 하나 이상의 구조적 희소도 제약을 따르는 하나 이상의 데이터 서브세트를 포함하도록 하나 이상의 데이터 세트 내의 요소들을 재배열한다.
19. 항목 18의 방법에서, 하나 이상의 구조적 희소도 제약은, 적어도, 하나 이상의 데이터 세트에 대해 제한을 포함하며, 제한은, 하나 이상의 데이터 서브세트가, 제1 양의 영이 아닌 데이터 값 및 제2 양의 영 데이터 값을 적어도 포함하는 것을 요구한다.
20. 항목 18 또는 항목 19의 방법에서, 심층 학습 프레임워크는, 하나 이상의 데이터 세트 내의 제1 위치를 갖는, 하나 이상의 데이터 서브세트의 제1 서브세트를, 하나 이상의 데이터 세트 내의 제2 위치를 갖는, 하나 이상의 데이터 서브세트의 제2 서브세트와 스와핑함으로써, 하나 이상의 데이터 세트 내의 요소들을 재배열한다.
21. 항목 18 내지 항목 20 중 임의의 항목의 방법에서, 심층 학습 프레임워크는, 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
제1 위치 값과 연관된, 하나 이상의 데이터 서브세트의 제1 서브세트, 및 제2 위치 값과 연관된, 하나 이상의 데이터 서브세트의 제2 서브세트를 랜덤으로 선택하고;
제1 서브세트와 제2 서브세트를 교환하고;
제1 서브세트 및 제2 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정하고;
하나 이상의 데이터 세트에 대응하는 신경망과 연관된 메트릭 값을 계산하고;
메트릭 값이 다른 메트릭 값보다 큰 것의 결과로서, 제1 위치 값 및 제2 위치 값을 포함하는 변환을 변환들의 세트에 부가함으로써 결정한다.
22. 항목 18 내지 항목 21 중 임의의 항목의 방법에서, 심층 학습 프레임워크는, 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
하나 이상의 데이터 세트의 제1 서브세트 및 하나 이상의 데이터 세트의 제2 서브세트를 선택하고;
제1 서브세트의 하나 이상의 제1 변환을 결정하고 ― 하나 이상의 제1 변환은, 신경망과 연관된 제1 메트릭 값이 신경망과 연관된 제2 메트릭 값보다 크도록 제1 서브세트 내의 제1의 하나 이상의 순차적 데이터 값 세트를 제1 서브세트 내의 제2의 하나 이상의 순차적 데이터 값 세트와 교환함 ―;
제2 서브세트의 하나 이상의 제2 변환을 결정하고 ― 하나 이상의 제2 변환은, 신경망과 연관된 제3 메트릭 값이 신경망과 연관된 제2 메트릭 값보다 크도록 제2 서브세트 내의 제1의 하나 이상의 순차적 데이터 값 세트를 제2 서브세트 내의 제2의 하나 이상의 순차적 데이터 값 세트와 교환함 ―;
하나 이상의 제1 변환 및 하나 이상의 제2 변환을 변환들의 세트로 결합함으로써 결정한다.
23. 항목 17 내지 항목 22 중 임의의 항목의 방법에서, 하나 이상의 데이터 세트는, 희소도에 대한 증가의 결과로서 개선된 메트릭 값을 갖는 신경망의 하나 이상의 계층과 연관된다.
24. 항목 17 내지 항목 23 중 임의의 항목의 방법에서, 희소도에 대한 증가는 추가로, 하나 이상의 계산의 하나 이상의 피연산자가 하나 이상의 희소도 제약을 충족하도록 하나 이상의 데이터 세트의 서브세트 내의 하나 이상의 데이터 값을 영 데이터 값으로 설정함으로써 야기된다.
25. 항목 17 내지 항목 24 중 임의의 항목의 방법에서, 하나 이상의 병렬 처리 유닛이 하나 이상의 계산을 수행하고, 하나 이상의 병렬 처리 유닛은, 희소도에 대한 증가의 결과로서의 하나 이상의 구조적 제약을 활용하는 하나 이상의 희소 텐서 코어를 포함한다.
26. 기계 판독가능 매체 상에 명령어들의 세트가 저장되며, 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 하나 이상의 프로세서로 하여금 적어도,
적어도, 하나 이상의 프로세서에 의해 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 하나 이상의 데이터 세트의 희소도에 대한 증가를 야기하게 한다.
27. 항목 26의 기계 판독가능 매체에서, 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 하나 이상의 프로세서로 하여금, 하나 이상의 구조적 희소도 제약에 따라 하나 이상의 데이터 세트에 변환들의 세트를 적용함으로써 하나 이상의 데이터 세트 내의 요소들을 재배열하게 하는 명령어들을 더 포함한다.
28. 항목 27의 기계 판독가능 매체에서, 하나 이상의 구조적 희소도 제약은, 적어도, 하나 이상의 데이터 세트에 대해 제한을 포함하며, 제한은, 하나 이상의 데이터 서브세트가, 제1 양의 영이 아닌 데이터 값 및 제2 양의 영 데이터 값을 적어도 포함하는 것을 요구한다.
29. 항목 27 또는 항목 28의 기계 판독가능 매체에서, 변환들의 세트는, 하나 이상의 데이터 세트 내의 제1 위치 값을 갖는, 하나 이상의 데이터 세트의 제1 서브세트를, 하나 이상의 데이터 세트 내의 제2 위치 값을 갖는, 하나 이상의 데이터 세트의 제2 서브세트와 교환하는 적어도 하나의 변환을 포함한다.
30. 항목 26 내지 항목 29 중 임의의 항목의 기계 판독가능 매체에서, 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 하나 이상의 프로세서로 하여금, 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
제1 위치 값과 연관된, 하나 이상의 데이터 세트의 제1 서브세트, 및 제2 위치 값과 연관된, 하나 이상의 데이터 세트의 제2 서브세트를 랜덤으로 선택하고;
제1 서브세트와 제2 서브세트를 교환하고;
제1 서브세트 및 제2 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정하고;
하나 이상의 데이터 세트에 대응하는 신경망과 연관된 메트릭 값을 계산하고;
메트릭 값이 다른 메트릭 값보다 큰 것의 결과로서, 제1 위치 값 및 제2 위치 값을 포함하는 변환을 변환들의 세트에 부가함으로써 결정하게 하는 명령어들을 더 포함한다.
31. 항목 26 내지 항목 30 중 임의의 항목의 기계 판독가능 매체에서, 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 하나 이상의 프로세서로 하여금, 제1 위치 값을 갖는, 하나 이상의 데이터 세트의 제1 서브세트, 및 제2 위치를 갖는, 하나 이상의 데이터 세트의 제2 서브세트를 선택하고, 하나 이상의 희소도 제약에 따라 전정될 하나 이상의 데이터 세트 내의 데이터 값 클래스의 양을 증가시키기 위해 제1 서브세트와 제2 서브세트를 교환함으로써 하나 이상의 데이터 세트 내의 요소들을 재배열하게 하는 명령어들을 더 포함한다.
32. 항목 26 내지 항목 31 중 임의의 항목의 기계 판독가능 매체에서, 하나 이상의 프로세서는, 하나 이상의 데이터 세트의 희소도에 대한 증가에 적어도 부분적으로 기반하여 하나 이상의 계산을 수행하는 하나 이상의 희소 텐서 코어를 더 포함한다.
33. 항목 26 내지 항목 32 중 임의의 항목의 기계 판독가능 매체에서, 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 하나 이상의 프로세서로 하여금, 하나 이상의 계산의 하나 이상의 피연산자가 하나 이상의 희소도 제약을 충족하도록 하나 이상의 데이터 세트의 서브세트 내의 하나 이상의 데이터 값을 영 데이터 값으로 설정함으로써 희소도에 대한 증가를 야기하게 하는 명령어들을 더 포함한다.
34. 항목 26 내지 항목 33 중 임의의 항목의 기계 판독가능 매체에서, 하나 이상의 데이터 세트는, 희소도에 대한 증가의 결과로서 개선된 정확도를 갖는 신경망의 하나 이상의 계층과 연관된다.
개시된 실시예들을 설명하는 맥락에서(특히, 하기의 청구항들의 맥락에서) 단수형 용어들 및 유사한 지시대상들의 사용은, 용어의 정의로서가 아니라, 본원에 달리 표시되거나 맥락에 의해 명확히 부정되지 않는 한 단수형 및 복수형 둘 모두를 포함하는 것으로 해석되어야 한다. "포함", "갖는 "구비" 및 "함유"라는 용어들은, 달리 언급되지 않는 한 제한을 두지 않는 용어들("~을 포함하지만 이에 제한되지 않는"을 의미함)로서 해석되어 한다. 수정되지 않고 물리적 연결들을 지칭할 때의 "연결"은, 무언가가 개재되어 있다 하더라도 부분적으로 또는 전체적으로 ~ 내에 포함되거나, ~에 부착되거나, 또는 ~와 함께 결합된 것으로서 해석되어야 한다. 본원에 달리 표시되지 않는 한, 본원에서의 값들의 범위들에 대한 언급은 단지, 그 범위 내에 속하는 각각의 별개의 값을 개별적으로 언급하는 약칭 방법으로서의 역할을 하도록 의도되며, 각각의 별개의 값은 그들이 본원에 개별적으로 언급된 것처럼 본 명세서 내에 포함된다. 적어도 하나의 실시예에서, "세트"(예컨대, "항목들의 세트") 또는 "서브세트"라는 용어의 사용은, 맥락에 의해 달리 언급되거나 부정되지 않는 한, 하나 이상의 멤버를 포함하는 비어 있지 않은 집합으로서 해석되어야 한다. 추가로, 맥락에 의해 달리 언급되거나 부정되지 않는 한, 대응하는 세트의 "서브세트"라는 용어는, 반드시 대응하는 세트의 적절한 서브세트를 의미하는 것이 아니라, 서브세트 및 대응하는 세트가 동일할 수 있다.
"A, B, 및 C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나"의 형태의 문구들과 같은 연결성 어휘는, 구체적으로 달리 언급되거나 맥락에 의해 달리 명확하게 부정되지 않는 한, 항목, 조건 등이 A 또는 B 또는 C이거나, 또는 A와 B와 C로 이루어진 세트의 비어 있지 않은 임의의 서브세트일 수 있다는 것을 나타내기 위해 일반적으로 사용되는 것으로 맥락에 따라 달리 이해되어야 한다. 예컨대, 3개의 멤버를 갖는 세트의 예시적인 예에서, 연결성 문구들 "A, B, 및 C 중 적어도 하나"와 "A, B 및 C 중 적어도 하나"는 다음의 세트들 중 임의의 것을 지칭한다: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. 그에 따라, 그러한 연결성 어휘는 일반적으로, 특정 실시예들이, A 중 적어도 하나, B 중 적어도 하나, 및 C 중 적어도 하나가 각각 존재할 것을 요구함을 암시하도록 의도되지 않는다. 게다가, 맥락에 의해 달리 언급되거나 부정되지 않는 한, "복수"라는 용어는 복수인 상태를 표시한다(예컨대, "복수의 항목들"은 다수의 항목들을 표시함). 적어도 하나의 실시예에서, 복수에서의 항목들의 수는 적어도 2개이지만, 명시적으로 또는 맥락에 의해 그렇게 표시될 때에는 더 많을 수 있다. 추가로, 달리 언급되거나 맥락으로부터 명확하지 않는 한, "~에 기반"이라는 문구는 "~에 전적으로 기반"이 아니라 "~에 적어도 부분적으로 기반"을 의미한다.
본원에 달리 표시되거나 맥락에 의해 달리 명확히 부정되지 않는 한, 본원에 설명된 프로세스들의 동작들은 임의의 적합한 순서로 수행될 수 있다. 적어도 하나의 실시예에서, 프로세스, 이를테면, 본원에 설명된 그러한 프로세스들(또는 그 변형들 및/또는 조합들)은, 실행가능 명령어들로 구성된 하나 이상의 컴퓨터 시스템의 제어 하에 수행되고, 하나 이상의 프로세서 상에서 집합적으로 실행되는 코드(예컨대, 실행가능 명령어들, 하나 이상의 컴퓨터 프로그램 또는 하나 이상의 애플리케이션)로서, 하드웨어에 의해, 또는 이들의 조합들로 구현된다. 적어도 하나의 실시예에서, 코드는, 예컨대, 하나 이상의 프로세서에 의해 실행가능한 복수의 명령어들을 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터 판독가능 저장 매체 상에 저장된다. 적어도 하나의 실시예에서, 컴퓨터 판독가능 저장 매체는, 일시적인 신호들(예컨대, 전파되는 과도적인 전기 또는 전자기 송신)을 제외하지만 일시적인 신호들의 송수신기들 내의 비-일시적인 데이터 저장 회로(예컨대, 버퍼들, 캐시, 및 큐들)를 포함하는 비-일시적인 컴퓨터 판독가능 저장 매체이다. 적어도 하나의 실시예에서, 코드(예컨대, 실행가능 코드 또는 소스 코드)는, 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때(즉, 실행되는 것의 결과로서), 컴퓨터 시스템으로 하여금 본원에 설명된 동작들을 수행하게 하는 실행가능 명령어들이 저장된 하나 이상의 비-일시적인 컴퓨터 판독가능 저장 매체(또는 실행가능 명령어들을 저장하기 위한 다른 메모리)의 세트 상에 저장된다. 적어도 하나의 실시예에서, 비-일시적인 컴퓨터 판독가능 저장 매체의 세트는 다수의 비-일시적인 컴퓨터 판독가능 저장 매체를 포함하고, 다수의 비-일시적인 컴퓨터 판독가능 저장 매체의 개별 비-일시적인 저장 매체 중 하나 이상이 코드 전부를 갖고 있는 것은 아니지만, 다수의 비-일시적인 컴퓨터 판독가능 저장 매체는 집합적으로 코드 전부를 저장한다. 적어도 하나의 실시예에서, 실행가능 명령어들은, 상이한 명령어들이 상이한 프로세서들에 의해 실행되도록, 예컨대, 비-일시적인 컴퓨터 판독가능 저장 매체가 명령어들을 저장하고, 메인 중앙 처리 유닛("CPU")이 명령어들 중 일부를 실행하는 한편 그래픽 처리 유닛("GPU")이 다른 명령어들을 실행하도록 실행된다. 적어도 하나의 실시예에서, 컴퓨터 시스템의 상이한 구성요소들은 별개의 프로세서들을 갖고, 상이한 프로세서들은 명령어들의 상이한 서브세트들을 실행한다.
그에 따라서, 적어도 하나의 실시예에서, 컴퓨터 시스템들은 본원에 설명된 프로세스들의 동작들을 단독으로 또는 집합적으로 수행하는 하나 이상의 서비스를 구현하도록 구성되고, 그러한 컴퓨터 시스템들은 동작들의 수행을 가능하게 하는 적용가능한 하드웨어 및/또는 소프트웨어로 구성된다. 추가로, 본 개시내용의 적어도 하나의 실시예를 구현하는 컴퓨터 시스템은 단일 디바이스이고, 다른 실시예에서는, 상이하게 동작하는 다수의 디바이스들을 포함하는 분산형 컴퓨터 시스템이며, 이에 따라, 분산형 컴퓨터 시스템이 본원에 설명된 동작들을 수행하고, 단일 디바이스가 모든 동작들을 수행하지는 않는다.
본원에 제공된 임의의 그리고 모든 예들, 또는 예시적인 어휘(예컨대, "이를테면", 및 "~와 같은")의 사용은, 단지 본 개시내용의 실시예들을 더 명확히 하도록 의도되고, 달리 주장하지 않는 한, 본 개시내용의 범위를 제한하지 않는다. 본 명세서의 어떠한 어휘도, 임의의 주장되지 않는 요소를 본 개시내용을 실시하는 데 필수적인 것으로 표시하는 것으로서 해석되어서는 안 된다.
본원에서 인용된 공보들, 특허 출원들, 및 특허들을 포함하는 모든 참고문헌들은, 각각의 참고문헌이 개별적으로 그리고 구체적으로 인용에 의해 포함된 것으로 표시되고 그 전체내용이 본원에 기재된 경우와 동일한 정도로 인용에 의해 본원에 포함된다.
설명 및 청구항들에서, "결합" 및 "연결"이라는 용어들이 그들의 파생어들과 함께 사용될 수 있다. 이러한 용어들이 서로에 대한 동의어들로서 의도되지 않을 수 있다는 것이 이해되어야 한다. 오히려, 특정 예들에서, "연결" 또는 "결합"은 2개 이상의 요소가 서로 직접 또는 간접으로 물리적 또는 전기적 접촉을 한다는 것을 표시하기 위해 사용될 수 있다. "결합"은 또한, 2개 이상의 요소가 서로 직접 접촉하지는 않지만 그럼에도 불구하고 여전히 서로 협력하거나 상호작용하는 것을 의미할 수도 있다.
달리 구체적으로 언급되지 않는 한, 명세서 전반에 걸쳐, "처리", 컴퓨팅", "계산", "결정" 등과 같은 용어들은, 컴퓨팅 시스템의 레지스터들 및/또는 메모리들 내의 물리적, 이를테면 전자적 양들로서 표현된 데이터를, 컴퓨팅 시스템의 메모리들, 레지스터들, 또는 다른 그러한 정보 저장, 송신 또는 디스플레이 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작 및/또는 변환하는 컴퓨터 또는 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 동작 및/또는 프로세스들을 지칭한다는 것이 인식될 수 있다.
유사한 방식으로, "프로세서"라는 용어는, 레지스터들 및/또는 메모리로부터의 전자 데이터를 처리하여 그 전자 데이터를 레지스터들 및/또는 메모리에 저장될 수 있는 다른 전자 데이터로 변환하는 임의의 디바이스 또는 디바이스의 부분을 지칭할 수 있다. 비-제한적인 예들로서, "프로세서"는 CPU 또는 GPU일 수 있다. "컴퓨팅 플랫폼"은 하나 이상의 프로세서를 포함할 수 있다. 본원에서 사용되는 바와 같이, "소프트웨어" 프로세스는, 예컨대, 작업들, 스레드들, 및 지능형 에이전트들과 같은 시간 경과에 따라 작업을 수행하는 소프트웨어 및/또는 하드웨어 엔티티들을 포함할 수 있다. 또한, 각각의 프로세스는, 명령어들을 순차적으로 또는 병렬로, 연속적으로 또는 간헐적으로 수행하기 위한 다수의 프로세스들을 지칭할 수 있다. 적어도 하나의 실시예에서, "시스템" 및 "방법"이라는 용어들은, 시스템이 하나 이상의 방법을 구현할 수 있고 방법들이 시스템으로 간주될 수 있는 한 본원에서 상호교환가능하게 사용된다.
본 문서에서, 아날로그 또는 디지털 데이터를 획득하거나, 취득하거나, 수신하거나, 또는 서브시스템, 컴퓨터 시스템 또는 컴퓨터에 의해 구현되는 기계에 입력하는 것에 대한 참조들이 이루어질 수 있다. 적어도 하나의 실시예에서, 아날로그 및 디지털 데이터를 획득, 취득, 수신 또는 입력하는 프로세스는, 함수 호출 또는 애플리케이션 프로그래밍 인터페이스에 대한 호출의 파라미터로서 데이터를 수신하는 것과 같은 다양한 방식들로 달성될 수 있다. 일부 구현들에서, 아날로그 또는 디지털 데이터를 획득, 취득, 수신 또는 입력하는 프로세스는, 직렬 또는 병렬 인터페이스를 통해 데이터를 전송함으로써 달성될 수 있다. 다른 구현에서, 아날로그 또는 디지털 데이터를 획득, 취득, 수신 또는 입력하는 프로세스는, 컴퓨터 네트워크를 통해 제공 엔티티로부터 취득 엔티티로 데이터를 전송함으로써 달성될 수 있다. 아날로그 또는 디지털 데이터를 제공, 출력, 송신, 전송, 또는 제시하는 것에 대한 참조들이 또한 이루어질 수 있다. 다양한 예들에서, 아날로그 또는 디지털 데이터를 제공, 출력, 송신, 전송, 또는 제시하는 프로세스는, 함수 호출의 입력 또는 출력 파라미터로서, 애플리케이션 프로그래밍 인터페이스 또는 프로세스 간 통신 메커니즘의 파라미터로서, 데이터를 전달함으로써 달성될 수 있다.
위의 논의는 설명된 기법들의 예시적인 구현들을 기재하지만, 다른 아키텍처들이 설명된 기능성을 구현하기 위해 사용될 수 있고, 본 개시내용의 범위 내에 있는 것으로 의도된다. 또한, 논의의 목적들을 위해 책임들의 특정 분배들이 위에서 정의되지만, 다양한 기능들 및 책임들은 상황들에 따라 상이한 방식들로 분배 및 분할될 수 있다.
본 주제가 구조적 특징들 및/또는 방법론적 동작들에 특정한 어휘로 설명되었지만, 첨부된 청구항들에서 청구되는 본 주제가 설명된 특정 특징들 또는 동작들로 반드시 제한되지는 않는다는 것이 이해되어야 한다. 오히려, 특정 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태들로서 개시된 것이다.

Claims (34)

  1. 프로세서로서,
    적어도, 상기 프로세서에 의해 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 상기 하나 이상의 데이터 세트의 희소도(sparsity)의 증가를 야기하는 하나 이상의 회로를 포함하는, 프로세서.
  2. 제1항에 있어서,
    상기 하나 이상의 회로는, 적어도, 상기 하나 이상의 데이터 세트가 하나 이상의 구조적 희소도 제약을 따르는 하나 이상의 데이터 서브세트를 포함하도록 상기 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 상기 희소도의 증가를 야기하는, 프로세서.
  3. 제2항에 있어서,
    상기 하나 이상의 구조적 희소도 제약은 상기 하나 이상의 데이터 세트에 대해 제한을 부과하며, 상기 제한에 의해, 상기 하나 이상의 데이터 서브세트는 적어도, 제1 양(first quantity)의 영이 아닌 데이터 값들 및 제2 양(second quantity)의 영 데이터 값들을 포함하는, 프로세서.
  4. 제2항에 있어서,
    상기 하나 이상의 회로는, 상기 하나 이상의 데이터 세트 내의 제1 위치를 갖는 상기 하나 이상의 데이터 서브세트의 제1 서브세트를, 상기 하나 이상의 데이터 세트 내의 제2 위치를 갖는 상기 하나 이상의 데이터 서브세트의 제2 서브세트와 스와핑함으로써, 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하는, 프로세서.
  5. 제1항에 있어서,
    상기 하나 이상의 데이터 세트는, 적어도 제1 인덱스 및 제2 인덱스를 사용하여 액세스가능한 수치 값들을 포함하고,
    상기 하나 이상의 데이터 세트는, 상기 제1 인덱스와 연관된 제1 데이터 서브세트 및 상기 제2 인덱스와 연관된 제2 데이터 서브세트를 포함하며,
    상기 하나 이상의 회로는, 적어도 상기 제1 인덱스와 연관된 상기 제1 데이터 서브세트의 수치 값들을 상기 제2 행렬과 연관된 상기 제2 데이터 서브세트와 교환함으로써, 상기 희소도의 증가를 야기하는, 프로세서.
  6. 제1항에 있어서,
    상기 하나 이상의 데이터 세트는, 하나 이상의 신경망과 연관된 가중치 파라미터들에 대응하는 수치 값들을 포함하는, 프로세서.
  7. 제1항에 있어서,
    상기 하나 이상의 데이터 세트 내의 각각의 데이터 값은 제1 인덱스 값 및 제2 인덱스 값과 연관되고, 상기 제1 인덱스 값 및 상기 제2 인덱스 값은 상기 하나 이상의 데이터 세트 내의 각각의 데이터 값의 위치를 표시하는, 프로세서.
  8. 제1항에 있어서,
    상기 하나 이상의 회로는, 상기 하나 이상의 데이터 세트 내의 2개 이상의 데이터 서브세트를 스와핑하기 위한 변환들의 세트를 결정하기 위해 심층 학습 프레임워크를 사용하여 상기 하나 이상의 데이터 세트의 희소도의 증가를 야기하며, 상기 심층 학습 프레임워크는 추가로, 상기 2개 이상의 데이터 서브세트 내의 하나 이상의 데이터 값을 영으로 설정하는, 프로세서.
  9. 시스템으로서,
    하나 이상의 프로세서; 및
    명령어들을 포함하는 메모리
    를 포함하며, 상기 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터 시스템으로 하여금 적어도,
    적어도, 상기 하나 이상의 프로세서에 의해 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 상기 하나 이상의 데이터 세트의 희소도의 증가를 야기하게 하는, 시스템.
  10. 제9항에 있어서,
    상기 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 심층 학습 프레임워크로 하여금, 하나 이상의 희소도 제약에 적어도 부분적으로 기반하여 상기 하나 이상의 데이터 세트를 변환하게 하는 명령어들을 더 포함하는, 시스템.
  11. 제10항에 있어서,
    상기 하나 이상의 희소도 제약은 적어도 하나의 제약을 포함하며, 상기 하나 이상의 데이터 세트의 서브세트는 적어도, 제1 양의 영이 아닌 데이터 값들 및 제2 양의 영 데이터 값들을 포함하는, 시스템.
  12. 제10항에 있어서,
    상기 심층 학습 프레임워크는, 제1 위치 값과 연관된 상기 하나 이상의 데이터 세트의 적어도 제1 서브세트를, 제2 위치 값과 연관된 상기 하나 이상의 데이터 세트의 적어도 제2 서브세트와 교환함으로써, 상기 하나 이상의 데이터 세트를 변환하는, 시스템.
  13. 제10항에 있어서,
    상기 심층 학습 프레임워크는, 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
    제1 위치 값과 연관된 상기 하나 이상의 데이터 세트의 제1 서브세트, 및 제2 위치 값과 연관된 상기 하나 이상의 데이터 세트의 제2 서브세트를 랜덤으로 선택하고;
    상기 제1 서브세트와 상기 제2 서브세트를 교환하고;
    상기 제1 서브세트 및 상기 제2 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정하고;
    상기 하나 이상의 데이터 세트에 대응하는 신경망과 연관된 메트릭을 계산하고;
    상기 메트릭이 다른 메트릭보다 큰 것의 결과로서, 상기 제1 위치 값 및 상기 제2 위치 값을 포함하는 변환을 상기 변환들의 세트에 부가함으로써
    결정하는, 시스템.
  14. 제9항에 있어서,
    상기 하나 이상의 데이터 세트는 신경망의 하나 이상의 계층과 연관되고, 하나 이상의 데이터 값 세트는 영이 아닌 수치 값들만을 포함하는, 시스템.
  15. 제9항에 있어서,
    상기 명령어들은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 데이터 세트의 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정함으로써 상기 희소도의 증가를 야기하는 명령어들을 더 포함하며, 상기 서브세트 내의 하나 이상의 데이터 값은 신경망과 연관된 하나 이상의 가중치 값을 표현하는 수치 값들이고, 상기 서브세트는 희소도 제약에 적어도 부분적으로 기반하여 결정되는, 시스템.
  16. 제9항에 있어서,
    상기 하나 이상의 프로세서는 병렬 처리 유닛들이고, 상기 병렬 처리 유닛들은, 상기 하나 이상의 데이터 세트에 대한 하나 이상의 구조적 제약에 적어도 부분적으로 기반하여 하나의 계산 또는 계산들을 가속하는 하나 이상의 희소 텐서 코어를 포함하는, 시스템.
  17. 방법으로서,
    적어도, 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 상기 하나 이상의 데이터 세트의 희소도의 증가를 야기하는 단계를 포함하는, 방법.
  18. 제17항에 있어서,
    심층 학습 프레임워크를 사용하여 상기 하나 이상의 데이터 세트의 희소도의 증가를 야기하는 단계를 더 포함하며, 상기 심층 학습 프레임워크는 적어도, 상기 하나 이상의 데이터 세트가 하나 이상의 구조적 희소도 제약을 따르는 하나 이상의 데이터 서브세트를 포함하도록 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하는, 방법.
  19. 제18항에 있어서,
    상기 하나 이상의 구조적 희소도 제약은 적어도 상기 하나 이상의 데이터 세트에 대해 제한을 포함하며, 상기 제한은, 상기 하나 이상의 데이터 서브세트가 제1 양의 영이 아닌 데이터 값들 및 제2 양의 영 데이터 값들을 적어도 포함하는 것을 요구하는, 방법.
  20. 제18항에 있어서,
    상기 심층 학습 프레임워크는, 상기 하나 이상의 데이터 세트 내의 제1 위치를 갖는 상기 하나 이상의 데이터 서브세트의 제1 서브세트를, 상기 하나 이상의 데이터 세트 내의 제2 위치를 갖는 상기 하나 이상의 데이터 서브세트의 제2 서브세트와 스와핑함으로써, 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하는, 방법.
  21. 제18항에 있어서,
    상기 심층 학습 프레임워크는, 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
    제1 위치 값과 연관된 상기 하나 이상의 데이터 서브세트의 제1 서브세트, 및 제2 위치 값과 연관된 상기 하나 이상의 데이터 서브세트의 제2 서브세트를 랜덤으로 선택하고;
    상기 제1 서브세트와 상기 제2 서브세트를 교환하고;
    상기 제1 서브세트 및 상기 제2 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정하고;
    하나 이상의 데이터 세트에 대응하는 신경망과 연관된 메트릭 값을 계산하고;
    상기 메트릭 값이 다른 메트릭 값보다 큰 것의 결과로서, 상기 제1 위치 값 및 상기 제2 위치 값을 포함하는 변환을 상기 변환들의 세트에 부가함으로써
    결정하는, 방법.
  22. 제18항에 있어서,
    상기 심층 학습 프레임워크는, 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
    상기 하나 이상의 데이터 세트의 제1 서브세트 및 상기 하나 이상의 데이터 세트의 제2 서브세트를 선택하고;
    상기 제1 서브세트의 하나 이상의 제1 변환을 결정하고 ― 상기 하나 이상의 제1 변환은, 신경망과 연관된 제1 메트릭 값이 상기 신경망과 연관된 제2 메트릭 값보다 크도록 상기 제1 서브세트 내의 제1의 하나 이상의 순차적 데이터 값 세트를 상기 제1 서브세트 내의 제2의 하나 이상의 순차적 데이터 값 세트와 교환함 ―;
    상기 제2 서브세트의 하나 이상의 제2 변환을 결정하고 ― 상기 하나 이상의 제2 변환은, 상기 신경망과 연관된 제3 메트릭 값이 상기 신경망과 연관된 제2 메트릭 값보다 크도록 상기 제2 서브세트 내의 제1의 하나 이상의 순차적 데이터 값 세트를 상기 제2 서브세트 내의 제2의 하나 이상의 순차적 데이터 값 세트와 교환함 ―;
    상기 하나 이상의 제1 변환 및 상기 하나 이상의 제2 변환을 상기 변환들의 세트로 결합함으로써
    결정하는, 방법.
  23. 제17항에 있어서,
    상기 하나 이상의 데이터 세트는, 상기 희소도의 증가의 결과로서 개선된 메트릭 값을 갖는 신경망의 하나 이상의 계층과 연관되는, 방법.
  24. 제17항에 있어서,
    상기 희소도의 증가는 추가로, 상기 하나 이상의 계산의 하나 이상의 피연산자가 하나 이상의 희소도 제약을 충족하도록 상기 하나 이상의 데이터 세트의 서브세트 내의 하나 이상의 데이터 값을 영 데이터 값으로 설정함으로써 야기되는, 방법.
  25. 제17항에 있어서,
    하나 이상의 병렬 처리 유닛이 상기 하나 이상의 계산을 수행하며, 상기 하나 이상의 병렬 처리 유닛은, 상기 희소도의 증가의 결과로서의 하나 이상의 구조적 제약을 활용하는 하나 이상의 희소 텐서 코어를 포함하는, 방법.
  26. 기계 판독가능 매체로서,
    명령어들의 세트가 저장되며, 상기 명령어들의 세트는, 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금 적어도,
    적어도, 상기 하나 이상의 프로세서에 의해 하나 이상의 계산이 수행되어야 하는 하나 이상의 데이터 세트 내의 요소들을 재배열함으로써, 상기 하나 이상의 데이터 세트의 희소도의 증가를 야기하게 하는, 기계 판독가능 매체.
  27. 제26항에 있어서,
    상기 명령어들의 세트는, 상기 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금, 하나 이상의 구조적 희소도 제약에 따라 상기 하나 이상의 데이터 세트에 변환들의 세트를 적용함으로써 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하게 하는 명령어들을 더 포함하는, 기계 판독가능 매체.
  28. 제27항에 있어서,
    상기 하나 이상의 구조적 희소도 제약은 적어도 상기 하나 이상의 데이터 세트에 대해 제한을 포함하며, 상기 제한은, 상기 하나 이상의 데이터 서브세트가 제1 양의 영이 아닌 데이터 값들 및 제2 양의 영 데이터 값들을 적어도 포함하는 것을 요구하는, 기계 판독가능 매체.
  29. 제27항에 있어서,
    상기 변환들의 세트는, 상기 하나 이상의 데이터 세트 내의 제1 위치 값을 갖는 상기 하나 이상의 데이터 세트의 제1 서브세트를, 상기 하나 이상의 데이터 세트 내의 제2 위치 값을 갖는 상기 하나 이상의 데이터 세트의 제2 서브세트와 교환하는 적어도 하나의 변환을 포함하는, 기계 판독가능 매체.
  30. 제26항에 있어서,
    상기 명령어들의 세트는, 상기 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금, 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하기 위한 변환들의 세트를,
    제1 위치 값과 연관된 상기 하나 이상의 데이터 세트의 제1 서브세트, 및 제2 위치 값과 연관된 상기 하나 이상의 데이터 세트의 제2 서브세트를 랜덤으로 선택하고;
    상기 제1 서브세트와 상기 제2 서브세트를 교환하고;
    상기 제1 서브세트 및 상기 제2 서브세트 내의 하나 이상의 데이터 값을 영 값으로 설정하고;
    하나 이상의 데이터 세트에 대응하는 신경망과 연관된 메트릭 값을 계산하고;
    상기 메트릭 값이 다른 메트릭 값보다 큰 것의 결과로서, 상기 제1 위치 값 및 상기 제2 위치 값을 포함하는 변환을 상기 변환들의 세트에 부가함으로써
    결정하게 하는 명령어들을 더 포함하는, 기계 판독가능 매체.
  31. 제26항에 있어서,
    상기 명령어들의 세트는, 상기 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금, 제1 위치 값을 갖는 상기 하나 이상의 데이터 세트의 제1 서브세트, 및 제2 위치를 갖는 상기 하나 이상의 데이터 세트의 제2 서브세트를 선택하고, 하나 이상의 희소도 제약에 따라 전정(prune)될 상기 하나 이상의 데이터 세트 내의 데이터 값 클래스의 양을 증가시키기 위해 상기 제1 서브세트와 상기 제2 서브세트를 교환함으로써 상기 하나 이상의 데이터 세트 내의 요소들을 재배열하게 하는 명령어들을 더 포함하는, 기계 판독가능 매체.
  32. 제26항에 있어서,
    상기 하나 이상의 프로세서는, 상기 하나 이상의 데이터 세트의 희소도의 증가에 적어도 부분적으로 기반하여 상기 하나 이상의 계산을 수행하는 하나 이상의 희소 텐서 코어를 더 포함하는, 기계 판독가능 매체.
  33. 제26항에 있어서,
    상기 명령어들의 세트는, 상기 하나 이상의 프로세서에 의해 수행되는 경우, 상기 하나 이상의 프로세서로 하여금, 상기 하나 이상의 계산의 하나 이상의 피연산자가 하나 이상의 희소도 제약을 충족하도록 상기 하나 이상의 데이터 세트의 서브세트 내의 하나 이상의 데이터 값을 영 데이터 값으로 설정함으로써 상기 희소도의 증가를 야기하게 하는 명령어들을 더 포함하는, 기계 판독가능 매체.
  34. 제26항에 있어서,
    상기 하나 이상의 데이터 세트는, 상기 희소도의 증가의 결과로서 개선된 정확도를 갖는 신경망의 하나 이상의 계층과 연관되는, 기계 판독가능 매체.
KR1020227019715A 2021-04-09 2021-04-09 데이터 세트들의 희소도 증가 KR20220140694A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/086080 WO2022213341A1 (en) 2021-04-09 2021-04-09 Increasing sparsity in data sets

Publications (1)

Publication Number Publication Date
KR20220140694A true KR20220140694A (ko) 2022-10-18

Family

ID=83509298

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227019715A KR20220140694A (ko) 2021-04-09 2021-04-09 데이터 세트들의 희소도 증가

Country Status (6)

Country Link
US (1) US20220327101A1 (ko)
JP (1) JP2024514374A (ko)
KR (1) KR20220140694A (ko)
CN (1) CN115461759A (ko)
DE (1) DE112021007476T5 (ko)
WO (1) WO2022213341A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117149778B (zh) * 2023-10-30 2024-01-16 之江实验室 稀疏张量运算加速方法、系统、计算机设备和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346944B2 (en) * 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
US10572568B2 (en) * 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
KR20210024865A (ko) * 2019-08-26 2021-03-08 삼성전자주식회사 데이터를 처리하는 방법 및 장치
CN112069460A (zh) * 2020-09-18 2020-12-11 Oppo广东移动通信有限公司 数据处理方法、装置以及电子设备
US11977885B2 (en) * 2020-11-30 2024-05-07 Intel Corporation Utilizing structured sparsity in systolic arrays
US20220383121A1 (en) * 2021-05-25 2022-12-01 Applied Materials, Inc. Dynamic activation sparsity in neural networks

Also Published As

Publication number Publication date
US20220327101A1 (en) 2022-10-13
WO2022213341A1 (en) 2022-10-13
DE112021007476T5 (de) 2024-01-25
CN115461759A (zh) 2022-12-09
JP2024514374A (ja) 2024-04-02

Similar Documents

Publication Publication Date Title
US20210252698A1 (en) Robotic control using deep learning
US20220027672A1 (en) Label Generation Using Neural Networks
GB2605232A (en) Object detection and collision avoidance using a neural network
US20220255897A1 (en) Header-based packet filtering and inferencing to identify malicious network traffic using neural networks
AU2020404936A1 (en) API for recurrent neural networks
CN113538575A (zh) 使用一个或更多个神经网络进行距离确定
AU2022202661B2 (en) Techniques for parallel execution
US20220318559A1 (en) Generation of bounding boxes
WO2023064940A1 (en) Techniques for inferring information
CN115859269A (zh) 使用受信执行环境的多个处理器设备的安全执行
KR20220139853A (ko) 신경망들에서의 분포-외 입력 데이터의 식별을 위한 기법들
KR20220149800A (ko) 연산들을 조합하기 위한 기술들
KR20230002060A (ko) 연산들을 조합하기 위한 기술들
WO2023193190A1 (en) Adjusting precision of neural network weight parameters
US20230306739A1 (en) Image generation using a neural network
KR20230020371A (ko) 신경망 루프 검출
US20220327101A1 (en) Increasing sparcity in data sets
KR20220162188A (ko) 신경망들을 훈련시키기 위한 파라미터 추정의 최적화
US20220068013A1 (en) System and method for image generation using jittered motion vectors
WO2024098373A1 (en) Techniques for compressing neural networks
WO2024016199A1 (en) Organizing neural network graph information
EP4167141A1 (en) Vector activation function to support machine learning inference and other processes
WO2023220848A1 (en) Detecting robustness of a neural network
US20220405545A1 (en) Neural network evaluation
WO2024098375A1 (en) Techniques for pruning neural networks