Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7263994B2 - 情報処理方法及び最適化プログラム - Google Patents
[go: Go Back, main page]

JP7263994B2 - 情報処理方法及び最適化プログラム - Google Patents

情報処理方法及び最適化プログラム Download PDF

Info

Publication number
JP7263994B2
JP7263994B2 JP2019168077A JP2019168077A JP7263994B2 JP 7263994 B2 JP7263994 B2 JP 7263994B2 JP 2019168077 A JP2019168077 A JP 2019168077A JP 2019168077 A JP2019168077 A JP 2019168077A JP 7263994 B2 JP7263994 B2 JP 7263994B2
Authority
JP
Japan
Prior art keywords
program
combination
assignment
assignment statements
program code
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
Application number
JP2019168077A
Other languages
English (en)
Other versions
JP2021047480A (ja
Inventor
隆弘 野津
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019168077A priority Critical patent/JP7263994B2/ja
Priority to US17/009,833 priority patent/US11169814B2/en
Priority to EP20194305.7A priority patent/EP3796156A1/en
Priority to CN202010954073.XA priority patent/CN112596789A/zh
Publication of JP2021047480A publication Critical patent/JP2021047480A/ja
Application granted granted Critical
Publication of JP7263994B2 publication Critical patent/JP7263994B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、情報処理方法及び最適化プログラムに関する。
従来より、プログラムを最適化する最適化技術の1つとして、SIMD(Single Instruction Multiple Data)演算機能を用いた並列処理が知られている。当該最適化技術によれば、プログラムの実行精度を縮小することで、演算時間を短縮することができる。
特開2016-40691号公報
しかしながら、上記最適化技術の場合、実行精度を縮小する対象を適切に選択しなければ、演算時間の短縮において十分な効果を得ることができない。
一つの側面では、SIMD演算機能を用いた並列処理において、実行精度を縮小する対象を適切に選択することを目的としている。
一態様によれば、情報処理方法は、
対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、処理をコンピュータが実行する。
SIMD演算機能を用いた並列処理において、実行精度を縮小する対象を適切に選択することができる。
情報処理装置のハードウェア構成の一例を示す図である。 SIMD演算機能を用いた並列処理の概要を説明するための図である。 プログラム最適化処理の流れを示すフローチャートである。 コンパイル処理の流れを示すフローチャートである。 プロファイル情報解析処理の流れを示すフローチャートである。 プロファイル情報の一例を示す図である。 候補の抽出例を示す図である。 評価処理の流れを示すフローチャートである。 組み合わせ探索処理の流れを示すフローチャートである。 交叉及び突然変異に基づいて選択/非選択を決定する処理の具体例を示す図である。
以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省略する。
[第1の実施形態]
<情報処理装置のハードウェア構成>
はじめに、最適化プログラムを実行することで、対象プログラムを最適化する情報処理装置のハードウェア構成について説明する。なお、第1の実施形態において"最適化"とは、対象プログラムにおいて、実行精度を縮小するプログラムコードを適切に選択することで、SIMD演算機能を用いた並列処理において、演算時間の短縮を実現することを指す。
図1は、情報処理装置のハードウェア構成の一例を示す図である。図1に示すように、情報処理装置100は、CPU(Central Processing Unit)110と、ROM(Read Only Memory)120と、RAM(Random Access Memory)130とを有する。なお、CPU110と、ROM120と、RAM130とは、いわゆるコンピュータを形成する。
また、情報処理装置100は、I/F(Interface)装置140と、補助記憶装置150と、操作装置160と、表示装置170とを有する。なお、情報処理装置100の各ハードウェアは、バス180を介して相互に接続される。
CPU110は、補助記憶装置150にインストールされている各種プログラム(例えば、最適化プログラム、オリジナルプログラム(最適化する対象プログラム)、チューニングプログラム(最適化されたプログラム))を実行する演算デバイスである。CPU110は、SIMD演算機能を有し、チューニングプログラムに含まれる一部のプログラムコード(オリジナルプログラムにおいて適切に選択され、変換されたプログラムコード)を並列処理により実行する。
ROM120は、不揮発性メモリであり、補助記憶装置150に格納されている各種プログラムをCPU110が実行するために必要なプログラムを格納する、主記憶デバイスである。
RAM130は、揮発性メモリであり、補助記憶装置150にインストールされている各種プログラムをCPU110が実行する際に展開する作業領域を提供する、主記憶デバイスである。
I/F装置140は、不図示のネットワークと接続するための通信デバイスである。
補助記憶装置150は、各種プログラムや、CPU110が各種プログラムを実行する際に使用する情報、実行したことで生成される情報等を格納する補助記憶デバイスである。図1に示すように、第1の実施形態に係る情報処理装置100の場合、補助記憶装置150には、最適化プログラム151、プログラム解析変換コード152、オリジナルプログラム153、チューニングプログラム154が格納される。
なお、最適化プログラム151は、CPU110によって実行されることで、最適化する対象プログラム(オリジナルプログラム153)の一部のプログラムコードを、プログラム解析変換コード152を用いて変換し、チューニングプログラム154を生成する。
操作装置160は、最適化プログラム151がCPU110によって実行される際、情報処理装置100のユーザが情報処理装置100に対して各種指示を入力するのに用いる入力デバイスである。表示装置170は、最適化プログラム151がCPU110によって実行される際の情報処理装置100の内部状態を、ユーザに表示するための出力デバイスである。
<SIMD演算機能を用いた並列処理の概要>
次に、CPU110のSIMD演算機能を用いた並列処理の概要について説明する。図2は、SIMD演算機能を用いた並列処理の概要を説明するための図である。図2に示すように、情報処理装置100のCPU110が128ビットのSIMD演算機能を有する場合、単精度演算では、演算対象のデータを、64ビットずつ、2並列で実行する(符号210参照)。一方、倍精度演算では、演算対象のデータを、32ビットずつ、4並列で実行する(符号220参照)。
このように、SIMD演算機能では、演算対象のデータのビット数を落とし(実行精度を縮小し(例えば、64ビット→32ビット))、並列数を増やすことで(例えば、2並列→4並列)、1回の命令で実行する処理を増やし、演算時間の短縮を実現している。
<プログラム最適化処理の流れ>
次に、対象プログラム(オリジナルプログラム153)を最適化するプログラム最適化処理の流れについて説明する。図3は、プログラム最適化処理の流れを示すフローチャートである。CPU110は最適化プログラム151を実行することで、図3に示すプログラム最適化処理に含まれる各処理を行う。
ステップS301において、CPU110は最適化プログラム151を実行することでコンパイル処理を行う。具体的には、CPU110は最適化プログラム151を実行することで、最適化する対象プログラム(オリジナルプログラム153)を補助記憶装置150から読み出し、読み出したオリジナルプログラム153に対してコンパイル処理を行う(詳細は後述)。これにより、実行可能バイナリコード310が生成される。
ステップS302において、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード310を実行する。具体的には、CPU110は最適化プログラム151を実行することで、ユーザからの実行開始指示の受け付け処理を行い、実行開始指示を受け付けた場合に、実行可能バイナリコード310を実行し、プロファイル情報を生成する。
ステップS303において、CPU110は最適化プログラム151を実行することで、プロファイル情報解析処理を行う。具体的には、CPU110は最適化プログラム151を実行することで、ステップS302で生成したプロファイル情報を取得し、取得したプロファイル情報を解析する。プロファイル情報には、オリジナルプログラム153の各プログラムコードの実行回数が含まれており、CPU110は、当該プロファイル情報を解析することで、実行回数が上位の代入文に関するプログラムコード320を抽出する。
なお、第1の実施形態において、実行回数が上位の代入文に関するプログラムコード320は、SIMD演算機能を用いた単精度演算による並列処理が実行されるべき"候補"である。第1の実施形態では、当該候補の中から、適切な組み合わせを選択することで、演算時間の短縮を実現する。
ステップS304において、CPU110は最適化プログラム151を実行することで、候補の中から、複数個のランダムな代入文に関するプログラムコードの組み合わせを選択する。
ステップS305において、CPU110は最適化プログラム151を実行することで、オリジナルプログラム153に含まれるプログラムコードにおいて、選択した組み合わせに含まれる代入文に関するプログラムコードを特定する。また、CPU110は最適化プログラム151を実行することで、特定したプログラムコードを変換し、チューニングプログラム154を生成する。これにより、生成したチューニングプログラム154のうち、変換されたプログラムコードについて、SIMD演算機能を用いた単精度演算による並列処理が実行される。なお、変換にあたっては、プログラム解析変換コード152が用いられる。
具体的には、オリジナルプログラム153において特定された代入文に関するプログラムコードについて、プログラム解析変換コード152を用いることで、例えば、
・倍精度演算を実行する三角関数(sin、cos等)を、単精度演算を実行する三角関数に変換する、
・変数の定義を、倍精度演算から単精度演算に変換する、
・数値を、倍精度演算の表記から、単精度演算の表記に変換する、
等の処理を行う。
また、オリジナルプログラム153において特定された代入文に関するプログラムコードについて、SIMD演算機能を用いた単精度演算による並列処理を実行するプログラムコードであることを定義する処理を行う。
なお、SIMD演算機能を用いた単精度演算による並列処理を実行するプログラムコードであることを定義する処理は、人為的に行われるものとする(例えば、ユーザが明示的に、"code.c"を記述することで定義されるものとする)。ただし、後述するコンパイル処理を行う際に、並列処理を実行させるプログラムコードを判定して定義するなど、自動的に行われてもよい。
ステップS306において、CPU110は最適化プログラム151を実行することでコンパイル処理を行う。具体的には、CPU110は最適化プログラム151を実行することで、ステップS305で生成したチューニングプログラム154に対してコンパイル処理を行う。これにより、実行可能バイナリコード330が生成される。
ステップS307において、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード330を実行する。具体的には、CPU110は最適化プログラム151を実行することで、ユーザからの実行開始指示の受け付け処理を行い、実行開始指示を受け付けた場合に、実行可能バイナリコード330を実行する。
ステップS308において、CPU110は最適化プログラム151を実行することで、評価処理を行う。具体的には、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード330を実行した際の、実行性能(演算時間)と実行精度とを算出する(詳細は後述)。
ステップS309において、CPU110は最適化プログラム151を実行することで、算出した実行性能(演算時間)と実行精度とが所定の条件を満たすか否かを判定する。ステップS309において、算出した実行性能(演算時間)と実行精度とが所定の条件を満たさないと判定した場合には、対象プログラム(オリジナルプログラム153)が最適化されていないと判定する(ステップS309においてNOと判定する)。
ステップS310において、CPU110は最適化プログラム151を実行することで、組み合わせ探索処理を行う。具体的には、CPU110は最適化プログラム151を実行することで、候補の中から、適切な組み合わせ(実行性能(演算時間)と実行精度とが所定の条件を満たす組み合わせ)を探索する。
ここで、候補に含まれるプログラムコードについて、全ての組み合わせを選択しようとすると、選択する組み合わせの数が膨大となる。このため、第1の実施形態では、進化計算を行い、候補に含まれるプログラムコードにおいて、適切な組み合わせを探索する際の、探索回数を減らす(詳細は後述)。
ステップS310において進化計算のもとで組み合わせが選択されると、ステップS305に戻る。これにより、ステップS305では、オリジナルプログラム153に含まれるプログラムコードのうち、ステップS310において選択された組み合わせに含まれる代入文に関するプログラムコードを特定し、特定したプログラムコードを変換する。
ステップS310の組み合わせ探索処理は、ステップS309において、算出した実行性能(演算時間)と実行精度とが所定の条件を満たすと判定されるまで繰り返される。
一方、ステップS309において、算出した実行性能(演算時間)と実行精度とが所定の条件を満たすと判定された場合には、対象プログラム(オリジナルプログラム153)が最適化されたと判定する(ステップS309においてYESと判定する)。
ステップS311において、CPU110は最適化プログラム151を実行することで、最適化されたプログラムである、チューニングプログラム154を出力する。
<プログラム最適化処理に含まれる各処理の詳細>
次に、プログラム最適化処理(図3)に含まれる各処理(ここでは、コンパイル処理(ステップS301)、プロファイル情報解析処理(ステップS303)、評価処理(ステップS308)、組み合わせ探索処理(ステップS310))の詳細について説明する。
(1)コンパイル処理の詳細
はじめに、コンパイル処理(ステップS301)の詳細について説明する。図4は、コンパイル処理の流れを示すフローチャートである。
ステップS401において、CPU110は最適化プログラム151を実行することで、補助記憶装置150からオリジナルプログラム153を読み出す。
ステップS402において、CPU110は最適化プログラム151を実行することで、読み出したオリジナルプログラム153の構文解析を行う。
ステップS403において、CPU110は最適化プログラム151を実行することで、オリジナルプログラム153に基づいてオブジェクトコード(実行可能バイナリコード310)を生成する。
ステップS404において、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード310を補助記憶装置150に格納した後、図3のステップS302に戻る。
(2)プロファイル情報解析処理の詳細
次に、プロファイル情報解析処理(ステップS303)の詳細について説明する。
(2-1)プロファイル情報解析処理の流れ
はじめに、プロファイル情報解析処理の流れについて説明する。図5は、プロファイル情報解析処理の流れを示すフローチャートである。
ステップS501において、CPU110は最適化プログラム151を実行することで、プロファイル情報を取得する。
ステップS502において、CPU110は最適化プログラム151を実行することで、コントロールフローごとのプロファイル情報を取得し、各プログラムコードの実行回数を取得する。
ステップS503において、CPU110は最適化プログラム151を実行することで、取得した各プログラムコードの実行回数の中から、代入文に関するプログラムコードの実行回数を取得する。
ステップS504において、CPU110は最適化プログラム151を実行することで、代入文に関するプログラムコードを実行回数に従ってソートする。
ステップS505において、CPU110は最適化プログラム151を実行することで、実行回数が上位の代入文に関するプログラムコード320を候補として抽出し、図3のステップS304に戻る。
(2-2)プロファイル情報の具体例
次に、プロファイル情報解析処理(ステップS303)において取得されるプロファイル情報の具体例について説明する。図6は、プロファイル情報の一例を示す図である。
図6に示すように、プロファイル情報解析処理において取得されるプロファイル情報600には、各プログラムコードの実行回数が含まれる。図6のプロファイル情報600は、実行可能バイナリコード310が実行されたことで、プログラムコード601が、2619152回実行されたことを示している。同様に、図6のプロファイル情報600は、実行可能バイナリコード310が実行されたことで、プログラムコード602が、2598227回実行されたことを示している。
ここで、プログラムコード601~605は、代入文に関するプログラムコードである。したがって、プログラムコード601~605にそれぞれ含まれる代入文は、それぞれのプログラムコード601~605の実行回数分、実行されたことになる。
例えば、プログラムコード601には、代入文として、"int i=1"、"i++"が含まれる。上述したように、プログラムコード601の実行回数は、2619152回であることから、代入文="int i=1"、"i++"は、2619152回、実行されたことになる。
(2-3)候補の抽出例
次に、候補の抽出例について説明する。図7は、候補の抽出例を示す図である。図7に示すように、代入文に関するプログラムコードであるプログラムコード601~605それぞれの実行回数は、
・プログラムコード601:2619152回、
・プログラムコード602:2598227回、
・プログラムコード603:1659425回、
・プログラムコード604:2598227回、
・プログラムコード605:5154604回、
である。したがって、実行回数の多い順にソートした場合、プログラムコード605→601→602→604→603の順になる。
図7の例は、実行回数が上位の代入文に関するプログラムコード320として、プログラムコード605、601、602、604が抽出されたことを示している。
(3)評価処理の詳細
次に、評価処理(ステップS308)の詳細について説明する。図8は、評価処理の流れを示すフローチャートである。
ステップS801において、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード330を実行した際の実行性能として、演算時間を算出する。
ステップS802において、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード330を実行した際の実行結果を取得する。また、CPU110は最適化プログラム151を実行することで、実行可能バイナリコード310を実行した際の実行結果と、実行可能バイナリコード330を実行した際の実行結果との差分(実行精度)を算出し、図3のステップS309に戻る。
(4)組み合わせ探索処理の詳細
次に、組み合わせ探索処理(ステップS310)の詳細について説明する。
(4-1)組み合わせ探索処理の流れ
はじめに、組み合わせ探索処理の流れについて説明する。図9は、組み合わせ探索処理の流れを示すフローチャートである。
ステップS901において、CPU110は最適化プログラム151を実行することで、評価処理の結果(実行性能(演算時間)、実行精度)に基づいて、実行性能が低く(演算時間が長く)、かつ、実行精度が低い代入文に関するプログラムコードを特定する。また、CPU110は最適化プログラム151を実行することで、特定した代入文に関するプログラムコードを、候補(実行回数が上位の代入文に関するプログラムコード320)から除外する。
ステップS902において、CPU110は最適化プログラム151を実行することで、現時点での候補の中から、代入文に関するプログラムコードを選択する際、交叉及び突然変異に基づいて選択/非選択を決定する。
ステップS903において、CPU110は最適化プログラム151を実行することで、選択した代入文に関するプログラムコードの組み合わせを新たに出力し、図3のステップS305に戻る。
(4-2)交叉及び突然変異の具体例
次に、交叉及び突然変異に基づいて選択/非選択を決定する処理の具体例について説明する。図10は、交叉及び突然変異に基づいて選択/非選択を決定する処理の具体例を示す図である。図10において、それぞれの矩形は、候補に含まれるそれぞれの代入文に関するプログラムコードを表している。また、それぞれの矩形に含まれる数値は、それぞれの代入文に関するプログラムコードが選択されたか否かを表している。具体的には、"0"は非選択を、"1"は選択を表している。
なお、図10では、説明を簡略化するため、候補には、15個の代入文に関するプログラムコードが含まれているものとしている。
このうち、図10(a)は、候補に含まれる15個の代入文に関するプログラムコードの選択/非選択を、交叉に基づいて決定する様子を示している。
符号1001は、候補から選択した、7個の代入文に関するプログラムコードの組み合わせの一例を示している。具体的には、符号1001の場合、候補のうち、2番目、3番目、5番目、7番目、10番目、11番目、14番目の代入文に関するプログラムコードの組み合わせが選択されている。
一方、符号1011は、候補から選択した、6個の代入文に関するプログラムコードの組み合わせの一例を示している。具体的には、符号1011の場合、候補のうち、1番目、4番目、7番目、12番目、13番目、15番目の代入文に関するプログラムコードの組み合わせが選択されている。
交叉処理では、符号1001に示す組み合わせの一部の選択/非選択と、符号1011に示す組み合わせの一部の選択/非選択とを入れ替えることで、新たな組み合わせ(符号1002、符号1012)を選択する。
一方、図10(b)は、候補に含まれる15個の代入文に関するプログラムコードの選択/非選択を、突然変異に基づいて決定する様子を示している。図10(b)に示すように、突然変異処理では、符号1001に示す組み合わせの一部について、選択を非選択に(あるいは非選択を選択)に変更することで、新たな組み合わせ(符号1003)を選択する。
以上の説明から明らかなように、情報処理装置100では、最適化する対象プログラムであるオリジナルプログラムを実行することで、各プログラムコードの実行回数を取得する。また、情報処理装置100では、実行回数が上位の代入文に関するプログラムコードの中から、単精度演算を行う複数個の代入文に関するプログラムコードの組み合わせを選択する。
また、情報処理装置100では、選択した組み合わせについて、SIMD演算機能を用いた並列処理が実行されるよう、オリジナルプログラムが変換された場合に、生成されたチューニングプログラムを実行し、実行精度と演算時間とを算出する。
更に、情報処理装置100では、算出した実行精度と演算時間とが所定の条件を満たすように、組み合わせを探索する。
これにより、情報処理装置100によれば、SIMD演算機能を用いた並列処理において、実行精度を縮小する対象を適切に選択することができる。
[第2の実施形態]
上記第1の実施形態では、実行回数が上位の代入文に関するプログラムコード320を抽出する際の抽出方法の詳細について言及しなかったが、当該抽出方法には、任意の抽出方法が適用されうる。例えば、実行回数が上位N個(あるいは、上位M%)の、代入文に関するプログラムコードを抽出してもよいし、実行回数が所定の閾値以上の、代入文に関するプログラムコードを抽出してもよい。
なお、開示の技術では、以下に記載する付記のような形態が考えられる。
(付記1)
対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
処理をコンピュータが実行する情報処理方法。
(付記2)
実行回数が上位の代入文に関するプログラムコードに対して、進化計算を行うことで、前記組み合わせを探索する、付記1に記載の情報処理方法。
(付記3)
実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第1の組み合わせを選択し、実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第2の組み合わせを選択した場合において、第1の組み合わせと第2の組み合わせとを交叉させることで、前記組み合わせを新たに選択する、付記2に記載の情報処理方法。
(付記4)
実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択した場合において、該組み合わせの一部の選択を非選択に、または、一部の非選択を選択に変更することで、前記組み合わせを新たに選択する、付記2に記載の情報処理方法。
(付記5)
実行回数が上位の代入文に関するプログラムコードのうち、前記実行精度が低く、かつ、前記演算時間が長い代入文に関するプログラムコードを、前記実行回数が上位の代入文に関するプログラムコードから除外する、付記1に記載の情報処理方法。
(付記6)
対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
処理をコンピュータに実行させるための最適化プログラム。
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
100 :情報処理装置
151 :最適化プログラム
152 :プログラム解析変換コード
153 :オリジナルプログラム
154 :チューニングプログラム
310、330 :実行可能バイナリコード
320 :実行回数が上位の代入文に関するプログラムコード
600 :プロファイル情報
601~605 :プログラムコード

Claims (6)

  1. 対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
    前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
    選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムを実行することで、実行精度と演算時間とを算出し、
    算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
    処理をコンピュータが実行する情報処理方法。
  2. 実行回数が上位の代入文に関するプログラムコードに対して、進化計算を行うことで、前記組み合わせを探索する、請求項1に記載の情報処理方法。
  3. 実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第1の組み合わせを選択し、実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの第2の組み合わせを選択した場合において、第1の組み合わせと第2の組み合わせとを交叉させることで、前記組み合わせを新たに選択する、請求項2に記載の情報処理方法。
  4. 実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択した場合において、該組み合わせの一部の選択を非選択に、または、一部の非選択を選択に変更することで、前記組み合わせを新たに選択する、請求項2に記載の情報処理方法。
  5. 実行回数が上位の代入文に関するプログラムコードのうち、前記実行精度が低く、かつ、前記演算時間が長い代入文に関するプログラムコードを、前記実行回数が上位の代入文に関するプログラムコードから除外する、請求項1に記載の情報処理方法。
  6. 対象プログラムを実行することで、各プログラムコードの実行回数を取得し、
    前記実行回数が上位の代入文に関するプログラムコードの中から、複数個の代入文に関するプログラムコードの組み合わせを選択し、
    選択した組み合わせに含まれる前記複数個の代入文に関するプログラムコードそれぞれについてSIMD演算機能を用いた並列処理が実行されるよう、前記対象プログラムが変更された場合に、該変更された対象プログラムが実行することで、実行精度と演算時間とを算出し、
    算出した実行精度と演算時間とが所定の条件を満たすように、前記組み合わせを探索する、
    処理をコンピュータに実行させるための最適化プログラム。
JP2019168077A 2019-09-17 2019-09-17 情報処理方法及び最適化プログラム Active JP7263994B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019168077A JP7263994B2 (ja) 2019-09-17 2019-09-17 情報処理方法及び最適化プログラム
US17/009,833 US11169814B2 (en) 2019-09-17 2020-09-02 Information processing method and computer-readable recording medium having stored therein optimization program
EP20194305.7A EP3796156A1 (en) 2019-09-17 2020-09-03 Information processing method and program using an simd operation function
CN202010954073.XA CN112596789A (zh) 2019-09-17 2020-09-11 信息处理方法和非暂态计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019168077A JP7263994B2 (ja) 2019-09-17 2019-09-17 情報処理方法及び最適化プログラム

Publications (2)

Publication Number Publication Date
JP2021047480A JP2021047480A (ja) 2021-03-25
JP7263994B2 true JP7263994B2 (ja) 2023-04-25

Family

ID=72355872

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019168077A Active JP7263994B2 (ja) 2019-09-17 2019-09-17 情報処理方法及び最適化プログラム

Country Status (4)

Country Link
US (1) US11169814B2 (ja)
EP (1) EP3796156A1 (ja)
JP (1) JP7263994B2 (ja)
CN (1) CN112596789A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090276766A1 (en) 2008-05-01 2009-11-05 Yonghong Song Runtime profitability control for speculative automatic parallelization
JP2013242604A (ja) 2010-09-10 2013-12-05 Fixstars Multi Core Labo Corp 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム
US20160085528A1 (en) 2014-09-22 2016-03-24 Oracle International Corporation Automated adaptive compiler optimization
WO2018163304A1 (ja) 2017-03-07 2018-09-13 三菱電機株式会社 ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4045802B2 (ja) * 2002-01-08 2008-02-13 ソニー株式会社 プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム
CN101452394B (zh) * 2007-11-28 2012-05-23 无锡江南计算技术研究所 编译方法和编译器
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
JP5846005B2 (ja) * 2012-03-29 2016-01-20 富士通株式会社 プログラム、コード生成方法および情報処理装置
US9229524B2 (en) * 2012-06-27 2016-01-05 Intel Corporation Performing local power gating in a processor
CN103246541B (zh) * 2013-04-27 2016-03-23 中国人民解放军信息工程大学 一种自动并行化多级并行代价评估方法
JP6331865B2 (ja) * 2014-08-13 2018-05-30 富士通株式会社 プログラム最適化方法,プログラム最適化プログラム及びプログラム最適化装置
US9569127B2 (en) * 2014-12-29 2017-02-14 International Business Machines Corporation Computer instructions for limiting access violation reporting when accessing strings and similar data structures
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
KR102343652B1 (ko) * 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
US20190034206A1 (en) * 2017-11-29 2019-01-31 Harshad Sane Techniques to mitigate high latency instructions in high frequency execution paths

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090276766A1 (en) 2008-05-01 2009-11-05 Yonghong Song Runtime profitability control for speculative automatic parallelization
JP2013242604A (ja) 2010-09-10 2013-12-05 Fixstars Multi Core Labo Corp 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム
US20160085528A1 (en) 2014-09-22 2016-03-24 Oracle International Corporation Automated adaptive compiler optimization
WO2018163304A1 (ja) 2017-03-07 2018-09-13 三菱電機株式会社 ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム

Also Published As

Publication number Publication date
JP2021047480A (ja) 2021-03-25
CN112596789A (zh) 2021-04-02
US20210081210A1 (en) 2021-03-18
US11169814B2 (en) 2021-11-09
EP3796156A1 (en) 2021-03-24

Similar Documents

Publication Publication Date Title
US5742803A (en) Method of performing a compilation process for determining a branch probability and an apparatus for performing the compilation process
JP2021517301A (ja) 確率的丸めロジック
US10990073B2 (en) Program editing device, program editing method, and computer readable medium
JP5169322B2 (ja) 変数最適化装置、変数最適化プログラム、コンパイラ、変数最適化方法、及びコンパイル方法
JP7263994B2 (ja) 情報処理方法及び最適化プログラム
JP5949002B2 (ja) 画像マッチング方法、およびこの方法を用いた画像マッチング装置およびプログラム
CN119692491B (zh) 一种量子线路的采样方法及装置
KR102228995B1 (ko) 여러 가지 수치 포맷의 데이터를 갖는, 데이터 베이스화된 함수 모델의 연산을 위한 모델 연산 유닛 및 제어 장치
CN108536585B (zh) 数据变更影响域分析方法
JP2015069400A (ja) ソフトウェアテストシステム
JP2000047998A (ja) Simd方式の演算器及び演算処理装置
JP2022034897A (ja) 情報処理装置、機械学習方法及び機械学習プログラム
CN115167868B (zh) 代码编译方法、装置、设备及计算机存储介质
JP5267243B2 (ja) 動作記述変換装置、動作記述変換方法、およびプログラム
JP5227646B2 (ja) コンパイラ及びそのコード生成方法
JP6555005B2 (ja) 最適化装置、方法およびプログラム
JP6175306B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
US12175242B2 (en) Decision tree node instruction unification for parallel processing
JP4327533B2 (ja) 演算処理プログラム、演算処理方法、および演算処理装置
JP7207423B2 (ja) 作業集合選択装置、作業集合選択方法および作業集合選択プログラム
Starke et al. An FPGA implementation of an investment strategy processor
JPH09160784A (ja) 並列化コンパイル方式
JPWO2015194172A1 (ja) 情報処理装置、データ格納方法、及び、プログラム
CN121986334A (en) Automatically identifying internal precision required by any function call according to global target precision of program on any program
JPS58114245A (ja) インデツクス・インクリメントのベクトル化方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220609

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230308

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230327

R150 Certificate of patent or registration of utility model

Ref document number: 7263994

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150