JP6329274B2 - コンパイラ最適化のためのメモリ参照メタデータ - Google Patents
コンパイラ最適化のためのメモリ参照メタデータ Download PDFInfo
- Publication number
- JP6329274B2 JP6329274B2 JP2016559414A JP2016559414A JP6329274B2 JP 6329274 B2 JP6329274 B2 JP 6329274B2 JP 2016559414 A JP2016559414 A JP 2016559414A JP 2016559414 A JP2016559414 A JP 2016559414A JP 6329274 B2 JP6329274 B2 JP 6329274B2
- Authority
- JP
- Japan
- Prior art keywords
- kernel
- memory
- memory reference
- processor
- compiling
- 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.)
- Expired - Fee Related
Links
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
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
-
- 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
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
16 CPU
19 ドライバ/ランタイム
20 カーネル
22 シェーダコア
26 引数
48 キャッシュ
80 コードセクション
82 ライン
86 ループ
100 バッファ
130 バッファ
140 コードセクション
142 ライン
144 ライン
160 コード
166 ライン
168 ライン
180 コードセクション
Claims (30)
- カーネルを実行できるようにコンパイルする方法であって、
コンパイリングプロセッサ上で実行されるコンパイラによって、カーネルをコンパイルするステップと、
前記コンパイリングプロセッサ上で実行される前記コンパイラとドライバとからなるグループのうちの少なくとも一方によって、前記コンパイルされたカーネルのコードを実行するためのカーネル引数を生成するステップと、
前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記カーネル引数の第1のメモリ領域に対する第1のメモリ参照と前記カーネル引数の第2のメモリ領域に対する第2のメモリ参照とが同じメモリ領域を参照しているかどうかを判定するステップと、
前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記判定に基づいて前記第1のメモリ参照および前記第2のメモリ参照に関連するメタデータを生成するステップであって、前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の関係を示す、ステップと、
前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を対象としていないと判定したことに応答して、
前記コンパイリングプロセッサ上で実行される前記コンパイラによって、前記メタデータに基づいて前記カーネルを再コンパイルするステップと、
前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、ターゲットプロセッサに、前記再コンパイルされたカーネルを実行するよう命令するステップと
を含む、方法。 - 前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定するステップは、前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのループコードセクションを判定するステップをさらに含み、
前記カーネルを再コンパイルするステップは、前記メタデータに基づいて前記ループコードセクションをアンローリングするステップと、前記アンローリングされたループコードセクションをコンパイルするステップとを含む、
請求項1に記載の方法。 - 前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定するステップは、前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのコードセクションを判定するステップをさらに含み、
前記カーネルを再コンパイルするステップは、前記コードセクションの前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、前記メタデータに基づいて前記コードセクションのロード演算およびストア演算のうちの少なくとも一方を並べ替えるステップをさらに含む、
請求項1に記載の方法。 - 前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定するステップは、前記コンパイリングプロセッサ上で実行される前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのコードセクションを判定するステップをさらに含み、
前記カーネルを再コンパイルするステップは、前記コードセクションの前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、前記メタデータに基づいて前記コードセクションの複数のスカラー命令を少なくとも1つのベクトル命令へとベクトル化するステップをさらに含む、
請求項1に記載の方法。 - 前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の重複領域をさらに示す、請求項1に記載の方法。
- 前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の重複のバイト数を含む、請求項5に記載の方法。
- 前記メタデータは、前記メモリ重複領域の開始アドレスおよび前記メモリ重複領域の終了アドレスのうちの少なくとも一方を含む、請求項5に記載の方法。
- 前記コンパイリングプロセッサは中央演算処理ユニット(CPU)を備え、前記ターゲットプロセッサはグラフィックス処理ユニット(GPU)を備える、請求項1に記載の方法。
- 前記コンパイラは、異種コンピューティングフレームワークを使用して前記カーネルを再コンパイルする、請求項1に記載の方法。
- 前記カーネル引数は、前記引数用に割り振られたメモリのバッファ領域を含む、請求項1に記載の方法。
- メモリと、
コンパイリングプロセッサであって、
前記コンパイリングプロセッサのコンパイラによって、カーネルをコンパイルすることと、
前記コンパイリングプロセッサの前記コンパイラとドライバとからなるグループのうちの少なくとも一方によって、前記コンパイルされたカーネルのコードを実行するためのカーネル引数を生成することと、
前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記カーネル引数の第1のメモリ領域に対する第1のメモリ参照と前記カーネル引数の第2のメモリ領域に対する第2のメモリ参照とが同じメモリ領域を参照しているかどうかを判定することと、
前記コンパイリングプロセッサのコンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記判定に基づいて前記第1のメモリ参照および前記第2のメモリ参照に関連するメタデータを生成することであって、前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の関係を示す、生成することと、
前記コンパイリングプロセッサのコンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、
前記コンパイリングプロセッサの前記コンパイラによって、前記メタデータに基づいて前記カーネルを再コンパイルすることと、
前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、ターゲットプロセッサに、前記再コンパイルされたカーネルを実行するよう命令することと
を行うように構成される、コンパイリングプロセッサと
を備える、デバイス。 - 前記コンパイリングプロセッサは、前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定するために、前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのループコードセクションを判定するようにさらに構成され、
前記コンパイリングプロセッサは、前記カーネルを再コンパイルするために、前記メタデータに基づいて前記ループコードセクションをアンローリングし、かつ前記アンローリングされたループコードセクションをコンパイルするようにさらに構成される、
請求項11に記載のデバイス。 - 前記コンパイリングプロセッサは、前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定するために、前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのコードセクションを判定するようにさらに構成され、
前記コンパイリングプロセッサは、前記カーネルを再コンパイルするために、前記コードセクションの前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、前記メタデータに基づいて前記コードセクションのロード演算およびストア演算のうちの少なくとも一方を並べ替えるようにさらに構成される、
請求項11に記載のデバイス。 - 前記コンパイリングプロセッサは、前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定するために、前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのコードセクションを判定するようにさらに構成され、
前記コンパイリングプロセッサは、前記カーネルを再コンパイルするために、前記コードセクションの前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、前記メタデータに基づいて前記コードセクションの複数のスカラー命令を少なくとも1つのベクトル命令へとベクトル化するようにさらに構成される、
請求項11に記載のデバイス。 - 前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の重複領域を示す、請求項11に記載のデバイス。
- 前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の重複のバイト数を含む、請求項15に記載のデバイス。
- 前記メタデータは、前記メモリ重複領域の開始アドレスおよび前記メモリ重複領域の終了アドレスのうちの少なくとも一方を含む、請求項15に記載のデバイス。
- 前記コンパイリングプロセッサは中央演算処理ユニット(CPU)を備え、前記ターゲットプロセッサはグラフィックス処理ユニット(GPU)を備える、請求項11に記載のデバイス。
- 前記コンパイラは、異種コンピューティングフレームワークを使用して前記カーネルを再コンパイルする、請求項11に記載のデバイス。
- 前記カーネル引数は、前記引数用に割り振られたメモリのバッファ領域を含む、請求項11に記載のデバイス。
- 記憶された命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、実行されたときに、コンパイリングプロセッサに、
前記コンパイリングプロセッサのコンパイラによって、カーネルをコンパイルすることと、
前記コンパイリングプロセッサの前記コンパイラとドライバとからなるグループのうちの少なくとも一方によって、前記コンパイルされたカーネルのコードを実行するためのカーネル引数を生成することと、
前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記カーネル引数の第1のメモリ領域に対する第1のメモリ参照と前記カーネル引数の第2のメモリ領域に対する第2のメモリ参照とが同じメモリ領域を参照しているかどうかを判定することと、
前記コンパイリングプロセッサのコンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記判定に基づいて前記第1のメモリ参照および前記第2のメモリ参照に関連するメタデータを生成することであって、前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の関係を示す、生成することと、
前記コンパイリングプロセッサのコンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記カーネル引数の前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、
前記コンパイリングプロセッサの前記コンパイラによって、前記メタデータに基づいて前記カーネルを再コンパイルすることと、
前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、ターゲットプロセッサに、前記再コンパイルされたカーネルを実行するよう命令することと
を行わせる、非一時的コンピュータ可読記憶媒体。 - 前記コンパイリングプロセッサに、前記カーネル引数の前記第1のメモリ参照と前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定させる前記命令は、実行されたときに、前記コンパイリングプロセッサに、前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのループコードセクションを判定させる命令をさらに含み、
前記コンパイリングプロセッサに、前記カーネルを再コンパイルさせる前記命令は、実行されたときに、前記コンパイリングプロセッサに、前記メタデータに基づいて前記ループコードをアンローリングさせ、かつ前記アンローリングされたループコードセクションをコンパイルさせる命令をさらに含む、
請求項21に記載の非一時的コンピュータ可読記憶媒体。 - 前記コンパイリングプロセッサに、前記カーネル引数の前記第1のメモリ参照と前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定させる命令は、実行されたときに、前記コンパイリングプロセッサに、前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのコードセクションを判定させる命令をさらに含み、
前記コンパイリングプロセッサに、前記カーネルを再コンパイルさせる前記命令は、実行されたときに、前記コンパイリングプロセッサに、前記コードセクションの前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、前記メタデータに基づいて前記コードセクションのロード演算およびストア演算のうちの少なくとも一方を並べ替えさせる命令をさらに含む、
請求項21に記載の非一時的コンピュータ可読記憶媒体。 - 前記コンパイリングプロセッサに、前記カーネル引数の前記第1のメモリ参照と前記第2のメモリ参照が前記同じメモリ領域を参照しているかどうかを判定させる前記命令は、実行されたときに、前記コンパイリングプロセッサに、前記コンパイリングプロセッサの前記コンパイラと前記ドライバとからなる前記グループのうちの前記少なくとも一方によって、前記第1のメモリ参照および前記第2のメモリ参照を含む前記カーネルのコードセクションを判定させる命令をさらに含み、
前記コンパイリングプロセッサに、前記カーネルを再コンパイルさせる前記命令は、実行されたときに、前記コンパイリングプロセッサに、前記コードセクションの前記第1のメモリ参照および前記第2のメモリ参照が前記同じメモリ領域を参照していないと判定したことに応答して、前記メタデータに基づいて前記コードセクションの複数のスカラー命令を少なくとも1つのベクトル命令へとベクトル化させる命令をさらに含む、
請求項21に記載の非一時的コンピュータ可読記憶媒体。 - 前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の重複領域を示す、請求項21に記載の非一時的コンピュータ可読記憶媒体。
- 前記メタデータは、前記第1のメモリ領域と前記第2のメモリ領域との間の重複のバイト数を含む、請求項25に記載の非一時的コンピュータ可読記憶媒体。
- 前記メタデータは、前記メモリ重複領域の開始アドレスおよび前記メモリ重複領域の終了アドレスのうちの少なくとも一方を含む、請求項25に記載の非一時的コンピュータ可読記憶媒体。
- 前記コンパイリングプロセッサは中央演算処理ユニット(CPU)を備え、前記ターゲットプロセッサはグラフィックス処理ユニット(GPU)を備える、請求項21に記載の非一時的コンピュータ可読記憶媒体。
- 前記コンパイラは、異種コンピューティングフレームワークを使用して前記カーネルを再コンパイルする、請求項21に記載の非一時的コンピュータ可読記憶媒体。
- 前記カーネル引数は、前記引数用に割り振られたメモリのバッファ領域を含む、請求項21に記載の非一時的コンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/245,946 | 2014-04-04 | ||
US14/245,946 US9710245B2 (en) | 2014-04-04 | 2014-04-04 | Memory reference metadata for compiler optimization |
PCT/US2015/021585 WO2015153143A1 (en) | 2014-04-04 | 2015-03-19 | Memory reference metadata for compiler optimization |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2017509999A JP2017509999A (ja) | 2017-04-06 |
JP2017509999A5 JP2017509999A5 (ja) | 2017-10-26 |
JP6329274B2 true JP6329274B2 (ja) | 2018-05-23 |
Family
ID=52829334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016559414A Expired - Fee Related JP6329274B2 (ja) | 2014-04-04 | 2015-03-19 | コンパイラ最適化のためのメモリ参照メタデータ |
Country Status (6)
Country | Link |
---|---|
US (1) | US9710245B2 (ja) |
EP (1) | EP3132347A1 (ja) |
JP (1) | JP6329274B2 (ja) |
KR (1) | KR101832656B1 (ja) |
CN (1) | CN106164862A (ja) |
WO (1) | WO2015153143A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9009686B2 (en) * | 2011-11-07 | 2015-04-14 | Nvidia Corporation | Algorithm for 64-bit address mode optimization |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9785413B2 (en) | 2015-03-06 | 2017-10-10 | Intel Corporation | Methods and apparatus to eliminate partial-redundant vector loads |
US9824419B2 (en) * | 2015-11-20 | 2017-11-21 | International Business Machines Corporation | Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other |
WO2017209876A1 (en) | 2016-05-31 | 2017-12-07 | Brocade Communications Systems, Inc. | Buffer manager |
US9934009B2 (en) | 2016-06-01 | 2018-04-03 | International Business Machines Corporation | Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur |
US10169009B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs |
US10169010B2 (en) | 2016-06-01 | 2019-01-01 | International Business Machines Corporation | Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing |
JP6810380B2 (ja) * | 2016-10-07 | 2021-01-06 | 日本電気株式会社 | ソースプログラム変換システム、ソースプログラム変換方法、及びソースプログラム変換プログラム |
US10108404B2 (en) * | 2016-10-24 | 2018-10-23 | International Business Machines Corporation | Compiling optimized entry points for local-use-only function pointers |
CN110121703B (zh) * | 2016-12-28 | 2023-08-01 | 英特尔公司 | 用于向量通信的***和方法 |
US10547491B2 (en) * | 2017-08-28 | 2020-01-28 | Genband Us Llc | Transcoding with a vector processing unit |
US10540194B2 (en) * | 2017-12-21 | 2020-01-21 | International Business Machines Corporation | Runtime GPU/CPU selection |
CN108470072B (zh) * | 2018-03-30 | 2019-07-09 | 迅讯科技(北京)有限公司 | 一种查询编译方法和装置 |
US11367160B2 (en) * | 2018-08-02 | 2022-06-21 | Nvidia Corporation | Simultaneous compute and graphics scheduling |
US10884720B2 (en) * | 2018-10-04 | 2021-01-05 | Microsoft Technology Licensing, Llc | Memory ordering annotations for binary emulation |
CN111340678A (zh) * | 2018-12-19 | 2020-06-26 | 华为技术有限公司 | 一种数据缓存***、图形处理器及数据缓存方法 |
US10884664B2 (en) * | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cell |
US10872057B1 (en) * | 2019-05-23 | 2020-12-22 | Xilinx, Inc. | Partitioning in a compiler flow for a heterogeneous multi-core architecture |
JP7460902B2 (ja) | 2020-06-09 | 2024-04-03 | 富士通株式会社 | コンパイラプログラム、コンパイル方法、情報処理装置 |
JP7164267B2 (ja) * | 2020-12-07 | 2022-11-01 | インテル・コーポレーション | ヘテロジニアスコンピューティングのためのシステム、方法及び装置 |
CN114398011B (zh) * | 2022-01-17 | 2023-09-22 | 安谋科技(中国)有限公司 | 数据存储方法、设备和介质 |
EP4276602A1 (de) * | 2022-05-12 | 2023-11-15 | Siemens Aktiengesellschaft | System mit quellcodeumwandler-spezifizierten speicherbereichen |
US20240095024A1 (en) * | 2022-06-09 | 2024-03-21 | Nvidia Corporation | Program code versions |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040205740A1 (en) | 2001-03-29 | 2004-10-14 | Lavery Daniel M. | Method for collection of memory reference information and memory disambiguation |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
CA2372034A1 (en) | 2002-02-14 | 2003-08-14 | Cloakware Corporation | Foiling buffer-overflow and alien-code attacks by encoding |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US7093101B2 (en) * | 2002-11-21 | 2006-08-15 | Microsoft Corporation | Dynamic data structures for tracking file system free space in a flash memory device |
US7565631B1 (en) | 2004-07-02 | 2009-07-21 | Northwestern University | Method and system for translating software binaries and assembly code onto hardware |
US8886887B2 (en) * | 2007-03-15 | 2014-11-11 | International Business Machines Corporation | Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization |
US8413126B2 (en) * | 2007-06-15 | 2013-04-02 | Cray Inc. | Scalar code reduction using shortest path routing |
US20090070753A1 (en) | 2007-09-07 | 2009-03-12 | International Business Machines Corporation | Increase the coverage of profiling feedback with data flow analysis |
US8458671B1 (en) * | 2008-02-12 | 2013-06-04 | Tilera Corporation | Method and system for stack back-tracing in computer programs |
US8356159B2 (en) | 2008-08-15 | 2013-01-15 | Apple Inc. | Break, pre-break, and remaining instructions for processing vectors |
DE112009005006T5 (de) * | 2009-06-26 | 2013-01-10 | Intel Corporation | Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM) |
US8589867B2 (en) * | 2010-06-18 | 2013-11-19 | Microsoft Corporation | Compiler-generated invocation stubs for data parallel programming model |
US8527737B2 (en) * | 2010-06-23 | 2013-09-03 | Apple Inc. | Using addresses to detect overlapping memory regions |
US20120259843A1 (en) * | 2011-04-11 | 2012-10-11 | Timothy Child | Database acceleration using gpu and multicore cpu systems and methods |
US8935683B2 (en) * | 2011-04-20 | 2015-01-13 | Qualcomm Incorporated | Inline function linking |
US8468507B2 (en) | 2011-06-10 | 2013-06-18 | Microsoft Corporation | Binding executable code at runtime |
US8627018B2 (en) * | 2011-11-18 | 2014-01-07 | Microsoft Corporation | Automatic optimization for programming of many-core architectures |
US20130141443A1 (en) * | 2011-12-01 | 2013-06-06 | Michael L. Schmit | Software libraries for heterogeneous parallel processing platforms |
US9256915B2 (en) * | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
US9734333B2 (en) * | 2012-04-17 | 2017-08-15 | Heat Software Usa Inc. | Information security techniques including detection, interdiction and/or mitigation of memory injection attacks |
CN103116513B (zh) * | 2012-07-13 | 2016-03-23 | 北京时代民芯科技有限公司 | 一种异构多核处理器编译器 |
-
2014
- 2014-04-04 US US14/245,946 patent/US9710245B2/en not_active Expired - Fee Related
-
2015
- 2015-03-19 CN CN201580016245.6A patent/CN106164862A/zh active Pending
- 2015-03-19 KR KR1020167028388A patent/KR101832656B1/ko active IP Right Grant
- 2015-03-19 EP EP15716222.3A patent/EP3132347A1/en not_active Withdrawn
- 2015-03-19 JP JP2016559414A patent/JP6329274B2/ja not_active Expired - Fee Related
- 2015-03-19 WO PCT/US2015/021585 patent/WO2015153143A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR101832656B1 (ko) | 2018-02-26 |
US9710245B2 (en) | 2017-07-18 |
JP2017509999A (ja) | 2017-04-06 |
US20150286472A1 (en) | 2015-10-08 |
WO2015153143A1 (en) | 2015-10-08 |
KR20160141753A (ko) | 2016-12-09 |
EP3132347A1 (en) | 2017-02-22 |
CN106164862A (zh) | 2016-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6329274B2 (ja) | コンパイラ最適化のためのメモリ参照メタデータ | |
EP3126971B1 (en) | Program execution on heterogeneous platform | |
JP6411477B2 (ja) | Gpu発散バリア | |
US9354944B2 (en) | Mapping processing logic having data-parallel threads across processors | |
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
US9323508B2 (en) | Method and system for compiler optimization | |
US8561045B2 (en) | Constructing runtime state for inlined code | |
US10152312B2 (en) | Dynamic compiler parallelism techniques | |
US20150150019A1 (en) | Scheduling computing tasks for multi-processor systems | |
JP6017586B2 (ja) | グラフィックス処理ユニットのための関連するテクスチャロード命令を有する制御フロー命令のプレディケーション | |
Mikushin et al. | KernelGen--The Design and Implementation of a Next Generation Compiler Platform for Accelerating Numerical Models on GPUs | |
Membarth et al. | Code generation for embedded heterogeneous architectures on Android | |
Lee et al. | OpenCL performance evaluation on modern multicore CPUs | |
CN114895965A (zh) | 实现工作负载的静态映射的乱序流水线执行的方法和装置 | |
US20160350088A1 (en) | Fusing a sequence of operations through subdividing | |
US10496433B2 (en) | Modification of context saving functions | |
Trompouki et al. | Optimisation opportunities and evaluation for GPGPU applications on low-end mobile GPUs | |
US20180088948A1 (en) | Efficient vectorization techniques for operands in non-sequential memory locations | |
Haidl et al. | High-level programming for many-cores using C++ 14 and the STL | |
US10996960B1 (en) | Iterating single instruction, multiple-data (SIMD) instructions | |
Guide | Cuda c++ best practices guide | |
Chiu et al. | CLPKM: A checkpoint-based preemptive multitasking framework for OpenCL kernels | |
Guide | Cuda c best practices guide | |
Crisci et al. | SYCL-Bench 2020: Benchmarking SYCL 2020 on AMD, Intel, and NVIDIA GPUs | |
Hanlon | Final Year Project Report |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161005 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170914 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170914 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20170914 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20170915 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171120 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180216 |
|
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: 20180326 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180419 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6329274 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |