JP2022535013A - コンパイラの精度選定によるシェーダプログラムの加速化 - Google Patents
コンパイラの精度選定によるシェーダプログラムの加速化 Download PDFInfo
- Publication number
- JP2022535013A JP2022535013A JP2021571327A JP2021571327A JP2022535013A JP 2022535013 A JP2022535013 A JP 2022535013A JP 2021571327 A JP2021571327 A JP 2021571327A JP 2021571327 A JP2021571327 A JP 2021571327A JP 2022535013 A JP2022535013 A JP 2022535013A
- Authority
- JP
- Japan
- Prior art keywords
- precision
- loss
- program code
- risk
- operations
- 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.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title 1
- 238000004364 calculation method Methods 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims abstract description 61
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000004891 communication Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000012804 iterative process Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 description 58
- 230000008901 benefit Effects 0.000 description 16
- 230000008859 change Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000000593 degrading effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000543 intermediate Substances 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010626 work up procedure Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
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 Graphics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
精度が低減され得るシェーダプログラム内の命令及び/又は一連のオペレーションを識別すること、及び/又は、識別された命令のセットにおける精度を自動的に低減することによって、グラフィックス処理およびシェーダプログラムのパフォーマンスを改善することができる。
Claims (15)
- シェーダプログラムにおいて半精度のストレージおよび算術をサポートするグラフィックス処理装置(GPU)と、
データおよび命令を保管するためのメモリと、
前記メモリと通信するように構成された少なくとも1つのプロセッサと、
前記メモリおよび前記少なくとも1つのプロセッサと通信するコンパイラと、
を含み、
前記コンパイラは、
前記GPUで使用するシェーダプログラムのためのプログラムコードを受信し、
前記プログラムコードの中の一連のオペレーションを選択するために前記プログラムコード上で少なくとも1つのパスを実行して、前記一連のオペレーションによって使用される複数の計算の精度を低下させ、
前記複数の計算の各計算に対して計算精度を半精度に低下させることについて精度損失のリスクを評価し、
精度損失閾値を下回る前記精度損失のリスクに応答して、前記計算を半精度に書き換えることによって、編集されたプログラムコードを生成し、かつ、
前記精度損失閾値を上回る前記精度損失のリスクに応答して、可能性ある精度損失について警告を伴う通知を提供する、
ように動作可能である、
コンピュータ装置。 - 前記精度損失閾値は、前記計算が半精度をサポートするか否かを識別し、かつ、
前記一連のオペレーションは、半精度をサポートするものとして以前に特定されていることに応答して、または、ユーザ入力に応答して選択される、
請求項1に記載のコンピュータ装置。 - 前記精度損失のリスクを評価するために、前記コンパイラによって、前記GPUのハードウェアパラメータが使用される、
請求項1に記載のコンピュータ装置。 - 前記精度損失のリスクは、前記計算が半精度をサポートしない場合に前記精度損失閾値を上回り、かつ、
前記精度損失のリスクは、前記計算が半精度をサポートする場合に前記精度損失閾値を下回る、
請求項1に記載のコンピュータ装置。 - 前記コンパイラは、さらに、
前記一連のオペレーションの中の前記複数の計算の精度を低下させるか否かを決定する際に反復処理を実行するように動作可能である、
請求項1に記載のコンピュータ装置。 - 前記コンパイラは、さらに、
ディスプレイ上に表示するための出力へと処理するために、前記GPUに対して前記編集されたプログラムコードを提供し、かつ、
前記ディスプレイ上のユーザインターフェイスに前記通知を提供する、
ように動作可能である、
請求項1に記載のコンピュータ装置。 - シェーダプログラムで使用される計算の精度を低下させるための方法であって、
コンピュータ装置におけるコンパイラで、前記シェーダプログラムの半精度のストレージおよび算術をサポートするグラフィックス処理装置(GPU)で使用するシェーダプログラムのためのプログラムコードを受信するステップと、
前記プログラムコードの中の一連のオペレーションを選択するために前記プログラムコード上で少なくとも1つのパスを実行するステップであり、前記一連のオペレーションによって使用される複数の計算の精度を低下させる、ステップと、
前記複数の計算の各計算に対して計算精度を半精度に低下させることについて精度損失のリスクを評価するステップと、
精度損失閾値を下回る前記精度損失のリスクに応答して、前記計算を半精度に書き換えることによって、編集されたプログラムコードを生成するステップと、
前記精度損失閾値を上回る前記精度損失のリスクに応答して、精度損失について警告を伴う通知を提供するステップと、
を含む、方法。 - 前記精度損失閾値は、前記計算が半精度をサポートするか否かを識別し、かつ、
前記一連のオペレーションは、半精度をサポートするものとして以前に特定されていることに応答して、または、ユーザ入力に応答して選択される、
請求項7に記載の方法。 - 前記精度損失のリスクを評価するために、前記コンパイラによって、前記GPUのハードウェアパラメータが使用される、
請求項7に記載の方法。 - 前記精度損失のリスクは、前記計算が半精度をサポートしない場合に前記精度損失閾値を上回り、かつ、
前記精度損失のリスクは、前記計算が半精度をサポートする場合に前記精度損失閾値を下回る、
請求項7に記載の方法。 - 前記方法は、さらに、
前記一連のオペレーションの中の前記複数の計算の精度を低下させるか否かを決定する際に反復処理を実行するステップ、を含む、
請求項7に記載の方法。 - 前記方法は、さらに、
前記計算の精度に対して成された変更を識別し、かつ、前記成された変更の説明を提供するレポートを生成するステップ、を含む、
請求項7に記載の方法。 - 前記方法は、さらに、
ユーザの入力に応答して、前記プログラムコードにおける解析のレベルを調整するステップ、を含む、
請求項7に記載の方法。 - 前記方法は、さらに、
ディスプレイ上に表示するための出力へと処理するために、前記GPUに対して前記編集されたプログラムコードを提供するステップと、
前記ディスプレイ上のユーザインターフェイスに前記通知を提供するステップと、
を含む、請求項7に記載の方法。 - コンピュータ装置によって実行可能な命令を保管しているコンピュータで読取り可能な媒体であって、
シェーダプログラムにおいて半精度のストレージおよび算術をサポートするグラフィックス処理装置(GPU)で使用するシェーダプログラムのためのプログラムコードを受信するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
一連のオペレーションによって使用される複数の計算の精度を低下させるように、前記プログラムコードの中の前記一連のオペレーションを選択するために前記プログラムコード上で少なくとも1つのパスを実行するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
前記複数の計算の各計算に対して計算精度を半精度に低下させることについて精度損失のリスクを評価するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
精度損失閾値を下回る前記精度損失のリスクに応答して、前記計算を半精度に書き換えることによって、編集されたプログラムコードを生成するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
前記精度損失閾値を上回る前記精度損失のリスクに応答して、精度損失について警告を伴う通知を提供するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
を含む、コンピュータで読取り可能な媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/429,989 | 2019-06-03 | ||
US16/429,989 US11120602B2 (en) | 2019-06-03 | 2019-06-03 | Acceleration of shader programs by compiler precision selection |
PCT/US2020/028606 WO2020247073A1 (en) | 2019-06-03 | 2020-04-17 | Acceleration of shader programs by compiler precision selection |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2022535013A true JP2022535013A (ja) | 2022-08-04 |
JPWO2020247073A5 JPWO2020247073A5 (ja) | 2023-03-22 |
JP7451568B2 JP7451568B2 (ja) | 2024-03-18 |
Family
ID=70978542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021571327A Active JP7451568B2 (ja) | 2019-06-03 | 2020-04-17 | コンパイラの精度選定によるシェーダプログラムの加速化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11120602B2 (ja) |
EP (1) | EP3963443B1 (ja) |
JP (1) | JP7451568B2 (ja) |
KR (1) | KR20220012898A (ja) |
CN (1) | CN113924547A (ja) |
WO (1) | WO2020247073A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11410368B2 (en) * | 2020-07-24 | 2022-08-09 | Unity Technologies Sf | Animation control rig generation |
US11868759B2 (en) * | 2021-12-08 | 2024-01-09 | Advanced Micro Devices, Inc. | Shader source code performance prediction |
US11935175B2 (en) * | 2022-04-07 | 2024-03-19 | Huawei Technologies Co., Ltd. | Apparatus, method, and computer-readable medium for image processing using variable-precision shading |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4443100B2 (ja) | 2002-07-31 | 2010-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換方法、これを用いたデータ処理装置及びプログラム |
US7461116B2 (en) * | 2003-09-17 | 2008-12-02 | Agility Design Solutions Inc. | Emulation of a fixed point operation using a corresponding floating point operation |
US20090051687A1 (en) | 2005-10-25 | 2009-02-26 | Mitsubishi Electric Corporation | Image processing device |
US8301583B2 (en) * | 2008-10-09 | 2012-10-30 | International Business Machines Corporation | Automated data conversion and route tracking in distributed databases |
US10089089B2 (en) | 2015-06-03 | 2018-10-02 | The Mathworks, Inc. | Data type reassignment |
US10296292B2 (en) * | 2016-10-20 | 2019-05-21 | Advanced Micro Devices, Inc. | Dynamic variable precision computation |
US10726514B2 (en) * | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US11150899B2 (en) * | 2018-04-09 | 2021-10-19 | Advanced Micro Devices, Inc. | Selecting a precision level for executing a workload in an electronic device |
-
2019
- 2019-06-03 US US16/429,989 patent/US11120602B2/en active Active
-
2020
- 2020-04-17 WO PCT/US2020/028606 patent/WO2020247073A1/en unknown
- 2020-04-17 JP JP2021571327A patent/JP7451568B2/ja active Active
- 2020-04-17 CN CN202080040930.3A patent/CN113924547A/zh active Pending
- 2020-04-17 EP EP20730775.2A patent/EP3963443B1/en active Active
- 2020-04-17 KR KR1020217041909A patent/KR20220012898A/ko active Search and Examination
Also Published As
Publication number | Publication date |
---|---|
CN113924547A (zh) | 2022-01-11 |
US20200380754A1 (en) | 2020-12-03 |
WO2020247073A1 (en) | 2020-12-10 |
EP3963443B1 (en) | 2024-05-08 |
KR20220012898A (ko) | 2022-02-04 |
US11120602B2 (en) | 2021-09-14 |
EP3963443A1 (en) | 2022-03-09 |
JP7451568B2 (ja) | 2024-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7451568B2 (ja) | コンパイラの精度選定によるシェーダプログラムの加速化 | |
US8745111B2 (en) | Methods and apparatuses for converting floating point representations | |
CN107710150B (zh) | 从包含层次子例程信息的中间代码产生目标代码 | |
US20140306964A1 (en) | Incremental compiling of a declarative program | |
JP6193531B1 (ja) | 融合された乗算−加算演算のエミュレーション | |
US20120284701A1 (en) | Efficient conditional flow control compilation | |
CN106462426A (zh) | 用于图形处理单元的组合计算任务 | |
KR102521184B1 (ko) | 메트릭 학습을 위한 가상의 학습 데이터 생성 방법 및 시스템 | |
Ho et al. | Qtorch+: next generation arithmetic for Pytorch machine learning | |
CN111971655B (zh) | 用于超文本标记语言图形内容的本机运行时技术 | |
US11410036B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
KR20230094696A (ko) | 추천시스템에서의 효율적인 행렬 분해를 위한 양자화 프레임워크 장치 및 학습 방법 | |
US10853042B2 (en) | Interactive code optimizer | |
JP5668557B2 (ja) | 数値丸め方法,数値丸めプログラム,コンピュータおよびコンパイルプログラム | |
US20200004533A1 (en) | High performance expression evaluator unit | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
US20230046448A1 (en) | Method and system for changing structure of deep learning model based on change in input resolution | |
WO2018163304A1 (ja) | ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム | |
EP4058885B1 (en) | Execution of a conditional statement by an arithmetic and/or bitwise unit | |
WO2023102678A1 (en) | Adaptive buffer management to support dynamic tensor shape in deep neural network applications | |
US8782595B1 (en) | Systems and methods for rule based meta-programming of actions for rule based build systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230313 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230313 |
|
TRDD | Decision of grant or rejection written | ||
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240126 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20240206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240306 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7451568 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |