JP7035751B2 - コード変換装置、コード変換方法、及びコード変換プログラム - Google Patents
コード変換装置、コード変換方法、及びコード変換プログラム Download PDFInfo
- Publication number
- JP7035751B2 JP7035751B2 JP2018077108A JP2018077108A JP7035751B2 JP 7035751 B2 JP7035751 B2 JP 7035751B2 JP 2018077108 A JP2018077108 A JP 2018077108A JP 2018077108 A JP2018077108 A JP 2018077108A JP 7035751 B2 JP7035751 B2 JP 7035751B2
- Authority
- JP
- Japan
- Prior art keywords
- array
- data
- code
- arrays
- instruction
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Devices For Executing Special Programs (AREA)
Description
図1は、FORTRANで記述されたSOA形式のデータに対する演算のSIMD展開の例を示している。図1(a)は、1次元の配列A、配列B、及び配列Cに対するSOA形式のデータ定義の例を示している。各配列の要素は、倍精度実数であり、各配列の要素数は、n(nは2以上の整数)である。
M2:ソースコード621に記述された制御文に基づく変換候補の抽出
M3:プロファイル情報に基づく変換候補の抽出
-KAos(A,B):ユーザが明示的に指定した配列名を有する配列を、変換候補として抽出するコンパイラオプション
配列名:配列の名称(添え字を含まない)
次元数:配列の次元数
出現回数:ループ内における配列の記述回数
p次元(p=1~P):配列のp番目の添え字(定数を含む)
グループ番号:同じ添え字を有する配列のグループを示す識別情報
{AA(i,j),BB(i,j)}
{CC(x,y),DD(x,y)}
{α(W(i))),β(W(i))}
E(Q)=(C(Q)/S)*w1+(M(Q)/G(Q))*w2 (1)
A(i),B(i),AA(i,j),BB(i,j),AA(i+1,j),
AA(x,z),BB(i+2,j),BB(z,c),CC(x,y),
A(i+2),AA(i,j),DD(x,y),α(W(i)),β(W(i))
G(A)=2:配列Aと同じグループ番号“1”を有する配列の総数は、A(i)及びB(i)の2個である。
M(A)=1:グループ番号“1”が示すグループ内における配列Aの出現回数は、A(i)の1回である。
E(A)=(2/14)*1+(1/2)*2=1.14 (2)
属性1::A
属性2::B
end type struct
type(struct)::St(n)
この例では、配列名Stを有する構造体配列が定義されている。構造体配列Stの要素数nは、配列A及び配列Bの要素数と同じである。
A()→St()%A
B()→St()%B
A(i),A(i+2),B(i),α(W(i)),β(W(i))
2次元の変数:
AA(i,j),AA(i+1,j),AA(x,z),BB(i,j),
BB(i+2,j),BB(z,c),CC(x,y),DD(x,y)
{AA(i,j),BB(i,j)}
{CC(x,y),DD(x,y)}
{α(W(i))),β(W(i))}
グループ番号“2”:{AA(i,j),BB(i,j)}
グループ番号“3”:{CC(x,y),DD(x,y)}
グループ番号“4”:{α(W(i))),β(W(i))}
(付記1)
複数の配列のデータ定義と、前記複数の配列に対する所定の演算と、前記所定の演算の演算結果を表す配列のデータ定義とを含む、第1コードを記憶する記憶部と、
前記第1コードに含まれる前記複数の配列のデータ定義と前記演算結果を表す配列のデータ定義とを、構造体配列のデータ定義に変換し、前記第1コードに含まれる前記所定の演算を、前記構造体配列に対する演算に変換する変換部と、
前記複数の配列各々の異なるデータに対して、前記構造体配列に対する演算を並列に実行する所定の命令を含む、第2コードを生成する生成部と、
を備えることを特徴とするコード変換装置。
(付記2)
前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、各構造体配列のデータに含まれる前記複数の配列のデータを、前記複数のレジスタにそれぞれ書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出して、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置に書き込む命令と、
をさらに含むことを特徴とする付記1記載のコード変換装置。
(付記3)
前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、第1レジスタに連続して書き込む命令と、
前記第1レジスタから、各構造体配列のデータに含まれる同じ配列のデータの位置を指定して、指定した位置のデータを読み出し、前記複数のレジスタのうち同じレジスタに連続して書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出し、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置を指定して、前記所定のレジスタから読み出したデータを前記メモリの指定した位置に書き込む命令と、
をさらに含むことを特徴とする付記1記載のコード変換装置。
(付記4)
前記変換部は、データ定義の変換を示すコンパイラオプションに従って、前記第1コードに含まれる配列の中から、前記複数の配列と前記演算結果を表す配列とを選択することを特徴とする付記1乃至3のいずれか1項に記載のコード変換装置。
(付記5)
前記第1コードは、前記複数の配列と前記演算結果を表す配列とを指定する制御文を含み、
前記変換部は、前記制御文に従って、前記第1コードに含まれる配列の中から、前記複数の配列と前記演算結果を表す配列とを選択することを特徴とする付記1乃至3のいずれか1項に記載のコード変換装置。
(付記6)
前記変換部は、前記第1コードに含まれる配列のアクセス頻度を示すプロファイル情報を用いて、前記第1コードに含まれる配列の中から、前記複数の配列と前記演算結果を表す配列とを選択することを特徴とする付記1乃至3のいずれか1項に記載のコード変換装置。
(付記7)
前記変換部は、前記第1コードに含まれるループ内における各配列の出現回数、又は前記ループ内で同じ添え字を有する配列のグループにおける各配列の出現回数のうち、少なくとも一方に基づいて、前記ループに含まれる配列の中から前記複数の配列を選択することを特徴とする付記1乃至6のいずれか1項に記載のコード変換装置。
(付記8)
前記第1コードに含まれる複数の配列のデータ定義は、配列構造体のデータ定義であることを特徴とする付記1乃至7のいずれか1項に記載のコード変換装置。
(付記9)
複数の配列のデータ定義と、前記複数の配列に対する所定の演算と、前記所定の演算の演算結果を表す配列のデータ定義とを含む、第1コードを記憶する記憶部を有するコンピュータが、
前記第1コードに含まれる前記複数の配列のデータ定義と前記演算結果を表す配列のデータ定義とを、構造体配列のデータ定義に変換し、
前記第1コードに含まれる前記所定の演算を、前記構造体配列に対する演算に変換し、
前記複数の配列各々の異なるデータに対して、前記構造体配列に対する演算を並列に実行する所定の命令を含む、第2コードを生成することを特徴とするコード変換方法。
(付記10)
前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、各構造体配列のデータに含まれる前記複数の配列のデータを、前記複数のレジスタにそれぞれ書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出して、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置に書き込む命令と、
をさらに含むことを特徴とする付記9記載のコード変換方法。
(付記11)
前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、第1レジスタに連続して書き込む命令と、
前記第1レジスタから、各構造体配列のデータに含まれる同じ配列のデータの位置を指定して、指定した位置のデータを読み出し、前記複数のレジスタのうち同じレジスタに連続して書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出し、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置を指定して、前記所定のレジスタから読み出したデータを前記メモリの指定した位置に書き込む命令と、
をさらに含むことを特徴とする付記9記載のコード変換方法。
(付記12)
複数の配列のデータ定義と、前記複数の配列に対する所定の演算と、前記所定の演算の演算結果を表す配列のデータ定義とを含む、第1コードを記憶する記憶部を有するコンピュータに、
前記第1コードに含まれる前記複数の配列のデータ定義と前記演算結果を表す配列のデータ定義とを、構造体配列のデータ定義に変換させ、
前記第1コードに含まれる前記所定の演算を、前記構造体配列に対する演算に変換させ、
前記複数の配列各々の異なるデータに対して、前記構造体配列に対する演算を並列に実行する所定の命令を含む、第2コードを生成させることを特徴とするコード変換プログラム。
(付記13)
前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、各構造体配列のデータに含まれる前記複数の配列のデータを、前記複数のレジスタにそれぞれ書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出して、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置に書き込む命令と、
をさらに含むことを特徴とする付記12記載のコード変換プログラム。
(付記14)
前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、第1レジスタに連続して書き込む命令と、
前記第1レジスタから、各構造体配列のデータに含まれる同じ配列のデータの位置を指定して、指定した位置のデータを読み出し、前記複数のレジスタのうち同じレジスタに連続して書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出し、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置を指定して、前記所定のレジスタから読み出したデータを前記メモリの指定した位置に書き込む命令と、
をさらに含むことを特徴とする付記12記載のコード変換プログラム。
401 コード変換装置
411 記憶部
412 変換部
413 生成部
611 解析部
621 ソースコード
622 評価関数
623 ループ管理テーブル
624 評価値テーブル
625 中間コード
626 機械語コード
701、801、1701 メモリ
1201 プロファイル情報
2501 CPU
2502 メモリ
2503 入力装置
2504 出力装置
2505 補助記憶装置
2506 媒体駆動装置
2507 ネットワーク接続装置
2508 バス
2509 可搬型記録媒体
Claims (10)
- 複数の配列のデータ定義と、前記複数の配列に対する所定の演算と、前記所定の演算の演算結果を表す配列のデータ定義とを含む、第1コードを記憶する記憶部と、
前記第1コードに含まれる前記複数の配列のデータ定義と前記演算結果を表す配列のデータ定義とを、構造体配列のデータ定義に変換し、前記第1コードに含まれる前記所定の演算を、前記構造体配列に対する演算に変換する変換部と、
前記複数の配列各々の異なるデータに対して、前記構造体配列に対する演算を並列に実行する所定の命令を含む、第2コードを生成する生成部と、
を備えることを特徴とするコード変換装置。 - 前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、各構造体配列のデータに含まれる前記複数の配列のデータを、前記複数のレジスタにそれぞれ書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出して、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置に書き込む命令と、
をさらに含むことを特徴とする請求項1記載のコード変換装置。 - 前記所定の命令は、複数のレジスタそれぞれに格納された配列のデータに対して、前記構造体配列に対する演算を実行し、演算結果を表す配列のデータを所定のレジスタに書き込む命令であり、
前記第2コードは、
メモリに連続して格納された複数の構造体配列のデータを読み出して、第1レジスタに連続して書き込む命令と、
前記第1レジスタから、各構造体配列のデータに含まれる同じ配列のデータの位置を指定して、指定した位置のデータを読み出し、前記複数のレジスタのうち同じレジスタに連続して書き込む命令と、
前記所定のレジスタから前記演算結果を表す配列のデータを読み出し、前記メモリに格納された各構造体配列のデータに含まれる、前記演算結果を表す配列のデータの位置を指定して、前記所定のレジスタから読み出したデータを前記メモリの指定した位置に書き込む命令と、
をさらに含むことを特徴とする請求項1記載のコード変換装置。 - 前記変換部は、データ定義の変換を示すコンパイラオプションに従って、前記第1コードに含まれる配列の中から、前記複数の配列と前記演算結果を表す配列とを選択することを特徴とする請求項1乃至3のいずれか1項に記載のコード変換装置。
- 前記第1コードは、前記複数の配列と前記演算結果を表す配列とを指定する制御文を含み、
前記変換部は、前記制御文に従って、前記第1コードに含まれる配列の中から、前記複数の配列と前記演算結果を表す配列とを選択することを特徴とする請求項1乃至3のいずれか1項に記載のコード変換装置。 - 前記変換部は、前記第1コードに含まれる配列のアクセス頻度を示すプロファイル情報を用いて、前記第1コードに含まれる配列の中から、前記複数の配列と前記演算結果を表す配列とを選択することを特徴とする請求項1乃至3のいずれか1項に記載のコード変換装置。
- 前記変換部は、前記第1コードに含まれるループ内における各配列の出現回数、又は前記ループ内で同じ添え字を有する配列のグループにおける各配列の出現回数のうち、少なくとも一方に基づいて、前記ループに含まれる配列の中から前記複数の配列を選択することを特徴とする請求項1乃至6のいずれか1項に記載のコード変換装置。
- 前記第1コードに含まれる複数の配列のデータ定義は、配列構造体のデータ定義であることを特徴とする請求項1乃至7のいずれか1項に記載のコード変換装置。
- 複数の配列のデータ定義と、前記複数の配列に対する所定の演算と、前記所定の演算の演算結果を表す配列のデータ定義とを含む、第1コードを記憶する記憶部を有するコンピュータが、
前記第1コードに含まれる前記複数の配列のデータ定義と前記演算結果を表す配列のデータ定義とを、構造体配列のデータ定義に変換し、
前記第1コードに含まれる前記所定の演算を、前記構造体配列に対する演算に変換し、
前記複数の配列各々の異なるデータに対して、前記構造体配列に対する演算を並列に実行する所定の命令を含む、第2コードを生成することを特徴とするコード変換方法。 - 複数の配列のデータ定義と、前記複数の配列に対する所定の演算と、前記所定の演算の演算結果を表す配列のデータ定義とを含む、第1コードを記憶する記憶部を有するコンピュータに、
前記第1コードに含まれる前記複数の配列のデータ定義と前記演算結果を表す配列のデータ定義とを、構造体配列のデータ定義に変換させ、
前記第1コードに含まれる前記所定の演算を、前記構造体配列に対する演算に変換させ、
前記複数の配列各々の異なるデータに対して、前記構造体配列に対する演算を並列に実行する所定の命令を含む、第2コードを生成させることを特徴とするコード変換プログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2018077108A JP7035751B2 (ja) | 2018-04-12 | 2018-04-12 | コード変換装置、コード変換方法、及びコード変換プログラム |
| US16/376,557 US10908899B2 (en) | 2018-04-12 | 2019-04-05 | Code conversion apparatus and method for improving performance in computer operations |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2018077108A JP7035751B2 (ja) | 2018-04-12 | 2018-04-12 | コード変換装置、コード変換方法、及びコード変換プログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2019185486A JP2019185486A (ja) | 2019-10-24 |
| JP7035751B2 true JP7035751B2 (ja) | 2022-03-15 |
Family
ID=68161579
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2018077108A Active JP7035751B2 (ja) | 2018-04-12 | 2018-04-12 | コード変換装置、コード変換方法、及びコード変換プログラム |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10908899B2 (ja) |
| JP (1) | JP7035751B2 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI884867B (zh) | 2019-10-08 | 2025-05-21 | 日商尼托母斯股份有限公司 | 清掃用片材、清掃用片材之積層體、清掃具以及清掃用片材之製造方法 |
| CN116523053B (zh) * | 2022-01-24 | 2024-09-10 | 腾讯科技(深圳)有限公司 | 量子线路模拟方法、装置、设备、存储介质及程序产品 |
| JP7826823B2 (ja) * | 2022-04-19 | 2026-03-10 | 日本電気株式会社 | 命令生成装置、システム、方法及びプログラム |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005174292A (ja) | 2003-12-09 | 2005-06-30 | Arm Ltd | データシフト操作 |
| US20120089792A1 (en) | 2010-09-29 | 2012-04-12 | Brian Fahs | Efficient implementation of arrays of structures on simt and simd architectures |
| JP2014038624A (ja) | 2012-08-16 | 2014-02-27 | Samsung Electronics Co Ltd | 動的データ構成のための方法及び装置 |
| US20150294435A1 (en) | 2014-04-09 | 2015-10-15 | Intel Corporation | Banked memory access efficiency by a graphics processor |
| JP2015225427A (ja) | 2014-05-27 | 2015-12-14 | ルネサスエレクトロニクス株式会社 | プロセッサ及びデータ収集方法 |
| JP2016081135A (ja) | 2014-10-10 | 2016-05-16 | 富士通株式会社 | 情報処理プログラム、情報処理装置、情報処理方法 |
| US20170177356A1 (en) | 2015-12-18 | 2017-06-22 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Method for Strided Access |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5734921A (en) * | 1990-11-13 | 1998-03-31 | International Business Machines Corporation | Advanced parallel array processor computer package |
| US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
| US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
| US5625836A (en) * | 1990-11-13 | 1997-04-29 | International Business Machines Corporation | SIMD/MIMD processing memory element (PME) |
| US5752067A (en) * | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
| US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
| JPH0675987A (ja) * | 1992-06-22 | 1994-03-18 | Hitachi Ltd | ループ変換方法 |
| JPH0728702A (ja) * | 1993-07-14 | 1995-01-31 | Hitachi Ltd | プログラムの変換方法 |
| JP3261239B2 (ja) * | 1993-07-27 | 2002-02-25 | 富士通株式会社 | データ転送の一括化処理方法 |
| JPH10228382A (ja) * | 1997-02-14 | 1998-08-25 | Nec Corp | コンパイル方式 |
| US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
| US7657861B2 (en) * | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
| US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
| EP1975791A3 (en) * | 2007-03-26 | 2009-01-07 | Interuniversitair Microelektronica Centrum (IMEC) | A method for automated code conversion |
| US9648325B2 (en) * | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
| US8265144B2 (en) * | 2007-06-30 | 2012-09-11 | Microsoft Corporation | Innovations in video decoder implementations |
| US8254455B2 (en) * | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
| US8327344B2 (en) * | 2008-10-14 | 2012-12-04 | International Business Machines Corporation | Array reference safety analysis in the presence of loops with conditional control flow |
| WO2011091323A1 (en) * | 2010-01-21 | 2011-07-28 | Qst Holdings, Llc | A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations |
| JP5966509B2 (ja) | 2012-03-29 | 2016-08-10 | 富士通株式会社 | プログラム、コード生成方法および情報処理装置 |
| US20130339649A1 (en) * | 2012-06-15 | 2013-12-19 | Intel Corporation | Single instruction multiple data (simd) reconfigurable vector register file and permutation unit |
| JP6164054B2 (ja) * | 2013-11-08 | 2017-07-19 | 富士通株式会社 | 情報処理装置、コンパイル方法およびコンパイラプログラム |
| US9501268B2 (en) * | 2013-12-23 | 2016-11-22 | International Business Machines Corporation | Generating SIMD code from code statements that include non-isomorphic code statements |
| US20150243259A1 (en) * | 2014-02-26 | 2015-08-27 | National Tsing Hua University | Method and apparatus for transferring data in a computer |
| US9785423B2 (en) * | 2015-04-23 | 2017-10-10 | Google Inc. | Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure |
| US10095479B2 (en) * | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
| JP2016224812A (ja) * | 2015-06-02 | 2016-12-28 | 富士通株式会社 | 並列計算装置、並列処理方法、並列処理プログラムおよびコンパイルプログラム |
| US20170177355A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instruction and Logic for Permute Sequence |
| US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
| US20170177345A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instruction and Logic for Permute with Out of Order Loading |
| US20180005346A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
| US20180007302A1 (en) * | 2016-07-01 | 2018-01-04 | Google Inc. | Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register |
| US10891131B2 (en) * | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
| US10663633B2 (en) * | 2017-06-29 | 2020-05-26 | Taiwan Semiconductor Manufacturing Co., Ltd. | Aperture design and methods thereof |
| US10275230B2 (en) * | 2017-07-14 | 2019-04-30 | Advanced Micro Devices, Inc. | Cache aware self-referential structure peeling |
| US10678524B2 (en) * | 2018-03-15 | 2020-06-09 | Intel Corporation | Runtime struct fields size reduction |
-
2018
- 2018-04-12 JP JP2018077108A patent/JP7035751B2/ja active Active
-
2019
- 2019-04-05 US US16/376,557 patent/US10908899B2/en active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005174292A (ja) | 2003-12-09 | 2005-06-30 | Arm Ltd | データシフト操作 |
| US20120089792A1 (en) | 2010-09-29 | 2012-04-12 | Brian Fahs | Efficient implementation of arrays of structures on simt and simd architectures |
| JP2014038624A (ja) | 2012-08-16 | 2014-02-27 | Samsung Electronics Co Ltd | 動的データ構成のための方法及び装置 |
| US20150294435A1 (en) | 2014-04-09 | 2015-10-15 | Intel Corporation | Banked memory access efficiency by a graphics processor |
| JP2015225427A (ja) | 2014-05-27 | 2015-12-14 | ルネサスエレクトロニクス株式会社 | プロセッサ及びデータ収集方法 |
| JP2016081135A (ja) | 2014-10-10 | 2016-05-16 | 富士通株式会社 | 情報処理プログラム、情報処理装置、情報処理方法 |
| US20170177356A1 (en) | 2015-12-18 | 2017-06-22 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Method for Strided Access |
Also Published As
| Publication number | Publication date |
|---|---|
| US20190317767A1 (en) | 2019-10-17 |
| US10908899B2 (en) | 2021-02-02 |
| JP2019185486A (ja) | 2019-10-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8146071B2 (en) | Pipelined parallelization of multi-dimensional loops with multiple data dependencies | |
| JP6245031B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
| JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
| JP2009116854A (ja) | スキャン演算を遂行するシステム、方法、及びコンピュータ・プログラムプロダクト | |
| US7818731B2 (en) | Method and system for reducing memory reference overhead associated with treadprivate variables in parallel programs | |
| JP7035751B2 (ja) | コード変換装置、コード変換方法、及びコード変換プログラム | |
| US11656880B2 (en) | Function evaluation using multiple values loaded into registers by a single instruction | |
| US8910135B2 (en) | Structure layout optimizations | |
| US11231917B2 (en) | Information processing apparatus, computer-readable recording medium storing therein compiler program, and compiling method | |
| US11226798B2 (en) | Information processing device and information processing method | |
| JP5278538B2 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
| KR101537725B1 (ko) | 워크 그룹 크기 결정 방법, 시스템 및 컴퓨터 판독가능 기록매체 | |
| US20220405110A1 (en) | Non-transitory computer-readable recording medium and compilation method | |
| US11734003B2 (en) | Non-transitory computer-readable recording medium, compilation method, and compiler device | |
| JP6442967B2 (ja) | 情報処理プログラム、情報処理装置、情報処理方法 | |
| JP6897213B2 (ja) | コード生成装置、コード生成方法及びコード生成プログラム | |
| JP5251688B2 (ja) | コンパイラプログラムおよびコンパイラ装置 | |
| CN114041116A (zh) | 数据移动任务优化的方法和装置 | |
| JP2018124877A (ja) | コード生成装置、コード生成方法、およびコード生成プログラム | |
| CN113031952B (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
| JP3638171B2 (ja) | 資源割付装置 | |
| US20220405204A1 (en) | Computer-readable recording medium storing data placement program, processor, and data placement method | |
| JP3276479B2 (ja) | コンパイル方式 | |
| Diéguez et al. | BPLG–BMCS: GPU-sorting algorithm using a tuning skeleton library | |
| US20230367570A1 (en) | Information processing device and compiler method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210113 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20211216 |
|
| 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: 20220201 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220214 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7035751 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |