JP2019021070A - 情報処理装置、情報処理方法、及びプログラム - Google Patents

情報処理装置、情報処理方法、及びプログラム Download PDF

Info

Publication number
JP2019021070A
JP2019021070A JP2017139449A JP2017139449A JP2019021070A JP 2019021070 A JP2019021070 A JP 2019021070A JP 2017139449 A JP2017139449 A JP 2017139449A JP 2017139449 A JP2017139449 A JP 2017139449A JP 2019021070 A JP2019021070 A JP 2019021070A
Authority
JP
Japan
Prior art keywords
monitoring
processing
virtual address
data
unit
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
Application number
JP2017139449A
Other languages
English (en)
Other versions
JP7003470B2 (ja
Inventor
アミル ハデルバシュ
Haderbache Amir
アミル ハデルバシュ
サショ スタノヴニク
Stanovnik Saso
サショ スタノヴニク
真弘 三輪
Masahiro Miwa
真弘 三輪
耕太 中島
Kota Nakajima
耕太 中島
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 JP2017139449A priority Critical patent/JP7003470B2/ja
Priority to US16/035,118 priority patent/US10649814B2/en
Publication of JP2019021070A publication Critical patent/JP2019021070A/ja
Application granted granted Critical
Publication of JP7003470B2 publication Critical patent/JP7003470B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Abstract

【課題】仮想アドレス空間を介して処理対象データにアクセスする処理の進捗状況に応じて、処理対象データに関する制御を行う。
【解決手段】記憶部711は、処理対象データの仮想アドレス空間を示す情報を記憶する。処理部712は、仮想アドレス空間を介して処理対象データに対する所定の処理を行う。監視部713は、仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対する、処理部712からのアクセスを監視する。制御部714は、複数の監視領域のうち、監視部713がアクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う。
【選択図】図7

Description

本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
近年、大量のデータを処理する深層学習を高速化するために、分散並列計算を利用することが試みられている。分散並列計算を利用した分散深層学習において、トレーニングデータを記憶するために、Lustre(登録商標)のような高性能計算(High-Performance Computing,HPC)並列ファイルシステムを用いることができる。
メモリ管理におけるパフォーマンスを向上させる自己調節型のメモリ管理システムも知られている(例えば、特許文献1を参照)。
特開2004−133934号公報
HPC並列ファイルシステムでは、複数のデータノードが深層学習のトレーニングデータを分散して記憶し、深層学習を並列に実行する複数の計算ノードの間で、容易にトレーニングデータを共有することができる。トレーニングデータは、メモリマップドファイルとして各計算ノードからアクセスすることが可能である。HPC並列ファイルシステムではより多くのデータを処理することができるため、計算ノードの処理性能に合わせてデータを供給することが望ましい。
しかし、計算ノードが通信ネットワークを介してデータノードにアクセスする場合、ディスクアクセス及びデータ転送に伴うレイテンシが発生し、次のトレーニングデータが到着するまで深層学習の実行が待たされる。したがって、このようなレイテンシが深層学習のボトルネックになり得る。そこで、各計算ノードにおける深層学習の進捗状況に応じて、遅滞なくデータノードからトレーニングデータを供給することが望ましい。
なお、かかる問題は、分散深層学習に限らず、メモリマッピングを用いて処理対象データにアクセスする他の処理においても生ずるものである。また、かかる問題は、データ処理を行う計算ノードに処理対象データを供給する制御に限らず、処理対象データに関する他の制御を行う場合においても生ずるものである。
1つの側面において、本発明は、仮想アドレス空間を介して処理対象データにアクセスする処理の進捗状況に応じて、処理対象データに関する制御を行うことを目的とする。
1つの案では、情報処理装置は、記憶部、処理部、監視部、及び制御部を含む。記憶部は、処理対象データの仮想アドレス空間を示す情報を記憶する。処理部は、仮想アドレス空間を介して処理対象データに対する所定の処理を行う。監視部は、仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対する、処理部からのアクセスを監視する。制御部は、複数の監視領域のうち、監視部がアクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う。
1つの実施形態によれば、仮想アドレス空間を介して処理対象データにアクセスする処理の進捗状況に応じて、処理対象データに関する制御を行うことができる。
HPC並列ファイルシステムの構成図である。 分散ファイルシステムの構成図である。 キャッシュを設けたHPC並列ファイルシステムの構成図である。 LMDBデータファイルを示す図である。 アクセス位置を示す図である。 仮想アドレス空間を示す図である。 情報処理装置の機能的構成図である。 制御処理のフローチャートである。 情報処理システムの構成図である。 計算ノードの機能的構成図である。 データノードの機能的構成図である。 分散深層学習における制御処理を示す図である。 分散深層学習における制御処理のフローチャートである。 パラメータを示す図である。 メモリマップドアドレスの第1の状態を示す図である。 メモリマップドアドレスの第2の状態を示す図である。 メモリマップドアドレスの第3の状態を示す図である。 メモリマップドアドレスの第4の状態を示す図である。 メモリマップドアドレスの第5の状態を示す図である。 メモリマップドアドレスの第6の状態を示す図である。 メモリマップドアドレスの第7の状態を示す図である。 メモリマップドアドレスの第8の状態を示す図である。 メモリマップドアドレスの第9の状態を示す図である。 メモリマップドアドレスの第10の状態を示す図である。 メモリマップドアドレスの第11の状態を示す図である。 メモリマップドアドレスの第12の状態を示す図である。 メモリマップドアドレスの第13の状態を示す図である。 メモリマップドアドレスの第14の状態を示す図である。 メモリマップドアドレスの第15の状態を示す図である。 メモリマップドアドレスの第16の状態を示す図である。 メモリマップドアドレスの第17の状態を示す図である。 実験で用いたHPC並列ファイルシステムの構成図である。 計算ノード及びOSSの構成図である。 分散深層学習の実行結果を示す図である。 実行結果を拡大した拡大図である。 プリフェッチを起動しない場合の実行結果を示す図である。 プロセス間通信を示す図である。 プロセス間通信における制御処理のフローチャートである。 メモリアクセスプロファイリングにおける制御処理のフローチャートである。 情報処理装置のハードウェア構成図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
図1は、HPC並列ファイルシステムの構成例を示している。図1のHPC並列ファイルシステムは、計算ノード101−1〜計算ノード101−3及びデータノード102−1〜データノード102−3を含み、これらのノードは、通信ネットワーク104によって互いに接続されている。各データノード102−i(i=1〜3)は、記憶装置103−iを有する。計算ノード及びデータノードの個数は、4個以上であってもよい。
図1の構成では、深層学習における大量の処理対象データが複数のデータノード102−iに分散して格納され、複数の計算ノード101−iが処理対象データを共有することができる。しかし、各計算ノード101−iは、通信ネットワーク104を介してデータノード102−iからデータを取得するため、データ転送に伴うレイテンシが発生する。
図2は、Hadoop(登録商標)のアプローチによって計算ノードとデータノードを統合した分散ファイルシステムの構成例を示している。図1の分散ファイルシステムは、ノード201−1〜ノード201−3を含み、これらのノードは、通信ネットワーク203によって互いに接続されている。各ノード201−i(i=1〜3)は、記憶装置202−iを有する。ノードの個数は、4個以上であってもよい。
図2の構成では、処理対象データが複数のノード201−iに分散して格納されるとともに、各ノード201−iが有するデータのレプリカが他のノード201−iに格納される。各ノード201−iは、自ノードの記憶装置202−iから直接データを取得して処理を行うことができるため、スループットが向上する。しかし、データが各ノード201−iに局在しているため、必ずしもHPCには適していない。
深層学習のような大量のデータを処理するアプリケーションをHPC並列ファイルシステムにより実行するためには、データ転送に伴うレイテンシを削減することが望ましい。そのためには、各計算ノードにキャッシュを設けて、データノードが有するデータを一時的に記憶することが有効である。
図3は、計算ノードにキャッシュを設けたHPC並列ファイルシステムの構成例を示している。図3のHPC並列ファイルシステムは、図1の各計算ノード101−iにキャッシュ301−iを設けた構成を有する。キャッシュ301−iは、計算ノード101−iが処理に用いるデータの複製を一時的に記憶する。計算ノード101−iは、データノード102−iの代わりにキャッシュ301−iにアクセスすることで、データアクセスを高速化することができる。
例えば、計算ノード101−iは、分散深層学習のためのアプリケーションであるMessage Passing Interface-Caffe(MPI−Caffe)を実行することで、深層学習を行うことができる。この場合、データノード102−iは、Lustre(登録商標) Object Storage Server(OSS)を搭載していてもよく、キャッシュ301−iは、Lustre(登録商標)クライアントキャッシュであってもよい。また、記憶装置103−iは、Lightning Memory-Mapped Database(LMDB)であってもよい。LMDBは、キー・バリュー・ストア(Key-Value Store,KVS)の一例である。
図4は、LMDBデータファイルの例を示している。図4のLMDBデータファイルは、プロセス1〜プロセス3がそれぞれ処理するデータ401〜データ403を含み、矢印411が示すように、プロセス1〜プロセス3によって連続的にアクセスされる。
図5は、図4のLMDBデータファイルにおけるアクセス位置の例を示している。データ401に対するプロセス1の現在のアクセス位置が位置501である場合、プロセス1が次にアクセスするデータは、範囲502のデータである。したがって、データアクセスパターンが連続アクセスである場合、位置501を検出することができれば、次のアクセス対象データを予測して、そのデータをデータノードから計算ノードのキャッシュにプリフェッチすることができる。
図6は、LMDBデータファイルの仮想アドレス空間の例を示している。LMDBデータファイルのデータ603は、いずれかの計算ノード上で動作するプロセスが処理するデータに対応し、いずれかのデータノードの記憶装置に格納されている。
メモリ602は、プロセスが動作している計算ノードのメモリに対応し、ページング方式のメモリマッピングの場合、データ603をページ毎に記憶することができる。メモリ602のページ612−1〜ページ612−6のうち、ページ612−1、ページ612−5、及びページ612−6には、データノードから転送されたデータの複製が格納されている。一方、ページ612−2〜ページ612−4には、データの複製が格納されていない。
仮想アドレス空間601は、プロセスがデータアクセスに用いる仮想アドレスの集合であり、領域604は、メモリマップドファイルの仮想アドレスを含む。領域604内の領域611−1〜領域611−6は、ページ612−1〜ページ612−6にそれぞれ対応する。
計算ノードは、プロセスから出力されるアクセス対象の仮想アドレスを、メモリ602の物理アドレスに変換することで、仮想アドレス空間601を介してデータ603にアクセスする。例えば、アクセス対象の仮想アドレスがデータを含むページ612−5に対応する場合、プロセスは、ページ612−5内のデータに直接アクセスすることができる。
一方、アクセス対象の仮想アドレスがデータを含まないページ612−2に対応する場合、ページフォルトが発生する。そして、計算ノードは、対応するデータを記憶するデータノードに対してデータ転送要求を送信し、データノードから受信したデータをページ612−2に格納し、プロセスは、ページ612−2内のデータにアクセスする。
このように、ページング方式のメモリマッピングにおいては、仮想アドレス空間内の各仮想アドレスがメモリ内の各物理アドレスに対応している。したがって、LMDBデータファイルにおけるアクセス位置を検出することは、仮想アドレス空間におけるアクセスアドレスを検出することと等価である。
図7は、実施形態の情報処理装置の機能的構成例を示している。図7の情報処理装置701は、記憶部711、処理部712、監視部713、及び制御部714を含む。記憶部711は、処理対象データの仮想アドレス空間を示す情報を記憶する。処理部712、監視部713、及び制御部714は、仮想アドレス空間を利用した処理を行う。
図8は、図7の情報処理装置701が行う制御処理の例を示すフローチャートである。まず、処理部712は、仮想アドレス空間を介して処理対象データに対する所定の処理を行う(ステップ801)。次に、監視部713は、仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対する、処理部712からのアクセスを監視する(ステップ802)。そして、制御部714は、複数の監視領域のうち、監視部713がアクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う(ステップ803)。
図7の情報処理装置701によれば、仮想アドレス空間を介して処理対象データにアクセスする処理の進捗状況に応じて、処理対象データに関する制御を行うことができる。
図9は、図7の情報処理装置701を含む情報処理システムの構成例を示している。図9の情報処理システムは、例えば、分散深層学習を行うHPC並列ファイルシステムであり、計算ノード901−1〜計算ノード901−N(Nは2以上の整数)とデータノード902−1〜データノード902−M(Mは2以上の整数)を含む。これらのノードは、通信ネットワーク903によって互いに接続されている。
データノード902−1〜データノード902−Mは、処理対象データを分散して記憶し、計算ノード901−i(i=1〜N)からのデータ転送要求に応じて、要求された部分データを計算ノード901−iへ転送する。計算ノード901−1〜計算ノード901−Nは、データノード902−1〜データノード902−Mから転送される部分データを用いて、並列にデータ処理を行う。
図10は、図9の計算ノード901−i(i=1〜N)の機能的構成例を示している。図10の計算ノード901−iは、記憶部1001−i、処理部1002−i、監視部1003−i、及び制御部1004−iを含む。計算ノード901−iは、図7の情報処理装置701に対応し、記憶部1001−i、処理部1002−i、監視部1003−i、及び制御部1004−iは、記憶部711、処理部712、監視部713、及び制御部714にそれぞれ対応する。
図11は、図9のデータノード902−j(j=1〜M)の機能的構成例を示している。図11のデータノード902−jは、ストレージ装置であり、記憶部1101−j及び制御部1102−jを含む。記憶部1101−jは、処理対象データのうち、データノード902−jに割り当てられた一部のデータを記憶し、制御部1102−jは、計算ノード901−iからのデータ転送要求に応じて部分データを計算ノード901−iへ転送する制御を行う。記憶部1101−jは、LMDBのようなKVSであってもよく、リレーショナル・データベース(Relational Database,RDB)であってもよい。
各計算ノード901−iの記憶部1001−iは、キャッシュとして動作し、データノード902−jから転送される部分データを記憶するとともに、処理対象データの仮想アドレス空間を示す情報を記憶する。記憶部1001−iが記憶する部分データは、仮想アドレス空間に含まれる複数の領域のうち、一部の領域の仮想アドレスに対応する。処理部1002−iは、仮想アドレス空間を介して処理対象データにアクセスし、処理対象データを用いて深層学習を行う。
監視部1003−iは、仮想アドレス空間内に複数の監視領域を設定し、それらの監視領域に対する処理部1002−iからのアクセスを監視し、アクセスを検出した監視領域の仮想アドレスを制御部1004−iへ出力する。制御部1004−iは、監視部1003−iが出力する仮想アドレスに基づいて、データノード902−jから部分データをプリフェッチし、記憶部1001−iに格納する。
このとき、制御部1004−iは、監視部1003−iが出力する仮想アドレスに基づいて、処理部1002−iがアクセスする仮想アドレスのアドレス範囲を予測する。そして、制御部1004−iは、予測したアドレス範囲の部分データを記憶するデータノード902−jに対して、データ転送要求を送信し、そのデータノード902−jから受信した部分データを記憶部1001−iに格納する。
図12は、図9の各計算ノード901−iが行う分散深層学習における制御処理の例を示している。深層学習プロセス1201は、処理部1002−iが生成するプロセスであり、シグナルハンドラ1205は、監視部1003−iが生成するプロセスであり、入出力プロセス1206は、制御部1004−iが生成するプロセスである。
LMDBデータファイル1203は、深層学習のためのトレーニングデータ(処理対象データ)を含むファイルである。トレーニングデータは、画像、音声、又はテキストであってもよい。例えば、深層学習プロセス1201が画像認識のための深層学習を行う場合、LMDBデータファイル1203は複数の画像を含む。
メモリマップドアドレス1202は、LMDBデータファイル1203の仮想アドレス空間を示す情報である。この場合、LMDBデータファイル1203の各ページが、メモリマップドアドレス1202に含まれる各領域に対応し、メモリマップドアドレス1202の各領域は、各ページに対応する範囲の仮想アドレスを含む。
まず、監視部1003−iは、メモリマップドアドレス1202に含まれる複数の領域のうち、一部の領域を保護する(手順1211)。これにより、保護された領域が監視領域として設定され、その監視領域に対応するページが保護される。例えば、監視部1003−iは、mprotectのようなシステムコールを用いて、メモリマップドアドレス1202内の領域に対するアクセスを禁止することで、その領域を保護することができる。図12の例では、メモリマップドアドレス1202内の斜線で示された領域が監視領域に対応し、これらの監視領域は、互いに隣接しない位置に設定されている。
次に、深層学習プロセス1201は、メモリマップドアドレス1202内の複数の領域に対して所定の順序でアクセスすることで、LMDBデータファイル1203にアクセスし、アクセスしたデータを用いて深層学習を行う(手順1212)。
深層学習プロセス1201が監視領域の仮想アドレスにアクセスした場合、保護されている領域に対するアクセス(フォルト)を示す制御信号1204が発生する(手順1213)。例えば、制御信号1204として、Signal Segmentation Violation(SIGSEGV)信号を用いることができる。制御信号1204が発生した場合、シグナルハンドラ1205は、深層学習プロセス1201の処理を中断させる(手順1214)。
シグナルハンドラ1205は、制御信号1204を検出し(手順1215)、制御信号1204に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域に対する保護を解除する(手順1216)。そして、シグナルハンドラ1205は、保護を解除した監視領域の仮想アドレスを制御部1004−iへ出力し、入出力プロセス1206を呼び出す(手順1217)。
入出力プロセス1206は、LMDBデータファイル1203のうち、深層学習プロセス1201が次にアクセスするアドレス範囲の部分データを、対応するデータノード902−jからプリフェッチする(手順1218)。そして、シグナルハンドラ1205は、深層学習プロセス1201の処理を再開させる(手順1219)。これにより、深層学習プロセス1201は、保護が解除された監視領域に対応するページにアクセスして、深層学習を継続することができる。
なお、制御信号1204は、深層学習プロセス1201がいずれかの監視領域にアクセスした場合だけでなく、入出力プロセス1206がプリフェッチのためにいずれかの監視領域にアクセスした場合にも発生する。
図12の制御処理において、SIGSEGV信号の代わりに、カーネルレベルのページフォルト信号を、制御信号1204として用いることも可能である。この場合、シグナルハンドラ1205の代わりに、カーネルレベルの例外ハンドラが用いられ、手順1215において、例外ハンドラが例外の発生を検出する。
図13は、分散深層学習における制御処理の具体例を示すフローチャートである。まず、処理部1002−iは、深層学習プロセス1201を起動し、監視部1003−iは、深層学習プロセス1201のプログラムに監視処理のための付加コードを注入する(ステップ1301)。例えば、監視部1003−iは、LD_PRELOADのような環境変数を用いて、深層学習プロセス1201のプログラムに付加コードを注入することができる。この付加コードには、シグナルハンドラ1205を生成するコードも含まれる。
次に、監視部1003−iは、ステップ1302、ステップ1303、ステップ1321、ステップ1323〜ステップ1326、及びステップ1331〜ステップ1333の処理を行う。このうち、ステップ1321、ステップ1323〜ステップ1326、及びステップ1331〜ステップ1333の処理は、注入された付加コードに基づいて実行される。
処理部1002−iは、深層学習プロセス1201を用いてステップ1322の処理を行い、制御部1004−iは、ステップ1304〜ステップ1308及びステップ1311〜ステップ1313の処理を行う。このうち、ステップ1311〜ステップ1313の処理は、入出力プロセス1206を用いて実行される。
監視部1003−iは、付加コードに基づいて、監視領域を保護するための子プロセスを生成し(ステップ1321)、生成された子プロセスは、監視領域の位置を示す位置情報を待ち合わせる(ステップ1331)。子プロセスは、監視部1003−iから位置情報を受信したか否かをチェックし(ステップ1332)、位置情報を受信していない場合(ステップ1332,NO)、ステップ1331及びステップ1332の処理を繰り返す。
監視部1003−iは、メモリマップドアドレス1202内に監視領域を設定し(ステップ1302)、設定した監視領域の位置を示す位置情報を子プロセスへ転送する(ステップ1303)。子プロセスは、位置情報を受信した場合(ステップ1332,YES)、受信した位置情報が示しているすべての監視領域を保護する(ステップ1333)。
次に、制御部1004−iは、入出力プロセス1206を生成し(ステップ1304)、入出力プロセス1206は、プリフェッチ指示を待ち合わせる(ステップ1311)。入出力プロセス1206は、制御部1004−iからプリフェッチ指示を受信したか否かをチェックし(ステップ1312)、プリフェッチ指示を受信していない場合(ステップ1312,NO)、ステップ1311及びステップ1312の処理を繰り返す。
制御部1004−iは、シグナルハンドラ1205からの保護解除通知を待ち合わせる(ステップ1305)。制御部1004−iは、シグナルハンドラ1205から保護解除通知を受信したか否かをチェックし(ステップ1306)、保護解除通知を受信していない場合(ステップ1306,NO)、ステップ1305及びステップ1306の処理を繰り返す。
深層学習プロセス1201は、LMDBデータファイル1203にアクセスし、アクセスしたデータを用いて深層学習を行う(ステップ1322)。シグナルハンドラ1205は、フォルトを示す制御信号1204が発生したか否かをチェックする(ステップ1323)。制御信号1204が発生していない場合(ステップ1323,NO)、深層学習プロセス1201は、ステップ1322の処理を継続する。
一方、制御信号1204が発生した場合(ステップ1323,YES)、シグナルハンドラ1205は、深層学習プロセス1201の処理を中断させる(ステップ1324)。そして、シグナルハンドラ1205は、制御信号1204に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域に対する保護を解除するとともに、過去に保護を解除した監視領域を再度保護する。このとき、シグナルハンドラ1205は、制御信号1204が発生した時刻を記録しておくことで、記録した時刻に基づいてメモリアクセス速度を計算することができる。
次に、シグナルハンドラ1205は、保護を解除した監視領域の仮想アドレスを含む保護解除通知を制御部1004−iへ転送し(ステップ1325)、深層学習プロセス1201の処理を再開させる(ステップ1326)。そして、深層学習プロセス1201及びシグナルハンドラ1205は、ステップ1322以降の処理を繰り返す。
制御部1004−iは、保護解除通知を受信した場合(ステップ1306,YES)、受信した保護解除通知に含まれる仮想アドレスに基づいて、プリフェッチを起動するか否かを判定する(ステップ1307)。
例えば、保護解除通知に含まれる仮想アドレスが最初の監視領域に対応する場合、制御部1004−iは、プリフェッチを起動する。また、保護解除通知に含まれる仮想アドレスが、既に起動されているプリフェッチ動作のアドレス範囲に含まれており、かつ、所定の閾値に対応する仮想アドレスに達していない場合、制御部1004−iは、新たなプリフェッチを起動しない。一方、保護解除通知に含まれる仮想アドレスがその閾値に対応する仮想アドレスに達している場合、制御部1004−iは、新たなプリフェッチを起動する。
プリフェッチを起動しない場合(ステップ1307,NO)、制御部1004−iは、ステップ1305以降の処理を繰り返す。一方、プリフェッチを起動する場合(ステップ1307,YES)、制御部1004−iは、保護解除通知に含まれる仮想アドレスに基づいて、深層学習プロセス1201が次にアクセスする仮想アドレスのアドレス範囲を予測する(ステップ1308)。そして、制御部1004−iは、予測したアドレス範囲の部分データのプリフェッチを起動するプリフェッチ指示を、入出力プロセス1206へ転送し、ステップ1305以降の処理を繰り返す。
入出力プロセス1206は、プリフェッチ指示を受信した場合(ステップ1312,YES)、プリフェッチ指示が示すアドレス範囲の部分データを、対応するデータノード902−jからプリフェッチする(ステップ1313)。そして、入出力プロセス1206は、プリフェッチした部分データを記憶部1001−iに格納して、ステップ1311以降の処理を繰り返す。
図13の制御処理によれば、各計算ノードにおける深層学習の進捗状況に応じて、次に処理されるトレーニングデータをデータノードからプリフェッチすることが可能になる。これにより、計算ノードとデータノードとの間のデータ転送に伴うレイテンシが削減され、分散深層学習が高速化される。
次に、図14乃至図31を参照しながら、図13の制御処理に基づくプリフェッチの例について説明する。
図14は、制御処理で用いられるパラメータの例を示している。メモリマップドアドレス1202内の複数のチェックポイントCPは、監視領域の位置を示す位置情報に対応する仮想アドレスであり、距離Dは、隣接する2つのチェックポイントCPの間隔を表す。また、開始アドレスSA及び終了アドレスEAは、LMDBデータファイル1203内の処理対象データの範囲Rを示す仮想アドレスである。この例では、深層学習プロセス1201は、開始アドレスSAから終了アドレスEAに向かって、連続的にデータにアクセスする。
距離D1は、開始アドレスSAから、最初のプリフェッチが起動される仮想アドレスまでの間隔を表す。したがって、距離D1の範囲のデータに対するプリフェッチは行われない。
サイズSは、1回のプリフェッチ動作でデータノード902−jから連続的に転送されるプリフェッチ対象データのサイズを表す。閾値THは、プリフェッチ中に新たなプリフェッチを起動するか否かを判定するためのデータ量の閾値である。複数のチェックポイントCPのうち、位置1401〜位置1403に設定されたチェックポイントCPは、新たなプリフェッチを起動するトリガとなり、それ以外のチェックポイントCPはトリガとはならない。
図15は、メモリマップドアドレス1202の第1の状態を示している。第1の状態においては、未だチェックポイントCPは設定されていない。ページサイズPSは、記憶部1001−i内における各ページのデータ量を表す。
図16は、メモリマップドアドレス1202の第2の状態を示している。第2の状態において、監視部1003−iは、ページサイズPSよりも大きなデータ量に対応する距離Dを、チェックポイントCP間の間隔として用いて、複数のチェックポイントCPを設定する。
図17は、メモリマップドアドレス1202の第3の状態を示している。第3の状態において、監視部1003−iによって生成された子プロセスは、斜線で示すように、各チェックポイントCPを含むページに対応する監視領域を保護する。
図18は、メモリマップドアドレス1202の第4の状態を示している。第4の状態において、深層学習プロセス1201は、開始アドレスSAにアクセスして、範囲Rの処理対象データに対する深層学習を開始する。ポインタP1は、深層学習プロセス1201が現在アクセスしている仮想アドレスを表す。
図19は、メモリマップドアドレス1202の第5の状態を示している。第5の状態において、ポインタP1は、開始アドレスSAから距離D1の範囲に存在し、この範囲は監視領域に該当しないため、制御信号1204は発生しない。
図20は、メモリマップドアドレス1202の第6の状態を示している。第6の状態において、ポインタP1が最初の監視領域に到達したため、制御信号1204が発生する。そこで、シグナルハンドラ1205は、深層学習プロセス1201の処理を中断させて、現在時刻を時刻t1として記録する。
図21は、メモリマップドアドレス1202の第7の状態を示している。第7の状態において、シグナルハンドラ1205は、制御信号1204に基づいて、ポインタP1が到達した監視領域を特定し、特定した監視領域に対する保護を解除する。図21では、ポインタP1が接する監視領域の斜線が削除されている。
図22は、メモリマップドアドレス1202の第8の状態を示している。第8の状態において、シグナルハンドラ1205は、ポインタP1が到達した監視領域の仮想アドレスを含む保護解除通知を制御部1004−iへ転送し、深層学習プロセス1201の処理を再開させる。
保護解除通知に含まれる仮想アドレスとしては、監視領域内の所定位置の仮想アドレスが用いられる。所定位置は、監視領域の先頭であってもよく、監視領域の末尾であってもよく、監視領域に含まれるチェックポイントCPであってもよい。
制御部1004−iは、保護解除通知に含まれる仮想アドレスが最初の監視領域に対応するため、プリフェッチを起動することを決定し、深層学習プロセス1201が次にアクセスするアドレス範囲を予測する。この例では、深層学習プロセス1201が範囲Rのデータに連続的にアクセスしているため、制御部1004−iは、ポインタP1が示す仮想アドレスから、サイズSのプリフェッチ対象データに対応するアドレス範囲を、次にアクセスするアドレス範囲に決定する。
次に、制御部1004−iは、そのアドレス範囲の部分データのプリフェッチを起動するプリフェッチ指示を、入出力プロセス1206へ転送する。入出力プロセス1206は、プリフェッチ指示に基づいて、プリフェッチ対象データを連続的にプリフェッチする動作を開始する。
図23は、メモリマップドアドレス1202の第9の状態を示している。第9の状態において、入出力プロセス1206は、プリフェッチ対象データのプリフェッチを継続する。ポインタP2は、入出力プロセス1206が現在プリフェッチしているデータの仮想アドレスを表す。深層学習プロセス1201は、ポインタP1に対応するプリフェッチ済みのデータを用いて、深層学習を継続する。
図24は、メモリマップドアドレス1202の第10の状態を示している。第10の状態において、入出力プロセス1206は、ポインタP2に対応するデータのプリフェッチを継続し、深層学習プロセス1201は、ポインタP1に対応するデータを用いて深層学習を継続する。
図25は、メモリマップドアドレス1202の第11の状態を示している。第11の状態において、ポインタP2が次の監視領域に到達したため、制御信号1204が発生する。そこで、シグナルハンドラ1205は、深層学習プロセス1201の処理を中断させる。
図26は、メモリマップドアドレス1202の第12の状態を示している。第12の状態において、シグナルハンドラ1205は、制御信号1204が発生したため、保護が解除されている最初の監視領域を再度保護する。
図27は、メモリマップドアドレス1202の第13の状態を示している。第13の状態において、シグナルハンドラ1205は、制御信号1204に基づいて、ポインタP2が到達した監視領域を特定し、特定した監視領域に対する保護を解除する。そして、シグナルハンドラ1205は、ポインタP2が到達した監視領域の仮想アドレスを含む保護解除通知を制御部1004−iへ転送し、深層学習プロセス1201の処理を再開させる。
この場合、保護解除通知に含まれる仮想アドレスが、既に起動されているプリフェッチ動作のアドレス範囲に含まれているが、閾値THに対応する仮想アドレスに達していないため、制御部1004−iは、プリフェッチを起動しない。
図28は、メモリマップドアドレス1202の第14の状態を示している。第14の状態において、ポインタP2がさらに次の監視領域に到達したため、制御信号1204が発生する。そこで、シグナルハンドラ1205は、深層学習プロセス1201の処理を中断させる。
この場合、ポインタP2が到達した監視領域は、サイズSのプリフェッチ対象データに対応するアドレス範囲における最後の監視領域である。そこで、シグナルハンドラ1205は、現在時刻を時刻t2として記録し、時刻t2から時刻t1を減算することで、メモリアクセス時間tを計算する。このメモリアクセス時間tは、メモリアクセス速度を示す指標として用いることができる。
図29は、メモリマップドアドレス1202の第15の状態を示している。第15の状態において、シグナルハンドラ1205は、制御信号1204が発生したため、直前に保護を解除した監視領域を再度保護する。
図30は、メモリマップドアドレス1202の第16の状態を示している。第16の状態において、シグナルハンドラ1205は、制御信号1204に基づいて、ポインタP2が到達した監視領域を特定し、特定した監視領域に対する保護を解除する。
図31は、メモリマップドアドレス1202の第17の状態を示している。第17の状態において、シグナルハンドラ1205は、ポインタP2が到達した監視領域の仮想アドレスを含む保護解除通知を制御部1004−iへ転送し、深層学習プロセス1201の処理を再開させる。
この場合、保護解除通知に含まれる仮想アドレスが、既に起動されているプリフェッチ動作のアドレス範囲に含まれており、かつ、閾値THに対応する仮想アドレスを超えているため、制御部1004−iは、プリフェッチを起動することを決定する。そして、制御部1004−iは、既に起動されているプリフェッチ動作のアドレス範囲の末尾から、サイズSのプリフェッチ対象データに対応するアドレス範囲を、次にアクセスするアドレス範囲に決定する。
次に、制御部1004−iは、そのアドレス範囲の部分データのプリフェッチを起動するプリフェッチ指示を、入出力プロセス1206へ転送する。入出力プロセス1206は、プリフェッチ指示に基づいて、次のプリフェッチ対象データを連続的にプリフェッチする動作を開始する。
なお、閾値THは、サイズS以下のデータ量を表すが、好ましくは次式を満たすように設定される。
G≦S−TH (1)
式(1)のGは、仮想アドレス空間における距離Dをデータ量に換算した間隔を表す。式(1)を満たす閾値THを用いた場合、閾値THに対応する仮想アドレスと、プリフェッチ対象データの末尾に対応する仮想アドレスとの間に、少なくとも1つのチェックポイントCPが存在する。したがって、プリフェッチ対象データの末尾のデータがプリフェッチされる前に制御信号1204が発生し、既に起動されているプリフェッチ動作が完了する前に、次のプリフェッチを起動することが可能になる。
次に、図32乃至図36を参照しながら、図13の制御処理に基づく実験結果の例について説明する。この実験では、mprotectを用いて監視領域が保護され、制御信号1204としてSIGSEGV信号が用いられている。
図32は、実験で用いたHPC並列ファイルシステムの構成例を示している。図32のHPC並列ファイルシステムは、計算ノードシステム3201及びデータノードシステム3202を含む。計算ノードシステム3201とデータノードシステム3202は、Infiniband3203によって接続されている。
計算ノードシステム3201は、計算ノード3211−1〜計算ノード3211−16を含み、MPI−Caffeを実行する。データノードシステム3202は、Fujitsu Exabyte File System(FEFS)(商標)であり、Meta Data Server(MDS)3221及びObject Storage Server(OSS)3231−1〜OSS3231−3を含む。計算ノード3211−i(i=1〜16)は、図9の計算ノード901−iに対応し、OSS3231−j(j=1〜3)は、データノード902−jに対応する。
各計算ノード3211−iは、Solid State Drive(SSD)3212及びGraphics Processing Unit(GPU)3213を有する。SSD3212は、図10の記憶部1001−iとして用いられ、GPU3213は、処理部1002−iとして用いられる。
各OSS3231−jは、Hard Disk Drive(HDD)3232及びSSD3233を有する。HDD3232及びSSD3233は、図11の記憶部1101−jとして用いられる。HDD3232は、Object Storage Target(OST)3234−1及びOST3234−2を記憶し、SSD3233は、OST3235−1〜OST3235−4を記憶する。OST3234−1、OST3234−2、及びOST3235−1〜OST3235−4は、処理対象データに対応する。
MDS3221は、SSD3222を有し、SSD3222は、Management Target(MGT)3223、HDD Meta Data Target(MDT)3224、及びSSD MDT3225を記憶する。MGT3223、HDD MDT3224、及びSSD MDT3225は、OST3234−1、OST3234−2、及びOST3235−1〜OST3235−4のための管理情報である。
図33は、図32の計算ノード3211−i及びOSS3231−jの構成例を示している。図33の各計算ノード3211−iは、メモリ3301、Central Processing Unit(CPU)3302、GPU3303、及びHost Channel Adapter(HCA)3304を含む。GPU3303は、図32のGPU3213に対応する。メモリ3301は、図10の記憶部1001−iとして用いられ、CPU3302は、処理部1002−i、監視部1003−i、及び制御部1004−iとして用いられる。HCA3304は、Infiniband3203を介してOSS3231−1〜OSS3231−3と通信する。
各OSS3231−jは、HCA3311、CPU3312、及びSSD3313を含む。SSD3313は、図32のSSD3233に対応する。CPU3312は、図11の制御部1102−jとして用いられる。HCA3311は、Infiniband3203を介して計算ノード3211−1〜計算ノード3211−16と通信する。
図34は、図32及び図33のHPC並列ファイルシステムによる分散深層学習の実行結果の例を示している。図34の横軸は、処理対象データを記憶する記憶装置の構成のバリエーションを示しており、縦軸は、分散深層学習の実行時間を示している。
横軸のFEFS HDDは、図33のSSD3313の代わりに図32のHDD3232を用いた構成を表し、FEFS SSDは、図33の構成を表す。Local SSDは、OSS3231−1〜OSS3231−3の代わりに、図32の各計算ノード3211−iのSSD3212に処理対象データを格納する構成を表す。
各構成におけるE1は、図13の制御処理を適用せずに、分散深層学習を実行した結果(Baseline)を示している。したがって、E1の分散深層学習では、プリフェッチは行われていない。また、E2〜E15は、図13の制御処理を適用してプリフェッチを行った場合の間隔G及びサイズSのバリエーションを示している。E2〜E15の間隔G及びサイズSは、以下の通りである。MBは、メガバイトを表す。
E2 G=8MB S=8MB
E3 G=8MB S=10MB
E4 G=10MB S=10MB
E5 G=8MB S=50MB
E6 G=10MB S=50MB
E7 G=32MB S=50MB
E8 G=8MB S=128MB
E9 G=10MB S=128MB
E10 G=32MB S=128MB
E11 G=128MB S=128MB
E12 G=8MB S=512MB
E13 G=32MB S=512MB
E14 G=128MB S=512MB
E15 G=512MB S=512MB
閾値THは、サイズSの75%に設定されている。各実行結果は、分散深層学習を所定回数実行して得られた実行時間の分布範囲を表し、平均値を示す横線と標準偏差を示す矩形とを含む。例えば、FEFS HDDにおける平均値のうち最長の実行時間は、E1の2045秒であり、最短の実行時間は、E6の245.73秒である。
FEFS SSDにおける平均値のうち最長の実行時間は、E1の284.65秒であり、最短の実行時間は、E7の176.50秒である。また、Local SSDにおける平均値のうち最長の実行時間は、E1の322.86秒であり、最短の実行時間は165.23秒である。
図35は、図34の実行結果を拡大した拡大図である。例えば、FEFS HDDにおけるE2の実行結果において、横線3501は実行時間の平均値を示し、矩形3502は標準偏差を示す。
いずれの記憶装置の構成においても、E2〜E15の実行結果はE1の実行結果よりも良好である。FEFS HDDにおける最短の実行時間は、E1の実行時間よりも87.98%削減されており、FEFS SSDにおける最短の実行時間は、E1の実行時間よりも37.99%削減されている。さらに、Local SSDにおける最短の実行時間は、E1の実行時間よりも48.82%削減されている。
図36は、図32及び図33のHPC並列ファイルシステムにおいて、制御信号1204が発生してもプリフェッチを起動しない場合の実行結果の例を示している。この場合、図13のステップ1304〜ステップ1308、ステップ1311〜ステップ1313、及びステップ1325の処理が省略される。
図36の横軸は、間隔Gを示しており、縦軸は、分散深層学習の実行時間を示している。ただし、横軸のBaselineは、図13の制御処理を適用せずに分散深層学習を実行した場合を示す。C1は、FEFS HDDにおける実行結果を表し、C2は、FEFS SSDにおける実行結果を表し、C3は、Local SSDにおける実行結果を表す。
図36の実行結果によれば、記憶装置の構成及び間隔Gの値に依らずに、Baselineとほぼ同じ実行時間が得られている。したがって、監視領域の保護及び制御信号1204の検出に伴うオーバヘッドは極めて小さいことが分かる。
図12の制御処理は、分散深層学習以外に、メモリマッピングを用いて処理対象データにアクセスする他の処理に対しても適用することが可能である。このような処理としては、プロセス間通信、メモリアクセスプロファイリング等が挙げられる。
図37は、プロセス間通信の例を示している。図37のプロセス間通信では、第1プロセス3701から第2プロセス3702へ転送されるデータが、処理対象データとして共有メモリ3703に格納される。第1プロセス3701は、矢印3711が示すように、共有メモリ3703に連続的に処理対象データを書き込み、第2プロセス3702は、矢印3712が示すように、共有メモリ3703から連続的に処理対象データを読み出す。
そして、第2プロセス3702が保護されたページ3713にアクセスしたとき、制御信号1204が発生し、ページ3713に対するアクセスの発生が第1プロセス3701に通知される。このとき、第1プロセス3701は、第2プロセス3702が次に読み出すデータを共有メモリ3703に書き込む。
例えば、図7の情報処理装置701内においてプロセス間通信が行われる場合、記憶部711が共有メモリ3703として用いられ、制御部714が第1プロセス3701を制御し、処理部712が第2プロセス3702を制御する。
図38は、図37のプロセス間通信における制御処理の具体例を示すフローチャートである。まず、制御部714は、第1プロセス3701を起動し(ステップ3801)、共有メモリ3703のメモリマッピングを設定する(ステップ3802)。これにより、図12のメモリマップドアドレス1202が生成される。
処理部712は、第2プロセス3702を起動し、監視部713は、第2プロセス3702のプログラムに監視処理のための付加コードを注入する(ステップ3831)。そして、処理部712は、ステップ3802と同じメモリマッピングを設定する(ステップ3832)。
次に、監視部713は、ステップ3803、ステップ3804、ステップ3833、ステップ3835〜ステップ3838、及びステップ3841〜ステップ3843の処理を行う。このうち、ステップ3833、ステップ3835〜ステップ3838、及びステップ3841〜ステップ3843の処理は、注入された付加コードに基づいて実行される。
処理部712は、第2プロセス3702を用いてステップ3834の処理を行い、制御部714は、第1プロセス3701を用いて、ステップ3805〜ステップ3812及びステップ3821〜ステップ3823の処理を行う。
監視部713は、付加コードに基づいて、監視領域を保護するための子プロセスを生成し(ステップ3833)、生成された子プロセスは、ステップ3841〜ステップ3843の処理を行う。ステップ3841〜ステップ3843の処理は、図13のステップ1331〜ステップ1333の処理と同様である。
監視部713は、メモリマップドアドレス1202内に監視領域を設定し(ステップ3803)、設定した監視領域の位置を示す位置情報を子プロセスへ転送する(ステップ3804)。
次に、第1プロセス3701は、ライトプロセスを生成し(ステップ3805)、指示プロセスを生成する(ステップ3806)。そして、第1プロセス3701は、次に共有メモリ3703に書き込むライトデータを準備し(ステップ3807)、レディ通知を指示プロセスへ転送して(ステップ3808)、ステップ3807及びステップ3808の処理を繰り返す。
ライトプロセスは、ライト指示を待ち合わせる(ステップ3821)。ライトプロセスは、指示プロセスからライト指示を受信したか否かをチェックし(ステップ3822)、ライト指示を受信していない場合(ステップ3822,NO)、ステップ3821及びステップ3822の処理を繰り返す。
指示プロセスは、シグナルハンドラ1205からの保護解除通知を待ち合わせる(ステップ3809)。指示プロセスは、シグナルハンドラ1205から保護解除通知を受信したか否かをチェックし(ステップ3810)、保護解除通知を受信していない場合(ステップ3810,NO)、ステップ3809及びステップ3810の処理を繰り返す。
第2プロセス3702は、共有メモリ3703にアクセスし、共有メモリ3703からデータを読み出す(ステップ3834)。シグナルハンドラ1205は、フォルトを示す制御信号1204が発生したか否かをチェックする(ステップ3835)。制御信号1204が発生していない場合(ステップ3835,NO)、第2プロセス3702は、ステップ3834の処理を継続する。
一方、制御信号1204が発生した場合(ステップ3835,YES)、シグナルハンドラ1205は、第2プロセス3702の処理を中断させる(ステップ3836)。そして、シグナルハンドラ1205は、制御信号1204に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域に対する保護を解除するとともに、過去に保護を解除した監視領域を再度保護する。このとき、シグナルハンドラ1205は、制御信号1204が発生した時刻を記録しておくことで、記録した時刻に基づいてメモリアクセス速度を計算することができる。
次に、シグナルハンドラ1205は、保護を解除した監視領域の仮想アドレスを含む保護解除通知を指示プロセスへ転送し(ステップ3837)、第2プロセス3702の処理を再開させる(ステップ3838)。そして、第2プロセス3702及びシグナルハンドラ1205は、ステップ3834以降の処理を繰り返す。
指示プロセスは、保護解除通知を受信した場合(ステップ3810,YES)、ステップ3811の処理を行う。ステップ3811において、指示プロセスは、保護解除通知に含まれる仮想アドレスと、第1プロセス3701から受信したレディ通知とに基づいて、第2プロセス3702が次に読み出すライトデータが準備されているか否かをチェックする。ライトデータが準備されていない場合(ステップ3811,NO)、指示プロセスは、ステップ3809以降の処理を繰り返す。
一方、ライトデータが準備されている場合(ステップ3811,YES)、指示プロセスは、そのライトデータを書き込ませるライト指示をライトプロセスへ転送し(ステップ3812)、ステップ3809以降の処理を繰り返す。
ライトプロセスは、ライト指示を受信した場合(ステップ3822,YES)、準備されているライトデータを共有メモリ3703に書き込む(ステップ3823)。そして、ライトプロセスは、ステップ3821以降の処理を繰り返す。
図38の制御処理によれば、第2プロセス3702によるデータ読み出し処理の進捗状況に応じて、次に読み出されるデータを第1プロセス3701が共有メモリ3703に書き込むことが可能になる。これにより、データ書き込み処理に伴う待ち時間が削減され、プロセス間通信が効率化される。
次に、メモリアクセスプロファイリングの例について説明する。メモリアクセスプロファイリングにおいて、リゾルバは、対象プログラムの実行中にアクセスされる仮想アドレスから、対象プログラムの挙動を示す識別情報を出力する。この識別情報としては、関数名、変数名等のユーザが識別可能な情報を用いることができる。
例えば、図7の情報処理装置701がメモリアクセスプロファイリングを行う場合、処理部712が対象プログラムを実行し、制御部714がリゾルバを制御する。リゾルバは、制御部714によって生成されるプロセスである。記憶部711は、対象プログラムの実行中に処理部712がアクセスする仮想アドレスと、処理部712の挙動を示す識別情報との対応関係を示す識別情報テーブルを記憶する。
そして、処理部712が保護されたページにアクセスしたとき、制御信号1204が発生し、そのページに対するアクセスの発生がリゾルバに通知される。このとき、リゾルバは、識別情報テーブルに基づいて、通知された仮想アドレスに対応する識別情報を出力する。
図39は、メモリアクセスプロファイリングにおける制御処理の具体例を示すフローチャートである。まず、制御部714は、リゾルバを起動する(ステップ3901)。処理部712は、コンパイラを用いて対象プログラムをコンパイルすることで、識別情報テーブルを含む実行ファイルを生成する(ステップ3911)。そして、処理部712は、実行ファイルを実行することで対象プログラムを起動し、監視部713は、実行ファイルに監視処理のための付加コードを注入する(ステップ3912)。
次に、監視部713は、ステップ3902、ステップ3903、ステップ3913、ステップ3915〜ステップ3918、及びステップ3921〜ステップ3923の処理を行う。このうち、ステップ3913、ステップ3915〜ステップ3918、及びステップ3921〜ステップ3923の処理は、注入された付加コードに基づいて実行される。
処理部712は、実行ファイルを用いてステップ3914の処理を行い、制御部714は、リゾルバを用いて、ステップ3904〜ステップ3908の処理を行う。
監視部713は、付加コードに基づいて、監視領域を保護するための子プロセスを生成し(ステップ3913)、生成された子プロセスは、ステップ3921〜ステップ3923の処理を行う。ステップ3921〜ステップ3923の処理は、図13のステップ1331〜ステップ1333の処理と同様である。
監視部713は、メモリマップドアドレス1202内に監視領域を設定し(ステップ3902)、設定した監視領域の位置を示す位置情報を子プロセスへ転送する(ステップ3903)。
次に、リゾルバは、実行ファイルから識別情報テーブルを取得し(ステップ3904)、シグナルハンドラ1205からの保護解除通知を待ち合わせる(ステップ3905)。リゾルバは、シグナルハンドラ1205から保護解除通知を受信したか否かをチェックし(ステップ3906)、保護解除通知を受信していない場合(ステップ3906,NO)、ステップ3905及びステップ3906の処理を繰り返す。
処理部712は、記憶部711にアクセスしながら実行ファイルを実行する(ステップ3914)。シグナルハンドラ1205は、フォルトを示す制御信号1204が発生したか否かをチェックする(ステップ3915)。制御信号1204が発生していない場合(ステップ3915,NO)、処理部712は、ステップ3914の処理を継続する。
一方、制御信号1204が発生した場合(ステップ3915,YES)、シグナルハンドラ1205は、実行ファイルの実行を中断させる(ステップ3916)。そして、シグナルハンドラ1205は、制御信号1204に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域に対する保護を解除するとともに、過去に保護を解除した監視領域を再度保護する。このとき、シグナルハンドラ1205は、制御信号1204が発生した時刻を記録しておくことで、記録した時刻に基づいてメモリアクセス速度を計算することができる。
次に、シグナルハンドラ1205は、保護を解除した監視領域の仮想アドレスを含む保護解除通知をリゾルバへ転送し(ステップ3917)、実行ファイルの実行を再開させる(ステップ3918)。そして、処理部712及びシグナルハンドラ1205は、ステップ3914以降の処理を繰り返す。
リゾルバは、保護解除通知を受信した場合(ステップ3906,YES)、識別情報テーブルを参照して、保護解除通知に含まれる仮想アドレスに対応する識別情報を特定する(ステップ3907)。そして、リゾルバは、特定した識別情報を出力して(ステップ3908)、ステップ3905以降の処理を繰り返す。
図39の制御処理によれば、対象プログラムに基づく処理の進捗状況に応じて、リゾルバが対象プログラムの挙動を示す識別情報を出力することが可能になる。これにより、識別情報に基づいて対象プログラムの動作を分析することができる。
図1、図3、図32、及び図33のHPC並列ファイルシステムの構成は一例に過ぎず、HPC並列ファイルシステムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。図2の分散ファイルシステムの構成は一例に過ぎず、分散ファイルシステムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
図7の情報処理装置701の構成は一例に過ぎず、情報処理装置701の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
図9の情報処理システムの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。図10の計算ノード901−i及び図11のデータノード902−jの構成は一例に過ぎず、情報処理システムの用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
図8、図13、図38、及び図39のフローチャートは一例に過ぎず、情報処理装置701又は情報処理システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。
図4及び図5のLMDBデータファイルは一例に過ぎず、処理対象データは、LMDBデータファイル以外のメモリマップドファイルに格納されていてもよい。LMDBデータファイルに対するアクセス順序は、連続している必要はなく、所定の規則に基づく他の順序であってもよい。アクセス順序は、離散的な順序であっても構わない。
図6の仮想アドレス空間601は一例に過ぎず、仮想アドレス空間601は、情報処理システムの構成又は条件に応じて変化する。ページング方式のメモリマッピングの代わりに、セグメント方式のメモリマッピングを用いてもよい。
図12の制御処理は一例に過ぎず、情報処理システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、深層学習プロセス1201の代わりに、別の機械学習プロセス、人工知能プロセス等を用いることもできる。
図14のパラメータは一例に過ぎず、情報処理システムの構成又は条件に応じて一部のパラメータを省略又は変更してもよい。例えば、すべてのチェックポイントCPを距離Dの間隔で配置する代わりに、複数の異なる間隔でチェックポイントCPを配置することもできる。
図15〜図31のメモリマップドアドレス1202は一例に過ぎず、メモリマップドアドレス1202の状態は、ページサイズPS、処理対象データの範囲R、距離D、サイズS等のパラメータに応じて変化する。メモリマップドアドレス1202に対するアクセス順序は、連続している必要はなく、所定の規則に基づく他の順序であってもよい。アクセス順序は、離散的な順序であっても構わない。
図34〜図36の分散深層学習の実行結果は一例に過ぎず、分散深層学習の実行結果は、情報処理システムの構成又は条件と処理対象データに応じて変化する。図37のプロセス間通信は一例に過ぎず、別のプロセス間通信に対して制御処理を適用することもできる。
図40は、図7の情報処理装置701、図10の計算ノード901−i、及び図11のデータノード902−jとして用いられる情報処理装置(コンピュータ)のハードウェア構成例を示している。図40の情報処理装置は、CPU4001、メモリ4002、補助記憶装置4003、媒体駆動装置4004、及びネットワーク接続装置4005を含む。これらの構成要素はバス4006により互いに接続されている。
メモリ4002は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ4002は、図7の記憶部711、図10の記憶部1001−i、又は図11の記憶部1101−jとして用いることができる。
CPU4001(プロセッサ)は、例えば、メモリ4002を利用してプログラムを実行することにより、図7の処理部712、監視部713、及び制御部714として動作する。CPU4001は、メモリ4002を利用してプログラムを実行することにより、図10の処理部1002−i、監視部1003−i、及び制御部1004−iとしても動作する。CPU4001は、メモリ4002を利用してプログラムを実行することにより、図11の制御部1102−jとしても動作する。
補助記憶装置4003は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置4005は、SSD、HDD、又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置4003にプログラム及びデータを格納しておき、それらをメモリ4002にロードして使用することができる。補助記憶装置4003は、図7の記憶部711、図10の記憶部1001−i、又は図11の記憶部1101−jとして用いることができる。
媒体駆動装置4004は、可搬型記録媒体4007を駆動し、その記録内容にアクセスする。可搬型記録媒体4007は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体4009は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体4007にプログラム及びデータを格納しておき、それらをメモリ4002にロードして使用することができる。
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ4002、補助記憶装置4003、又は可搬型記録媒体4007のような、物理的な(非一時的な)記録媒体である。
ネットワーク接続装置4005は、通信ネットワーク903に接続され、通信に伴うデータ変換を行う通信インタフェース回路である。ネットワーク接続装置4005は、図33のHCA3304又はHCA3311であってもよい。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置4005を介して受け取り、それらをメモリ4002にロードして使用することができる。
さらに、情報処理装置は、図32のGPU3213又は図33のGPU3303を含んでいてもよい。
情報処理装置がオペレータ又はユーザと対話を行う場合、情報処理装置は、入力装置及び出力装置を含んでいてもよい。入力装置は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示及び情報の入力に用いられる。出力装置は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。処理結果は、分散深層学習における学習結果であってもよく、メモリアクセスプロファイリングにおいてリゾルバが出力する識別情報であってもよい。
なお、情報処理装置が図40のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、可搬型記録媒体4007を利用しない場合は、媒体駆動装置4004を省略してもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図1乃至図40を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
処理対象データの仮想アドレス空間を示す情報を記憶する記憶部と、
前記仮想アドレス空間を介して前記処理対象データに対する所定の処理を行う処理部と、
前記仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対する、前記処理部からのアクセスを監視する監視部と、
前記複数の監視領域のうち、前記監視部がアクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う制御部と、
を備えることを特徴とする情報処理装置。
(付記2)
前記複数の監視領域は、前記仮想アドレス空間内において互いに隣接しない位置に設定され、
前記処理部は、前記所定の処理において、前記仮想アドレス空間に含まれる前記複数の領域に対して所定の順序でアクセスし、
前記監視部は、前記処理部が前記所定の処理を開始する前に、前記複数の監視領域それぞれを保護し、前記処理部が前記所定の処理を開始した後に、保護されている領域に対するアクセスを示す制御信号が発生した場合、前記制御信号に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域の仮想アドレスを前記制御部へ出力することを特徴とする付記1記載の情報処理装置。
(付記3)
前記監視部は、前記特定した監視領域の保護を解除して、次の監視領域に対するアクセスを監視し、
前記処理部は、保護が解除された監視領域にアクセスすることで、前記所定の処理を行うことを特徴とする付記2記載の情報処理装置。
(付記4)
前記処理対象データは、通信ネットワークを介して前記情報処理装置と接続された複数のストレージ装置に分散して格納され、
前記記憶部は、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶し、
前記制御部は、前記監視部がアクセスを検出した仮想アドレスに基づいて、前記処理部がアクセスする仮想アドレスのアドレス範囲を予測し、前記複数のストレージ装置のうち、予測したアドレス範囲の部分データを記憶するストレージ装置に対して、データ転送要求を送信し、前記部分データを記憶する前記ストレージ装置から受信した前記部分データを前記記憶部に格納することを特徴とする付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
前記処理対象データは、第1プロセスから第2プロセスへ転送されるデータであり、
前記記憶部は、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶し、
前記制御部は、前記第1プロセスが前記記憶部に前記処理対象データを書き込むように、前記第1プロセスを制御し、
前記処理部は、前記第2プロセスが前記記憶部から前記処理対象データを読み出すように、前記第2プロセスを制御し、
前記制御部は、前記監視部がアクセスを検出した仮想アドレスに基づいて、前記第1プロセスに、前記第2プロセスへ転送するデータを書き込ませることを特徴とする付記1乃至3のいずれか1項に記載の情報処理装置。
(付記6)
前記記憶部は、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶するとともに、前記所定の処理において前記処理部がアクセスする仮想アドレスと、前記所定の処理における前記処理部の挙動を示す識別情報との対応関係を記憶し、
前記制御部は、前記対応関係に基づいて、前記監視部がアクセスを検出した仮想アドレスに対応する識別情報を出力することを特徴とする付記1乃至3のいずれか1項に記載の情報処理装置。
(付記7)
コンピュータが、
処理対象データの仮想アドレス空間を介して前記処理対象データに対する所定の処理を行い、
前記仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対するアクセスを監視し、
前記複数の監視領域のうち、アクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う、
ことを特徴とする情報処理方法。
(付記8)
前記複数の監視領域は、前記仮想アドレス空間内において互いに隣接しない位置に設定され、
前記コンピュータは、前記所定の処理を開始する前に、前記複数の監視領域それぞれを保護し、前記所定の処理において、前記仮想アドレス空間に含まれる前記複数の領域に対して所定の順序でアクセスし、保護されている領域に対するアクセスを示す制御信号が発生した場合、前記制御信号に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域の仮想アドレスを前記制御部へ出力することを特徴とする付記7記載の情報処理方法。
(付記9)
前記コンピュータは、前記特定した監視領域の保護を解除して、次の監視領域に対するアクセスを監視し、保護が解除された監視領域にアクセスすることで、前記所定の処理を行うことを特徴とする付記8記載の情報処理方法。
(付記10)
前記処理対象データは、通信ネットワークを介して前記情報処理装置と接続された複数のストレージ装置に分散して格納され、
前記コンピュータは、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶する記憶部を含み、
前記コンピュータは、前記アクセスを検出した仮想アドレスに基づいて、アクセスする仮想アドレスのアドレス範囲を予測し、前記複数のストレージ装置のうち、予測したアドレス範囲の部分データを記憶するストレージ装置に対して、データ転送要求を送信し、前記部分データを記憶する前記ストレージ装置から受信した前記部分データを前記記憶部に格納することを特徴とする付記7乃至9のいずれか1項に記載の情報処理方法。
(付記11)
処理対象データの仮想アドレス空間を介して前記処理対象データに対する所定の処理を行い、
前記仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対するアクセスを監視し、
前記複数の監視領域のうち、アクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う、
処理をコンピュータに実行させるためのプログラム。
(付記12)
前記複数の監視領域は、前記仮想アドレス空間内において互いに隣接しない位置に設定され、
前記コンピュータは、前記所定の処理を開始する前に、前記複数の監視領域それぞれを保護し、前記所定の処理において、前記仮想アドレス空間に含まれる前記複数の領域に対して所定の順序でアクセスし、保護されている領域に対するアクセスを示す制御信号が発生した場合、前記制御信号に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域の仮想アドレスを前記制御部へ出力することを特徴とする付記11記載のプログラム。
(付記13)
前記コンピュータは、前記特定した監視領域の保護を解除して、次の監視領域に対するアクセスを監視し、保護が解除された監視領域にアクセスすることで、前記所定の処理を行うことを特徴とする付記12記載のプログラム。
(付記14)
前記処理対象データは、通信ネットワークを介して前記情報処理装置と接続された複数のストレージ装置に分散して格納され、
前記コンピュータは、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶する記憶部を含み、
前記コンピュータは、前記アクセスを検出した仮想アドレスに基づいて、アクセスする仮想アドレスのアドレス範囲を予測し、前記複数のストレージ装置のうち、予測したアドレス範囲の部分データを記憶するストレージ装置に対して、データ転送要求を送信し、前記部分データを記憶する前記ストレージ装置から受信した前記部分データを前記記憶部に格納することを特徴とする付記11乃至13のいずれか1項に記載のプログラム。
101−1〜101−3、901−1〜901−N、3211−1〜3211−16 計算ノード
102−1〜102−3、902−1〜902−M データノード
103−1〜103−3、202−1〜202−3 記憶装置
104、203、903 通信ネットワーク
201−1〜201−3 ノード
301−1〜301−3 キャッシュ
401〜403、603 データ
411、3711、3712 矢印
501 位置
502 範囲
601 仮想アドレス空間
602、3301、4002 メモリ
604、611−1〜611−6 領域
612−1〜612−6、3713 ページ
701 情報処理装置
711、1001−i、1101−j 記憶部
712、1002−i 処理部
713、1003−i 監視部
714、1004−i、1102−j 制御部
1201 深層学習プロセス
1202 メモリマップドアドレス
1203 LMDBデータファイル
1204 制御信号
1205 シグナルハンドラ
1206 入出力プロセス
1401〜1403 位置
3201 計算ノードシステム
3202 データノードシステム
3212、3222、3233、3313 SSD
3213、3303 GPU
3221 MDS
3223 MGT
3224 HDD MDT
3225 SSD MDT
3231−1〜3231−3 OSS
3232 HDD
3234−1、3234−2、3235−1〜3235−4 OST
3302、3312、4001 CPU
3304、3311 HCA
3501 横線
3502 矩形
3701 第1プロセス
3702 第2プロセス
3703 共有メモリ
4003 補助記憶装置
4004 媒体駆動装置
4005 ネットワーク接続装置
4006 バス
4007 可搬型記録媒体

Claims (8)

  1. 処理対象データの仮想アドレス空間を示す情報を記憶する記憶部と、
    前記仮想アドレス空間を介して前記処理対象データに対する所定の処理を行う処理部と、
    前記仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対する、前記処理部からのアクセスを監視する監視部と、
    前記複数の監視領域のうち、前記監視部がアクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う制御部と、
    を備えることを特徴とする情報処理装置。
  2. 前記複数の監視領域は、前記仮想アドレス空間内において互いに隣接しない位置に設定され、
    前記処理部は、前記所定の処理において、前記仮想アドレス空間に含まれる前記複数の領域に対して所定の順序でアクセスし、
    前記監視部は、前記処理部が前記所定の処理を開始する前に、前記複数の監視領域それぞれを保護し、前記処理部が前記所定の処理を開始した後に、保護されている領域に対するアクセスを示す制御信号が発生した場合、前記制御信号に基づいて、アクセスが発生した監視領域を特定し、特定した監視領域の仮想アドレスを前記制御部へ出力することを特徴とする請求項1記載の情報処理装置。
  3. 前記監視部は、前記特定した監視領域の保護を解除して、次の監視領域に対するアクセスを監視し、
    前記処理部は、保護が解除された監視領域にアクセスすることで、前記所定の処理を行うことを特徴とする請求項2記載の情報処理装置。
  4. 前記処理対象データは、通信ネットワークを介して前記情報処理装置と接続された複数のストレージ装置に分散して格納され、
    前記記憶部は、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶し、
    前記制御部は、前記監視部がアクセスを検出した仮想アドレスに基づいて、前記処理部がアクセスする仮想アドレスのアドレス範囲を予測し、前記複数のストレージ装置のうち、予測したアドレス範囲の部分データを記憶するストレージ装置に対して、データ転送要求を送信し、前記部分データを記憶する前記ストレージ装置から受信した前記部分データを前記記憶部に格納することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記処理対象データは、第1プロセスから第2プロセスへ転送されるデータであり、
    前記記憶部は、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶し、
    前記制御部は、前記第1プロセスが前記記憶部に前記処理対象データを書き込むように、前記第1プロセスを制御し、
    前記処理部は、前記第2プロセスが前記記憶部から前記処理対象データを読み出すように、前記第2プロセスを制御し、
    前記制御部は、前記監視部がアクセスを検出した仮想アドレスに基づいて、前記第1プロセスに、前記第2プロセスへ転送するデータを書き込ませることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  6. 前記記憶部は、前記仮想アドレス空間に含まれる前記複数の領域のうち一部の領域に対応するデータを記憶するとともに、前記所定の処理において前記処理部がアクセスする仮想アドレスと、前記所定の処理における前記処理部の挙動を示す識別情報との対応関係を記憶し、
    前記制御部は、前記対応関係に基づいて、前記監視部がアクセスを検出した仮想アドレスに対応する識別情報を出力することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  7. コンピュータが、
    処理対象データの仮想アドレス空間を介して前記処理対象データに対する所定の処理を行い、
    前記仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対するアクセスを監視し、
    前記複数の監視領域のうち、アクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う、
    ことを特徴とする情報処理方法。
  8. 処理対象データの仮想アドレス空間を介して前記処理対象データに対する所定の処理を行い、
    前記仮想アドレス空間に含まれる複数の領域のうち、監視対象として設定された複数の監視領域に対するアクセスを監視し、
    前記複数の監視領域のうち、アクセスを検出した監視領域の仮想アドレスに基づいて、所定の制御を行う、
    処理をコンピュータに実行させるためのプログラム。
JP2017139449A 2017-07-18 2017-07-18 情報処理装置、情報処理方法、及びプログラム Active JP7003470B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017139449A JP7003470B2 (ja) 2017-07-18 2017-07-18 情報処理装置、情報処理方法、及びプログラム
US16/035,118 US10649814B2 (en) 2017-07-18 2018-07-13 Device, method, and medium for executing a computing process within an accessed monitoring region

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017139449A JP7003470B2 (ja) 2017-07-18 2017-07-18 情報処理装置、情報処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2019021070A true JP2019021070A (ja) 2019-02-07
JP7003470B2 JP7003470B2 (ja) 2022-01-20

Family

ID=65019063

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017139449A Active JP7003470B2 (ja) 2017-07-18 2017-07-18 情報処理装置、情報処理方法、及びプログラム

Country Status (2)

Country Link
US (1) US10649814B2 (ja)
JP (1) JP7003470B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010181B (zh) * 2021-03-24 2022-05-27 北京百度网讯科技有限公司 一种深度学习框架之中算子的部署方法、装置及电子设备
CN113641424B (zh) * 2021-10-13 2022-02-01 北京安华金和科技有限公司 一种数据库操作的处理方法和系统
US11709782B2 (en) * 2021-10-28 2023-07-25 Arm Limited Memory address translation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962558A (ja) * 1995-08-29 1997-03-07 Fuji Xerox Co Ltd データベース管理システム及び方法
JP2003337722A (ja) * 2002-03-13 2003-11-28 Hitachi Ltd 計算機システム
JP2013536478A (ja) * 2010-12-28 2013-09-19 株式会社日立製作所 ストレージシステム、及びその制御方法
JP2014149758A (ja) * 2013-02-04 2014-08-21 Fixstars Corp 情報処理装置、情報処理方法、およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MXPA04000366A (es) 2001-07-13 2004-05-04 Pioneer Hi Bred Int Promotores preferidos de tejido vascular.
US6868439B2 (en) 2002-04-04 2005-03-15 Hewlett-Packard Development Company, L.P. System and method for supervising use of shared storage by multiple caching servers physically connected through a switching router to said shared storage via a robust high speed connection
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
JP2013033412A (ja) 2011-08-03 2013-02-14 Internatl Business Mach Corp <Ibm> メモリ管理方法、プログラム及びシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962558A (ja) * 1995-08-29 1997-03-07 Fuji Xerox Co Ltd データベース管理システム及び方法
JP2003337722A (ja) * 2002-03-13 2003-11-28 Hitachi Ltd 計算機システム
JP2013536478A (ja) * 2010-12-28 2013-09-19 株式会社日立製作所 ストレージシステム、及びその制御方法
JP2014149758A (ja) * 2013-02-04 2014-08-21 Fixstars Corp 情報処理装置、情報処理方法、およびプログラム

Also Published As

Publication number Publication date
US10649814B2 (en) 2020-05-12
JP7003470B2 (ja) 2022-01-20
US20190026159A1 (en) 2019-01-24

Similar Documents

Publication Publication Date Title
JP5571208B2 (ja) パフォーマンスカウンタの仮想化
EP2430539B1 (en) Controlling a rate at which adapter interruption requests are processed
KR102424121B1 (ko) 프리-페치 유닛, 그것을 포함하는 장치 및 그것의 동작 방법
US10416890B2 (en) Application execution enclave memory page cache management method and apparatus
JP5669938B2 (ja) コンピューティング環境のアダプタを使用可能にするための方法、システム、およびコンピュータ・プログラム
WO2017112149A1 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
US10331499B2 (en) Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads
US9600314B2 (en) Scheduler limited virtual device polling
US20210192046A1 (en) Resource Management Unit for Capturing Operating System Configuration States and Managing Malware
US11061829B2 (en) Prefetch support with address space randomization
JP7003470B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US11782761B2 (en) Resource management unit for capturing operating system configuration states and offloading tasks
US9898307B2 (en) Starting application processors of a virtual machine
WO2012163017A1 (zh) 分布式虚拟机访问异常的处理方法以及虚拟机监控器
JP6920286B2 (ja) 例外処理
Branner-Augmon et al. 3PO: Programmed Far-Memory Prefetching for Oblivious Applications
Kim et al. {NVMeVirt}: A Versatile Software-defined Virtual {NVMe} Device
CN114080587A (zh) 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问
US20130346975A1 (en) Memory management method, information processing device, and computer-readable recording medium having stored therein memory management program
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
US11630698B2 (en) Resource management unit for capturing operating system configuration states and swapping memory content
KR101790728B1 (ko) 가상화 환경의 하이퍼바이저에서의 데이터 입출력 방법 및 이를 기록한 기록 매체
JP6515779B2 (ja) キャッシュ方法、キャッシュプログラム及び情報処理装置
TWI497294B (zh) 用於增加虛擬記憶體效能之電腦可讀儲存媒體、設備及電腦實施方法
US20160011989A1 (en) Access control apparatus and access control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210721

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20210721

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210721

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: 20211130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211213

R150 Certificate of patent or registration of utility model

Ref document number: 7003470

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150