JP2019185486A - コード変換装置、コード変換方法、及びコード変換プログラム - Google Patents
コード変換装置、コード変換方法、及びコード変換プログラム Download PDFInfo
- Publication number
- JP2019185486A JP2019185486A JP2018077108A JP2018077108A JP2019185486A JP 2019185486 A JP2019185486 A JP 2019185486A JP 2018077108 A JP2018077108 A JP 2018077108A JP 2018077108 A JP2018077108 A JP 2018077108A JP 2019185486 A JP2019185486 A JP 2019185486A
- 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.)
- Granted
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 177
- 238000000034 method Methods 0.000 title claims description 28
- 238000004364 calculation method Methods 0.000 claims abstract description 30
- 238000003491 array Methods 0.000 claims description 124
- 238000011156 evaluation Methods 0.000 description 51
- 238000012545 processing Methods 0.000 description 50
- 238000000605 extraction Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 239000000284 extract Substances 0.000 description 15
- 238000007792 addition Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 10
- 101100301524 Drosophila melanogaster Reg-5 gene Proteins 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 101100412394 Drosophila melanogaster Reg-2 gene Proteins 0.000 description 5
- 230000010365 information processing Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 1
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- -1 reg4 Proteins 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
-
- 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/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; 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/30101—Special purpose registers
-
- 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]
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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
-
- 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/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)
Abstract
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 true JP2019185486A (ja) | 2019-10-24 |
JP7035751B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021070844A1 (ja) | 2019-10-08 | 2021-04-15 | 株式会社ニトムズ | 清掃用シート、清掃用シートの積層体、清掃具、及び、清掃用シートの製造方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675987A (ja) * | 1992-06-22 | 1994-03-18 | Hitachi Ltd | ループ変換方法 |
JPH0728702A (ja) * | 1993-07-14 | 1995-01-31 | Hitachi Ltd | プログラムの変換方法 |
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 (34)
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 |
US5752067A (en) * | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
US5625836A (en) * | 1990-11-13 | 1997-04-29 | International Business Machines Corporation | SIMD/MIMD processing memory element (PME) |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
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 |
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 |
US8254455B2 (en) * | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
US8265144B2 (en) * | 2007-06-30 | 2012-09-11 | Microsoft Corporation | Innovations in video decoder implementations |
US9648325B2 (en) * | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
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 |
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 |
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 |
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 (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0675987A (ja) * | 1992-06-22 | 1994-03-18 | Hitachi Ltd | ループ変換方法 |
JPH0728702A (ja) * | 1993-07-14 | 1995-01-31 | Hitachi Ltd | プログラムの変換方法 |
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 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021070844A1 (ja) | 2019-10-08 | 2021-04-15 | 株式会社ニトムズ | 清掃用シート、清掃用シートの積層体、清掃具、及び、清掃用シートの製造方法 |
Also Published As
Publication number | Publication date |
---|---|
US10908899B2 (en) | 2021-02-02 |
US20190317767A1 (en) | 2019-10-17 |
JP7035751B2 (ja) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Farcy et al. | Dataflow analysis of branch mispredictions and its application to early resolution of branch outcomes | |
JP6245031B2 (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
US11656880B2 (en) | Function evaluation using multiple values loaded into registers by a single instruction | |
JP2015201119A (ja) | コンパイルプログラム、コンパイル方法およびコンパイル装置 | |
JP2018028777A (ja) | エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム | |
US11226798B2 (en) | Information processing device and information processing method | |
Wang et al. | Design and implementation of a highly efficient dgemm for 64-bit armv8 multi-core processors | |
US11231917B2 (en) | Information processing apparatus, computer-readable recording medium storing therein compiler program, and compiling method | |
JP7035751B2 (ja) | コード変換装置、コード変換方法、及びコード変換プログラム | |
JP5278538B2 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
JP5251688B2 (ja) | コンパイラプログラムおよびコンパイラ装置 | |
JP2018124877A (ja) | コード生成装置、コード生成方法、およびコード生成プログラム | |
JP3638171B2 (ja) | 資源割付装置 | |
CN114041116A (zh) | 数据移动任务优化的方法和装置 | |
US11321094B2 (en) | Non-transitory computer-readable medium, assembly instruction conversion method and information processing apparatus | |
US11734003B2 (en) | Non-transitory computer-readable recording medium, compilation method, and compiler device | |
US20220405110A1 (en) | Non-transitory computer-readable recording medium and compilation method | |
US11740906B2 (en) | Methods and systems for nested stream prefetching for general purpose central processing units | |
Jin et al. | Integer Sum Reduction with OpenMP on an AMD MI100 GPU | |
JP2017041162A (ja) | 最適化装置、方法およびプログラム | |
WO2020116025A1 (ja) | コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体 | |
Cho | A Study on Efficient Use of Dual Data Memory Banks in Flight Control Computers | |
JP2019128760A (ja) | コンパイラプログラム、コンパイル方法及びコンパイルする情報処理装置 | |
JPH07105015A (ja) | コンパイル方式 |
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 |