(57)【要約】  アクセラレータ制御装置３０は、アクセラレータ４０が実行するプログラムによって生成されるタスクがデータを処理するフローを表す処理フロー情報において、プログラムの実行過程において一時的に生成される一時データをデータの中から特定する特定部３１と、アクセラレータ４０によるタスクの実行状況と処理フロー情報とに基づいて、一時データの中から特定されたデータを使用する全てのタスクに関して、実行が完了しているか否かを判定する判定部３２と、特定されたデータを使用する全てのタスクに関して実行が完了している場合に、アクセラレータ４０のメモリ４２に記憶されている特定されたデータを削除する削除部３３と、を備えることによって、アクセラレータが処理対象とするデータの大きさが大きい場合において、アクセラレータによる処理性能の低下を回避する。
2018230444.tif 000002
【特許請求の範囲】
【請求項１】
アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定する特定手段と、
前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定する判定手段と、
前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する削除手段と、
を備えるアクセラレータ制御装置。
【請求項２】
前記特定手段は、前記処理フロー情報を解析することによって、前記タスクをサブタスクに分割し、前記データを前記サブタスクに入出力される部分データに分割したのち、前記サブタスク及び前記部分データを含む前記処理フロー情報を生成するとともに、前記一時データを前記部分データの中から特定し、
前記判定手段は、前記一時データの中から特定された部分データを使用する全ての前記サブタスクに関して、実行が完了しているか否かを判定し、
前記削除手段は、前記特定された部分データを使用する全ての前記サブタスクに関して実行が完了している場合に、前記サブタスクによる処理によって前記メモリに記憶されている前記特定された部分データを削除する、
請求項１に記載のアクセラレータ制御装置。
【請求項３】
前記部分データの特性を表すメタデータを記憶する記憶手段をさらに備え、
前記特定手段は、前記部分データと、前記部分データが前記一時データであることを示す識別子と、前記部分データを使用する前記サブタスクと、前記部分データの大きさとを関連付けることによって前記メタデータを生成し、生成した前記メタデータを前記記憶手段へ格納する、
請求項２に記載のアクセラレータ制御装置。
【請求項４】
前記アクセラレータによる前記サブタスクの実行状況と前記処理フロー情報とに基づいて、前記サブタスクを順番に実行するように前記アクセラレータを制御する際に、前記メタデータが示す、前記サブタスクが使用する前記部分データの大きさに基づいて、前記メモリにおいて、前記サブタスクによる使用領域を確保する実行管理手段をさらに備える、  請求項３に記載のアクセラレータ制御装置。
【請求項５】
前記実行管理手段は、前記メモリの使用率が閾値以上である場合、前記使用率が閾値未満になるまで、前記メモリに記憶されている前記部分データを自装置に退避するように、前記アクセラレータを制御する、
請求項４に記載のアクセラレータ制御装置。
【請求項６】
前記実行管理手段は、ＬＲＵ（Least Recently Used）アルゴリズムに従って、自装置に退避する前記部分データを選択する、
請求項５に記載のアクセラレータ制御装置。
【請求項７】
前記特定手段は、前記プログラムにおいて、前記データが前記一時データであることを宣言されている場合、あるいは、前記データに関する記載が存在しない場合に、前記データを前記一時データとして特定する、
請求項１乃至６のいずれか一項に記載のアクセラレータ制御装置。
【請求項８】
前記特定手段は、有向非巡回グラフによって表される前記処理フロー情報を生成する、  請求項１乃至７のいずれか一項に記載のアクセラレータ制御装置。
【請求項９】
情報処理装置によって、
アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定し、
前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定し、
前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する、
アクセラレータ制御方法。
【請求項１０】
アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定する特定処理と、
前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定する判定処理と、
前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する削除処理と、
をコンピュータに実行させるためのアクセラレータ制御プログラムが格納された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、ホストコンピュータと通信可能に接続されたアクセラレータが、特定の情報処理についてホストコンピュータを代行するように制御する技術に関する。
【背景技術】
【０００２】
コンピュータシステムでは、特定の演算を高速に実行可能なアクセラレータを具備し、その特定の演算を、アクセラレータがホストコンピュータに代わって実行することによって、情報処理を高速化することが一般的に行われている。代表的なアクセラレータとしては、例えば、画像処理を高速に実行可能なＧＰＵ（Graphics Processing Unit）が知られている。そして、このようなアクセラレータを用いた情報処理を、より高速かつ効率的に行うことを実現する技術への期待が高まってきている。【０００３】
このような技術に関連する技術として、特許文献１には、生成部と制御部とを備えたアクセラレータ制御装置が開示されている。この装置における生成部は、実行対象のコンピュータプログラムに基づいた処理の流れを表す有向非巡回グラフ（ＤＡＧ：Directed Acyclic Graph）を生成する。この装置における制御部は、制御対象のアクセラレータが具備するメモリに、ＤＡＧにおけるノードに相当するデータが格納されている場合に、当該メモリに格納されているデータを用いてＤＡＧにおけるエッジに相当する処理を実行するように、当該アクセラレータを制御する。【０００４】
また、非特許文献１には、データの処理を行うアクセラレータと、そのアクセラレータを制御するホストコンピュータとを含むアクセラレータ制御システムが開示されている。
このシステムでは、ホストコンピュータは、1つの処理データを分割して、分割したデータの単位（データパーティション）で処理を行うようにアクセラレータを制御する。ホストコンピュータは、分割前のデータに対する処理をタスクとして管理し、そのタスクから、アクセラレータにおけるメモリが保持するデータパーティションに対して実行する処理をサブタスクとして生成し、アクセラレータにサブタスクを実行するように指示する。アクセラレータにおけるプロセッサは、指示されたサブタスクを、メモリが保持するデータパーティションを用いて実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第2016/063482号
【非特許文献】
【０００６】
【非特許文献１】鈴木順他著、"リソース分離アーキテクチャのためのアクセラレータミドルウェア"Victream"の提案"、 2016年並列／分散／協調処理に関する『松本』サマー・ワークショップ(SWoPP2016)、OS-2．、2016年8月1日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
近年、アクセラレータが処理する情報量（データの大きさ）が増大している。これにより、アクセラレータが処理対象とするデータの大きさが、アクセラレータが具備するメモリ容量よりも大きくなるようなケースが、頻繁に発生してきている。このような、メモリ容量よりも大きなデータに対する処理（本願では、以降、「Out-of-Core処理」と称する）では、アクセラレータによる処理性能が低下するという問題がある。即ち、Out-of-Core処理では、アクセラレータは、具備するメモリに保持したデータを、例えばホストコンピュータのメモリに退避しながら処理を進める必要がある。この場合、アクセラレータとホストコンピュータとを接続するＩ／Ｏ(Input/Output)パスの帯域が狭いことによって、アクセラレータによる処理性能が大きく低下することになる。特許文献１及び非特許文献１は、この問題について特に言及していない。本願発明の主たる目的は、このような問題を解決するアクセラレータ制御装置等を提供することである。
【課題を解決するための手段】
【０００８】
本願発明の一態様に係るアクセラレータ制御装置は、アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定する特定手段と、前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定する判定手段と、前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する削除手段と、を備える。【０００９】
上記目的を達成する他の見地において、本願発明の一態様に係るアクセラレータ制御方法は、情報処理装置によって、アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定し、前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定し、前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する。【００１０】
また、上記目的を達成する更なる見地において、本願発明の一態様に係るアクセラレータ制御プログラムは、アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定する特定処理と、前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定する判定処理と、前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する削除処理と、をコンピュータに実行させるためのプログラムである。【００１１】
更に、本願発明は、係るアクセラレータ制御プログラム（コンピュータプログラム）が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
【発明の効果】
【００１２】
本願発明は、アクセラレータが処理対象とするデータの大きさが大きい場合において、アクセラレータによる処理性能の低下を回避することを可能とする。
【図面の簡単な説明】
【００１３】
【図１】本願発明の第１の実施形態に係るアクセラレータ制御装置１０の構成を示すブロック図である。
【図２】本願発明の第１の実施形態に係るユーザプログラム１５１の一例を示す図である。
【図３】本願発明の第１の実施形態に係るＤＡＧ１５２の一例を示す図である。
【図４】本願発明の第１の実施形態に係る特定部１１がタスクを３分割した後に生成したＤＡＧ１５２Ａの一例を示す図である。
【図５】図４に示すＤＡＧ１５２Ａの一部を抜粋した図である。
【図６】本願発明の第１の実施形態に係る特定部１１が、図５に例示するＤＡＧ１５２Ａに基づいて生成したメタデータ１５３の構成を例示する図である。
【図７】サブタスクとデータパーティションとの関係がＤＡＧ１５２Ａとは異なるＤＡＧ１５２Ｂを例示する図である。
【図８】本願発明の第１の実施形態に係る特定部１１が、図７に例示するＤＡＧ１５２Ｂに基づいて生成したメタデータ１５３の構成を例示する図である。
【図９Ａ】本願発明の第１の実施形態に係るアクセラレータ制御装置１０の動作を示すフローチャート（１／２）である。
【図９Ｂ】本願発明の第１の実施形態に係るアクセラレータ制御装置１０の動作を示すフローチャート（２／２）である。
【図１０】本願発明の第２の実施形態に係るアクセラレータ制御装置３０の構成を示すブロック図である。
【図１１】本願発明の各実施形態に係るアクセラレータ制御装置１０、及び、アクセラレータ制御装置３０を実行可能な情報処理装置９００の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
【００１５】
＜第１の実施形態＞
図１は、本願発明の第１の実施の形態に係るアクセラレータ制御装置１０の構成を概念的に示すブロック図である。アクセラレータ制御装置１０は、アクセラレータ２０と通信可能に接続され、特定の情報処理（例えば画像処理等）を実行するようにアクセラレータ２０を制御する装置（ホストコンピュータ）である。
【００１６】
アクセラレータ２０は、例えばＧＰＵ等であり、画像処理等の特定の情報処理を高速に実行可能な構成（例えば多数の演算コアを有する構成）を有するデバイスである。アクセラレータ２０は、プロセッサ２１とメモリ２２とを備えている。尚、メモリ２２は、プロセッサ２１からアクセス可能であって、アクセラレータ２０の外部に存在するメモリであってもよい。プロセッサ２１は、アクセラレータ２０がアクセラレータ制御装置１０から受信してメモリ２２に格納したプログラム及びデータに対する処理を実行する。アクセラレータ２０は、その処理結果をアクセラレータ制御装置１０へ送信する。
【００１７】
アクセラレータ制御装置１０は、特定部１１、判定部１２、削除部１３、実行管理部１４、記憶部１５、及び、ホストメモリ１６を備えている。
【００１８】
ホストメモリ１６は、例えば、アクセラレータ制御装置１０における主記憶であり、アクセラレータ制御装置１０によって処理されるデータなどを記憶する。ホストメモリ１６は、アクセラレータ制御装置１０がアクセラレータ２０との間で送受信するデータを記憶する。
【００１９】
記憶部１５は、磁気ディスクあるいは電子メモリ等の記憶デバイスである。記憶部１５は、ユーザプログラム１５１、ＤＡＧ（有向非巡回グラフ）１５２、メタデータ１５３、及び、実行状況情報１５４を記憶している。
【００２０】
ユーザプログラム１５１は、アクセラレータ制御装置１０がアクセラレータ２０に実行させるプログラムである。ユーザプログラム１５１は、後述する特定部１１がユーザライブラリとして提供する、アクセラレータ２０がデータ処理を行うことができるようにするためのＡＰＩ（Application Programming Interface）を使用したプログラムである。図２は、本実施形態に係るユーザプログラム１５１の一例を示す図である。
【００２１】
ユーザプログラム１５１における１−２行目は、外部から読み込んだオブジェクトをインスタンス化（実際の値としてのデータを生成）することによって、アクセラレータ２０に処理対象として入力されるデータを生成することを表す。１行目におけるＤＤＤ１は、「inputFilePath1」という名称が付与された、アクセラレータ制御装置１０が備えるファイルシステムに格納されたファイル（オブジェクト）を読み込んで、読み込んだファイルをインスタンス化したデータである。２行目におけるＤＤＤ４は、同様に、「inputFilePath4」という名称が付与されたファイルを読み込んで、読み込んだファイルをインスタンス化したデータである。
【００２２】
ユーザプログラム１５１における３行目は、ＤＤＤ１に対してユーザが指定する処理（タスク）Ｐ１及びＰ２を続けて行った結果として、ＤＤＤ３を生成することを表す。但し、３行目における「TempDDD」は、対象とするデータが一時的なデータであることをユーザが宣言する（明示する）ことを表している。すなわち、ユーザプログラム１５１における３行目は、ＤＤＤ３が一時的なデータ（以降本願では、一時データあるいは一時ＤＤＤと称する）であることを表している。ここで一時データ（一時ＤＤＤ）は、ユーザプログラム１５１によって示される処理以外では使用されないデータを示す。
【００２３】
ユーザプログラム１５１における３行目に記載された「ｍａｐ」処理は、ユーザライブラリとして提供されるＡＰＩであり、ＤＤＤ（データ）に含まれる全てのデータ要素に対して同じ処理を実行することを表す。即ち、３行目における最初の「ｍａｐ」処理では、ＤＤＤ１に含まれる全てのデータ要素に対して、ユーザが指定した処理Ｐ１を実行する。
３行目における２番目の「ｍａｐ」処理では、処理Ｐ１の実行によって生成されるＤＤＤに含まれる全てのデータ要素に対して、処理Ｐ２を実行する。そして処理Ｐ２を実行した結果として、一時ＤＤＤであるＤＤＤ３が生成される。
【００２４】
ユーザプログラム１５１における４行目は、ＤＤＤ４に対する「ｍａｐ」処理が行われることを表す。即ち４行目は、ＤＤＤ４に含まれる全てのデータ要素に対して、ユーザが指定した処理Ｐ３を実行した結果として、一時ＤＤＤであるＤＤＤ５が生成されることを表す。
【００２５】
ユーザプログラム１５１における５行目に記載された「ｚｉｐ」処理は、ユーザライブラリとして提供されるＡＰＩであり、２つのＤＤＤを関連付けることを表す。即ち、５行目における「ｚｉｐ」処理では、ＤＤＤ３にＤＤＤ５が関連付けられる。
【００２６】
ユーザプログラム１５１における６行目は、ＤＤＤ３に対して処理Ｐ４を実行する「ｍａｐ」処理が行われることを表す。ユーザプログラム１５１では、５行目において、ＤＤＤ３はＤＤＤ５と関連付けられているので、ＤＤＤ３とＤＤＤ５とに含まれる、関連付けされたデータ要素の組み合わせの全てに対して、処理Ｐ４が行われ、その結果としてＤＤＤ６が生成される。
【００２７】
ユーザプログラム１５１における７行目に記載された「outputFile」処理は、ユーザライブラリとして提供されるＡＰＩであり、ＤＤＤをファイル出力することを表す。即ち、７行目は、ＤＤＤ６が処理結果として、「outputFilePath」というファイル名で、アクセラレータ制御装置１０におけるファイルシステムにファイル出力されることを表す。
【００２８】
図１に示す特定部１１は、ユーザプログラム１５１に基づいて、ユーザプログラム１５１によって生成される処理（タスク）と、タスクに入出力されるデータと、の関係を表す処理フロー情報であるＤＡＧ１５２を生成する。図３は、図２に例示したユーザプログラム１５１に基づいて、特定部１１によって生成されたＤＡＧ１５２の一例を概念的に示す図である。
【００２９】
特定部１１は、「ｍａｐ」処理等を含む、ユーザライブラリとして提供されるＡＰＩがユーザプログラム１５１から呼ばれる毎に、ノード（処理、タスク）を生成する。そして特定部１１は、「outputFile」処理がユーザプログラム１５１から呼ばれた際に、それまでに作成したＤＡＧ１５２の実行を、後述する実行管理部１４へ要求する。
【００３０】
図３に例示するＤＡＧ１５２では、図１に示すアクセラレータ２０によって処理されるデータがＤＤＤであり、ＤＡＧ１５２におけるエッジ（図３に示す矢印線）によって表される。また、データに対して行う処理（タスク）は、ＤＡＧ１５２におけるノード（図３に示す円）によって表される。ＤＡＧ１５２において、データを表すＤＤＤに付与された数字、及び、処理を表すＰに付与された数字は、図２に例示したユーザプログラム１５１における変数名に基づいている。
【００３１】
図３に例示するＤＡＧ１５２におけるエッジの向きは、処理の依存性を示す。例えばＰ２はＰ１の出力であるＤＤＤ２に対して行われる処理であり、Ｐ１の実行が完了するまでＰ２を実行することはできない。尚、図３におけるＤＤＤ２は、図２に例示するユーザプログラム１５１には記載されていない。ＤＤＤ２は、ＤＤＤ１にｍａｐ（Ｐ１）を適用した結果として生成され、ｍａｐ（Ｐ２）を適用する前のデータである。本実施形態では、処理対象のデータに適用される処理毎に、1つのタスク、及び、その処理結果として生成されるデータであるＤＤＤを定義することとする。
【００３２】
特定部１１は、ＤＡＧ１５２に含まれるＤＤＤ１乃至ＤＤＤ６のうち、一時ＤＤＤであるＤＤＤを特定する。特定部１１は、図２に例示するユーザプログラム１５１において、ユーザにより「TempDDD」であることが明示されたＤＤＤであるＤＤＤ３及びＤＤＤ５を一時ＤＤＤとして特定する。特定部１１はまた、図２に例示するユーザプログラム１５１に記載されていないＤＤＤであるＤＤＤ２を一時ＤＤＤとして特定する。これは、ユーザプログラム１５１に記載されていない（例えば、等号「＝」によって定義されていない）ＤＤＤは、ユーザプログラム１５１において、再利用されないことに基づいている。尚、図３（図４、図５、図７も同様）では、枠に囲まれて記載されたＤＤＤ（即ち、ＤＤＤ２、ＤＤＤ３、及び、ＤＤＤ５）が一時ＤＤＤである。
【００３３】
特定部１１はまた、例えば非特許文献１に示す技術を用いてＤＡＧ１５２を解析することによって、タスクをサブタスクに分割するとともに、データＤＤＤをサブタスクに入出力される部分データに分割する。尚、本願では以降、部分データをデータパーティションＤＰ（Data Partition）と称することとする。
【００３４】
図４は、特定部１１がＤＡＧ１５２に含まれる処理Ｐ及びデータＤＤＤを分割することによって生成したＤＡＧ１５２Ａの一例を、概念的に示す図である。図４に示す例では、特定部１１は、ＤＡＧ１５２に含まれる処理Ｐ及びデータＤＤＤを３つに分割している。即ち、特定部１１は、処理Ｐ１をサブタスクＳＴ１−１乃至ＳＴ１−３に分割し、処理Ｐ２をサブタスクＳＴ２−１乃至ＳＴ２−３に分割し、処理Ｐ３をサブタスクＳＴ３−１乃至ＳＴ３−３に分割し、処理Ｐ４をサブタスクＳＴ４−１乃至ＳＴ４−３に分割する。
【００３５】
特定部１１は、また、データＤＤＤ１をＤＰ１−１乃至ＤＰ１−３に分割し、データＤＤＤ２をＤＰ２−１乃至ＤＰ２−３に分割し、データＤＤＤ３をＤＰ３−１乃至ＤＰ３−３に分割し、データＤＤＤ４をＤＰ４−１乃至ＤＰ４−３に分割し、データＤＤＤ５をＤＰ５−１乃至ＤＰ５−３に分割し、データＤＤＤ６をＤＰ６−１乃至ＤＰ６−３に分割する。このように、特定部１１は、図３に例示するＤＡＧ１５２における処理とデータとを、図４に例示する通り、３系統の処理とデータとに分割する。
【００３６】
特定部１１は、ＤＡＧ１５２Ａに含まれるＤＰのうち、一時データであるＤＰを特定する。この場合、特定部１１は、一時ＤＤＤとして特定されているＤＤＤ２とＤＤＤ３とＤＤＤ５とを分割することによって生成した、ＤＰ２−１乃至ＤＰ２−３と、ＤＰ３−１乃至ＤＰ３−３と、ＤＰ５−１乃至ＤＰ５−３とを一時データとして特定する。
【００３７】
特定部１１は、ＤＡＧ１５２Ａが示す各データパーティションＤＰの特性を表すメタデータ１５３を生成し、生成したメタデータ１５３を記憶部１５へ格納する。図５は、図４に例示するＤＡＧ１５２Ａの一部を抜粋した図である。図６は、図５に例示するＤＡＧ１５２Ａに基づいて特定部１１が生成したメタデータ１５３の構成を例示する図である。メタデータ１５３では、ＤＰ毎に、「ＤＰサイズ」と、「一時フラグ」と、「ＤＰを使用するサブタスク」とが関連付けされている。
【００３８】
メタデータ１５３における「ＤＰサイズ」は、特定部１１が各ＤＤＤを分割することによって生成したＤＰのサイズを表す値であり、図６に示す例では、各ＤＰとも１２８ＭＢ（メガバイト）である。メタデータ１５３における「一時フラグ」は、ＤＰが一時データである場合に「１」を示すフラグ（識別子）であり、図５に示す様に、ＤＰ２−１乃至ＤＰ２−３とも、その値は「１」である。「ＤＰを使用するサブタスク」は、そのＤＰを使用するサブタスクを識別する情報であり、ＤＰ２−１乃至ＤＰ２−３を使用するサブタスクは、順に、ＳＴ２−１乃至ＳＴ２−３となる。
【００３９】
図７は、サブタスクとデータパーティションＤＰとについて、入出力関係がＤＡＧ１５２Ａとは異なるＤＡＧ１５２Ｂを例示する図である。図８は、特定部１１が、図７に例示するＤＡＧ１５２Ｂに基づいて生成したメタデータ１５３の構成を例示する図である。
【００４０】
図７に例示するＤＡＧ１５２Ｂでは、サブタスクＳＴ５−１から出力されたＤＰ８−１は、ＳＴ６−１とＳＴ６−２とに入力され、サブタスクＳＴ５−２から出力されたＤＰ８−２は、ＳＴ６−１乃至ＳＴ６−３に入力され、サブタスクＳＴ５−３から出力されたＤＰ８−３は、ＳＴ６−２とＳＴ６−３とに入力される。したがってこの場合、特定部１１は、図８に例示する通り、上述したサブタスクとＤＰに関する入出力関係を表したメタデータ１５３を生成する。
【００４１】
図１に示す実行管理部１４は、特定部１１からの要求を受けて、ユーザプログラム１５１（即ち、ＤＡＧ１５２Ａによって示される処理）を実行するように、アクセラレータ２０を制御する。実行管理部１４は、この際、記憶部１５に記憶されたＤＡＧ１５２Ａに含まれるサブタスクが、アクセラレータ２０によって実行される順序を決定する。実行管理部１４は、ＤＡＧ１５２Ａに含まれるサブタスクの中で、実行可能であるサブタスクの中から、次にアクセラレータ２０によって実行されるサブタスクを選択する。但し、実行可能であるサブタスクとは、ユーザプログラム１５１の実行開始時では、ＤＡＧ１５２Ａの処理の流れにおいて、最も上流に位置するサブタスクとなる。そして、ユーザプログラム１５１の実行が開始された後は、実行可能であるサブタスクは、当該サブタスクよりも上流に位置し、当該サブタスクにＤＰを入力するサブタスクの実行がすべて完了している状態にあるサブタスクとなる。実行管理部１４は、各サブタスクの実行が完了しているか否かを、記憶部１５に記憶された実行状況情報１５４を更新することによって管理している。
【００４２】
実行管理部１４は、選択したサブタスクをアクセラレータ２０に実行させる前に、アクセラレータ２０におけるメモリ２２の使用率を確認する。実行管理部１４は、メモリ２２の使用率（メモリ使用率）が閾値以上である場合、メモリ使用率を下げるために、メモリ２２に記憶されている、先行するサブタスクによって使用されたＤＰのいずれかをホストメモリ１６に退避する。実行管理部１４は、ホストメモリ１６に退避するＤＰを選択する基準として、例えば、最近参照されていないＤＰを選択するＬＲＵ（Least Recently Used）等のポリシを使用可能である。実行管理部１４は、メモリ２２の使用率が閾値未満になるまで、このような、メモリ２２からホストメモリ１６にＤＰを退避する動作を繰り返し行なう。
【００４３】
実行管理部１４は、メモリ２２の使用率が閾値未満になったのち、アクセラレータ２０によって次に実行されるサブタスクが使用するＤＰがメモリ２２に存在しない場合は、そのＤＰを格納可能なメモリ領域を、例えばメタデータ１５３によって示されるＤＰサイズに基づいて、メモリ２２に確保する。実行管理部１４は、アクセラレータ制御装置１０における記憶部１５に記憶されたファイルに含まれるＤＰ、あるいは、ホストメモリ１６に退避されているＤＰを、当該サブタスクが使用するＤＰとしてメモリ２２へロードする。
実行管理部１４は、アクセラレータ２０によって次に実行されるサブタスクが使用するＤＰがメモリ２２に存在する場合は、上述した、アクセラレータ２０によって次に実行されるサブタスクが使用するＤＰを準備する動作を行わなくてもよい。
【００４４】
実行管理部１４は、アクセラレータ２０によって次に実行されるサブタスクが使用するＤＰを準備したのち、アクセラレータ２０に当該サブタスクを実行させる。実行管理部１４は、アクセラレータ２０によるサブタスクの実行が完了したときに、記憶部１５に記憶された実行状況情報１５４を更新する。
【００４５】
図１に示す判定部１２は、アクセラレータ２０によるサブタスクの実行情報を表す実行状況情報１５４と、ＤＡＧ１５２Ａ（あるいはメタデータ１５３）とに基づいて、一時データとして特定されたＤＰについて、当該ＤＰを使用する全てのサブタスクの実行が完了しているか否かを判定する。
【００４６】
判定部１２が行なう動作を、図５乃至図８を参照することによって詳細に説明する。アクセラレータ２０が、図５に例示するＤＡＧ１５２Ａが示す処理を実行する場合において、例えば一時データであるＤＰ２−１を入力とするサブタスクは、図５及び図６に示す通り、ＳＴ２−１のみである。したがって、この場合、判定部１２は、アクセラレータ２０によるサブタスクＳＴ２−１の実行が完了したときに、一時データであるＤＰ２−１を使用する全てのサブタスクの実行が完了したと判定する。
【００４７】
また、アクセラレータ２０が、図７に例示するＤＡＧ１５２Ｂが示す処理を実行する場合において、例えば一時データであるＤＰ８−２を入力とするサブタスクは、図７及び図８に示す通り、ＳＴ６−１乃至ＳＴ６−３である。したがって、この場合、判定部１２は、アクセラレータ２０によるサブタスクＳＴ６−１乃至ＳＴ６−３の実行が全て完了したときに、一時データであるＤＰ８−２を使用する全てのサブタスクの実行が完了したと判定する。
【００４８】
図１に示す削除部１３は、判定部１２が一時データであるＤＰを使用する全てのサブタスクの実行が完了したと判定した場合に、当該ＤＰをアクセラレータ２０におけるメモリ２２から削除する。即ち、削除部１３は、アクセラレータ２０が、図５に例示するＤＡＧ１５２Ａが示す処理を実行する場合において、アクセラレータ２０によるサブタスクＳＴ２−１の実行が完了したときに、一時データであるＤＰ２−１を削除する。削除部１３は、あるいは、アクセラレータ２０が、図７に例示するＤＡＧ１５２Ｂが示す処理を実行する場合において、アクセラレータ２０によるＳＴ６−１乃至ＳＴ６−３の実行が全て完了したときに、一時データであるＤＰ８−２を削除する。
【００４９】
次に図９Ａ及び９Ｂのフローチャートを参照して、本実施形態に係るアクセラレータ制御装置１０の動作（処理）について詳細に説明する。
【００５０】
特定部１１は、ユーザプログラム１５１に基づいてＤＡＧ１５２を生成し、ＤＡＧ１５２に含まれる一時データを特定する（ステップＳ１０１）。特定部１１は、ＤＡＧ１５２が示すタスクをサブタスクに分割し、データＤＤＤをＤＰに分割する（ステップＳ１０２）。特定部１１は、ＤＡＧ１５２を、サブタスク及びＤＰを単位とするＤＡＧ１５２Ａに更新する（ステップＳ１０３）。特定部１１は、ＤＡＧ１５２Ａに基づき、メタデータ１５３を生成し、生成したメタデータ１５３を記憶部１５へ格納する（ステップＳ１０４）。
【００５１】
実行管理部１４は、ＤＡＧ１５２Ａが示す処理を開始するように、アクセラレータ２０を制御する（ステップＳ１０５）。実行管理部１４は、アクセラレータ２０におけるメモリ２２の使用率を確認する（ステップＳ１０６）。
【００５２】
メモリ２２の使用率が閾値以上である場合（ステップＳ１０７でＹｅｓ）、実行管理部１４は、例えばＬＲＵアルゴリズムに従って、メモリ２２に存在するＤＰを、ホストメモリ１６へ退避し（ステップＳ１０８）、処理はステップＳ１０６へ戻る。メモリ２２の使用率が閾値未満である場合（ステップＳ１０７でＮｏ）、実行管理部１４は、実行状況情報１５４を参照することにより、ＤＡＧ１５２Ａにおいて次に実行するサブタスクを選択する（ステップＳ１０９）。
【００５３】
実行管理部１４は、選択したサブタスクの実行に必要なＤＰを準備するとともに、メモリ２２に使用領域を確保する（ステップＳ１１０）。実行管理部１４は、選択したサブタスクを実行するように、アクセラレータ２０を制御する（ステップＳ１１１）。
【００５４】
判定部１２は、一時データであるＤＰのうち、そのＤＰを使用するサブタスクの実行が全て完了しているＤＰがあるか否か確認する（ステップＳ１１２）。ステップＳ１１２に示す条件を満たすＤＰが存在しない場合（ステップＳ１１３でＮｏ）、処理はステップＳ１１５へ進む。ステップＳ１１２に示す条件を満たすＤＰが存在する場合（ステップＳ１１３でＹｅｓ）、削除部１３は、条件を満たすＤＰをメモリ２２から削除する（ステップＳ１１４）。
【００５５】
実行管理部１４は、サブタスクの実行完了を反映するように、実行状況情報１５４を更新する（ステップＳ１１５）。ＤＡＧ１５２Ａに含まれるサブタスクのうち、未実行のサブタスクがある場合（ステップＳ１１６でＮｏ）、処理はステップＳ１０６へ戻る。ＤＡＧ１５２Ａに含まれる全てのサブタスクの実行が完了した場合（ステップＳ１１６でＹｅｓ）、全体の処理は終了する。
【００５６】
本実施形態に係るアクセラレータ制御装置１０は、アクセラレータが処理対象とするデータの大きさが大きい場合において、アクセラレータによる処理性能の低下を回避することができる。その理由は、アクセラレータ制御装置１０は、アクセラレータ２０が備えるメモリ２２に記憶された一時データを、その一時データを使用する処理（タスク）が存在しなくなるのに応じて（例えば存在しなくなった時点で）削除するからである。
【００５７】
以下に、本実施形態に係るアクセラレータ制御装置１０によって実現される効果について、詳細に説明する。
【００５８】
近年、アクセラレータが処理対象とするデータの大きさが、アクセラレータが具備するメモリ容量よりも大きくなるようなケースが、頻繁に発生してきている。このような、メモリ容量よりも大きなデータに対する処理（Out-of-Core処理）では、アクセラレータによる処理性能が低下するという問題がある。即ち、Out-of-Core処理では、アクセラレータは、具備するメモリに保持したデータを、例えばホストコンピュータのメモリに退避しながら処理を進める必要がある。この場合、アクセラレータとホストコンピュータとを接続するＩ／Ｏパスの帯域が狭いことによって、アクセラレータによる処理性能が大きく低下する虞がある。
【００５９】
このような問題に対して、本実施形態に係るアクセラレータ制御装置１０は、特定部１１、判定部１２、及び、削除部１３を備え、例えば、図１乃至図９Ｂを参照して上述する通り動作する。即ち、特定部１１は、アクセラレータ２０が実行するユーザプログラム１５１によって生成されるタスクがタスクに入出力されるデータを処理するフローを表すＤＡＧ１５２において、ユーザプログラム１５１の実行過程において一時的に生成される一時データをデータの中から特定する。判定部１２は、アクセラレータ２０によるタスクに関する実行状況情報１５４とＤＡＧ１５２とに基づいて、一時データの中から特定されたデータを使用する全てのタスクに関して、実行が完了しているか否かを判定する。削除部１３は、特定されたデータを使用する全てのタスクに関して実行が完了している場合に、タスクによる処理によってアクセラレータ２０がアクセス可能なメモリ２２に記憶されている特定されたデータを削除する。
【００６０】
即ち、ＤＡＧ１５２（ＤＡＧ１５２Ａ）に含まれるデータのうち、一時データに関しては、その一時データを使用するタスク（サブタスク）が全て完了した時点で、アクセラレータ２０におけるメモリ２２から削除しても問題は生じない。本実施形態に係るアクセラレータ制御装置１０は、ＤＡＧ１５２に含まれる一時データを特定し、特定された一時データを使用するタスクが全て完了した時点で、その一時データをメモリ２２から削除する。これにより、アクセラレータ制御装置１０は、上述したOut-of-Core処理において、性能低下の要因となる、メモリ２２からホストメモリ１６へデータを退避する処理が発生する頻度を抑制することができる。したがって、本実施形態に係るアクセラレータ制御装置１０は、アクセラレータが処理対象とするデータの大きさが大きい場合において、アクセラレータによる処理性能の低下を回避することができる。
【００６１】
また、本実施形態に係るアクセラレータ制御装置１０は、ＤＡＧ１５２を解析することによって、タスクをサブタスクに分割するとともに、データをサブタスクに入出力される部分データ（ＤＰ）に分割する。そして、アクセラレータ制御装置１０は、サブタスク及びＤＰを単位としたＤＡＧ１５２Ａを生成し、サブタスク及びＤＰを単位として上述した処理を行う。これにより、アクセラレータ制御装置１０は、大規模なプログラムやデータであっても処理できるように、アクセラレータ２０を制御することができる。
【００６２】
また、本実施形態に係るアクセラレータ制御装置１０は、ユーザプログラム１５１において、データが一時データであることを宣言されている場合、あるいは、データに関する記載が存在しない（例えば、等号「＝」によって定義されていない）場合に、データを一時データとして特定する。これにより、本実施形態に係るアクセラレータ制御装置１０は、一時データを確実に特定することができる。
【００６３】
また、本実施形態に係るアクセラレータ制御装置１０は、アクセラレータ２０が備えるメモリの使用率が閾値以上である場合、使用率が閾値未満になるまで、アクセラレータ２０が備えるメモリに記憶されているデータ（ＤＰ）を自装置に退避するように、例えばＬＲＵアルゴリズムに従って、アクセラレータ２０を制御する。これにより、本実施形態に係るアクセラレータ制御装置１０は、アクセラレータ２０においてメモリ不足等が発生することを回避できるので、アクセラレータ２０による処理を確実に進めることができる。
【００６４】
尚、本実施形態に係るアクセラレータ制御装置１０は、ユーザプログラム１５１によって生成されるタスクと、タスクに入出力されるデータと、の関係を表す処理フロー情報としてＤＡＧ（有向非巡回グラフ）を使用しているが、使用する処理フロー情報はＤＡＧに限定されない。アクセラレータ制御装置１０は、ＤＡＧとは異なる形式（仕様）の処理フロー情報を使用してもよい。
【００６５】
また、上述した本実施形態では、ＤＡＧ１５２は、特定部１１によって生成されるが、ＤＡＧ１５２は、外部からアクセラレータ制御装置１０に対して与えられてもよい。
【００６６】
＜第２の実施形態＞
図１０は、本願発明の第２の実施形態に係るアクセラレータ制御装置３０の構成を概念的に示すブロック図である。
【００６７】
本実施形態に係るアクセラレータ制御装置３０は、特定部３１、判定部３２、及び、削除部３３を備えている。
【００６８】
特定部３１は、アクセラレータ４０が実行するプログラム３５１によって生成されるタスクがそのタスクに入出力されるデータを処理するフローを表す処理フロー情報３５２において、プログラム３５１の実行過程において一時的に生成される一時データをデータの中から特定する。
【００６９】
判定部３２は、アクセラレータ４０によるタスクの実行状況３５４と処理フロー情報３５２とに基づいて、一時データの中から特定されたデータを使用する全てのタスクに関して、実行が完了しているか否かを判定する。
【００７０】
削除部３３は、特定されたデータを使用する全てのタスクに関して実行が完了している場合に、タスクによる処理によってアクセラレータ４０がアクセス可能なメモリ４２に記憶されている特定されたデータを削除する。
【００７１】
本実施形態に係るアクセラレータ制御装置３０は、アクセラレータが処理対象とするデータの大きさが大きい場合において、アクセラレータによる処理性能の低下を回避することができる。その理由は、アクセラレータ制御装置３０は、アクセラレータ４０がアクセス可能なメモリ４２に記憶された一時データを、その一時データを使用する処理（タスク）が存在しなくなるのに応じて（例えば存在しなくなった時点で）削除するからである。
【００７２】
＜ハードウェア構成例＞
上述した各実施形態において、図１に示したアクセラレータ制御装置１０、及び、図１０に示したアクセラレータ制御装置３０における各部は、専用のＨＷ（ＨａｒｄＷａｒｅ）（電子回路）によって実現することができる。また、図１、及び、図１０において、少なくとも、下記構成は、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。
・特定部１１、及び３１、
・判定部１２、及び３２、
・削除部１３、及び３３、
・実行管理部１４、
・記憶部１５における記憶制御機能。
【００７３】
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図１１を参照して説明する。
【００７４】
図１１は、本願発明の各実施形態に係るアクセラレータ制御装置１０、及び、アクセラレータ制御装置３０を実行可能な情報処理装置９００（コンピュータ）の構成を例示的に説明する図である。即ち、図１１は、図１、及び、図１０に示したアクセラレータ制御装置１０、及び、アクセラレータ制御装置３０、或いはその一部を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。図１１に示した情報処理装置９００は、構成要素として下記を備えている。
・ＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ）９０１、
・ＲＯＭ（Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）９０２、
・ＲＡＭ（Ｒａｎｄｏｍ＿Ａｃｃｅｓｓ＿Ｍｅｍｏｒｙ）９０３、
・ハードディスク（記憶装置）９０４、
・無線送受信部等の外部装置との通信インタフェース９０５、
・バス９０６（通信線）、
・ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ＿Ｒｅａｄ＿Ｏｎｌｙ＿Ｍｅｍｏｒｙ）等の記録媒体９０７に格納されたデータを読み書き可能なリーダライタ９０８、
・入出力インタフェース９０９。
【００７５】
即ち、上記構成要素を備える情報処理装置９００は、これらの構成がバス９０６を介して接続された一般的なコンピュータである。情報処理装置９００は、ＣＰＵ９０１を複数備える場合もあれば、マルチコアにより構成されたＣＰＵ９０１を備える場合もある。情報処理装置９００は、あるいは、複数の処理を並列に実行できるように、メインとなる汎用ＣＰＵと特定の演算処理に特化されたハードウェアアクセラレータとが協業する構成を備えてもよい。
【００７６】
そして、上述した実施形態を例に説明した本願発明は、図１１に示した情報処理装置９００に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図（図１、及び、図１０）における上述した構成、或いはフローチャート（図９Ａ及び９Ｂ）の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ９０１に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ（ＲＡＭ９０３）、または、ＲＯＭ９０２やハードディスク９０４等の不揮発性の記憶デバイスに格納すれば良い。
【００７７】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、ＣＤ−ＲＯＭ等の各種記録媒体９０７を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体９０７によって構成されると捉えることができる。
【００７８】
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【００７９】
この出願は、２０１７年６月１３日に出願された日本出願特願２０１７−１１５８６２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００８０】
１０    アクセラレータ制御装置
１１    特定部
１２    判定部
１３    削除部
１４    実行管理部
１５    記憶部
１５１    ユーザプログラム
１５２    ＤＡＧ
１５２Ａ    ＤＡＧ
１５２Ｂ    ＤＡＧ
１５３    メタデータ
１５４    実行状況情報
１６    ホストメモリ
２０    アクセラレータ
２１    プロセッサ
２２    メモリ
３０    アクセラレータ制御装置
３１    特定部
３２    判定部
３３    削除部
３５１    プログラム
３５２    処理フロー情報
３５４    実行状況
４０    アクセラレータ
４２    メモリ
９００    情報処理装置
９０１    ＣＰＵ
９０２    ＲＯＭ
９０３    ＲＡＭ
９０４    ハードディスク（記憶装置）
９０５    通信インタフェース
９０６    バス
９０７    記録媒体
９０８    リーダライタ
９０９    入出力インタフェース
【図１】
2018230444.tif 000003
【図２】
2018230444.tif 000004
【図３】
2018230444.tif 000005
【図４】
2018230444.tif 000006
【図５】
2018230444.tif 000007
【図６】
2018230444.tif 000008
【図７】
2018230444.tif 000009
【図８】
2018230444.tif 000010
【図９Ａ】
2018230444.tif 000011
【図９Ｂ】
2018230444.tif 000012
【図１０】
2018230444.tif 000013
【図１１】
2018230444.tif 000014
【手続補正書】
【提出日】令和1年11月25日(2019.11.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定する特定手段と、
前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定する判定手段と、
前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する削除手段と、
を備えるアクセラレータ制御装置。
【請求項２】
前記特定手段は、前記処理フロー情報を解析することによって、前記タスクをサブタスクに分割し、前記データを前記サブタスクに入出力される部分データに分割したのち、前記サブタスク及び前記部分データを含む前記処理フロー情報を生成するとともに、前記一時データを前記部分データの中から特定し、
前記判定手段は、前記一時データの中から特定された部分データを使用する全ての前記サブタスクに関して、実行が完了しているか否かを判定し、
前記削除手段は、前記特定された部分データを使用する全ての前記サブタスクに関して実行が完了している場合に、前記サブタスクによる処理によって前記メモリに記憶されている前記特定された部分データを削除する、
請求項１に記載のアクセラレータ制御装置。
【請求項３】
前記部分データの特性を表すメタデータを記憶する記憶手段をさらに備え、
前記特定手段は、前記部分データと、前記部分データが前記一時データであることを示す識別子と、前記部分データを使用する前記サブタスクと、前記部分データの大きさとを関連付けることによって前記メタデータを生成し、生成した前記メタデータを前記記憶手段へ格納する、
請求項２に記載のアクセラレータ制御装置。
【請求項４】
前記アクセラレータによる前記サブタスクの実行状況と前記処理フロー情報とに基づいて、前記サブタスクを順番に実行するように前記アクセラレータを制御する際に、前記メタデータが示す、前記サブタスクが使用する前記部分データの大きさに基づいて、前記メモリにおいて、前記サブタスクによる使用領域を確保する実行管理手段をさらに備える、  請求項３に記載のアクセラレータ制御装置。
【請求項５】
前記実行管理手段は、前記メモリの使用率が閾値以上である場合、前記使用率が閾値未満になるまで、前記メモリに記憶されている前記部分データを自装置に退避するように、前記アクセラレータを制御する、
請求項４に記載のアクセラレータ制御装置。
【請求項６】
前記実行管理手段は、ＬＲＵ（Least Recently Used）アルゴリズムに従って、自装置に退避する前記部分データを選択する、
請求項５に記載のアクセラレータ制御装置。
【請求項７】
前記特定手段は、前記プログラムにおいて、前記データが前記一時データであることを宣言されている場合、あるいは、前記データに関する記載が存在しない場合に、前記データを前記一時データとして特定する、
請求項１乃至６のいずれか一項に記載のアクセラレータ制御装置。
【請求項８】
前記特定手段は、有向非巡回グラフによって表される前記処理フロー情報を生成する、  請求項１乃至７のいずれか一項に記載のアクセラレータ制御装置。
【請求項９】
情報処理装置によって、
アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定し、
前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定し、
前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する、
アクセラレータ制御方法。
【請求項１０】
アクセラレータが実行するプログラムによって生成されるタスクが前記タスクに入出力されるデータを処理するフローを表す処理フロー情報において、前記プログラムの実行過程において一時的に生成される一時データを前記データの中から特定する特定処理と、
前記アクセラレータによる前記タスクの実行状況と前記処理フロー情報とに基づいて、前記一時データの中から特定されたデータを使用する全ての前記タスクに関して、実行が完了しているか否かを判定する判定処理と、
前記特定されたデータを使用する全ての前記タスクに関して実行が完了している場合に、前記タスクによる処理によって前記アクセラレータがアクセス可能なメモリに記憶されている前記特定されたデータを削除する削除処理と、
をコンピュータに実行させるためのアクセラレータ制御プログラム。
【国際調査報告】
2018230444.tif 000015
2018230444.tif 000016
2018230444.tif 000017