JP7410186B2 - Gpuにおける明示的な個別マスクレジスタのマスク操作方法 - Google Patents
Gpuにおける明示的な個別マスクレジスタのマスク操作方法 Download PDFInfo
- Publication number
- JP7410186B2 JP7410186B2 JP2021573736A JP2021573736A JP7410186B2 JP 7410186 B2 JP7410186 B2 JP 7410186B2 JP 2021573736 A JP2021573736 A JP 2021573736A JP 2021573736 A JP2021573736 A JP 2021573736A JP 7410186 B2 JP7410186 B2 JP 7410186B2
- Authority
- JP
- Japan
- Prior art keywords
- mask
- command
- register
- gpu
- vector
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 27
- 230000000873 masking effect Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
本開示は、2019年6月13日に出願された、出願番号201910512317.6、発明の名称「GPUにおける明示的な個別マスクレジスタのマスク操作方法」の特許出願の優先権主張出願であり、その全部の内容が援用により本開示に組み込まれる。
各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、
前記$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、プログラムコードにおけるコマンドのマスクアドレスフィールドMSAを変更することにより、現在のコマンドの実行マスクを指定することができるステップS2と、
コマンドによりそれぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現し、対応するマスクレジスタを指定する必要があり、同時に最近の親要素のマスクレジスタを保持し、且つ二分木の方式で子要素と親要素のマスク関係を処理するステップS3と、
前記マスクレジスタの使用が8を超える場合、移動コマンドを介して、一時的に使用しないマスクオペランドを前記汎用ベクトルレジスタに記憶し、必要がある時に前記汎用ベクトルレジスタから再度取得するステップS4と、
ベクトル実行ユニットによりマスクリダクション操作を実現し、マスクリダクションの汎用及び明示的な読み取りを完了し、コマンド送信によるオーバーヘッドを防止し、ユーザはアプリケーションプログラムを解析した後、前記リダクション操作を追加するか否かを決定するステップS5と、
明示的な前記マスクレジスタは、処理条件を制御する時、後段の条件コードを前記マスクレジスタに記憶し、さらに真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、明示的なマスクにより、単一のマスクが上書きされ、上書き後にリセットされるという問題を防止し、前記ベクトル汎用レジスタと前記マスクレジスタとの間のデータ移動を減少させるステップS6と、を含む。
各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、
$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、プログラムコードにおけるコマンドのマスクアドレスフィールドMSAを変更することにより、現在のコマンドの実行マスクを指定することができるステップS2と、
コマンドによりそれぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現し、対応するマスクレジスタを指定する必要があり、同時に最近の親要素のマスクレジスタを保持し、且つ二分木の方式で子要素と親要素のマスク関係を処理するステップS3と、
マスクレジスタの使用が8を超える場合、移動コマンドを介して、一時的に使用しないマスクオペランドを汎用ベクトルレジスタに記憶し、必要がある時に汎用ベクトルレジスタから再度取得するステップS4と、
ベクトル実行ユニットによりマスクリダクション操作を実現し、マスクリダクションの汎用及び明示的な読み取りを完了し、コマンド送信によるオーバーヘッドを防止し、ユーザはアプリケーションプログラムを解析した後、リダクション操作を追加するか否かを決定するステップS5と、
明示的なマスクレジスタは、処理条件を制御する時、後段の条件コードをマスクレジスタに記憶し、さらに真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、明示的なマスクにより、単一のマスクが上書きされ、上書き後にリセットされるという問題を防止し、ベクトル汎用レジスタとマスクレジスタとの間のデータ移動を減少させるステップS6と、を含む。
Claims (4)
- GPUにおける明示的な個別マスクレジスタのマスク操作方法であって、
各GPUハードウェアスレッドはそれぞれの$m0~$m7と記す8つの128ビット幅の個別マスクレジスタにアクセスすることができるステップS1と、
前記$m0におけるデータはGPUハードウェアスレッドコマンドの実行マスクをデフォルトとし、プログラムコードにおけるコマンドのマスクアドレスフィールドMSAを変更することにより、現在のコマンドの実行マスクを指定することができるステップS2と、
コマンドによりそれぞれマスクレジスタに対するリダクション演算と、拡張演算と、論理演算及び汎用ベクトルレジスタとの間のデータ移動を実現し、対応するマスクレジスタを指定する必要があり、同時に最近の親要素のマスクレジスタを保持し、且つ二分木の方式で子要素と親要素のマスク関係を処理するステップS3と、
前記マスクレジスタの使用が8を超える場合、移動コマンドを介して、一時的に使用しないマスクオペランドを前記汎用ベクトルレジスタに記憶し、必要がある時に前記汎用ベクトルレジスタから再度取得するステップS4と、
ベクトル実行ユニットによりマスクリダクション操作を実現し、マスクリダクションの汎用及び明示的な読み取りを完了し、コマンド送信によるオーバーヘッドを防止し、ユーザはアプリケーションプログラムを解析した後、前記リダクション操作を追加するか否かを決定するステップS5と、
明示的な前記マスクレジスタは、処理条件を制御する時、後段の条件コードを前記マスクレジスタに記憶し、さらに真の分岐のコマンドシーケンスのマスク及び偽の分岐のコマンドシーケンスの条件コードを生成し、明示的なマスクにより、単一のマスクが上書きされ、上書き後にリセットされるという問題を防止し、前記汎用ベクトルレジスタと前記マスクレジスタとの間のデータ移動を減少させるステップS6と、を含むことを特徴とする、GPUにおける明示的な個別マスクレジスタのマスク操作方法。 - 前記128ビットのマスク及びベクトル実行ユニットは、SIMD16の並列方式で割り当てられ、1つの前記マスクレジスタはベクトルユニットの実行を8回確保することができる、ことを特徴とする、請求項1に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
- 前記ベクトルユニットのベクトルコマンドを送信する時、該コマンドのマスクレジスタが全てゼロであるか否かを判断し、全てゼロであれば該コマンドがいかなる有効な出力も発生させないことを示し、対応するコマンドの読み取り及び実行の操作をいずれも省略することができる、ことを特徴とする、請求項2に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
- 前記SIMD16の幅をリダクションする必要があり、リダクション結果がゼロでない場合はオペランドを読み取り、コマンドを送信し、それによりSIMD16のマスク処理を完了させることができる、ことを特徴とする、請求項2に記載のGPUにおける明示的な個別マスクレジスタのマスク操作方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910512317.6A CN112083954A (zh) | 2019-06-13 | 2019-06-13 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
CN201910512317.6 | 2019-06-13 | ||
PCT/CN2020/095649 WO2020249052A1 (zh) | 2019-06-13 | 2020-06-11 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022535982A JP2022535982A (ja) | 2022-08-10 |
JP7410186B2 true JP7410186B2 (ja) | 2024-01-09 |
Family
ID=73733747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021573736A Active JP7410186B2 (ja) | 2019-06-13 | 2020-06-11 | Gpuにおける明示的な個別マスクレジスタのマスク操作方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11853754B2 (ja) |
EP (1) | EP3985503A4 (ja) |
JP (1) | JP7410186B2 (ja) |
KR (1) | KR20220016993A (ja) |
CN (1) | CN112083954A (ja) |
WO (1) | WO2020249052A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114489792B (zh) * | 2021-03-25 | 2022-10-11 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
CN114253821B (zh) * | 2022-03-01 | 2022-05-27 | 西安芯瞳半导体技术有限公司 | 一种分析gpu性能的方法、装置及计算机存储介质 |
CN117311988B (zh) * | 2023-11-27 | 2024-03-12 | 沐曦集成电路(南京)有限公司 | 一种带掩码的规约操作优化方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334563A (ja) | 2006-06-14 | 2007-12-27 | Nec Corp | マスク付きベクトル演算処理装置 |
JP2014510351A (ja) | 2011-04-01 | 2014-04-24 | インテル・コーポレーション | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 |
US20140297991A1 (en) | 2011-12-22 | 2014-10-02 | Jesus Corbal | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210839A (en) * | 1990-12-21 | 1993-05-11 | Sun Microsystems, Inc. | Method and apparatus for providing a memory address from a computer instruction using a mask register |
GB2379140B (en) * | 2001-08-22 | 2004-11-10 | Ubinetics Ltd | Code generation |
US7523370B1 (en) * | 2003-09-15 | 2009-04-21 | Cadence Design Systems, Inc. | Channel masking during integrated circuit testing |
US9513905B2 (en) * | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
US9384713B1 (en) * | 2009-07-27 | 2016-07-05 | Nvidia Corporation | System and method for masking transistions between graphics processing units in a hybrid graphics system |
US8725989B2 (en) * | 2010-12-09 | 2014-05-13 | Intel Corporation | Performing function calls using single instruction multiple data (SIMD) registers |
US20130151822A1 (en) * | 2011-12-09 | 2013-06-13 | International Business Machines Corporation | Efficient Enqueuing of Values in SIMD Engines with Permute Unit |
US9619236B2 (en) * | 2011-12-23 | 2017-04-11 | Intel Corporation | Apparatus and method of improved insert instructions |
WO2014105057A1 (en) * | 2012-12-28 | 2014-07-03 | Intel Corporation | Instruction to reduce elements in a vector register with strided access pattern |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US10061591B2 (en) * | 2014-06-27 | 2018-08-28 | Samsung Electronics Company, Ltd. | Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing |
US20160179520A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for variably expanding between mask and vector registers |
KR20180037839A (ko) * | 2016-10-05 | 2018-04-13 | 삼성전자주식회사 | 그래픽스 프로세싱 장치 및 인스트럭션의 실행 방법 |
US20190278605A1 (en) * | 2017-02-22 | 2019-09-12 | Advanced Micro Devices, Inc. | Software-controlled variable wavefront size execution at gpu |
-
2019
- 2019-06-13 CN CN201910512317.6A patent/CN112083954A/zh active Pending
-
2020
- 2020-06-11 KR KR1020227000767A patent/KR20220016993A/ko not_active Application Discontinuation
- 2020-06-11 US US17/618,506 patent/US11853754B2/en active Active
- 2020-06-11 EP EP20823444.3A patent/EP3985503A4/en active Pending
- 2020-06-11 WO PCT/CN2020/095649 patent/WO2020249052A1/zh active Application Filing
- 2020-06-11 JP JP2021573736A patent/JP7410186B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007334563A (ja) | 2006-06-14 | 2007-12-27 | Nec Corp | マスク付きベクトル演算処理装置 |
JP2014510351A (ja) | 2011-04-01 | 2014-04-24 | インテル・コーポレーション | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 |
US20140297991A1 (en) | 2011-12-22 | 2014-10-02 | Jesus Corbal | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
Also Published As
Publication number | Publication date |
---|---|
WO2020249052A1 (zh) | 2020-12-17 |
CN112083954A (zh) | 2020-12-15 |
EP3985503A4 (en) | 2023-06-28 |
EP3985503A1 (en) | 2022-04-20 |
US20220236988A1 (en) | 2022-07-28 |
US11853754B2 (en) | 2023-12-26 |
JP2022535982A (ja) | 2022-08-10 |
KR20220016993A (ko) | 2022-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7410186B2 (ja) | Gpuにおける明示的な個別マスクレジスタのマスク操作方法 | |
JP5701487B2 (ja) | 同期並列スレッドプロセッサにおける間接的な関数呼び出し命令 | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
JP6373425B2 (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
JP2018500657A5 (ja) | ||
JP2011508918A (ja) | 一般作業負荷およびグラフィックス作業負荷を処理するための統合プロセッサアーキテクチャ | |
US20180052685A1 (en) | Processor and method for executing instructions on processor | |
JP2017538213A (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
TW201741867A (zh) | 記憶體複製指令、處理器、方法及系統 | |
US20230084523A1 (en) | Data Processing Method and Device, and Storage Medium | |
JP3749233B2 (ja) | パイプラインでの命令実行方法及び装置 | |
US11042502B2 (en) | Vector processing core shared by a plurality of scalar processing cores for scheduling and executing vector instructions | |
JP2004529405A (ja) | 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ | |
JPH0673105B2 (ja) | 命令パイプライン方式のマイクロプロセッサ | |
EP3729286B1 (en) | System and method for executing instructions | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
US11481250B2 (en) | Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values | |
JP7048612B2 (ja) | ベクトル生成命令 | |
US20160246598A1 (en) | Pessimistic dependency handling | |
CN113015958A (zh) | 实现掩蔽向量指令的***和方法 | |
JP2021515929A (ja) | データ処理 | |
US11593114B1 (en) | Iterating group sum of multiple accumulate operations | |
US11347506B1 (en) | Memory copy size determining instruction and data transfer instruction | |
JP4528993B2 (ja) | マルチバンクレジスタを有するプロセッサおよびプロセッサの制御方法 | |
KR102631214B1 (ko) | 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220120 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230519 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230606 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20230906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231102 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20231121 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231221 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7410186 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |