(57)【要約】【課題】並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことを可能にするプログラムの製造方法、およびプログラムの表示方法を提供する。【解決手段】本開示の一実施の形態に係るプログラムの製造方法は、プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップと、抽出ステップで得られた並列化候補部分がソースコードにおいて視覚的に区別された画像データを生成する生成ステップとを含む。【選択図】図１
2020095453.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップと、
前記抽出ステップで得られた前記並列化候補部分が前記ソースコードにおいて視覚的に区別された画像データを生成する生成ステップと
を含む
プログラムの製造方法。
【請求項２】
前記生成ステップにおいて、前記ソースコードのスクロール操作が行われたときには、前記画像データとして、前記ソースコードのうち、前記スクロール操作によって画面に表示される表示部分に含まれる前記並列化候補部分が視覚的に区別された画像データを生成する
請求項１に記載のプログラムの製造方法。
【請求項３】
前記生成ステップにおいて、前記画像データとして、前記並列化候補部分を並列化したときの効果情報を含む画像データを生成する
請求項１に記載のプログラムの製造方法。
【請求項４】
当該プログラムの製造方法は、前記並列化候補部分の構造、変数および配列の少なくとも１つに基づいて、前記並列化候補部分の並列化阻害要因を解析する解析ステップをさらに含み、
前記生成ステップにおいて、前記画像データとして、前記解析ステップでの解析により得られた前記並列化阻害要因および前記並列化阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した画像データを生成する
請求項１に記載のプログラムの製造方法。
【請求項５】
前記生成ステップにおいて、前記画像データとして、前記並列化候補部分についての詳細情報を含む画像データを生成する
請求項４に記載のプログラムの製造方法。
【請求項６】
前記解析ステップにおいて、前記並列化阻害要因を取り除くための１または複数の改善案を取得し、
前記詳細情報には、前記並列化候補部分の１または複数の前記改善案が含まれる
請求項５に記載のプログラムの製造方法。
【請求項７】
プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップと、
前記抽出ステップで得られた前記並列化候補部分が前記ソースコードにおいて視覚的に区別された画像を画面に表示する表示ステップと
を含む
プログラムの表示方法。
【請求項８】
前記表示ステップにおいて、前記ソースコードのスクロール操作が行われたときには、前記画像として、前記ソースコードのうち、前記スクロール操作によって前記画面に表示される表示部分に含まれる前記並列化候補部分が視覚的に区別された画像を前記画面に表示する
請求項７に記載のプログラムの表示方法。
【請求項９】
前記表示ステップにおいて、前記画像として、前記並列化候補部分を並列化したときの効果情報を含む画像を前記画面に表示する
請求項７に記載のプログラムの表示方法。
【請求項１０】
前記表示ステップにおいて、前記画像として、前記並列化候補部分の構造、変数および配列の少なくとも１つに基づく解析により得られた前記並列化候補部分の並列化阻害要因および前記並列化阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した第１画像を前記画面に表示する
請求項７に記載のプログラムの表示方法。
【請求項１１】
前記表示ステップにおいて、前記並列化候補部分に対する選択操作が行われたときに、前記画像として、前記第１画像を前記画面に表示する
請求項１０に記載のプログラムの表示方法。
【請求項１２】
前記表示ステップにおいて、前記並列化阻害要因に対する選択操作が行われたときには、前記前記第１画像として、前記選択操作のなされた前記並列化阻害要因についての詳細情報を含む画像を前記画面に表示する
請求項１１に記載のプログラムの表示方法。
【請求項１３】
前記詳細情報には、前記選択操作のなされた前記並列化阻害要因に対する１または複数の改善案が含まれる
請求項１２に記載のプログラムの表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラムの製造方法、およびプログラムの表示方法に関する。
【背景技術】
【０００２】
プログラムの処理時間を短縮するための効果的な手法の一つとして、プログラムの並列化が挙げられる。特に近年、ＣＰＵやプロセッサの周波数向上は限界に近づきつつある。そのため、性能向上の手法としてマルチコア化が主流になっており、並列実行できるプログラムの開発が重要である。
【０００３】
ところが、並列化を意識しないで書かれた一般的なプログラムをそのまま手を加えないで並列化できるケースは非常に少ない。一方、このようなプログラムは、ユーザが少し手を加えることで並列化が可能になるものも多い。しかし、この作業は特に並列化に不慣れなユーザにとっては難易度が高い。
【０００４】
そこで、従来から、ソースコードの行番号で並列化の阻害要因となるプログラムの問題箇所を示し、テキスト情報で変数名や阻害要因を説明するプログラム並列化支援ツールが開発されている。近年では、グラフィカルな表示を使った並列化支援ツールが開発されている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−４２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、テキスト情報で変数名や阻害要因の説明を行う従来のツールでは、並列化に習熟したユーザであれば、ある程度作業は進められるものの直感的にわかり難く作業効率が悪いという課題があった。また、並列化に不慣れなユーザにとっては、問題箇所の特定や並列化阻害要因を取り除くプログラムの修正が非常に困難なものになっていた。また、特許文献１に記載のツールでは、グラフィカルな表示を使用しているものの、ループを回数値ごとに分解し依存関係の表示や命令群指定などミクロな視点での表示になっている。つまり、特許文献１に記載のツールでは、並列化に不慣れなユーザに対するわかり易さという側面ではなく、並列化を熟知したユーザが厳密な最適化を実現することに重点が置かれている。また、表示される部分はループ部分のみに限定されており、プログラム全体を俯瞰して見ることができない。従って、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことを可能にするプログラムの製造方法、およびプログラムの表示方法を提供することが望ましい。
【課題を解決するための手段】
【０００７】
本開示の一実施の形態に係るプログラムの製造方法は、以下の２つのステップを含んでいる。
（Ａ１）プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップ
（Ａ２）抽出ステップで得られた並列化候補部分がソースコードにおいて視覚的に区別された画像データを生成する生成ステップ
【０００８】
本開示の一実施の形態に係るプログラムの製造方法では、プログラムのソースコードから並列化候補部分が抽出され、抽出された並列化候補部分がソースコードにおいて視覚的に区別された画像データが生成される。これにより、プログラムのソースコードにおける並列化候補部分を直感的にわかり易くユーザに伝えることができる。
【０００９】
本開示の一実施の形態に係るプログラムの表示方法は、以下の２つのステップを含んでいる。
（Ｂ１）プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップ
（Ｂ２）抽出ステップで得られた並列化候補部分がソースコードにおいて視覚的に区別された画像を画面に表示させる表示ステップ
【００１０】
本開示の一実施の形態に係るプログラムの表示方法では、プログラムのソースコードから並列化候補部分が抽出され、抽出された並列化候補部分をソースコードにおいて視覚的に区別した画像が画面に表示される。これにより、プログラムのソースコードにおける並列化候補部分を直感的にわかり易くユーザに伝えることができる。
【図面の簡単な説明】
【００１１】
【図１】コンピュータの概略構成例を表す図である。
【図２】図１の改善案テーブルの一例を表す図である。
【図３】図１のコンピュータの表示画面の表示例を表す図である。
【図４】図１のコンピュータの表示画面の表示例を表す図である。
【図５】ポップアップウインドウを表示したときの表示画面に表示例を表す図である。
【図６】ポップアップウインドウを表示したときの表示画面に表示例を表す図である。
【図７】図１のコンピュータにおけるプログラムの製造手順および表示手順の一例を表す図である。
【図８】図７に続く製造手順および表示手順の一例を表す図である。
【図９】並列化阻害要因とそれを示すアイコンを使った表示例を表す図である。
【図１０】コンピュータの概略構成の一変形例を表す図である。
【発明を実施するための形態】
【００１２】
以下、本開示を実施するための形態について、図面を参照して詳細に説明する。
【００１３】
＜１．実施の形態＞
[構成]
本開示の一実施の形態に係るプログラムの製造方法および表示方法を具現化するコンピュータ１について説明する。図１は、コンピュータ１の概略構成例を表したものである。コンピュータ１は、プログラムの並列化処理を支援する装置であり、例えば、記憶装置１０と、情報処理装置２０と、一時記憶装置３０と、表示装置４０とを備えている。
【００１４】
記憶装置１０は、並列化処理の対象であるプログラムのソースコード１１と、ソースコード１１を実行する演算装置のアーキテクチャについての情報であるアーキテクチャ情報１２とを記憶している。記憶装置１０は、さらに、ソースコード１１の改善案の提示に用いる改善案テーブル１３を記憶している。
【００１５】
改善案テーブル１３は、例えば、図２に示したような概念のテーブルで記憶装置１０に記憶されている。改善案テーブル１３では、例えば、並列化を阻害する要因（阻害要因１３ａ）ごとに、１または複数の改善案１３ｂが対応付けられている。改善案テーブル１３において、阻害要因１３ａには、例えば、ｒｅｄｕｃｔｉｏｎや、前方参照などの阻害要因の名称４５が含まれており、さらに、阻害要因１３ａごとにアイコン４６の画像データが含まれている。改善案テーブル１３において、改善案１３ｂには、ソースコード１１を改善する具体例（改善案４８）と、改善案４８の目的（改善目的４９）とが互いに関連付けられて含まれている。
【００１６】
情報処理装置２０は、例えば、対象部分抽出部２１、依存関係解析部２２、効果解析部２３、並列化判定部２４、阻害要因解析部２５および改善案選択部２６を有している。
【００１７】
対象部分抽出部２１は、記憶装置１０から、ソースコード１１およびアーキテクチャ情報１２を読み出す。対象部分抽出部２１は、ソースコード１１から、並列化の可能性がある並列化対象部分１１ａを抽出する。並列化対象部分１１ａは、例えば、ｆｏｒループや、ｗｈｉｌｅループなどが挙げられる。依存関係解析部２２は、対象部分抽出部２１で抽出された並列化対象部分１１ａのプログラムの構造、変数および配列などの依存関係を解析する。効果解析部２３は、アーキテクチャ情報１２に基づいて、対象部分抽出部２１で抽出された並列化対象部分１１ａを並列化した場合の処理時間短縮効果を解析する。
【００１８】
並列化判定部２４は、依存関係解析部２２での解析により得られた依存関係に基づいて、並列化対象部分１１ａの並列化の可否を判定する。並列化判定部２４は、その判定の結果、ユーザが手を加えずにそのままで並列化が可能と判断した並列化対象部分１１ａを並列化可能部分に分類し、ユーザが手を加えることにより（つまり修正することにより）並列化が可能と判断した並列化対象部分１１ａを並列化候補部分に分類する。以下では、並列化可能部分に分類された並列化対象部分１１ａを、並列化可能部分１１ｂと称するものとする。また、並列化候補部分に分類された並列化対象部分１１ａを、並列化候補部分１１ｃと称するものとする。以上のことから、対象部分抽出部２１、依存関係解析部２２および並列化判定部２４からなる処理部は、プログラムのソースコード１１から、ユーザが手を加えずにそのままで並列化が可能な並列化可能部分１１ｂを抽出するとともに、修正により並列化の可能性がある並列化候補部分１１ｃを抽出する。
【００１９】
並列化判定部２４は、並列化可能部分１１ｂがソースコード１１において視覚的に区別された画像データ２４Ａを生成する。具体的には、並列化判定部２４は、並列化可能部分１１ｂの背景、または、並列化可能部分１１ｂに対応する行の背景がハイライト４１で処理された画像データ２４Ａを生成する。ハイライト４１は、例えば、水色などのパステルカラーとなっている。並列化判定部２４は、さらに、並列化候補部分１１ｃをソースコード１１において視覚的に区別した画像データ２４Ａを生成する。具体的には、並列化判定部２４は、並列化候補部分１１ｃの背景、または、並列化候補部分１１ｃに対応する行の背景がハイライト４２で処理された画像データ２４Ａを生成する。ハイライト４２は、ハイライト４１とは異なるカラーとなっており、例えば、オレンジ色などのパステルカラーとなっている。
【００２０】
並列化判定部２４は、さらに、効果解析部２３での解析によって得られた処理時間短縮効果（以下、「効果情報４３」と称する。）を含む画像データ２４Ａを生成してもよい。このとき、並列化判定部２４は、ハイライト４１，４２の処理がなされた箇所に、効果情報４３をグラフィカルに表した画像データ２４Ａを生成してもよい。効果情報４３は、例えば、オリジナルのソースコード１１を実行するのに要する時間を１００％としたときに、並列化可能部分１１ｂもしくは並列化候補部分１１ｃの並列化によって短縮され得る時間（短縮時間）をゲージで表している。効果情報４３は、円グラフなどの他のグラフィカルな表現方法で表してもよい。
【００２１】
並列化判定部２４は、このようにして得られた、ハイライト４１，４２付き（さらには必要に応じて効果情報４３付き）の画像データ２４Ａを一時記憶装置３０の判定結果保持部３１に格納する。並列化判定部２４は、判定結果保持部３１に格納した画像データ２４Ａを含む表示画面データを生成する。並列化判定部２４は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。
【００２２】
表示装置４０は、並列化判定部２４から入力された映像信号に基づく映像を生成し、表示画面４０Ａに表示する（図３参照）。図３には、表示画面４０Ａに表示される映像の一例が示されている。このとき、表示画面４０Ａには、画像データ２４Ａに基づいて生成されたソースコード映像４０Ｂが表示される。ソースコード映像４０Ｂでは、ソースコード１１において並列化可能部分１１ｂの背景、または、並列化可能部分１１ｂに対応する行の背景がハイライト４１となっている。つまり、表示装置４０は、並列化可能部分１１ｂがソースコード１１において視覚的に区別されたソースコード映像４０Ｂを表示画面４０Ａに表示する。ソースコード映像４０Ｂでは、さらに、ハイライト４１の中に、並列化可能部分１１ｂの効果情報４３が表示されていてもよい。つまり、表示装置４０は、並列化可能部分１１ｂを並列化したときの効果情報４３を含むソースコード映像４０Ｂを表示画面４０Ａに表示してもよい。
【００２３】
並列化判定部２４は、ソースコード１１のスクロール操作が行われたときには、スクロール操作に応じた画像データ２４Ａを生成する。具体的には、並列化判定部２４は、ソースコード１１のスクロール操作が行われたときには、ソースコード１１のうち、スクロール操作によって表示画面４０Ａに表示される表示部分に含まれる並列化候補部分１１ｃを視覚的に区別した画像データ２４Ａを生成する。並列化判定部２４は、画像データ２４Ａを含む表示画面データを生成する。並列化判定部２４は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。
【００２４】
表示装置４０は、並列化判定部２４から入力された映像信号に基づく映像を生成し、表示画面４０Ａに表示する（図４参照）。図４には、表示画面４０Ａに表示される映像の一例が示されている。このとき、表示画面４０Ａには、スクロール操作に応じた画像データ２４Ａに基づいて生成されたソースコード映像４０Ｂが表示される。ソースコード映像４０Ｂでは、例えば、ソースコード１１において並列化候補部分１１ｃの背景、または、並列化候補部分１１ｃに対応する行の背景がハイライト４２となっている。つまり、表示装置４０は、並列化候補部分１１ｃがソースコード１１において視覚的に区別されたソースコード映像４０Ｂを表示画面４０Ａに表示する。ソースコード映像４０Ｂでは、さらに、ハイライト４２の中に、並列化候補部分１１ｃの効果情報４３が表示されていてもよい。つまり、表示装置４０は、並列化候補部分１１ｃを並列化したときの効果情報４３を含むソースコード映像４０Ｂを表示画面４０Ａに表示してもよい。
【００２５】
阻害要因解析部２５は、並列化候補部分１１ｃの構造、変数および配列の少なくとも１つに基づいて、並列化候補部分１１ｃの並列化を阻害する要因（阻害要因）を解析する。具体的には、阻害要因解析部２５は、依存関係解析部２２での解析により得られた依存関係に基づいて阻害要因を解析する。
【００２６】
阻害要因解析部２５は、解析により得られた阻害要因およびその阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した画像データ２４Ｂを生成する。阻害要因解析部２５は、例えば、阻害要因および阻害要因の発生箇所の双方をグラフィカルに表現した画像データ２４Ｂを生成する。このとき、阻害要因解析部２５は、あらかじめ、記憶装置１０から、改善案テーブル１３を読み出しておき、解析により得られた阻害要因と合致する阻害要因１３ａに対応するアイコン４６の画像データを改善案テーブル１３から抽出する。阻害要因解析部２５は、例えば、改善案テーブル１３から抽出したアイコン４６の画像データを用いて、阻害要因をグラフィカルに表現した画像データ２４Ｂを生成する。
【００２７】
阻害要因解析部２５は、このようにして得られた画像データ２４Ｂを一時記憶装置３０の阻害要因保持部３２に格納する。阻害要因解析部２５は、画像データ２４Ａ，２４Ｂを含む表示画面データを生成する。阻害要因解析部２５は、例えば、並列化候補部分１１ｃに対する選択操作が行われたときに、ソースコード映像４０Ｂ上に、阻害要因保持部３２に格納した画像データ２４Ｂに対応する映像がポップアップウインドウ４０Ｃとして表示されるように、画像データ２４Ａ，２４Ｂを含む表示画面データを生成する（図５参照）。ポップアップウインドウ４０Ｃが、本開示の「第１画像」の一具体例に相当する。「並列化候補部分１１ｃに対する選択操作」とは、例えば、表示画面４０Ａに表示された、並列化候補部分１１ｃ、もしくは、並列化候補部分１１ｃの背景として設けられたハイライト４２をユーザがマウスなどでクリックする操作などを指している。ポップアップウインドウ４０Ｃには、並列化候補部分１１ｃと、阻害要因の種類を表すアイコン４６と、アイコン４６が示す阻害要因を生じさせている箇所を指し示す記号４７と、効果情報４３とが含まれている。並列化判定部２４は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。
【００２８】
表示装置４０は、阻害要因解析部２５から入力された映像信号に基づく映像を生成し、表示画面４０Ａに表示する（図５参照）。図５には、表示画面４０Ａに表示される映像の一例が示されている。このとき、表示画面４０Ａでは、ポップアップウインドウ４０Ｃがソースコード映像４０Ｂの一部に重ね合わせて表示される。つまり、表示装置４０は、並列化候補部分１１ｃの阻害要因およびこの阻害要因の発生箇所の少なくとも一方をグラフィカルに表現したポップアップウインドウ４０Ｃを表示画面４０Ａに表示する。表示装置４０は、例えば、並列化候補部分１１ｃに対する選択操作が行われたときに、ポップアップウインドウ４０Ｃを表示画面４０Ａに表示する。
【００２９】
改善案選択部２６は、阻害要因解析部２５での解析により得られた阻害要因を取り除くための１または複数の改善案４８と、改善案４８ごとの改善目的４９とを、改善案テーブル１３から読み出す。改善案選択部２６は、読み出した１または複数の改善案４８と、改善案４８ごとの改善目的４９とを含む画像データ２４Ｂを生成する。複数の改善案４８が、本開示の「詳細情報」の一具体例に相当する。改善案選択部２６は、読み出した改善案４８および改善目的４９がポップアップウインドウ４０Ｃに含まれるように、画像データ２４Ｂを生成する。
【００３０】
改善案選択部２６は、このようにして得られた画像データ２４Ｂを一時記憶装置３０の改善案保持部３３に格納する。改善案選択部２６は、画像データ２４Ａ，２４Ｂを含む表示画面データを生成する。改善案選択部２６は、例えば、阻害要因に対する選択操作が行われたときには、ソースコード映像４０Ｂ上に、改善案選択部２６に格納した画像データ２４Ｂに対応する映像がポップアップウインドウ４０Ｃとして表示されるように、画像データ２４Ａ，２４Ｂを含む表示画面データを生成する（図６参照）。「阻害要因に対する選択操作」とは、例えば、表示画面４０Ａに表示されたポップアップウインドウ４０Ｃ内に含まれるアイコン４６をユーザがマウスなどでクリックする操作などを指している。ポップアップウインドウ４０Ｃには、並列化候補部分１１ｃと、阻害要因の種類を表すアイコン４６と、アイコン４６が示す阻害要因を生じさせている箇所を指し示す記号４７と、効果情報４３と、１または複数の改善案４８と、改善案４８ごとの改善目的４９とが含まれている。改善案選択部２６は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。
【００３１】
表示装置４０は、改善案選択部２６から入力された映像信号に基づく映像を生成し、表示画面４０Ａに表示する（図６参照）。図６には、表示画面４０Ａに表示される映像の一例が示されている。このとき、表示画面４０Ａでは、ポップアップウインドウ４０Ｃがソースコード映像４０Ｂの一部に重ね合わせて表示される。つまり、表示装置４０は、並列化候補部分１１ｃと、阻害要因の種類を表すアイコン４６と、アイコン４６が示す阻害要因を生じさせている箇所を指し示す記号４７と、効果情報４３と、１または複数の改善案４８と、改善案４８ごとの改善目的４９とを含むポップアップウインドウ４０Ｃを表示画面４０Ａに表示する。表示装置４０は、例えば、阻害要因に対する選択操作が行われたときに、選択操作のなされた阻害要因を取り除くための１または複数の改善案４８を含むポップアップウインドウ４０Ｃを表示画面４０Ａに表示する。
【００３２】
次に、コンピュータ１におけるプログラムの製造手順および表示手順について説明する。図７、図８は、コンピュータ１におけるプログラムの製造手順および表示手順の一例を表したものである。
【００３３】
まず、情報処理装置２０（対象部分抽出部２１）は、記憶装置１０からソースコード１１を読み出した後、ソースコード１１から、並列化の可能性がある並列化対象部分１１ａを抽出する（ステップＳ１０１）。次に、情報処理装置２０（依存関係解析部２２）は、抽出した並列化対象部分１１ａのプログラムの構造、変数および配列などの依存関係を解析する（ステップＳ１０２）。次に、情報処理装置２０（効果解析部２３）は、記憶装置１０からアーキテクチャ情報１２を読み出した後、アーキテクチャ情報１２に基づいて、並列化対象部分１１ａを並列化した場合の処理時間短縮効果を解析する（ステップＳ１０３）。
【００３４】
情報処理装置２０（並列化判定部２４）は、解析により得られた依存関係に基づいて、並列化対象部分１１ａの並列化の可否を判定する（ステップＳ１０４）。情報処理装置２０（並列化判定部２４）は、その判定の結果、ユーザが手を加えずにそのままで並列化が可能と判断した並列化対象部分１１ａを並列化可能部分１１ｂとする（ステップＳ１０５）。つまり、情報処理装置２０（対象部分抽出部２１、依存関係解析部２２および並列化判定部２４）は、プログラムのソースコード１１から、並列化可能部分１１ｂを抽出する。
【００３５】
情報処理装置２０（並列化判定部２４）は、並列化可能部分１１ｂの背景、または、並列化可能部分１１ｂに対応する行の背景がハイライト４１で処理された画像データ２４Ａを生成する。つまり、情報処理装置２０（並列化判定部２４）は、並列化可能部分１１ｂがソースコード１１において視覚的に区別された画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、さらに、ハイライト４１の処理がなされた箇所に、解析によって得られた処理時間短縮効果（効果情報４３）をグラフィカルに表した画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、生成した画像データ２４Ａを一時記憶装置３０に格納する。
【００３６】
情報処理装置２０（並列化判定部２４）は、一時記憶装置３０から画像データ２４Ａを読み出し、読み出した画像データ２４Ａを含む表示画面データを生成する。情報処理装置２０（並列化判定部２４）は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。表示装置４０は、例えば、図３に示したように、並列化可能部分１１ｂをハイライト４１で表示し（ステップＳ１０６）、並列化可能部分１１ｂの効果情報４３を表示する（ステップＳ１０７）。
【００３７】
情報処理装置２０（並列化判定部２４）は、上記判定の結果、ユーザが手を加えることにより（つまり修正することにより）並列化が可能と判断した並列化対象部分１１ａを並列化候補部分１１ｃとする（ステップＳ１０８）。つまり、情報処理装置２０（対象部分抽出部２１、依存関係解析部２２および並列化判定部２４）は、プログラムのソースコード１１から、並列化候補部分１１ｃを抽出する。
【００３８】
情報処理装置２０（阻害要因解析部２５）は、並列化候補部分１１ｃの構造、変数および配列の少なくとも１つに基づいて、並列化候補部分１１ｃの並列化を阻害する要因（阻害要因）を解析する（ステップＳ１０９）。情報処理装置２０（改善案選択部２６）は、解析により得られた阻害要因に対応する改善方法４７Ｃおよび改善の目的４７Ｄを、改善案テーブル１３から読み出す（ステップＳ１１０）。
【００３９】
情報処理装置２０（並列化判定部２４）は、並列化候補部分１１ｃの背景、または、並列化候補部分１１ｃに対応する行の背景がハイライト４２で表現された画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、例えば、ソースコード１１のスクロール操作が行われたときに、ソースコード１１のうち、スクロール操作によって表示画面４０Ａに表示される表示部分に含まれる並列化候補部分１１ｃをソースコード１１において視覚的に区別した画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、さらに、ハイライト４２の処理がなされた箇所に、解析によって得られた処理時間短縮効果（効果情報４３）を含む画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、例えば、ハイライト４２の処理がなされた箇所に、解析によって得られた処理時間短縮効果（効果情報４３）をグラフィカルに表した画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、生成した画像データ２４Ａを一時記憶装置３０に格納する。
【００４０】
情報処理装置２０（阻害要因解析部２５）は、解析により得られた阻害要因およびその阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した画像データ２４Ｂを生成する。情報処理装置２０（阻害要因解析部２５）は、例えば、改善案テーブル１３から抽出したアイコン４６の画像データを用いて、阻害要因をグラフィカルに表現した画像データ２４Ｂを生成する。情報処理装置２０（阻害要因解析部２５）は、このようにして得られた画像データ２４Ｂを一時記憶装置３０に格納する。
【００４１】
情報処理装置２０（並列化判定部２４）は、一時記憶装置３０から画像データ２４Ａを読み出し、読み出した画像データ２４Ａを含む表示画面データを生成する。情報処理装置２０（並列化判定部２４）は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。
【００４２】
表示装置４０は、情報処理装置２０から入力された映像信号に基づく映像を生成し、表示画面４０Ａに表示する。表示装置４０は、画像データ２４Ａに基づいて生成されたソースコード映像４０Ｂを表示画面４０Ａに表示する。つまり、表示装置４０は、並列化候補部分１１ｃをソースコード１１において視覚的に区別したソースコード映像４０Ｂを表示画面４０Ａに表示する。表示装置４０は、例えば、図４に示したように、並列化候補部分１１ｃをハイライト４２で表示し（ステップＳ１１１）、並列化候補部分１１ｃの効果情報４３を表示する（ステップＳ１１２）。
【００４３】
情報処理装置２０（並列化判定部２４）は、ソースコード１１のスクロール操作が行われたときには、スクロール操作に応じた画像データ２４Ａを生成する。具体的には、情報処理装置２０（並列化判定部２４）は、ソースコード１１のスクロール操作が行われたときには、ソースコード１１のうち、スクロール操作によって表示画面４０Ａに表示される表示部分に含まれる並列化可能部分１１ｂおよび並列化候補部分１１ｃを視覚的に区別した画像データ２４Ａを生成する。情報処理装置２０（並列化判定部２４）は、画像データ２４Ａを含む表示画面データを生成する。情報処理装置２０（並列化判定部２４）は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。
【００４４】
表示装置４０は、例えば、並列化可能部分１１ｂおよび並列化候補部分１１ｃがソースコード１１において視覚的に区別されたソースコード映像４０Ｂを表示画面４０Ａに表示する。表示装置４０は、例えば、並列化候補部分１１ｃを並列化したときの効果情報４３を含むソースコード映像４０Ｂを表示画面４０Ａに表示してもよい。表示装置４０は、例えば、図３または図４に示したように、並列化可能部分１１ｂおよび並列化候補部分１１ｃをハイライト４２で表示し、並列化可能部分１１ｂおよび並列化候補部分１１ｃの効果情報４３を表示してもよい。
【００４５】
情報処理装置２０（阻害要因解析部２５）は、並列化候補部分１１ｃに対する選択操作が行われたか否かを判定する。具体的には、情報処理装置２０（阻害要因解析部２５）は、並列化候補部分１１ｃ、または、並列化候補部分１１ｃの背景にあるハイライト４２に対してユーザがクリック操作を行ったか否かを判定する（ステップＳ１１３）。情報処理装置２０（阻害要因解析部２５）は、その判定の結果、並列化候補部分１１ｃに対する選択操作が行われたときには、選択操作のなされた並列化候補部分１１ｃについての阻害要因および阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した画像データ２４Ｂを一時記憶装置３０から読み出す。
【００４６】
情報処理装置２０（阻害要因解析部２５）は、一時記憶装置３０から読み出した画像データ２４Ａ，２４Ｂを含む表示画面データを生成する。情報処理装置２０（阻害要因解析部２５）は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。表示装置４０は、選択操作のなされた並列化候補部分１１ｃについての阻害要因および阻害要因の発生箇所の少なくとも一方をグラフィカルに表現したポップアップウインドウ４０Ｃを表示画面４０Ａに表示する。表示装置４０は、例えば、図５に示したように、ソースコード映像４０Ｂ上にポップアップウインドウ４０Ｃを表示する。このとき、表示装置４０は、並列化候補部分１１ｃについての阻害要因をアイコン４６で表示する（ステップＳ１１４）。
【００４７】
情報処理装置２０（改善案選択部２６）は、並列化候補部分１１ｃについての阻害要因に対する選択操作が行われたか否かを判定する。具体的には、情報処理装置２０（改善案選択部２６）は、ポップアップウインドウ４０Ｃ内のアイコン４６に対してユーザがクリック操作を行ったか否かを判定する（ステップＳ１１５）。情報処理装置２０（改善案選択部２６）は、その判定の結果、アイコン４６に対する選択操作が行われたときには、選択操作のなされたアイコン４６に対応する阻害要因を取り除くための１または複数の改善案４８と、改善案４８ごとの改善目的４９とを、改善案テーブル１３から取得する。情報処理装置２０（改善案選択部２６）は、読み出した１または複数の改善案４８と、改善案４８ごとの改善目的４９とを含む画像データ２４Ｂを生成する。情報処理装置２０（改善案選択部２６）は、読み出した改善案４８および改善目的４９がポップアップウインドウ４０Ｃに含まれるように、画像データ２４Ｂを生成する。
【００４８】
情報処理装置２０（改善案選択部２６）は、画像データ２４Ａ，２４Ｂを含む表示画面データを生成する。情報処理装置２０（改善案選択部２６）は、生成した表示画面データに基づく映像信号を生成し、表示装置４０に出力する。表示装置４０は、情報処理装置２０（改善案選択部２６）から入力された映像信号に基づく映像を生成し、表示画面４０Ａに表示する（図６参照）。図６には、表示画面４０Ａに表示される映像の一例が示されている。表示装置４０は、例えば、図６に示したように、ポップアップウインドウ４０Ｃ内に改善案４８および改善目的４９を表示する（ステップＳ１１６）。
【００４９】
ユーザは、ソースコード映像４０Ｂやポップアップウインドウ４０Ｃを見ながら、１または複数の並列化可能部分１１ｂや、１または複数の並列化候補部分１１ｃに対して並列化処理を行う。このようにして、プログラムのソースコード１１における並列化作業が行われる。
【００５０】
［効果］
次に、本実施の形態にかかるコンピュータ１の効果について説明する。
【００５１】
プログラムの処理時間を短縮するための効果的な手法の一つとして、プログラムの並列化が挙げられる。特に近年、ＣＰＵやプロセッサの周波数向上は限界に近づきつつある。そのため、性能向上の手法としてマルチコア化が主流になっており、並列実行できるプログラムの開発が重要である。ところが、並列化を意識しないで書かれた一般的なプログラムをそのまま手を加えないで並列化できるケースは非常に少ない。一方、このようなプログラムは、ユーザが少し手を加えることで並列化が可能になるものも多い。しかし、この作業は特に並列化に不慣れなユーザにとっては難易度が高い。そこで、従来から、ソースコードの行番号で並列化の阻害要因となるプログラムの問題箇所を示し、テキスト情報で変数名や阻害要因を説明するプログラム並列化支援ツールが開発されている。近年では、グラフィカルな表示を使った並列化支援ツールが開発されている。
【００５２】
しかし、テキスト情報で変数名や阻害要因の説明を行う従来のツールでは、並列化に習熟したユーザであれば、ある程度作業は進められるものの直感的にわかり難く作業効率が悪いという課題があった。また、並列化に不慣れなユーザにとっては、問題箇所の特定や並列化阻害要因を取り除くプログラムの修正が非常に困難なものになっていた。また、特許文献１に記載のツールでは、グラフィカルな表示を使用しているものの、ループを回数値ごとに分解し依存関係の表示や命令群指定などミクロな視点での表示になっている。つまり、特許文献１に記載のツールでは、並列化に不慣れなユーザに対するわかり易さという側面ではなく、並列化を熟知したユーザが厳密な最適化を実現することに重点が置かれている。また、表示される部分はループ部分のみに限定されており、プログラム全体を俯瞰して見ることができない。
【００５３】
一方、本実施の形態では、プログラムのソースコード１１から並列化候補部分１１ｃが抽出され、抽出された並列化候補部分１１ｃがソースコードにおいて視覚的に区別された画像データが生成される。これにより、プログラムのソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００５４】
また、本実施の形態では、ソースコード１１のスクロール操作が行われたときには、ソースコード１１のうち、スクロール操作によって表示画面４０Ａに表示される表示部分に含まれる並列化候補部分１１ｃが視覚的に区別された画像データ２４Ａが生成される。これにより、ソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００５５】
また、本実施の形態では、並列化候補部分１１ｃを並列化したときの効果情報４３を含む画像データ２４Ａが生成される。これにより、並列化候補部分１１ｃを並列化したときの効果を直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００５６】
また、本実施の形態では、解析により得られた阻害要因および阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した画像データ２４Ｂが生成される。これにより、ソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００５７】
また、本実施の形態では、並列化候補部分１１ｃにおける阻害要因を取り除くための１または複数の改善案４８を含む画像データ２４Ｂが生成される。これにより、並列化候補部分１１ｃに対する作業を直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００５８】
また、本実施の形態では、プログラムのソースコード１１から並列化候補部分１１ｃが抽出され、抽出された並列化候補部分１１ｃがソースコードにおいて視覚的に区別された画像が表示画面４０Ａに表示される。これにより、プログラムのソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００５９】
また、本実施の形態では、ソースコード１１のスクロール操作が行われたときには、ソースコード１１のうち、スクロール操作によって表示画面４０Ａに表示される表示部分に含まれる並列化候補部分１１ｃが視覚的に区別されたソースコード映像４０Ｂが表示画面４０Ａに表示される。これにより、ソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００６０】
また、本実施の形態では、並列化候補部分１１ｃを並列化したときの効果情報４３を含むソースコード映像４０Ｂが表示画面４０Ａに表示される。これにより、並列化候補部分１１ｃを並列化したときの効果を直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００６１】
また、本実施の形態では、解析により得られた阻害要因および阻害要因の発生箇所の少なくとも一方をグラフィカルに表現したポップアップウインドウ４０Ｃが表示画面４０Ａに表示される。これにより、ソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００６２】
また、本実施の形態では、並列化候補部分１１ｃに対する選択操作が行われたときに、ポップアップウインドウ４０Ｃが表示画面４０Ａに表示される。これにより、ソースコード１１における並列化候補部分１１ｃを直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００６３】
また、本実施の形態では、並列化候補部分１１ｃにおける阻害要因に対する選択操作が行われたときには、解析により得られた阻害要因および阻害要因の発生箇所の少なくとも一方と、選択操作のなされた阻害要因を取り除くための１または複数の改善案４８とを含むポップアップウインドウ４０Ｃが表示画面４０Ａに表示される。これにより、並列化候補部分１１ｃに対する作業を直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００６４】
＜２．変形例＞
次に、上記実施の形態に係るコンピュータ１の変形例について説明する。
【００６５】
[変形例Ａ]
図９は、並列化阻害要因とそれを示すアイコンを使った表示例を表したものである。上記実施の形態では、ポップアップウインドウ４０Ｃに表示される並列化阻害要因として、ｒｅｄｕｃｔｉｏｎが用意されていた。しかし、上記実施の形態において、ポップアップウインドウ４０Ｃに表示される並列化阻害要因として、ｒｅｄｕｃｔｉｏｎの他に、例えば、前方参照、後方参照、配列インデックスの間接参照、ホ゜インタによる配列参照、ルーフ゜外部で宣言した変数への代入、依存関係の解析不能な外部関数、ルーフ゜内の演算負荷が少ない、ルーフ゜内の反復回数が少ない、反復回数が不明なルーフ゜などが用意されていてもよい。
【００６６】
[変形例Ｂ]
上記実施の形態およびその変形例において、情報処理装置２０が、例えば、図１０に示したように、演算部２７および記憶部２８で構成されていてもよい。このとき、記憶部２８には、対象部分抽出部２１、依存関係解析部２２、効果解析部２３、並列化判定部２４、阻害要因解析部２５および改善案選択部２６で実行される手順が記述されたソフトウェア２９が格納されていてもよい。演算部２７は、例えば、プロセッサによって構成されており、記憶部２８に格納されたソフトウェア２９を実行する。演算部２７の機能は、演算部２７によってソフトウェア２９が実行されることによって実現される。
【００６７】
また、例えば、本開示は以下のような構成を取ることができる。
（１）
プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップと、
前記抽出ステップで得られた前記並列化候補部分を前記ソースコードにおいて視覚的に区別した画像データを生成する生成ステップと
を含む
プログラムの製造方法。
（２）
前記生成ステップにおいて、前記ソースコードのスクロール操作が行われたときには、前記画像データとして、前記ソースコードのうち、前記スクロール操作によって画面に表示される表示部分に含まれる前記並列化候補部分を視覚的に区別した画像データを生成する
（１）に記載のプログラムの製造方法。
（３）
前記生成ステップにおいて、前記画像データとして、前記並列化候補部分を並列化したときの効果情報を含む画像データを生成する
（１）または（２）に記載のプログラムの製造方法。
（４）
当該プログラムの製造方法は、前記並列化候補部分の構造、変数および配列の少なくとも１つに基づいて、前記並列化候補部分の並列化阻害要因を解析する解析ステップをさらに含み、
前記生成ステップにおいて、前記画像データとして、前記解析ステップでの解析により得られた前記並列化阻害要因および前記並列化阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した画像データを生成する
（１）ないし（３）のいずれか１つに記載のプログラムの製造方法。
（５）
前記生成ステップにおいて、前記画像データとして、前記並列化候補部分についての詳細情報を含む画像データを生成する
（４）のいずれか１つに記載のプログラムの製造方法。
（６）
前記解析ステップにおいて、前記並列化阻害要因を取り除くための１または複数の改善案を取得し、
前記詳細情報には、前記並列化候補部分の１または複数の前記改善案が含まれる
（５）に記載のプログラムの製造方法。
（７）
プログラムのソースコードから、修正により並列化の可能性がある並列化候補部分を抽出する抽出ステップと、
前記抽出ステップで得られた前記並列化候補部分を前記ソースコードにおいて視覚的に区別した画像を画面に表示させる表示ステップと
を含む
プログラムの表示方法。
（８）
前記表示ステップにおいて、前記ソースコードのスクロール操作が行われたときには、前記画像として、前記ソースコードのうち、前記スクロール操作によって前記画面に表示される表示部分に含まれる前記並列化候補部分を視覚的に区別した画像を前記画面に表示する
（７）に記載のプログラムの表示方法。
（９）
前記表示ステップにおいて、前記画像として、前記並列化候補部分を並列化したときの効果情報を含む画像を前記画面に表示する
（７）または（８）に記載のプログラムの表示方法。
（１０）
前記表示ステップにおいて、前記画像として、前記並列化候補部分の構造、変数および配列の少なくとも１つに基づく解析により得られた前記並列化候補部分の並列化阻害要因および前記並列化阻害要因の発生箇所の少なくとも一方をグラフィカルに表現した第１画像を前記画面に表示する
（７）ないし（９）のいずれか１つに記載のプログラムの表示方法。
（１１）
前記表示ステップにおいて、前記並列化候補部分に対する選択操作が行われたときには、前記画像として、前記第１画像を前記画面に表示する
（１０）に記載のプログラムの表示方法。
（１２）
前記表示ステップにおいて、前記並列化阻害要因に対する選択操作が行われたときには、前記前記第１画像として、前記選択操作のなされた前記並列化阻害要因についての詳細情報を含む画像を前記画面に表示する
（１１）に記載のプログラムの表示方法。
（１３）
前記詳細情報には、前記選択操作のなされた前記並列化阻害要因に対する１または複数の改善案が含まれる
（１１）に記載のプログラムの表示方法。
【００６８】
本開示の一実施の形態に係る生体情報計測装置によれば、プログラムのソースコードから並列化候補部分を抽出し、抽出した並列化候補部分をソースコードにおいて視覚的に区別した画像データを生成するようにしたので、プログラムのソースコードにおける並列化候補部分を直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００６９】
本開示の一実施の形態に係るプログラムの表示方法によれば、プログラムのソースコードから並列化候補部分を抽出し、抽出した並列化候補部分をソースコードにおいて視覚的に区別した画像を画面に表示するようにしたので、プログラムのソースコードにおける並列化候補部分を直感的にわかり易くユーザに伝えることができる。その結果、並列化に不慣れなユーザにとっても直感的にわかり易く並列化作業を行うことができる。
【００７０】
１…コンピュータ、１０…記憶装置、１１…ソースコード、１１ａ…並列化対象部分、１１ｂ…並列化可能部分、１１ｃ…並列化候補部分、１２…アーキテクチャ情報、１３…改善案テーブル、１３ａ…阻害要因、１３ｂ…改善案、２０…情報処理装置、２１…対象部分抽出部、２２…依存関係解析部、２３…効果解析部、２４…並列化判定部、２４Ｂ…画像データ、２５…阻害要因解析部、２６…改善案選択部、３０…一時記憶装置、３１…判定結果保持部、３２…阻害要因保持部、３３…改善案保持部、４０…表示装置、４０Ａ…表示画面、４０Ｂ…ソースコード映像、４０Ｃ…ポップアップウインドウ、４１，４２…ハイライト、４３…効果情報、４５…名称、４６…アイコン、４７…記号、４８…改善案、４９…改善目的。
【図１】
2020095453.tif 000003
【図２】
2020095453.tif 000004
【図３】
2020095453.tif 000005
【図４】
2020095453.tif 000006
【図５】
2020095453.tif 000007
【図６】
2020095453.tif 000008
【図７】
2020095453.tif 000009
【図８】
2020095453.tif 000010
【図９】
2020095453.tif 000011
【図１０】
2020095453.tif 000012