JP2023542835A - 共有オペランドの垂直及び水平ブロードキャスト - Google Patents

共有オペランドの垂直及び水平ブロードキャスト Download PDF

Info

Publication number
JP2023542835A
JP2023542835A JP2023514867A JP2023514867A JP2023542835A JP 2023542835 A JP2023542835 A JP 2023542835A JP 2023514867 A JP2023514867 A JP 2023514867A JP 2023514867 A JP2023514867 A JP 2023514867A JP 2023542835 A JP2023542835 A JP 2023542835A
Authority
JP
Japan
Prior art keywords
array
processor
memory
parameter values
broadcasting
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2023514867A
Other languages
English (en)
Inventor
エイチ. ラッシュ アレン
ラグードゥ サティーシュ
マントル マイケル
ヴァイディヤナサン アナンサナラヤン アルン
ナガブシャナンガリ プラサッド
ヴィー. カザコフ マキシム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023542835A publication Critical patent/JP2023542835A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

Landscapes

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

Abstract

アレイプロセッサは、行及び列に分散されたプロセッサ要素アレイを含む。プロセッサ要素アレイは、パラメータ値に対して演算を実行する。また、アレイプロセッサは、プロセッサ要素アレイの行及び列の相互に排他的なサブセットにパラメータ値のセットをブロードキャストするメモリインターフェースを含む。場合によっては、アレイプロセッサは、対応する行のプロセッサ要素アレイのサブセットを含む単一命令複数データ(SIMD)ユニットと、SIMDユニットのサブセットを含むワークグループプロセッサ(WGP)と、パラメータ値を記憶する外部メモリと相互接続するように構成されたメモリファブリックと、を含む。メモリインターフェースは、メモリインターフェースと関連付けられた行のプロセッサ要素アレイと、WGP内のSIMDユニットにわたって実装されているプロセッサ要素アレイの列と、を含むSIMDユニットにパラメータ値をブロードキャストする。メモリインターフェースは、メモリファブリックを介して、外部メモリからパラメータ値にアクセスする。【選択図】図3

Description

グラフィックス処理ユニット(Graphics Processing Unit、GPU)及び他のマルチスレッド処理ユニットは、典型的には、複数のデータセットに対して単一のプログラムの複数のインスタンスを同時に実行する複数の処理要素(プロセッサコア又はコンピュートユニットとも呼ばれる)を実装する。例えば、処理要素は、単一命令複数データ(Single-Instruction-Multiple-Data、SIMD)プロトコルを実装して、複数のコンピュートユニットを使用して複数のデータセットに対して同じ命令を同時に実行することができる。したがって、処理要素は、SIMDユニットと呼ばれる。ハードウェアに実装された階層に適合するように、階層実行モデルが使用される。実行モデルは、全てのウェーブ(ウェーブフロント、スレッド、ストリーム又はワークアイテムとも呼ばれる)によって実行される命令のカーネルを定義する。場合によっては、処理システム内に実装されたGPU又は他のマルチスレッド処理ユニットの処理能力は、SIMDプロトコルも実装する1つ以上のアクセラレータで補完される。GPU又は他のマルチスレッド処理ユニット内に実装されるアクセラレータ回路の一例がアレイプロセッサである。
一態様では、装置は、行及び列に分散されたプロセッサ要素アレイであって、プロセッサ要素アレイがパラメータ値に対して演算を実行するように構成されている、プロセッサ要素アレイを含み、プロセッサ要素アレイの行及び列の相互に排他的なサブセットに、パラメータ値のセットをブロードキャストするように構成されたメモリインターフェースを更に含む。様々な実施形態では、プロセッサ要素アレイは、ベクトル演算論理ユニット(Arithmetic Logic Unit、ALU)プロセッサを備え、メモリインターフェースは、ダイレクトメモリアクセス(Direct Memory Access、DMA)エンジンを備え、メモリインターフェースの各々は、行のうち対応する行及び列のうち対応する列の中のプロセッサ要素アレイにパラメータ値をブロードキャストし、及び/又は、メモリインターフェースのうち第1のメモリインターフェースは、第1の行及び第1の列内のプロセッサ要素アレイに第1のパラメータ値をブロードキャストし、メモリインターフェースのうち第2のメモリインターフェースは、第2の行及び第2の列内のプロセッサ要素アレイに第2のパラメータ値をブロードキャストし、メモリインターフェースは、個別の物理的接続を介して、プロセッサ要素アレイの行及び列の相互に排他的なサブセットに接続され、メモリインターフェースは、行及び列の相互に排他的なサブセット内のプロセッサ要素アレイと関連付けられたレジスタにパラメータ値を同時にポピュレートするように構成され、装置は、対応する行内のプロセッサ要素アレイのサブセットを備える単一命令複数データ(SIMD)ユニットを更に含み、メモリインターフェースは、メモリインターフェースと関連付けられた行内のプロセッサ要素アレイを備えるSIMDユニットにパラメータ値をブロードキャストし、装置は、SIMDユニットのサブセットを備えるワークグループプロセッサを更に含み、メモリインターフェースは、ワークグループプロセッサ内のSIMDユニットにわたって実装されているプロセッサ要素アレイの列にパラメータ値をブロードキャストし、並びに/又は、装置は、パラメータ値を記憶する外部メモリと相互接続するように構成されたメモリファブリックを更に含み、メモリインターフェースは、メモリファブリックを介して、外部メモリからパラメータ値にアクセスするように構成されている。
別の態様によれば、方法は、メモリインターフェースを介して、メモリからパラメータ値をフェッチすることと、メモリインターフェースから、プロセッサ要素アレイの行及び列の相互に排他的なサブセットに、パラメータ値をブロードキャストすることと、プロセッサ要素アレイにおいて、パラメータ値に対して演算を実行することと、を含む。
様々な実施形態では、メモリインターフェースからパラメータ値をブロードキャストすることは、メモリインターフェースの各々から、行のうち対応する行及び列のうち対応する列内のプロセッサ要素アレイにパラメータ値をブロードキャストすることを含み、パラメータ値をブロードキャストすることは、メモリインターフェースのうち第1のメモリインターフェースから第1の行及び第1の列内のプロセッサ要素アレイに第1のパラメータ値をブロードキャストすることを含み、パラメータ値をブロードキャストすることは、メモリインターフェースのうち第2のメモリインターフェースから第2の行及び第2の列内のプロセッサ要素アレイに第2のパラメータ値をブロードキャストすることを含み、パラメータ値をブロードキャストすることは、メモリインターフェースと、対応する行及び列との間の個別の物理的接続を介して、パラメータ値をブロードキャストすることを含み、パラメータ値をブロードキャストすることは、行及び列の相互に排他的なサブセット内のプロセッサ要素アレイと関連付けられたレジスタにパラメータ値をポピュレートすることを含み、各行のプロセッサ要素アレイのサブセットは、対応する単一命令複数データ(SIMD)ユニット内に実装され、パラメータ値をブロードキャストすることは、メモリインターフェースと関連付けられた行内のプロセッサ要素アレイを備えるSIMDユニットにパラメータ値をブロードキャストすることを含み、並びに/又は、SIMDユニットのサブセットは、対応するワークグループプロセッサ内に実装され、パラメータ値をブロードキャストすることは、ワークグループプロセッサ内のSIMDユニットにわたって実装されているプロセッサ要素アレイの列にパラメータ値をブロードキャストすることを含み、並びに/又は、パラメータ値をフェッチすることは、パラメータ値を記憶するメモリと相互接続するように構成されたメモリファブリックを介してパラメータ値にアクセスすることを含む。
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、アレイプロセッサにおいて共有オペランドの垂直及び水平ブロードキャストを実行する処理システムのブロック図である。 いくつかの実施形態による、パラメータ値の垂直及び水平ブロードキャストをサポートする処理システムの一部のブロック図である。 いくつかの実施形態による、プロセッサ要素アレイの相互に排他的なサブセットへのパラメータ値の垂直及び水平ブロードキャストを実装するアレイプロセッサのブロック図である。 いくつかの実施形態による、プロセッサ要素アレイの行又は列にパラメータ値をブロードキャストする方法のフロー図である。
アレイプロセッサシステムは、SIMDユニットのセットを含む1つ以上のワークグループプロセッサ(Workgroup Processor、WGP)を含む。例えば、アレイプロセッサは、各々が4つのSIMDユニットを実装する4つのWGPを含むことができる。SIMDユニットは、ベクトル又は行列に対して積和演算等のベクトル演算を実行するプロセッサ要素アレイのセットを含む。例えば、SIMDユニットは、プロセッサ要素アレイの各々に4つのプロセッサ要素アレイを含むことができ、入力ベクトルの対に対して演算(積和演算等)を実行するための8×8アレイの回路を含む。本明細書で使用される場合、「ベクトル」という用語は、行列の個々の行又は列を指すこともできる。更に、「行列」という用語は、一般に、1×Nの行列として理解されるベクトルを含む値の配列を指す。アレイプロセッサシステム内のプロセッサ要素アレイは、プロセッサ要素アレイの数に対応する次元を有する行列に対して、行列乗算等のカーネル演算を実行する。例えば、4つのプロセッサ要素アレイから構成される4つのSIMDユニットを含む4つのWGPを含むアレイプロセッサは、64×64行列を乗算することができる。
プロセッサ要素アレイによって実行されるカーネル演算のための入力値は、メモリファブリックを介して、1つ以上のダイレクトメモリアクセス(DMA)エンジンによってメモリから取り出され、DMAエンジンが、メモリファブリックを介して、出力値をメモリに書き戻す。例えば、4つのWGPの各々は、SIMDユニットの対応する対の値をフェッチするDMAエンジンの対を含むことができる。アレイプロセッサシステムによって行列に対して実行されるカーネル演算の多くは、同じパラメータ値を何度も再使用する。例えば、機械学習アプリケーションを実装するために使用される積和演算は、ベクトル乗算又は行列乗算を実行する場合に、同じベクトル値又は行列値を数回再利用することができる。同じパラメータを繰り返しプリフェッチすることは、アレイプロセッサシステム内でかなりのメモリ帯域幅を消費し、システムが帯域幅制限される場合に、アレイプロセッサシステムの効率を低減させる。
図1~図4は、ダイレクトメモリアクセス(DMA)エンジンを使用して、アレイプロセッサシステムの相互に排他的な行及び列内のプロセッサ要素アレイにパラメータ値のセットをブロードキャストし、それにより、プロセッサ要素アレイにパラメータをフェッチすることによって消費される帯域幅を低減するアレイプロセッサシステムの実施形態を開示する。プロセッサ要素アレイは、ベクトル演算論理ユニット(ALU)プロセッサとして実装される。いくつかの実施形態では、各DMAエンジンは、プロセッサ要素アレイの1つの行及びプロセッサ要素アレイの1つの列にパラメータ値をブロードキャストする。アレイプロセッサシステムが、複数のワークグループプロセッサ(WGP)をサポートする場合、各DMAエンジンは、DMAエンジンと関連付けられたSIMDユニット内に実装されたプロセッサ要素アレイの行と、WGPのSIMDユニットにわたって実装されたプロセッサ要素アレイの列と、にパラメータ値をブロードキャストする。例えば、第1のDMAエンジンは、プロセッサ要素アレイの第1の行及びプロセッサ要素アレイの第1の列にパラメータ値をブロードキャストし、第2のDMAエンジンは、プロセッサ要素アレイの第2の行及びプロセッサ要素アレイの第2の列にパラメータ値をブロードキャストし、第3のDMAエンジンは、プロセッサ要素アレイの第3の行及びプロセッサ要素アレイの第3の列にパラメータ値をブロードキャストする等である。DMAエンジンを行/列の相互に排他的なセットと関連付けることにより、異なるプロセッサ要素アレイの入力値を保持するレジスタの同時ポピュレーションが可能になる。したがって、再使用されるパラメータ値をフェッチすることによって消費されるメモリファブリックの帯域幅が低減され、アレイプロセッサシステムの効率が増加する。
図1は、いくつかの実施形態による、アレイプロセッサ101において、共有オペランドの垂直及び水平ブロードキャストを実行する処理システム100のブロック図である。処理システム100は、ダイナミックランダムアクセスメモリ(Dynamic Random-Access Memory、DRAM)等の非一時的なコンピュータ可読記憶媒体を使用して実装されるメモリ105又は他の記憶コンポーネントを含むか、それらへのアクセスを有する。しかしながら、場合によっては、メモリ105は、スタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。メモリ105は、処理システム100において実装される処理ユニットの外部に実装されるために外部メモリと呼ばれる。また、処理システム100は、メモリ105等のように、処理システム100において実装されるエンティティ間の通信をサポートするためのバス110を含む。処理システム100のいくつかの実施形態は、他のバス、ブリッジ、スイッチ、ルータ等を含むが、これらは、明確にするために図1に示されていない。
本明細書で説明される技術は、様々な実施形態において、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(GPU)、汎用GPU(General-Purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(Artificial Intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)の何れかで使用される。図1は、いくつかの実施形態による、並列プロセッサ、特に、GPU115の一例を示している。GPU115は、ディスプレイ120に提示するための画像をレンダリングする。例えば、GPU115は、オブジェクトをレンダリングして、ディスプレイ120に提供されるピクセルの値を生成し、ディスプレイ120は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。CPU115は、命令を同時に又は並列に実行する複数のプロセッサコア121、122、123(本明細書では、集合的に「プロセッサコア121~123」と呼ばれる)を実装する。プロセッサコア121~123のいくつかの実施形態は、異なるデータセットに対して同じ演算を実行するSIMDユニットとして動作する。GPU115内に実装されるプロセッサコア121~123の数は、設計上の選択の問題であり、GPU115のいくつかの実施形態は、図1に示すよりも多い又は少ないプロセッサコアを含む。GPU115のいくつかの実施形態は、汎用コンピューティングのために使用される。GPU115は、メモリ105に記憶されたプログラムコード125等の命令を実行し、GPU115は、実行された命令の結果等の情報をメモリ105に記憶する。
また、処理システム100は、バス110に接続され、したがってバス110を介してGPU115及びメモリ105と通信する中央処理装置(CPU)130を含む。CPU130は、命令を同時に又は並列に実行する複数のプロセッサコア131、132、133(本明細書では集合的に「プロセッサコア131~133」と呼ばれる)を実装する。プロセッサコア131~133のいくつかの実施形態は、異なるデータセットに対して同じ演算を実行するSIMDユニットとして動作する。CPU130において実装されるプロセッサコア131~133の数は、設計上の選択の問題であり、いくつかの実施形態は、図1に示すよりも多い又は少ないプロセッサコアを含む。プロセッサコア131~133は、メモリ105に記憶されたプログラムコード135等の命令を実行し、CPU130は、実行された命令の結果等の情報をメモリ105に記憶する。また、CPU130は、GPU115にドローコールを発行することによって、グラフィック処理を開始することができる。CPU130のいくつかの実施形態は、同時に又は並列に命令を実行する複数のプロセッサコア(明確化のために図1に示していない)を実装する。
入力/出力(input/output、I/O)エンジン145は、ディスプレイ120、並びにキーボード、マウス、プリンタ、外部ディスク等の処理システム100の他の要素と関連付けられた入力又は出力動作を扱う。I/Oエンジン145は、I/Oエンジン145が、メモリ105、GPU115又はCPU130と通信するようにバス110に結合される。図示した実施形態では、I/Oエンジン145は、コンパクトディスク(Compact Disc、CD)、デジタルビデオディスク(Digital Video Disc、DVD)等の非一時的なコンピュータ可読記憶媒体を使用して実装される外部記憶コンポーネント150に記憶された情報を読み取る。また、I/Oエンジン145は、GPU115又はCPU130による処理の結果等の情報を外部記憶コンポーネント150に書き込むことができる。
アレイプロセッサ101は、GPU115、場合によっては、CPU130の処理能力を補完する。プロセッサ要素アレイのセット155は、GPU115が、セット155内のプロセッサ要素アレイのうち1つ以上にタスクをオフロードすることを可能にすることによって、GPU115の性能を加速又は改善する動作を実行するために使用される。次いで、プロセッサ要素アレイは、結果をGPU115に返す。いくつかの実施形態では、プロセッサ要素アレイは、整数二進数に対して算術演算及びビット単位演算を実行する回路を含むベクトル演算論理ユニット(ALU)として実装される。したがって、プロセッサ要素アレイは、1つ以上の入力(又はオペランド)を受け取り、オペランド、及び、プロセッサ要素アレイによって実行される演算を示すオペコードに基づいて、対応する出力を生成する。オペランド、オペコード及び他のステータス値は、プロセッサ要素アレイと関連付けられたレジスタに記憶される。
セット155内のプロセッサ要素アレイは、行及び列に分散される。以下で説明するように、アレイプロセッサ101は、(例えば、メモリ105から)パラメータ値を読み出し、パラメータ値のセットを、プロセッサ要素アレイの行及び列の相互に排他的なサブセットにブロードキャストするメモリインターフェースも含む。場合によっては、アレイプロセッサ101は、対応する行内のプロセッサ要素アレイのサブセットを含む単一命令複数データ(SIMD)ユニットと、SIMDユニットのサブセットを含むワークグループプロセッサ(WGP)と、パラメータ値を記憶する外部メモリ(例えば、メモリ105)と相互接続するように構成されたメモリファブリックと、を含む。メモリインターフェースは、メモリインターフェースと関連付けられた行内のプロセッサ要素アレイと、WGP内のSIMDユニットにわたって実装されているプロセッサ要素アレイの列と、を含むSIMDユニットにパラメータ値をブロードキャストする。メモリインターフェースは、メモリファブリックを介して、外部メモリからパラメータ値にアクセスする。
図2は、いくつかの実施形態による、パラメータ値の垂直及び水平ブロードキャストをサポートする処理システムの一部(部分)200のブロック図である。部分200は、図1に示されるアレイプロセッサ101のいくつかの実施形態を実装するために使用される。部分200は、コンピュートユニット210、215の対を実装するWGP205、206、207、208(本明細書では、集合的に「WGP205~208」と呼ばれる)のセットを含む。コンピュートユニット210、215は、明確にするためにWGP205内にのみ示されているが、WGP206~208もコンピュートユニットの対を含む。部分200のいくつかの実施形態は、より多くの又はより少ないWGP及び対応するコンピュートユニットを実装する。
WGP205~208は、SIMDユニット220、221、222、223(本明細書では、集合的に「SIMDユニット220~223」と呼ばれる)と、ダイレクトメモリアクセス(DMA)エンジン225、230等のメモリインターフェースと、を含む。また、メモリインターフェースのいくつかの実施形態は、DMAエンジン225、230と連動して動作するTA/TD論理インターフェース及びTCPインターフェースを含む。SIMDユニット220~223の各々は、プロセッサ要素アレイのセットの一部を実装する。図示した実施形態では、SIMDユニット221は、プロセッサ要素アレイ240、241、242、243(本明細書では、集合的に「プロセッサ要素アレイ240~243」と呼ばれる)のサブセット235を含み、SIMDユニット223は、プロセッサ要素アレイ250、251、252、253(本明細書では、集合的に「プロセッサ要素アレイ250~253」と呼ばれる)のサブセット245を含む。SIMDユニット220、222も、明確にするために、図2に示されていないプロセッサ要素アレイの他のサブセットを含む。
DMAエンジン225、230は、DMAエンジン225、230と、SRAM260等のランダムアクセスメモリ(Random-Access Memory、RAM)と、の間に1つ以上のチャネルを提供するメモリファブリック255に接続されている。図示した実施形態では、SRAM260は、図1に示されるメモリ105等のシステムメモリ265に接続されている。また、部分200は、WGP205~208及びメモリファブリック255と通信する非同期コンピュートエンジン270を含む。
DMAエンジン225、230は、メモリファブリック255を介して、SRAM260又はシステムメモリ265からパラメータ値をフェッチする。フェッチされたパラメータ値は、次に、プロセッサ要素アレイ240~243、250~253を含むプロセッサ要素アレイの相互に排他的なサブセットにブロードキャストされる。いくつかの実施形態では、DMAエンジン225、230は、プロセッサ要素アレイのセットの対応する行及び列内のプロセッサ要素アレイにパラメータ値をブロードキャストする。例えば、DMAエンジン225は、第1の行(例えば、プロセッサ要素アレイ240~243を含む行)及び第1の列(例えば、プロセッサ要素アレイ240、250を含む列)内のプロセッサ要素アレイに第1のパラメータ値をブロードキャストすることができる。DMAエンジン230は、第2の行(例えば、プロセッサ要素アレイ250~253)及び第2の列(例えば、プロセッサ要素アレイ241、251)内のプロセッサ要素アレイに第2のパラメータ値をブロードキャストすることができる。この場合、プロセッサ要素アレイ240~243のサブセット及び1つの行は、別の行内のプロセッサ要素アレイ250~253のサブセットに対して相互に排他的である。プロセッサ要素アレイ240、250を含む列内のプロセッサ要素アレイのサブセットは、プロセッサ要素アレイ241、251を含む列内のプロセッサ要素アレイのサブセットに対して相互に排他的である。したがって、DMAエンジン225、230は、行及び列の相互に排他的なサブセット中のプロセッサ要素アレイと関連付けられたレジスタに、それらの対応するフェッチされたパラメータ値を同時にポピュレートする。
図3は、いくつかの実施形態による、プロセッサ要素アレイの相互に排他的なサブセットへのパラメータ値の垂直及び水平ブロードキャストを実装するアレイプロセッサ300のブロック図である。アレイプロセッサ300は、図1に示されるアレイプロセッサ101のいくつかの実施形態を実装するために使用される。アレイプロセッサ300は、図1に示されるメモリ105又は図2に示されるメモリ260、265等のメモリからパラメータをフェッチするDMAエンジン301、302、303、304(本明細書では、集合的に「DMAエンジン301~304」と呼ばれる)を含む。また、アレイプロセッサ300は、プロセッサ要素アレイ311、312、313、314、321、322、323、324、331、332、333、334、341、342、343、344、351、352、353、354、361、362、363、364、371、372、373、374、381、382、383、及び384(本明細書では、簡潔にするために、集合的に「プロセッサ要素アレイ311~384」と呼ばれ、したがって、ハイフンは、311と384との間の数字の連続シーケンスを示すことを意図しない)の対応するサブセットを使用して実装されるSIMDユニット310、320、330、340、350、360、370、380を含む。SIMDユニット310、320、330、340、350、360、370、380のいくつかの実施形態は、異なるWGP内に実装される。例えば、第1のWGPは、SIMDユニット310、320を実装し、第2のWGPは、SIMDユニット330、340を実装し、第3のWGPは、SIMDユニット350、360を実装し、第4のWGPは、SIMDユニット370、380を実装し得る。
DMAエンジン301~304は、プロセッサ要素アレイ311~384の相互に排他的なサブセットと相互接続される。図示した実施形態では、DMAエンジン301~304は、物理的接続を使用して、プロセッサ要素アレイ311~384のアレイ内の相互に排他的な行及び列に相互接続され、ワイヤ、トレース等を含む。DMAエンジン301は、物理的接続391によって、プロセッサ要素アレイ311~314、321~324を含む行、及び、プロセッサ要素アレイ311、331、351、371を含む列に接続されている。したがって、DMAエンジン301は、メモリからフェッチされたパラメータ値を、プロセッサ要素アレイ311~314、321~324、プロセッサ要素アレイ311、331、351、371、これらのプロセッサ要素アレイのサブセット、又は、それらの組み合わせにブロードキャストすることができる。DMAエンジン302は、物理的接続392によって、プロセッサ要素アレイ331~334、341~344を含む行、及び、プロセッサ要素アレイ312、332、352、372を含む列に接続されている。したがって、DMAエンジン302は、メモリからフェッチされたパラメータ値を、プロセッサ要素アレイ331~334、341~344、プロセッサ要素アレイ312、332、352、372、これらのプロセッサ要素アレイのサブセット、又は、それらの組み合わせにブロードキャストすることができる。DMAエンジン303は、物理的接続393によって、プロセッサ要素アレイ351~354、361~364を含む行、及び、プロセッサ要素アレイ313、333、353、373を含む列に接続されている。したがって、DMAエンジン303は、メモリからフェッチされたパラメータ値を、プロセッサ要素アレイ351~354、361~364、プロセッサ要素アレイ313、333、353、373、これらのプロセッサ要素アレイのサブセット、又は、それらの組み合わせにブロードキャストすることができる。DMAエンジン304は、物理的接続394によって、プロセッサ要素アレイ371~374、381~384を含む行、及び、プロセッサ要素アレイ324、344、364、384を含む列に接続されている。したがって、DMAエンジン304は、メモリからフェッチされたパラメータ値を、プロセッサ要素アレイ371~374、381~384、プロセッサ要素アレイ324、344、364、384、これらのプロセッサ要素アレイのサブセット、又は、それらの組み合わせにブロードキャストすることができる。
図4は、いくつかの実施形態による、プロセッサ要素アレイの行又は列にパラメータ値をブロードキャストする方法400のフロー図である。方法400は、図1に示される処理システム100、図2に示される処理システムの一部200、及び、図3に示されるアレイプロセッサ300のいくつかの実施形態で実装される。
方法400は、ブロック401で開始する。ブロック405において、1つ以上のメモリインターフェース(DMAエンジン等)は、メモリからのSIMD命令のための対応するパラメータ値にアクセスする。ブロック410において、DMAエンジンは、プロセッサ要素アレイの相互に排他的な列又は行にパラメータ値をブロードキャストする。本明細書で説明するように、DMAエンジンは、DMAエンジンと、プロセッサ要素アレイの列又は行の相互に排他的なサブセットと、の間の物理的相互接続を使用してパラメータ値をブロードキャストする。
決定ブロック415において、システムは、追加のパラメータ値がメモリからフェッチされるべきかどうかを判定する。そうである場合、方法400は、ブロック405に戻り、追加のパラメータ値がメモリからフェッチされる。フェッチすべき追加のパラメータ値がない場合、方法400はブロック420に進み、方法400は終了する。
いくつかの実施形態では、上述した装置及び技術は、図1~図4を参照して上述したアレイプロセッサ等の1つ以上の集積回路(Integrated Circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (17)

  1. 装置であって、
    行及び列に分散されたプロセッサ要素アレイであって、前記プロセッサ要素アレイは、パラメータ値に対して演算を実行するように構成されている、プロセッサ要素アレイと、
    前記パラメータ値のセットを前記プロセッサ要素アレイの行及び列の相互に排他的なサブセットにブロードキャストするように構成されたメモリインターフェースと、を備える、
    装置。
  2. 前記プロセッサ要素アレイは、ベクトル演算論理ユニット(ALU)プロセッサを備え、前記メモリインターフェースは、ダイレクトメモリアクセス(DMA)エンジンを備える、
    請求項1の装置。
  3. 前記メモリインターフェースの各々は、前記パラメータ値を、前記行のうち対応する行及び前記列のうち対応する列の前記プロセッサ要素アレイにブロードキャストする、
    請求項1又は2の装置。
  4. 前記メモリインターフェースのうち第1のメモリインターフェースは、第1のパラメータ値を、第1の行及び第1の列の前記プロセッサ要素アレイにブロードキャストし、前記メモリインターフェースのうち第2のメモリインターフェースは、第2のパラメータ値を、第2の行及び第2の列の前記プロセッサ要素アレイにブロードキャストする、
    請求項3の装置。
  5. 前記メモリインターフェースは、個別の物理的接続を介して、前記プロセッサ要素アレイの行及び列の相互に排他的なサブセットに接続されている、
    請求項1~4の何れかの装置。
  6. 前記メモリインターフェースは、前記パラメータ値を、前記行及び列の相互に排他的なサブセットの前記プロセッサ要素アレイと関連付けられたレジスタに同時にポピュレートするように構成されている、
    請求項1~5の何れかの装置。
  7. 対応する行の前記プロセッサ要素アレイのサブセットを備える単一命令複数データ(SIMD)ユニットを更に備え、
    前記メモリインターフェースは、前記パラメータ値を、前記メモリインターフェースと関連付けられた行の前記プロセッサ要素アレイを備える前記SIMDユニットにブロードキャストする、
    請求項1~6の何れかの装置。
  8. 前記SIMDユニットのサブセットを備えるワークグループプロセッサを更に備え、
    前記メモリインターフェースは、前記パラメータ値を、前記ワークグループプロセッサの前記SIMDユニットにわたって実装されているプロセッサ要素アレイの列にブロードキャストする、
    請求項7の装置。
  9. 前記パラメータ値を記憶する外部メモリと相互接続するように構成されたメモリファブリックを更に備え、
    前記メモリインターフェースは、前記メモリファブリックを介して、前記外部メモリから前記パラメータ値にアクセスするように構成されている、
    請求項1~8の何れかの装置。
  10. 方法であって、
    メモリインターフェースを介して、メモリからパラメータ値をフェッチすることと、
    前記メモリインターフェースから、プロセッサ要素アレイの行及び列の相互に排他的なサブセットに前記パラメータ値をブロードキャストすることと、
    前記プロセッサ要素アレイにおいて、前記パラメータ値に対して演算を実行することと、を含む、
    方法。
  11. 前記メモリインターフェースから前記パラメータ値をブロードキャストすることは、前記メモリインターフェースの各々から、前記行のうち対応する行及び前記列のうち対応する列の前記プロセッサ要素アレイに前記パラメータ値をブロードキャストすることを含む、
    請求項10の方法。
  12. 前記パラメータ値をブロードキャストすることは、前記メモリインターフェースのうち第1のメモリインターフェースから第1の行及び第1の列の前記プロセッサ要素アレイに第1のパラメータ値をブロードキャストすることを含み、前記パラメータ値をブロードキャストすることは、前記メモリインターフェースのうち第2のメモリインターフェースから第2の行及び第2の列の前記プロセッサ要素アレイに第2のパラメータ値をブロードキャストすることを含む、
    請求項11の方法。
  13. 前記パラメータ値をブロードキャストすることは、前記メモリインターフェースと、前記対応する行及び列と、の間の個別の物理的接続を介して、前記パラメータ値をブロードキャストすることを含む、
    請求項10の方法。
  14. 前記パラメータ値をブロードキャストすることは、前記行及び列の相互に排他的なサブセットの前記プロセッサ要素アレイと関連付けられたレジスタに前記パラメータ値を同時にポピュレートすることを含む、
    請求項10の方法。
  15. 各行の前記プロセッサ要素アレイのサブセットは、対応する単一命令複数データ(SIMD)ユニットに実装されており、前記パラメータ値をブロードキャストすることは、前記メモリインターフェースと関連付けられた行の前記プロセッサ要素アレイを備える前記SIMDユニットに前記パラメータ値をブロードキャストすることを含む、
    請求項10の方法。
  16. 前記SIMDユニットのサブセットは、対応するワークグループプロセッサに実装されており、前記パラメータ値をブロードキャストすることは、前記ワークグループプロセッサの前記SIMDユニットにわたって実装されている前記プロセッサ要素アレイの列に前記パラメータ値をブロードキャストすることを含む、
    請求項15の方法。
  17. 前記パラメータ値をフェッチすることは、前記パラメータ値を記憶する前記メモリと相互接続するように構成されたメモリファブリックを介して、前記パラメータ値にアクセスすることを含む、
    請求項10~16の何れかの方法。
JP2023514867A 2020-09-25 2021-09-24 共有オペランドの垂直及び水平ブロードキャスト Pending JP2023542835A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/032,307 2020-09-25
US17/032,307 US11635967B2 (en) 2020-09-25 2020-09-25 Vertical and horizontal broadcast of shared operands
PCT/US2021/051892 WO2022066998A1 (en) 2020-09-25 2021-09-24 Vertical and horizontal broadcast of shared operands

Publications (1)

Publication Number Publication Date
JP2023542835A true JP2023542835A (ja) 2023-10-12

Family

ID=80822569

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023514867A Pending JP2023542835A (ja) 2020-09-25 2021-09-24 共有オペランドの垂直及び水平ブロードキャスト

Country Status (6)

Country Link
US (2) US11635967B2 (ja)
EP (1) EP4217856A1 (ja)
JP (1) JP2023542835A (ja)
KR (1) KR20230069952A (ja)
CN (1) CN116420136A (ja)
WO (1) WO2022066998A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995030B1 (en) * 2022-11-10 2024-05-28 Azurengine Technologies, Inc. Reconfigurable parallel processor with stacked columns forming a circular data path

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023753A (en) * 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US6898691B2 (en) * 2001-06-06 2005-05-24 Intrinsity, Inc. Rearranging data between vector and matrix forms in a SIMD matrix processor
JP5076418B2 (ja) * 2006-09-19 2012-11-21 ソニー株式会社 共有メモリ装置
US8923510B2 (en) * 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
GB2457310B (en) * 2008-02-11 2012-03-21 Picochip Designs Ltd Signal routing in processor arrays
US20190377580A1 (en) 2008-10-15 2019-12-12 Hyperion Core Inc. Execution of instructions based on processor and data availability
US8699622B2 (en) * 2010-01-04 2014-04-15 Allen LeRoy Limberg Methods and apparatuses for implementing selective interference-filter pre-coding of main-service 8-VSB DTV signals
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
KR102369209B1 (ko) 2017-02-23 2022-02-28 세레브라스 시스템즈 인코포레이티드 가속화된 심층 학습
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator

Also Published As

Publication number Publication date
EP4217856A1 (en) 2023-08-02
CN116420136A (zh) 2023-07-11
WO2022066998A1 (en) 2022-03-31
KR20230069952A (ko) 2023-05-19
US11635967B2 (en) 2023-04-25
US20220100528A1 (en) 2022-03-31
US20230289191A1 (en) 2023-09-14

Similar Documents

Publication Publication Date Title
CN107315574B (zh) 一种用于执行矩阵乘运算的装置和方法
US10140251B2 (en) Processor and method for executing matrix multiplication operation on processor
WO2019201656A1 (en) Method for accelerating operations and accelerator apparatus
CN109416755B (zh) 人工智能并行处理方法、装置、可读存储介质、及终端
US11321092B1 (en) Tensor-based memory access
US8370845B1 (en) Method for synchronizing independent cooperative thread arrays running on a graphics processing unit
US11120328B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
US11409840B2 (en) Dynamically adaptable arrays for vector and matrix operations
US20230289191A1 (en) Vertical and horizontal broadcast of shared operands
JP6551751B2 (ja) マルチプロセッサ装置
CN112765540A (zh) 数据处理方法、装置及相关产品
US20240111530A1 (en) Matrix multiplication unit with flexible precision operations
JP6818010B2 (ja) ベクトル長クエリ命令
US8473948B1 (en) Method for synchronizing independent cooperative thread arrays running on a graphics processing unit
US11630667B2 (en) Dedicated vector sub-processor system
US11995149B2 (en) Sparse matrix-vector multiplication
JP7490766B2 (ja) 演算論理回路レジスタの順序付け
JPH0616287B2 (ja) マスク付きベクトル演算処理装置
WO2024200990A1 (en) Technique for efficient multiplication of vectors of complex numbers
TW202411860A (zh) 多外積指令
WO2023199015A1 (en) Technique for handling data elements stored in an array storage
WO2023199014A1 (en) Technique for handling data elements stored in an array storage
CN111860799A (zh) 运算装置
CN115993951A (zh) 用于重用乘法累加运算的矩阵乘法的装置、方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240809