JP7451568B2 - コンパイラの精度選定によるシェーダプログラムの加速化 - Google Patents
コンパイラの精度選定によるシェーダプログラムの加速化 Download PDFInfo
- Publication number
- JP7451568B2 JP7451568B2 JP2021571327A JP2021571327A JP7451568B2 JP 7451568 B2 JP7451568 B2 JP 7451568B2 JP 2021571327 A JP2021571327 A JP 2021571327A JP 2021571327 A JP2021571327 A JP 2021571327A JP 7451568 B2 JP7451568 B2 JP 7451568B2
- Authority
- JP
- Japan
- Prior art keywords
- precision
- accuracy
- loss
- program code
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 claims description 150
- 238000000034 method Methods 0.000 claims description 61
- 230000004044 response Effects 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 19
- 238000004458 analytical method Methods 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 11
- 238000012804 iterative process Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 description 58
- 230000008901 benefit Effects 0.000 description 17
- 230000009467 reduction Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000015556 catabolic process Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000006731 degradation reaction Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000000593 degrading effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 239000000543 intermediate Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 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
- 238000012544 monitoring process Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 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
- 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
- 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/41—Compilation
-
- 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)
Description
精度が低減され得るシェーダプログラム内の命令及び/又は一連のオペレーションを識別すること、及び/又は、識別された命令のセットにおける精度を自動的に低減することによって、グラフィックス処理およびシェーダプログラムのパフォーマンスを改善することができる。
Claims (20)
- シェーダプログラムにおいて半精度のストレージおよび算術をサポートするグラフィックス処理装置(GPU)と、
データおよび命令を保管するためのメモリと、
前記メモリと通信するように構成された少なくとも1つのプロセッサと、
前記メモリおよび前記少なくとも1つのプロセッサと通信するコンパイラと、
を含み、
前記コンパイラは、
前記GPUで使用するシェーダプログラムのためのプログラムコードを受信し、
前記プログラムコードの構造を自動的に分析し、かつ、前記プログラムコードの中の一連のオペレーションを選択するために、半精度をサポートするものとして前記一連のオペレーションを識別する前記分析に応答して、前記プログラムコード上で少なくとも1つのパスを実行して、前記一連のオペレーションによって使用される複数の計算の精度を低下させ、
前記分析は、半精度をサポートするものとして前記一連のオペレーションを識別するために、半精度をサポートする以前に定義されたオペレーションのリストと、精度の低下に敏感な以前に定義されたオペレーションのリストとの組み合わせでハードウェア情報を使用する訓練された探索であり、
前記複数の計算の各計算に対して計算精度を半精度に低下させることについて精度損失のリスクを評価し、
精度損失閾値を下回る前記精度損失のリスクに応答して、前記計算を半精度に書き換えることによって、編集されたプログラムコードを生成し、
前記精度損失閾値を上回る前記精度損失のリスクに応答して、可能性ある精度損失について警告を伴う通知を提供し、かつ、
前記編集されたプログラムコードの精度に対して行われた変更の情報を伴うレポートを生成し、
前記レポートは、精度が低下した、前記編集されたプログラム内の1つ以上の計算を識別し、かつ、前記編集されたプログラムコード内の他の計算について精度を維持するための決定に関する情報を提供する、
ように動作可能である、
コンピュータ装置。 - 前記精度損失閾値は、前記計算が半精度をサポートするか否かを識別する、
請求項1に記載のコンピュータ装置。 - 前記一連のオペレーションは、半精度をサポートするものとして以前に特定されていることに応答して、または、ユーザ入力に応答して選択される、
請求項1に記載のコンピュータ装置。 - 前記精度損失のリスクを評価するために、前記コンパイラによって、前記GPUのハードウェアパラメータが使用される、
請求項1に記載のコンピュータ装置。 - 前記精度損失のリスクは、前記計算が半精度をサポートしない場合に前記精度損失閾値を上回る、
請求項1に記載のコンピュータ装置。 - 前記精度損失のリスクは、前記計算が半精度をサポートする場合に前記精度損失閾値を下回る、
請求項1に記載のコンピュータ装置。 - 前記コンパイラは、さらに、
前記一連のオペレーションの中の前記複数の計算の精度を低下させるか否かを決定する際に反復処理を実行するように動作可能である、
請求項1に記載のコンピュータ装置。 - 前記レポートは、計算の精度に対して行われた変更を識別し、かつ、行われた変更の説明を提供する、
請求項1に記載のコンピュータ装置。 - 前記コンパイラは、さらに、
ディスプレイ上に表示するための出力へと処理するために、前記GPUに対して前記編集されたプログラムコードを提供し、かつ、
前記ディスプレイ上のユーザインターフェイスに前記通知を提供する、
ように動作可能である、
請求項1に記載のコンピュータ装置。 - シェーダプログラムで使用される計算の精度を低下させるための方法であって、
コンピュータ装置におけるコンパイラで、前記シェーダプログラムの半精度のストレージおよび算術をサポートするグラフィックス処理装置(GPU)で使用するシェーダプログラムのためのプログラムコードを受信するステップと、
前記プログラムコードの構造を自動的に分析し、かつ、前記プログラムコードの中の一連のオペレーションを選択するために、半精度をサポートするものとして前記一連のオペレーションを識別する前記分析に応答して、前記プログラムコード上で少なくとも1つのパスを実行するステップであり、前記一連のオペレーションによって使用される複数の計算の精度を低下させ、
前記分析は、半精度をサポートするものとして前記一連のオペレーションを識別するために、半精度をサポートする以前に定義されたオペレーションのリストと、精度の低下に敏感な以前に定義されたオペレーションのリストとの組み合わせでハードウェア情報を使用する訓練された探索である、
ステップと、
前記複数の計算の各計算に対して計算精度を半精度に低下させることについて精度損失のリスクを評価するステップと、
精度損失閾値を下回る前記精度損失のリスクに応答して、前記計算を半精度に書き換えることによって、編集されたプログラムコードを生成するステップと、
前記精度損失閾値を上回る前記精度損失のリスクに応答して、精度損失について警告を伴う通知を提供するステップと、
前記編集されたプログラムコードの精度に対して行われた変更の情報を伴うレポートを生成するステップであり、
前記レポートは、精度が低下した、前記編集されたプログラム内の1つ以上の計算を識別し、かつ、前記編集されたプログラムコード内の他の計算について精度を維持するための決定に関する情報を提供する、
ステップと、
を含む、方法。 - 前記精度損失閾値は、前記計算が半精度をサポートするか否かを識別する、
請求項10に記載の方法。 - 前記一連のオペレーションは、半精度をサポートするものとして以前に特定されていることに応答して、または、ユーザ入力に応答して選択される、
請求項10に記載の方法。 - 前記精度損失のリスクを評価するために、前記コンパイラによって、前記GPUのハードウェアパラメータが使用される、
請求項10に記載の方法。 - 前記精度損失のリスクは、前記計算が半精度をサポートしない場合に前記精度損失閾値を上回る、
請求項10に記載の方法。 - 前記精度損失のリスクは、前記計算が半精度をサポートする場合に前記精度損失閾値を下回る、
請求項10に記載の方法。 - 前記方法は、さらに、
前記一連のオペレーションの中の前記複数の計算の精度を低下させるか否かを決定する際に反復処理を実行するステップ、を含む、
請求項10に記載の方法。 - 前記レポートは、計算の精度に対して行われた変更を識別し、かつ、行われた変更の説明を提供する、
請求項10に記載の方法。 - 前記方法は、さらに、
ユーザの入力に応答して、前記プログラムコードにおける解析のレベルを調整するステップ、を含む、
請求項10に記載の方法。 - 前記方法は、さらに、
ディスプレイ上に表示するための出力へと処理するために、前記GPUに対して前記編集されたプログラムコードを提供するステップと、
前記ディスプレイ上のユーザインターフェイスに前記通知を提供するステップと、
を含む、請求項10に記載の方法。 - コンピュータ装置によって実行可能な命令を保管している非一時的なコンピュータで読取り可能な媒体であって、
シェーダプログラムにおいて半精度のストレージおよび算術をサポートするグラフィックス処理装置(GPU)で使用するシェーダプログラムのためのプログラムコードを受信するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
一連のオペレーションによって使用される複数の計算の精度を低下させるように、前記プログラムコードの構造を自動的に分析し、かつ、前記プログラムコードの中の前記一連のオペレーションを選択するために、半精度をサポートするものとして前記一連のオペレーションを識別する前記分析に応答して、前記プログラムコード上で少なくとも1つのパスを実行するように、前記コンピュータ装置にさせるための少なくとも1つの命令であり、
前記分析は、半精度をサポートするものとして前記一連のオペレーションを識別するために、半精度をサポートする以前に定義されたオペレーションのリストと、精度の低下に敏感な以前に定義されたオペレーションのリストとの組み合わせでハードウェア情報を使用する訓練された探索である、
少なくとも1つの命令と、
前記複数の計算の各計算に対して計算精度を半精度に低下させることについて精度損失のリスクを評価するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
精度損失閾値を下回る前記精度損失のリスクに応答して、前記計算を半精度に書き換えることによって、編集されたプログラムコードを生成するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
前記精度損失閾値を上回る前記精度損失のリスクに応答して、精度損失について警告を伴う通知を提供するように、前記コンピュータ装置にさせるための少なくとも1つの命令と、
前記編集されたプログラムコードの精度に対して行われた変更の情報を伴うレポートを生成するように、前記コンピュータ装置にさせるための少なくとも1つの命令であり、
前記レポートは、精度が低下した、前記編集されたプログラム内の1つ以上の計算を識別し、かつ、前記編集されたプログラムコード内の他の計算について精度を維持するための決定に関する情報を提供する、
少なくとも1つの命令と、
を含む、コンピュータで読取り可能な媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/429,989 US11120602B2 (en) | 2019-06-03 | 2019-06-03 | Acceleration of shader programs by compiler precision selection |
US16/429,989 | 2019-06-03 | ||
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 JP2022535013A (ja) | 2022-08-04 |
JPWO2020247073A5 JPWO2020247073A5 (ja) | 2023-03-22 |
JP7451568B2 true 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 |
---|---|---|---|---|
US11127185B1 (en) * | 2020-07-24 | 2021-09-21 | Weta Digital Limited | Manipulating code for 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 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007049610A1 (ja) | 2005-10-25 | 2007-05-03 | Mitsubishi Electric Corporation | 画像処理装置 |
US20160357534A1 (en) | 2015-06-03 | 2016-12-08 | The Mathworks, Inc. | Data type reassignment |
US20180315157A1 (en) | 2017-04-28 | 2018-11-01 | Intel Corporation | Compute optimizations for low precision machine learning operations |
Family Cites Families (5)
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 |
US8301583B2 (en) * | 2008-10-09 | 2012-10-30 | International Business Machines Corporation | Automated data conversion and route tracking in distributed databases |
US10296292B2 (en) * | 2016-10-20 | 2019-05-21 | Advanced Micro Devices, Inc. | Dynamic variable precision computation |
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 EP EP20730775.2A patent/EP3963443B1/en active Active
- 2020-04-17 JP JP2021571327A patent/JP7451568B2/ja active Active
- 2020-04-17 CN CN202080040930.3A patent/CN113924547A/zh active Pending
- 2020-04-17 KR KR1020217041909A patent/KR20220012898A/ko active Search and Examination
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007049610A1 (ja) | 2005-10-25 | 2007-05-03 | Mitsubishi Electric Corporation | 画像処理装置 |
US20160357534A1 (en) | 2015-06-03 | 2016-12-08 | The Mathworks, Inc. | Data type reassignment |
US20180315157A1 (en) | 2017-04-28 | 2018-11-01 | Intel Corporation | Compute optimizations for low precision machine learning operations |
Also Published As
Publication number | Publication date |
---|---|
WO2020247073A1 (en) | 2020-12-10 |
EP3963443B1 (en) | 2024-05-08 |
EP3963443A1 (en) | 2022-03-09 |
US20200380754A1 (en) | 2020-12-03 |
JP2022535013A (ja) | 2022-08-04 |
US11120602B2 (en) | 2021-09-14 |
KR20220012898A (ko) | 2022-02-04 |
CN113924547A (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7451568B2 (ja) | コンパイラの精度選定によるシェーダプログラムの加速化 | |
US8745111B2 (en) | Methods and apparatuses for converting floating point representations | |
US11868759B2 (en) | Shader source code performance prediction | |
US20120284701A1 (en) | Efficient conditional flow control compilation | |
US20100037039A1 (en) | Instruction operation code generation system | |
Said et al. | Arbitrary reduced precision for fine-grained accuracy and energy trade-offs | |
US10620980B2 (en) | Techniques for native runtime of hypertext markup language graphics content | |
US11410036B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
US10853042B2 (en) | Interactive code optimizer | |
WO2018163304A1 (ja) | ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム | |
KR20230094696A (ko) | 추천시스템에서의 효율적인 행렬 분해를 위한 양자화 프레임워크 장치 및 학습 방법 | |
US10949209B2 (en) | Techniques for scheduling instructions in compiling source code | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
JP5668557B2 (ja) | 数値丸め方法,数値丸めプログラム,コンピュータおよびコンパイルプログラム | |
US20200004533A1 (en) | High performance expression evaluator unit | |
US11487506B2 (en) | Condition code anticipator for hexadecimal floating point | |
WO2018150588A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
US20230168873A1 (en) | Scheduling apparatus, training apparatus, scheduler and generation method | |
US20230073063A1 (en) | Partial data type promotion to exploit efficient vectorization in microprocessors | |
KR20240102915A (ko) | 부동소수점 연산 방법 및 연산 장치 | |
JP2015007820A (ja) | 情報処理装置、情報処理方法及びプログラム | |
KR20240060268A (ko) | 데이터의 레이블링을 자동적으로 처리하기 위한 방법, 이를 수행하는 서비스서버 및 컴퓨터-판독가능 매체 |
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 |