JP2022055002A - 情報処理装置、情報処理方法および情報処理プログラム - Google Patents
情報処理装置、情報処理方法および情報処理プログラム Download PDFInfo
- Publication number
- JP2022055002A JP2022055002A JP2020162332A JP2020162332A JP2022055002A JP 2022055002 A JP2022055002 A JP 2022055002A JP 2020162332 A JP2020162332 A JP 2020162332A JP 2020162332 A JP2020162332 A JP 2020162332A JP 2022055002 A JP2022055002 A JP 2022055002A
- Authority
- JP
- Japan
- Prior art keywords
- job
- accelerator
- information processing
- state
- emulation
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 コストの増加を抑制しながら実行効率を向上できる情報処理装置などを提供する。【解決手段】 開示の一態様に係る情報処理装置101は、アクセラレータ4をエミュレートするエミュレーション部2と、ジョブの実行中に、当該ジョブを前記アクセラレータ4が実行する状態と、当該ジョブを前記エミュレーション部2が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータ4と前記エミュレーション部2との間で転送するスケジューリング部3と、を備える。【選択図】 図1
Description
本開示は、情報を処理する技術に関する。
今日の計算機システムでは、半導体技術や電力の制約のために、汎用計算機の周波数を高めることによる性能向上が飽和してきている。そのため、大規模な行列計算、ベクトル演算、画像処理などの特定の処理に適したアクセラレータと、通常の計算、入出力、及びアクセラレータの制御等を行うホストとで構成された、ヘテロな計算機システムの使用が拡大している。特に現在の高性能計算(HPC、High-Performance Computing)の領域では、アクセラレータを使用することによって高い性能を得ることが一般化している。
HPC領域の計算機環境では、通常、バッチジョブスケジューラを使用して計算機環境の使用時間が割り当てられる。その時間内にプログラムは実行される。アクセラレータを用いたプログラムの開発及びデバッグを行う際は、ジョブスケジューラに当該プログラムを実行するジョブが投入され、ジョブに割り当てられた時間にプログラムが実行される。その後、結果が確認される。
プログラムの一部をアクセラレータにおいて実行する計算機の一例が、特許文献1によって開示されている。特許文献1の計算機は、プログラムの一部を、複数のアクセラレータの中から適切なものにディスパッチする。さらに具体的には、特許文献1の計算機は、プログラムにおいて指定されたコードフラグメント毎に実行に使用するアクセラレータを選択し、選択したアクセラレータ上でプログラムを実行する。
プログラムのデバッグ段階では、プログラムのコンパイルが成功した後、プログラムは、正しく動作するまで繰り返し実行される。特にデバッグ初期の段階ではプログラムの起動に失敗することがある。実行中にプログラムが異常終了することもある。起動失敗や実行初期のクラッシュが発生すると、ジョブが予期せず終了する。デバッグのためにプログラムを再実行するためは、他のジョブの終了を待たなければならない。そのため、開発効率が低下する。プログラムの開発及びデバッグ用の環境が用意される場合であっても、一般にはプログラムの開発は、複数の開発者又は開発チームによって行われる。そのため、アクセラレータの時間割り当てについて、バッチジョブスケジューリングの場合と同様の問題が起こる。
開発者毎にアクセラレータのプログラムの実行環境が用意されることもある。しかし、アクセラレータ実機を開発者数に十分に用意するためにはコストがかかる。そのため、アクセラレータと同様の動作をソフトウェアで実現するエミュレータを備える開発及びデバッグ用環境が使用することもある。この場合、プログラムを開発者が任意に起動したり実行したりすることが可能である。しかし、一般にエミュレータはアクセラレータ実機よりも実行速度が低速である。
本開示の目的の1つは、コストの増加を抑制しながら実行効率を向上できる情報処理装置などを提供することである。
本開示の一態様に係る情報処理装置は、アクセラレータをエミュレートするエミュレーション手段と、ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション手段が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション手段との間で転送するスケジューリング手段と、を備える。
本開示の一態様に係る情報処理方法は、ジョブの実行中に、当該ジョブをアクセラレータが実行する状態と、当該ジョブを、前記アクセラレータをエミュレートする情報処理装置が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記情報処理装置との間で転送する。
本開示の一態様に係る情報処理プログラムは、アクセラレータをエミュレートするエミュレーション処理と、ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション処理が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション処理との間で転送するスケジューリング処理と、をコンピュータに実行させる。本開示の一態様は、前述の情報処理プログラムを記憶する記憶媒体によっても実現される。
本開示には、コストの増加を抑制しながら実行効率を向上できるという効果がある。
以下では、本開示の実施形態について説明する。
<第1の実施形態>
まず、本開示の第1の実施形態について、図面を使用して詳細に説明する。第1の実施形態は、本開示の基本的な実施形態である。
まず、本開示の第1の実施形態について、図面を使用して詳細に説明する。第1の実施形態は、本開示の基本的な実施形態である。
<構成>
図1は、本実施形態の情報処理装置101の構成の例を表すブロック図である。図1に示す例では、情報処理装置101は、エミュレーション部2と、スケジューリング部3とを備える。
図1は、本実施形態の情報処理装置101の構成の例を表すブロック図である。図1に示す例では、情報処理装置101は、エミュレーション部2と、スケジューリング部3とを備える。
エミュレーション部2は、アクセラレータ4をエミュレートする。スケジューリング部3は、ジョブの実行中に、当該ジョブを前記アクセラレータ4が実行する状態と、当該ジョブを前記エミュレーション部2が実行する状態との間の切り替えを行う。スケジューリング部3は、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータ4と前記エミュレーション部2との間で転送する。
エミュレーション部2及びスケジューリング部3は、例えば、CPUとメモリとを備えたコンピュータ(例えば、後述のホスト計算機)によって実現できる。アクセラレータ4は、例えば、特定の処理を高速に実行できる装置である。アクセラレータ4については、後で例示する。本実施形態のジョブは、例えば、エミュレーション部2及びスケジューリング部3を含むコンピュータにおいて実行されるプログラムである制御プロセスが、アクセラレータ4、又は、エミュレーション部2に実行されるプロセスを表す。
<動作>
図2は、本実施形態の情報処理装置101の動作の例を表すフローチャートである。図2に示す例では、まず、スケジューリング部3が、アクセラレータと、アクセラレータ4をエミュレートするエミュレーション部2との間で、コンテキストとメモリの内容とを転送する(ステップS11)。次に、スケジューリング部3は、アクセラレータ4がジョブを実行している状態と、エミュレーション部2がジョブを実行している状態との間の切り替えを行う。
図2は、本実施形態の情報処理装置101の動作の例を表すフローチャートである。図2に示す例では、まず、スケジューリング部3が、アクセラレータと、アクセラレータ4をエミュレートするエミュレーション部2との間で、コンテキストとメモリの内容とを転送する(ステップS11)。次に、スケジューリング部3は、アクセラレータ4がジョブを実行している状態と、エミュレーション部2がジョブを実行している状態との間の切り替えを行う。
<効果>
コストの増加を抑制しながら実行効率を向上できるという効果がある。その理由は、本実施形態では、スケジューリング部3が、コンテキストとメモリの内容とをアクセラレータ4とエミュレーション部2との間で転送するからである。そして、スケジューリング部3が、アクセラレータ4がジョブを実行している状態と、エミュレーション部2がジョブを実行している状態との間の切り替えを行うからである。1つのアクセラレータ4を使用して複数のジョブを実行する場合、1つのジョブが終了するまで次のジョブは実行されない。それに対して、本実施形態では、アクセラレータ4に加えてエミュレーション部2がジョブを実行するので、処理全体を高速化できる。また、コンテキスト及びメモリの内容を転送するので、切り替えを高速化できる。そして、エミュレーション部2の代わりに他のアクセラレータを使用する場合と比較して、コストの増加を抑制できる。
コストの増加を抑制しながら実行効率を向上できるという効果がある。その理由は、本実施形態では、スケジューリング部3が、コンテキストとメモリの内容とをアクセラレータ4とエミュレーション部2との間で転送するからである。そして、スケジューリング部3が、アクセラレータ4がジョブを実行している状態と、エミュレーション部2がジョブを実行している状態との間の切り替えを行うからである。1つのアクセラレータ4を使用して複数のジョブを実行する場合、1つのジョブが終了するまで次のジョブは実行されない。それに対して、本実施形態では、アクセラレータ4に加えてエミュレーション部2がジョブを実行するので、処理全体を高速化できる。また、コンテキスト及びメモリの内容を転送するので、切り替えを高速化できる。そして、エミュレーション部2の代わりに他のアクセラレータを使用する場合と比較して、コストの増加を抑制できる。
<第2の実施形態>
次に、本開示の第2の実施形態について、図面を使用して詳細に説明する。
次に、本開示の第2の実施形態について、図面を使用して詳細に説明する。
<構成>
図3は、本実施形態の情報処理装置102の構成の例を表すブロック図である。図3に示す例では、情報処理装置102は、仮想インタフェース部1と、エミュレーション部2と、スケジューリング部3と、アクセラレータ4とを備える。仮想インタフェース部1と、エミュレーション部2と、スケジューリング部3とは、例えば、ホスト計算機によって実現される。
図3は、本実施形態の情報処理装置102の構成の例を表すブロック図である。図3に示す例では、情報処理装置102は、仮想インタフェース部1と、エミュレーション部2と、スケジューリング部3と、アクセラレータ4とを備える。仮想インタフェース部1と、エミュレーション部2と、スケジューリング部3とは、例えば、ホスト計算機によって実現される。
仮想インタフェース部1は、情報処理装置102において実行されるプロセスとアクセラレータ4との間のインタフェースである。一般に、アクセラレータを含む、ホスト計算機の周辺機器は、システムコールやメモリマップトI/O(Input/Output)などにより、ホスト上のプロセスに対する操作のインタフェースを提供する。本実施例の仮想インタフェース部1は、そのような操作の対象が、エミュレーション部2及びアクセラレータ4のうち、スケジューリング部3が決定する側になるように、メモリのマッピングやシステムコールの対象を制御する。仮想インタフェース部1は、ホスト計算機のCPU(Central Processing Unit)、メモリ、ホスト計算機上のオペレーティングシステム(OS;Operating System)の一部、及び、デバイスドライバによって実現可能である。
エミュレーション部2は、アクセラレータ4の機能及び振る舞いと同一の機能及び振る舞いを、アクセラレータ4の資源を用いずに、主にホスト計算機の資源によって実現する。エミュレーション部2は、アクセラレータ4用のプログラムと入力とに対して、アクセラレータ4が返す結果と同一の結果を返す。エミュレーション部2は、ホスト計算機のCPUとメモリ、ホスト計算機上で動作するプログラムの組み合わせによって実現される。エミュレーション部2は、アクセラレータ4とは別のコプロセッサ、DMA(Direct Memory Access)エンジンなどをさらに使用して実現されてもよい。
スケジューリング部3は、アクセラレータ4を使用するホスト計算機上の制御プロセス(以下制御プロセス)の一覧を保持する。スケジューリング部3は、制御プロセスの一覧から、アクセラレータ4を使用する制御プロセスを高々1つ決定し、決定した制御プロセスにアクセラレータ4を割り当てる。
図7は、スケジューリング部3が保持する制御プロセスの一覧の例を示す表である。図7に示す例では、スケジューリング部3は、制御プロセスのプロセス識別子(PID;Process Identifier)5001と、制御プロセスが使用するアクセラレータの使用状況を示す状態5002とを含む、制御プロセスの一覧を保持する。図7に示す例では、PID5001が、それぞれ1234、1235、2001、2100である4つの制御プロセスが、アクセラレータ4を使用して動作している。以下では、PIDがNNNNである制御プロセスを、「制御プロセスNNNN」とも表記する。PIDがNNNNである制御プロセスを、単に「プロセスNNNN」とも表記する。なお、この「NNNN」は、4桁の数字である。
図7に示す例において、状態5002がRUNNINGである制御プロセスは、アクセラレータを使用中である制御プロセスである。すなわち、制御プロセスの状態5002がRUNNINGである場合、その制御プロセスが実行するプログラム中の、アクセラレータによって実行される部分を、アクセラレータが実行中である、または、アクセラレータが実行可能である。状態5002がSLEEPである制御プロセスは、アクセラレータを使用していない状態(スリープ状態)である制御プロセスである。すなわち、制御プロセスの状態5002がSLEEPである場合、制御プロセスは、アクセラレータによって実行される部分を実行していない。図7に示す例では、制御プロセス1234、2001、2100がアクセラレータを使用中の状態(RUNNING)であり、制御プロセス1235がアクセラレータを使用していない状態(SLEEP)である。詳細は本実施例の動作の説明の一部として後述する。
スケジューリング部3は、ホスト計算機のCPU、メモリ、ホスト計算機上のOSの一部、及び、デバイスドライバによって実現可能である。スケジューリング部3は、アクセラレータ4に搭載されたDMAエンジン、または、ホスト計算機に接続された、アクセラレータ4以外のDMAエンジンやコプロセッサなどを更に使用して実現されてもよい。
アクセラレータ4は、ホスト計算機に接続され、ホスト計算機の制御プロセスが使用可能な、ホスト計算機の資源とは別の計算機である。アクセラレータ4は、例えば、ホスト計算機の入出力バスやインタコネクトに接続された、CPU、メモリ、及び、I/Oインタフェースなどを搭載した周辺機器カードである。アクセラレータ4の具体例として、例えば以下のものが挙げられる:PCI(Peripheral Component Interconnect) Express (登録商標)インタフェースに接続された NEC SX-Aurora TSUBASA(登録商標)ベクトルエンジン、Intel Xeon Phi (登録商標)コプロセッサ、GPU(Graphics Processing Unit)など。
図4は、本開示の第2の実施形態に係る情報処理装置の実装の構成の一例を示すブロック図である。図4に示す例では、ホスト計算機10とアクセラレータ4とが PCI Express によって接続されている。ホスト計算機10は、前述のホスト計算機である。ホスト計算機10上のOS61において動作するデバイスドライバ62によって、仮想インタフェース部1とスケジューリング部3とが実現される。仮想インタフェース部1は、デバイスドライバ62が提供する仮想デバイスドライバインタフェースによって実現される。エミュレーション部2は、ホスト計算機10のCPU及びメモリと、ホスト計算機10において動作するユーザプログラムとによって実現される。そのようなユーザプログラムとして、エミュレータプロセス21、及び、エミュレータプロセス22が動作している。制御プロセス51は、デバイスドライバ62によって、アクセラレータ4またはエミュレータプロセス21を使用する。制御プロセス12は、デバイスドライバ62によって、アクセラレータ4またはエミュレータプロセス22を使用する。
<動作>
本開示の第2の実施形態の情報処理装置102動作を説明する。
本開示の第2の実施形態の情報処理装置102動作を説明する。
アクセラレータ4を使用するプログラムとして動作する制御プロセス(例えば、上述の制御プロセス51又は制御プロセス52)が起動するときの動作を説明する。制御プロセスは、仮想インタフェース部1が提供するデバイスドライバインタフェースをオープンする。仮想インタフェース部1は、スケジューリング部3に制御プロセスを一覧へ追加することを通知する。スケジューリング部3は、制御プロセスを制御プロセスの一覧に追加し、エミュレーション部2に制御プロセスが追加されたことを通知する。
エミュレーション部2は、追加された制御プロセスに対応するエミュレータプロセス(例えば、制御プロセス51に対応するエミュレータプロセス21、又は、制御プロセス52に対応するエミュレータプロセス22)を起動する。また、エミュレーション部2は、仮想インタフェース部1からエミュレーション部2へのレジスタアクセスと、エミュレーション部2から仮想インタフェース部1への割り込み通知とのための通信部を確立する。仮想インタフェース部1によるデバイスドライバインタフェースは、制御プロセスにファイルディスクリプタを返す。これ以降、制御プロセスは、このファイルディスクリプタを用いて、例えば以下のような操作が可能になる。制御プロセスは、ファイルディスクリプタを用いて、レジスタ領域のマップを行うことが可能になる。制御プロセスは、ファイルディスクリプタを用いて、制御プロセスに対応するエミュレータプロセス及びアクセラレータ4の起動及び停止を行うことが可能になる。制御プロセスは、ファイルディスクリプタを用いて、制御プロセスに対応するエミュレータプロセス及びアクセラレータ4からの割込の確認を行うことが可能になる。制御プロセスは、ファイルディスクリプタを用いて、制御プロセスに対応するエミュレータプロセス及びアクセラレータ4との間でデータのDMA転送を行うことが可能になる。以下の説明では、エミュレータプロセスを、エミュレータとも表記する。また、アクセラレータ4を実機とも表記する。
図8は、仮想インタフェース部1により制御プロセスがエミュレータプロセスのレジスタ領域をマップした状態の一例を示す図である。図8に示す例では、制御プロセスに対応するエミュレータプロセスのレジスタ領域が、メモリの一部として実現されている。そのレジスタ領域の実メモリが、物理アドレス0x1000000から始まる領域である。制御プロセスが、仮想インタフェース部1が返したファイルディスクリプタを用いてレジスタ領域をマップしようとすると、仮想インタフェース部1は、前述の物理アドレス0x10000000にある、エミュレータプロセスのレジスタ領域をマップして返す。
スケジューリング部3は、アクセラレータ実機が解放されたか使用する制御プロセスが存在しないとき、制御プロセスの一覧にアクセラレータで実行可能な制御プロセスがあれば、当該制御プロセスに実機を割り当てる。所定の条件が満たされたときに、スケジューリング部3は、実機からエミュレータにコンテキストを退避し、実機を解放する。コンテキストは、例えば、処理を実行中のプロセッサなどの状態などを表す情報である。コンテキストは、例えば、レジスタの内容等を表す情報を含む。所定の条件は、例えば、実機の実行が停止されること、アクセラレータを使用中の制御プロセスが終了すること、アクセラレータを使用中の制御プロセスによる実行時間が一定以上になること、などである。所定の条件は、これらの条件の少なくともいずれかが満たされることであってもよい。本実施形態による制御プロセスへの実機の割り当て、実機の解放について以下詳細に説明する。
図5を参照して、制御プロセスへの実機の割り当てについて詳細に説明する。図5は、本開示の第2の実施形態におけるスケジューリング部3によるアクセラレータの割り当ての動作を説明するフローチャートである。
スケジューリング部3は、アクセラレータ4において実行可能な状態の制御プロセスが存在するか確認する(ステップS101)。スケジューリング部3は、通常のオペレーティングシステムにおけるCPUのタスクスケジューラと同様に、制御プロセスの一覧から実行可能な制御プロセスを取り出す。図7に示す例では、プロセス1234、プロセス2001、及び、プロセス2100が実行可能(RUNNING)の状態 なので、スケジューリング部3は、このうち一つ(例えば先頭のプロセス1234)を取り出す。
アクセラレータ4で実行可能な制御プロセスがあれば(ステップS101のYES)、スケジューリング部3は、制御プロセスによる仮想インタフェース部1を介したエミュレータプロセスへのアクセスを抑止する(ステップS102)。そして、スケジューリング部3は、エミュレータプロセスのレジスタ領域へのマッピングを解除する。
エミュレータへのマッピングを解除した後、スケジューリング部3は、エミュレータからコンテキストをアクセラレータ4に転送する(ステップS103)。以下ステップS103の詳細を説明する。
スケジューリング部3は、エミュレータに対して動作を停止する要求である動作停止要求を発行し、後続する命令が実行されないようにし、DMA転送が開始されないようにする。そして、スケジューリング部3は、エミュレータによる処理中の命令の完了と、実行中のDMA転送の完了とを待つ。エミュレータプロセスによるエミュレーションが停止した後、スケジューリング部3は、コンテキストとメモリの内容とを、エミュレータプロセスから実機に転送する。スケジューリング部3は、エミュレータプロセスが持つレジスタ領域の内容を、メモリマップトI/OやDMAによって実機に転送する。また、スケジューリング部3は、エミュレータプロセスによってエミュレートされたアクセラレータの主記憶の内容も、アクセラレータ実機に転送する。スケジューリング部3は、コンテキストとメモリの内容を転送した後、アクセラレータ4の動作を開始させる。すなわち、スケジューリング部3は、エミュレータプロセスの動作状態を、アクセラレータ4上で再現させる。
上述のように、コンテキストの転送の後、スケジューリング部3は、制御プロセスがアクセラレータに対して実行を要求しているプログラムの動作をアクセラレータ実機上で再開する。プログラムの動作をアクセラレータ実機上で再開した後、スケジューリング部3は、デバイスドライバインタフェースによる、制御プロセスからアクセラレータ実機へのレジスタ領域のマップを行う。そして、スケジューリング部3は、制御プロセスによるアクセラレータへのアクセス抑止を解除する(ステップS104)。
図9を用いて、第2の実施形態による実機の割り当てにおいてステップS102およびS104において行われる、レジスタ領域のマッピングの解除及びマッピングについて説明する。図9は、ステップS104において、仮想インタフェース部1によって、制御プロセスがアクセラレータ4のレジスタ領域をマップした状態の一例を示す図である。図9に示す例では、アクセラレータ4のレジスタ領域が、物理アドレス0x100000000に配置されている。また、制御プロセスに対応するエミュレータプロセスのレジスタ領域が、メモリの一部として実現されている。その実メモリが、物理アドレス0x1000000から開始する領域である。ステップS102において、仮想インタフェース部1は、制御プロセスからレジスタ領域0x10000000へのマッピングを解除する。ステップS104において、仮想インタフェース部1は、制御プロセスからレジスタ領域へのマッピングのマップ先を、0x100000000に設定する。
制御プロセスによるレジスタ領域へのアクセスの抑止は、以下のように実現可能である。通常、マルチCPU及びマルチスレッドをサポートするオペレーティングシステムは、仮想アドレス空間の更新をアトミックに行うためのセマフォやミューテックスをプロセス毎に持つ。そこで、プロセスの処理が行われている間、セマフォの減少またはミューテックスのロックを行い、プロセスが終了した後に、セマフォの増加またはミューテックスのアンロックを行うことによって、プロセスによるレジスタ領域へのアクセスの抑止を実現できる。以下、ミューテックスのロックを、仮想アドレス空間のロックと表記し、ミューテックスのアンロックを、仮想アドレス空間のアンロックと表記する。
以下、レジスタ領域への制御プロセスによるアクセスの抑止の詳細を説明する。アクセスを抑止する際、レジスタ領域のマッピングが解除される。レジスタ領域のマッピングが解除されているため、制御プロセスがレジスタ領域にアクセスしようとすると、ページフォルトが発生し、オペレーティングシステムのページフォルトハンドラが呼ばれる。ページフォルトハンドラは、仮想アドレス空間のロックを行うため、制御プロセスは、ここで実行を停止し、仮想アドレス空間のロック解除まで待つ。これにより、レジスタ領域へのアクセスを抑止できる。
制御プロセス毎に独立したミューテックスがある場合、仮想アドレス空間のロックの代わりに、制御プロセス毎の独立したミューテックスを、上述の処理の間ロックすることによっても、レジスタ領域へのアクセスの抑止を実現することができる。以上の説明は一例である。レジスタ領域へのアクセスの抑止の実現のために、その他プロセッサやオペレーティングシステムが提供する、その他の同期プリミティブや、イベント待ち機構などを用いても構わない。
図6を参照して、制御プロセスへの実機の割り当てについて詳細に説明する。図6は、本発明の第2の実施形態におけるスケジューリング部3によるアクセラレータの割り当て解除の動作を説明するフローチャートである。
アクセラレータ4においてプログラムを実行している制御プロセスがあれば(ステップS201のYES)、スケジューリング部3は、仮想インタフェース部1からアクセラレータ4への制御プロセスによるアクセスを抑止する(ステップS202)。そして、スケジューリング部3は、アクセラレータ4のレジスタ領域へのマッピングを解除する。
アクセラレータ4のレジスタ領域へのマッピングを解除した後、スケジューリング部3は、コンテキストをアクセラレータ4からエミュレータに転送する(ステップS203)。以下では、ステップS203の詳細を説明する。
スケジューリング部3は、アクセラレータ4に対して動作停止要求を発行し、後続する命令の実行とDMA転送とが開始されないようにする。スケジューリング部3は、アクセラレータ4による処理中の命令とDMA転送との完了を待つ。アクセラレータ4の停止の後、スケジューリング部3は、コンテキストとメモリの内容とを、実機からエミュレータプロセスに転送する。スケジューリング部3は、実機のレジスタ領域の内容をメモリマップトI/OやDMAによって、エミュレータプロセスのレジスタ領域に転送する。また、スケジューリング部3は、アクセラレータ4の主記憶の内容も、エミュレータプロセスがエミュレートする主記憶に転送する。スケジューリング部3は、コンテキストとメモリの内容との転送の後、エミュレータプロセスの動作を開始させる。すなわち、スケジューリング部3は、アクセラレータ4の動作の状態をエミュレータプロセス上において再現させる。
コンテキストの転送の後、アクセラレータ4の動作の状態がエミュレータプロセス上において再現される。すなわち、制御プロセスがアクセラレータ4に実行させていたプログラムの動作がエミュレータプロセス上で再開される。その後、スケジューリング部3は、デバイスドライバインタフェースによる、制御プロセスからエミュレータプロセスへのレジスタ領域のマップを行い、制御プロセスによるアクセスの抑止を解除する(ステップS204)。
この場合のレジスタ領域のマップの切り替え及びアクセスの抑止の詳細は、制御プロセスへの実機の割り当ての場合と同様である。
次に、アクセラレータを使用する制御プロセスの終了について説明する。
制御プロセスが、デバイスを閉じる(すなわち、デバイスのクローズを行う)。デバイスのクローズは、制御プロセスが、デバイスドライバのファイルディスクリプタのすべてのクローズと、デバイスドライバを使用して作成したメモリマップのすべてのアンマップとを、プログラムによって明示的に行うことによって行われる。または、デバイスのクローズは、制御プロセスが終了したときのオペレーティングシステムによって行われる。仮想インタフェース部1は、制御プロセスによるデバイスのクローズを検出し、クローズが検出されたことをスケジューリング部3に通知する。
スケジューリング部3は、制御プロセスの一覧から、終了した制御プロセスを削除する。
また、スケジューリング部3は、終了した制御プロセスが使用していたすべての資源を解除する。スケジューリング部3は、終了した制御プロセスに対応するエミュレータプロセスを終了させる。これにより、スケジューリング部3は、終了した制御プロセスに対応するエミュレータプロセスが使用していた、ホスト計算機のCPUやメモリなどの資源を解放する。もし終了した制御プロセスにアクセラレータ4が割り当てられているならば、スケジューリング部3は、アクセラレータ4の実行を停止する。
<効果>
本実施形態の情報処理装置102は、仮想インタフェース部1とスケジューリング部3を備えることによって、制御プロセスの動作中にマッピングを透過的にエミュレーション部2とアクセラレータ4の間で切り替えることができる。そのため、本実施形態の情報処理装置102は、バッチジョブスケジューラによる時間の割り当てを待つことなくアクセラレータを使用するプログラムを起動することができ、そのプログラムを動作させる制御プロセスが、エミュレータだけでなく、実機も使用することができる。そのような制御プロセスが、エミュレーション部2だけでなく、アクセラレータ4も使用することによって、エミュレーション部2が単独で動作する場合よりも、処理を高速に実行することができる。また、制御プロセスが終了すると、スケジューリング部3が、別の実行中の制御プロセスのコンテキストとメモリとをアクセラレータ4に転送し、アクセラレータ4上で実行することができる。そのため、アクセラレータ4を使用する制御プロセスが1つであれば、その制御プロセスは、ただちにアクセラレータ4を占有することもできる。これにより、複数のモジュールのデバッグのために複数のプロセスを実行する場合、各プロセスが、待ちがなく開始される。さらに、各プロセスが、アクセラレータ4とホスト計算機のエミュレーション部2との両方を使って処理を実行することができる。それにより、ホスト計算機とアクセラレータ4を使用する複数のプロセス全体での実行時間が短縮される。
本実施形態の情報処理装置102は、仮想インタフェース部1とスケジューリング部3を備えることによって、制御プロセスの動作中にマッピングを透過的にエミュレーション部2とアクセラレータ4の間で切り替えることができる。そのため、本実施形態の情報処理装置102は、バッチジョブスケジューラによる時間の割り当てを待つことなくアクセラレータを使用するプログラムを起動することができ、そのプログラムを動作させる制御プロセスが、エミュレータだけでなく、実機も使用することができる。そのような制御プロセスが、エミュレーション部2だけでなく、アクセラレータ4も使用することによって、エミュレーション部2が単独で動作する場合よりも、処理を高速に実行することができる。また、制御プロセスが終了すると、スケジューリング部3が、別の実行中の制御プロセスのコンテキストとメモリとをアクセラレータ4に転送し、アクセラレータ4上で実行することができる。そのため、アクセラレータ4を使用する制御プロセスが1つであれば、その制御プロセスは、ただちにアクセラレータ4を占有することもできる。これにより、複数のモジュールのデバッグのために複数のプロセスを実行する場合、各プロセスが、待ちがなく開始される。さらに、各プロセスが、アクセラレータ4とホスト計算機のエミュレーション部2との両方を使って処理を実行することができる。それにより、ホスト計算機とアクセラレータ4を使用する複数のプロセス全体での実行時間が短縮される。
図10は、本実施形態の効果の一例を説明する図である。図10に示す例では、2つのプログラムAとプログラムBとが実行される例である。一般的なバッチジョブスケジューラによるプログラムA及びプログラムBの実行時間、本実施形態の情報処理装置102によるプログラムA及びプログラムBの実行時間を、それぞれ、Ta、Tb、Sa、Sbとおく。また、プログラムA及びBの投入時刻を、それぞれ、ta、tbとおく(ただし、tb>ta)。本実施形態では、プログラムBの投入時刻tbからプログラムAの終了時刻Sa+taまでの間、アクセラレータ(実機)及びエミュレータの両方でプログラムが動作している。よって、エミュレータの実行速度がアクセラレータ実機の実行速度のk倍であるとすると、本実施形態の情報処理装置102では、プログラムAの実行時間及びプログラムBの実行時間の合計がk(Sa+ta-tb)だけ短縮される。
このことは以下のように示される。
時刻tbと時刻Sa+taとの間における、プログラムA及びプログラムBの実機における実行時間を、それぞれ、ra及びrbとおくと、以下の関係が成り立つ:
Sa+ta-tb = ra + rb、
Ta = (tb-ta) + (ra + krb)、
Tb = (kra+rb)+(Sb-(ra+rb))。
Sa+ta-tb = ra + rb、
Ta = (tb-ta) + (ra + krb)、
Tb = (kra+rb)+(Sb-(ra+rb))。
また、一般的なバッチジョブスケジューラが使用される場合の所要時間、及び、本実施形態の情報処理装置102による全体の所要時間は、それぞれ、Ta+Tb+ta及びSb+tbであるから、その差は以下のとおりである:
(Ta+Tb+ta) - (Sb+tb) = (k(ra+rb)+Sb+tb)-(Sb+tb) = k(ra+rb)=k(Sa+ta-tb)。
(Ta+Tb+ta) - (Sb+tb) = (k(ra+rb)+Sb+tb)-(Sb+tb) = k(ra+rb)=k(Sa+ta-tb)。
<第3の実施形態>
本開示の第3の実施形態について説明する。
本開示の第3の実施形態について説明する。
図11は、本開示の第3の実施形態に係る情報処理装置103を説明するブロック図である。図11に示す例では、情報処理装置103は、仮想インタフェース部11から仮想インタフェース部1Nと、エミュレーション部2と、スケジューリング部30と、アクセラレータ41からアクセラレータ4Nとを含む。以下の説明では、スケジューリング部30を、統合スケジューリング部30とも表記する。
本開示の第3の実施形態における統合スケジューリング部30は、N台のアクセラレータ(実機)、すなわちアクセラレータ41からアクセラレータ4N、のいずれか1台に制御プロセスを割り当てる。
例えば、あるアクセラレータにおいて所定の条件が満たされたとき、統合スケジューリング部30は、制御プロセスのリストの1つから1つの実行可能な制御プロセスを選択し、選択した制御プロセスにそのアクセラレータを割り当てる。上述の所定の条件は、例えば、アクセラレータが停止すること、アクセラレータを使用する制御プロセスが無くなること、及び、アクセラレータにプロセスが割り当てられてから所定時間が経過すること、などの少なくともいずれかが満たされることである。
または、統合スケジューリング部30は、制御プロセスのリストである制御プロセスリストをアクセラレータ実機の台数分持っていてもよい。統合スケジューリング部30は、新しい制御プロセスが開始される時には、最も短い制御プロセスリストに、新しい制御プロセスを追加する。統合スケジューリング部30は、所定の条件が満たされたときに、制御プロセスリストの全てでリストの長さが均一になるように、制御プロセスリストの間で制御プロセスを移動させてもよい。
図12は、統合スケジューリング部30が持つ制御プロセスの一覧の例を示す表である。図12に示す例では、制御プロセスのプロセス識別子(PID)10001と、制御プロセスのアクセラレータを使用する部分の状態10002と、制御プロセスが使用するアクセラレータの数であるアクセラレータ数10003を保持する。状態10002は、制御プロセスのうち、アクセラレータを使用する部分が実行中であるか否かを表す。
図13は、本実施形態の情報処理装置103の実装の例を表すブロック図である。図13に示す例では、情報処理装置103は、ホスト装置10Aと、PCI Expressによってホスト装置10Aとそれぞれ接続されているアクセラレータ41からアクセラレータ4Nとを含む。仮想インタフェース部11から仮想インタフェース部1Nと、スケジューリング部3とが、ホスト装置10AのOS61Aとデバイスドライバ62Aとによって実現される。制御プロセス(図13の例では、制御プロセス51-1、・・・、制御プロセス5N-1、・・・)は、第2の実施形態の制御プロセスと同様の制御プロセスである。本実施形態のエミュレーション部2は、エミュレータプロセス21-1、・・・、エミュレータプロセス2N-1、・・・によって実現される。これらのエミュレータプロセスは、第2の実施形態のエミュレータプロセスと同様に実現される。例えば、第2の実施形態のエミュレータプロセスの説明は、OS61をOS61Aと、デバイスドライバ62をデバイスドライバ62Aと読み替えることによって、本実施形態にも適用できる。
以上で説明した相違点を除いて、本実施形態の情報処理装置103及びその構成要素の機能及び動作は、第2の実施形態の情報処理装置103及び対応する構成要素の機能及び動作と同様である。
本実施形態によれば、複数のアクセラレータ実機の存在する環境において、実機の使用効率を高め、開発効率を高めることができる。
<第4の実施形態>
次に、本開示の第4の実施形態について説明する。
次に、本開示の第4の実施形態について説明する。
本実施形態に係る情報処理装置の構成は、図3及び図4に示す、第2の実施形態の構成と同じである。
本実施形態のスケジューリング部3は、エミュレーション部2及びアクセラレータ4による、レジスタ及びメモリの更新された部分を検出する。レジスタ及びメモリの更新された部分を検出する方法は、既存の検出方法の1つであってよい。例えば、スケジューリング部3は、メモリのページテーブルエントリのダーティビットを用いて、メモリの更新された部分を検出してもよい。スケジューリング部3は、エミュレーション部2とアクセラレータ4との間で、制御プロセスによってエミュレーション部2又はアクセラレータ4において実行される実行中のプロセスを移動させる。スケジューリング部3は、そのようなプロセスを移動させてから、次にその処理を移動させるまでの間に、レジスタ及びメモリの更新された部分を検出する。言い換えると、スケジューリング部3は、コンテキスト及びメモリの内容のうち、実行中のプロセスを移動させてから次にそのプロセスを移動させるまでの間に更新された部分を検出する。
スケジューリング部3は、実行中のプロセスをエミュレーション部2とアクセラレータ4との間で移動させる場合、コンテキスト及びメモリの内容のうち、更新された部分を、エミュレーション部2とアクセラレータ4との間で転送する。
次に、本実施形態の情報処理装置102の動作について説明する。
図14は、本実施形態の情報処理装置102の、スケジューリング部3によるアクセラレータ4の割り当ての動作を説明するフローチャートである。図14に示す例では、ステップS101、ステップS102、及び、ステップS104の動作は、それぞれ、図5に示す動作の、ステップS101、ステップS102、及び、ステップS104の動作と同じである。本実施形態のスケジューリング部3は、ステップS101、ステップS102、及び、ステップS104において、それぞれ、第2の実施形態のスケジューリング部3の、ステップS101、ステップS102、及び、ステップS104の動作と同様に動作する。本実施形態のスケジューリング部3は、ステップS103の代わりに、ステップS301及びステップS302の動作を行う。ステップS301において、本実施形態のスケジューリング部3は、コンテキスト及びメモリの内容の更新部分を検出する。言い換えると、本実施形態のスケジューリング部3は、コンテキストの更新部分と、メモリの内容の更新部分とを検出する。ステップS302において、本実施形態のスケジューリング部3は、コンテキスト及びメモリの内容の更新部分を、エミュレーション部2からアクセラレータ4に転送する。ステップS302において、本実施形態のスケジューリング部3は、転送するデータを除いて、第2の実施形態のスケジューリング部3のステップS103の動作と同様の動作を行う。第2の実施形態のスケジューリング部3は、コンテキスト及びメモリの内容を、更新されていない部分も含めて転送するのに対して、本実施形態のスケジューリング部3は、コンテキストの更新部分と、メモリの内容の更新部分とを転送する。
図15は、本実施形態の情報処理装置102の、スケジューリング部3によるアクセラレータ4の割り当ての解除動作を説明するフローチャートである。図15に示す例では、ステップS201、ステップS202、及び、ステップS204の動作は、それぞれ、図6に示す動作の、ステップS201、ステップS202、及び、ステップS204の動作と同じである。本実施形態のスケジューリング部3は、ステップS201、ステップS202、及び、ステップS204において、それぞれ、第2の実施形態のスケジューリング部3の、ステップS201、ステップS202、及び、ステップS204の動作と同様に動作する。本実施形態のスケジューリング部3は、ステップS203の代わりに、ステップS401及びステップS402の動作を行う。ステップS401において、本実施形態のスケジューリング部3は、コンテキスト及びメモリの内容の更新部分を検出する。言い換えると、本実施形態のスケジューリング部3は、コンテキストの更新部分と、メモリの内容の更新部分とを検出する。ステップS402において、本実施形態のスケジューリング部3は、コンテキスト及びメモリの内容の更新部分を、アクセラレータ4からエミュレーション部2に転送する。ステップS402において、本実施形態のスケジューリング部3は、転送するデータを除いて、第2の実施形態のスケジューリング部3のステップS203の動作と同様の動作を行う。第2の実施形態のスケジューリング部3は、コンテキスト及びメモリの内容を、更新されていない部分も含めて転送するのに対して、本実施形態のスケジューリング部3は、コンテキストの更新部分と、メモリの内容の更新部分とを転送する。
なお、本実施形態の構成は、第4の実施形態の構成と同じであってもよい。その場合は、本実施形態の情報処理装置103及びその構成要素の説明を、それぞれ、情報処理装置103及び対応する構成要素の説明として読み替えればよい。
<他の実施形態>
本開示の実施形態に係る情報処理装置及びホスト装置の各々は、記憶媒体から読み出されたプログラムがロードされたメモリと、そのプログラムを実行するプロセッサとを含むコンピュータによって実現できる。コンピュータは、互いに通信可能に接続された複数のコンピュータによって実現できる。本開示の実施形態に係る情報処理装置及びホスト装置の各々は、専用のハードウェアによって実現することもできる。本開示の実施形態に係る情報処理装置及びホスト装置の各々は、前述のコンピュータと専用のハードウェアとの組み合わせによって実現することもできる。専用のハードウェアは、例えば、1つの回路、又は、互いに通信可能に接続された複数の回路によって実現できる。
本開示の実施形態に係る情報処理装置及びホスト装置の各々は、記憶媒体から読み出されたプログラムがロードされたメモリと、そのプログラムを実行するプロセッサとを含むコンピュータによって実現できる。コンピュータは、互いに通信可能に接続された複数のコンピュータによって実現できる。本開示の実施形態に係る情報処理装置及びホスト装置の各々は、専用のハードウェアによって実現することもできる。本開示の実施形態に係る情報処理装置及びホスト装置の各々は、前述のコンピュータと専用のハードウェアとの組み合わせによって実現することもできる。専用のハードウェアは、例えば、1つの回路、又は、互いに通信可能に接続された複数の回路によって実現できる。
図16は、本開示の実施形態に係る情報処理装置及びホスト装置の各々を実現することができる、コンピュータ1000のハードウェア構成の一例を表す図である。図16を参照すると、コンピュータ1000は、プロセッサ1001と、メモリ1002と、記憶装置1003と、I/O(Input/Output)インタフェース1004とを含む。また、コンピュータ1000は、記憶媒体1005にアクセスすることができる。メモリ1002と記憶装置1003は、例えば、RAM(Random Access Memory)、ハードディスクなどの記憶装置である。記憶媒体1005は、例えば、RAM、ハードディスクなどの記憶装置、ROM(Read Only Memory)、可搬記憶媒体である。記憶装置1003が記憶媒体1005であってもよい。プロセッサ1001は、メモリ1002と、記憶装置1003に対して、データやプログラムの読み出しと書き込みを行うことができる。プロセッサ1001は、I/Oインタフェース1004を介して、例えば、他の装置にアクセスすることができる。プロセッサ1001は、記憶媒体1005にアクセスすることができる。記憶媒体1005には、コンピュータ1000を、本開示の実施形態に係る情報処理装置及びホスト装置として動作させるプログラムが格納されている。
プロセッサ1001は、記憶媒体1005に格納されている、コンピュータ1000を、本開示の実施形態に係る情報処理装置として動作させるプログラムを、メモリ1002にロードする。そして、プロセッサ1001が、メモリ1002にロードされたプログラムを実行することにより、コンピュータ1000は、本開示の実施形態に係る情報処理装置として動作する。
プロセッサ1001は、記憶媒体1005に格納されている、コンピュータ1000を、本開示の実施形態に係るホスト装置として動作させるプログラムを、メモリ1002にロードする。そして、プロセッサ1001が、メモリ1002にロードされたプログラムを実行することにより、コンピュータ1000は、本開示の実施形態に係るホスト装置として動作する。
仮想インタフェース部1、エミュレーション部2、スケジューリング部3は、例えば、メモリ1002に格納されたプログラムを実行するプロセッサ1001により実現できる。仮想インタフェース部11、・・・、仮想インタフェース部1N、スケジューリング部3、スケジューリング部30は、例えば、メモリ1002に格納されたプログラムを実行するプロセッサ1001により実現できる。仮想インタフェース部1、仮想インタフェース部11、・・・、仮想インタフェース部1N、エミュレーション部2、スケジューリング部3、スケジューリング部30の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
アクセラレータをエミュレートするエミュレーション手段と、
ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション手段が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション手段との間で転送するスケジューリング手段と、
を備える情報処理装置。
アクセラレータをエミュレートするエミュレーション手段と、
ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション手段が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション手段との間で転送するスケジューリング手段と、
を備える情報処理装置。
(付記2)
前記スケジューリング手段は、前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記エミュレーション手段との間で転送する
付記1に記載の情報処理装置。
前記スケジューリング手段は、前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記エミュレーション手段との間で転送する
付記1に記載の情報処理装置。
(付記3)
前記スケジューリング手段は、前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記エミュレーション手段が実行している状態への前記切り替えを行う
付記1又は2に記載の情報処理装置。
前記スケジューリング手段は、前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記エミュレーション手段が実行している状態への前記切り替えを行う
付記1又は2に記載の情報処理装置。
(付記4)
前記スケジューリング手段は、前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記3に記載の情報処理装置。
前記スケジューリング手段は、前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記3に記載の情報処理装置。
(付記5)
前記スケジューリング手段は、複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記4に記載の情報処理装置。
前記スケジューリング手段は、複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記4に記載の情報処理装置。
(付記6)
前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記スケジューリング手段は、前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記5に記載の情報処理装置。
前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記スケジューリング手段は、前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記5に記載の情報処理装置。
(付記7)
前記スケジューリング手段は、前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
付記6に記載の情報処理装置。
前記スケジューリング手段は、前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
付記6に記載の情報処理装置。
(付記8)
前記スケジューリング手段は、前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
付記6又は7に記載の情報処理装置。
前記スケジューリング手段は、前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
付記6又は7に記載の情報処理装置。
(付記9)
前記ジョブを実行させる管理プロセスと、前記ジョブとの間を仲介する仮想インタフェース手段をさらに備え、
前記スケジューリング手段は、前記アクセラレータが前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の通信を前記仮想インタフェース手段と前記アクセラレータとの間で実行させ、前記エミュレーション手段が前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の前記通信を前記仮想インタフェース手段と前記エミュレーション手段の間で実行させる
付記1乃至8のいずれか1項に記載の情報処理装置。
前記ジョブを実行させる管理プロセスと、前記ジョブとの間を仲介する仮想インタフェース手段をさらに備え、
前記スケジューリング手段は、前記アクセラレータが前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の通信を前記仮想インタフェース手段と前記アクセラレータとの間で実行させ、前記エミュレーション手段が前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の前記通信を前記仮想インタフェース手段と前記エミュレーション手段の間で実行させる
付記1乃至8のいずれか1項に記載の情報処理装置。
(付記10)
ジョブの実行中に、当該ジョブをアクセラレータが実行する状態と、当該ジョブを、前記アクセラレータをエミュレートする情報処理装置が実行する状態との間の切り替えを行い、
前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記情報処理装置との間で転送する、
情報処理方法。
ジョブの実行中に、当該ジョブをアクセラレータが実行する状態と、当該ジョブを、前記アクセラレータをエミュレートする情報処理装置が実行する状態との間の切り替えを行い、
前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記情報処理装置との間で転送する、
情報処理方法。
(付記11)
前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記情報処理装置との間で転送する
付記10に記載の情報処理方法。
前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記情報処理装置との間で転送する
付記10に記載の情報処理方法。
(付記12)
前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記情報処理装置が実行している状態への前記切り替えを行う
付記10又は11に記載の情報処理方法。
前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記情報処理装置が実行している状態への前記切り替えを行う
付記10又は11に記載の情報処理方法。
(付記13)
前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記情報処理装置が実行している場合、当該次のジョブを前記情報処理装置が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記12に記載の情報処理方法。
前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記情報処理装置が実行している場合、当該次のジョブを前記情報処理装置が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記12に記載の情報処理方法。
(付記14)
複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記情報処理装置が実行している場合、当該次のジョブを前記情報処理装置が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記13に記載の情報処理方法。
複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記情報処理装置が実行している場合、当該次のジョブを前記情報処理装置が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記13に記載の情報処理方法。
(付記15)
前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記情報処理装置が実行している場合、当該次のジョブを前記情報処理装置が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記14に記載の情報処理方法。
前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記情報処理装置が実行している場合、当該次のジョブを前記情報処理装置が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記14に記載の情報処理方法。
(付記16)
前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
付記15に記載の情報処理方法。
前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
付記15に記載の情報処理方法。
(付記17)
前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
付記15又は16に記載の情報処理方法。
前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
付記15又は16に記載の情報処理方法。
(付記18)
前記ジョブを実行させる管理プロセスと、前記ジョブとの間を仲介し、
前記アクセラレータが前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の通信を前記情報処理装置と前記アクセラレータとの間で実行させ、前記情報処理装置が前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の前記通信を前記情報処理装置と前記情報処理装置の間で実行させない
付記10乃至17のいずれか1項に記載の情報処理方法。
前記ジョブを実行させる管理プロセスと、前記ジョブとの間を仲介し、
前記アクセラレータが前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の通信を前記情報処理装置と前記アクセラレータとの間で実行させ、前記情報処理装置が前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の前記通信を前記情報処理装置と前記情報処理装置の間で実行させない
付記10乃至17のいずれか1項に記載の情報処理方法。
(付記19)
アクセラレータをエミュレートするエミュレーション処理と、
ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション処理が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション処理との間で転送するスケジューリング処理と、
をコンピュータに実行させる情報処理プログラム。
アクセラレータをエミュレートするエミュレーション処理と、
ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション処理が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション処理との間で転送するスケジューリング処理と、
をコンピュータに実行させる情報処理プログラム。
(付記20)
前記スケジューリング処理は、前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記エミュレーション処理との間で転送する
付記19に記載の情報処理プログラム。
前記スケジューリング処理は、前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記エミュレーション処理との間で転送する
付記19に記載の情報処理プログラム。
(付記21)
前記スケジューリング処理は、前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記エミュレーション処理が実行している状態への前記切り替えを行う
付記19又は20に記載の情報処理プログラム。
前記スケジューリング処理は、前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記エミュレーション処理が実行している状態への前記切り替えを行う
付記19又は20に記載の情報処理プログラム。
(付記22)
前記スケジューリング処理は、前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション処理が実行している場合、当該次のジョブを前記エミュレーション処理が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記21に記載の情報処理プログラム。
前記スケジューリング処理は、前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション処理が実行している場合、当該次のジョブを前記エミュレーション処理が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記21に記載の情報処理プログラム。
(付記23)
前記スケジューリング処理は、複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション処理が実行している場合、当該次のジョブを前記エミュレーション処理が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記22に記載の情報処理プログラム。
前記スケジューリング処理は、複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション処理が実行している場合、当該次のジョブを前記エミュレーション処理が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記22に記載の情報処理プログラム。
(付記24)
前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記スケジューリング処理は、前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記エミュレーション処理が実行している場合、当該次のジョブを前記エミュレーション処理が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記23に記載の情報処理プログラム。
前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記スケジューリング処理は、前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記エミュレーション処理が実行している場合、当該次のジョブを前記エミュレーション処理が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
付記23に記載の情報処理プログラム。
(付記25)
前記スケジューリング処理は、前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
付記24に記載の情報処理プログラム。
前記スケジューリング処理は、前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
付記24に記載の情報処理プログラム。
(付記26)
前記スケジューリング処理は、前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
付記24又は25に記載の情報処理プログラム。
前記スケジューリング処理は、前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
付記24又は25に記載の情報処理プログラム。
(付記27)
前記ジョブを実行させる管理プロセスと、前記ジョブとの間を仲介する仮想インタフェース処理を前記コンピュータにさらに実行させ、
前記スケジューリング処理は、前記アクセラレータが前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の通信を前記仮想インタフェース処理と前記アクセラレータとの間で実行させ、前記エミュレーション処理が前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の前記通信を前記仮想インタフェース処理と前記エミュレーション処理の間で実行させる
付記19乃至26のいずれか1項に記載の情報処理プログラム。
前記ジョブを実行させる管理プロセスと、前記ジョブとの間を仲介する仮想インタフェース処理を前記コンピュータにさらに実行させ、
前記スケジューリング処理は、前記アクセラレータが前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の通信を前記仮想インタフェース処理と前記アクセラレータとの間で実行させ、前記エミュレーション処理が前記ジョブを実行している場合、前記管理プロセスと前記ジョブとの間の前記通信を前記仮想インタフェース処理と前記エミュレーション処理の間で実行させる
付記19乃至26のいずれか1項に記載の情報処理プログラム。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
1 仮想インタフェース部
2 エミュレーション部
3 スケジューリング部
4 アクセラレータ
10 ホスト計算機
10A ホスト装置
11 仮想インタフェース部
1N 仮想インタフェース部
12 制御プロセス
21 エミュレータプロセス
21-1 エミュレータプロセス
2N-1 エミュレータプロセス
22 エミュレータプロセス
30 統合スケジューリング部、スケジューリング部
40 アクセラレータ
41 アクセラレータ
4N アクセラレータ
42 アクセラレータ
51 制御プロセス
51-1 制御プロセス
5N-1 制御プロセス
52 制御プロセス
61 OS
61A OS
62 デバイスドライバ
62A デバイスドライバ
101 情報処理装置
102 情報処理装置
103 情報処理装置
1000 コンピュータ
1001 プロセッサ
1002 メモリ
1003 記憶装置
1004 I/Oインタフェース
1005 記憶媒体
5001 プロセス識別子(PID)
5002 状態
10001 プロセス識別子(PID)
10002 状態
10003 アクセラレータ数
2 エミュレーション部
3 スケジューリング部
4 アクセラレータ
10 ホスト計算機
10A ホスト装置
11 仮想インタフェース部
1N 仮想インタフェース部
12 制御プロセス
21 エミュレータプロセス
21-1 エミュレータプロセス
2N-1 エミュレータプロセス
22 エミュレータプロセス
30 統合スケジューリング部、スケジューリング部
40 アクセラレータ
41 アクセラレータ
4N アクセラレータ
42 アクセラレータ
51 制御プロセス
51-1 制御プロセス
5N-1 制御プロセス
52 制御プロセス
61 OS
61A OS
62 デバイスドライバ
62A デバイスドライバ
101 情報処理装置
102 情報処理装置
103 情報処理装置
1000 コンピュータ
1001 プロセッサ
1002 メモリ
1003 記憶装置
1004 I/Oインタフェース
1005 記憶媒体
5001 プロセス識別子(PID)
5002 状態
10001 プロセス識別子(PID)
10002 状態
10003 アクセラレータ数
Claims (10)
- アクセラレータをエミュレートするエミュレーション手段と、
ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション手段が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション手段との間で転送するスケジューリング手段と、
を備える情報処理装置。 - 前記スケジューリング手段は、前記コンテキストと前記データとのうち、更新された更新部分を検出し、当該更新部分を、前記アクセラレータと前記エミュレーション手段との間で転送する
請求項1に記載の情報処理装置。 - 前記スケジューリング手段は、前記ジョブを実行している前記アクセラレータにおいて所定条件が満たされた場合、前記ジョブが終了していない場合、当該ジョブを前記アクセラレータが実行している状態から、当該ジョブを前記エミュレーション手段が実行している状態への前記切り替えを行う
請求項1又は2に記載の情報処理装置。 - 前記スケジューリング手段は、前記所定条件が満たされた場合、さらに、前記アクセラレータにおいて実行可能な複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
請求項3に記載の情報処理装置。 - 前記スケジューリング手段は、複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、前記複数のジョブから次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
請求項4に記載の情報処理装置。 - 前記複数のジョブは、前記複数のアクセラレータのいずれか1つに割り当てられ、
前記スケジューリング手段は、前記複数のアクセラレータのうち、前記所定条件が満たされた前記アクセラレータに対して、当該アクセラレータに割り当てられている前記ジョブから前記次のジョブを選択し、当該次のジョブを前記エミュレーション手段が実行している場合、当該次のジョブを前記エミュレーション手段が実行している状態から、当該次のジョブを前記アクセラレータが実行している状態への前記切り替えを行う
請求項5に記載の情報処理装置。 - 前記スケジューリング手段は、前記複数のアクセラレータのうちいずれかにおいて前記所定条件が満たされた場合、前記複数のアクセラレータの各々に割り当てられている前記ジョブの数が均等になるように、前記複数のジョブの前記複数のアクセラレータへの割り当てを変更する
請求項6に記載の情報処理装置。 - 前記スケジューリング手段は、前記複数のアクセラレータのいずれか1つに新しいジョブを割り当てる場合、前記複数のアクセラレータのうち、割り当てられている前記ジョブの数が最も少ない前記アクセラレータに前記新しいジョブを割り当てる
請求項6又は7に記載の情報処理装置。 - ジョブの実行中に、当該ジョブをアクセラレータが実行する状態と、当該ジョブを、前記アクセラレータをエミュレートする情報処理装置が実行する状態との間の切り替えを行い、
前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記情報処理装置との間で転送する、
情報処理方法。 - アクセラレータをエミュレートするエミュレーション処理と、
ジョブの実行中に、当該ジョブを前記アクセラレータが実行する状態と、当該ジョブを前記エミュレーション処理が実行する状態との間の切り替えを行い、前記切り替えを行う場合、当該ジョブのコンテキストとメモリに格納される当該ジョブに係るデータとを、前記アクセラレータと前記エミュレーション処理との間で転送するスケジューリング処理と、
をコンピュータに実行させる情報処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020162332A JP2022055002A (ja) | 2020-09-28 | 2020-09-28 | 情報処理装置、情報処理方法および情報処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020162332A JP2022055002A (ja) | 2020-09-28 | 2020-09-28 | 情報処理装置、情報処理方法および情報処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022055002A true JP2022055002A (ja) | 2022-04-07 |
Family
ID=80997734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020162332A Pending JP2022055002A (ja) | 2020-09-28 | 2020-09-28 | 情報処理装置、情報処理方法および情報処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022055002A (ja) |
-
2020
- 2020-09-28 JP JP2020162332A patent/JP2022055002A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3546678B2 (ja) | マルチos構成方法 | |
US9304794B2 (en) | Virtual machine control method and virtual machine system using prefetch information | |
US9996401B2 (en) | Task processing method and virtual machine | |
Mergen et al. | Virtualization for high-performance computing | |
US8201170B2 (en) | Operating systems are executed on common program and interrupt service routine of low priority OS is modified to response to interrupts from common program only | |
US6711605B2 (en) | Multi OS configuration method and computer system | |
US8296775B2 (en) | Efficient context switching of virtual processors by managing physical register states in a virtualized environment | |
US8635615B2 (en) | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof | |
JP7538950B2 (ja) | コンピュータデバイス、例外処理方法および割り込み処理方法 | |
US20130139159A1 (en) | Apparatus and method thereof for efficient execution of a guest in a virtualized environment | |
JPH0430053B2 (ja) | ||
EP3846028A1 (en) | Method and device for resuming execution of application, and computer | |
US11169837B2 (en) | Fast thread execution transition | |
US10241829B2 (en) | Information processing device, information processing method, recording medium, calculation processing device, calculation processing method | |
US7552434B2 (en) | Method of performing kernel task upon initial execution of process at user level | |
JP2009223842A (ja) | 仮想計算機制御プログラム及び仮想計算機システム | |
US7546600B2 (en) | Method of assigning virtual process identifier to process within process domain | |
US20060212840A1 (en) | Method and system for efficient use of secondary threads in a multiple execution path processor | |
JP4026667B2 (ja) | マルチos構成方法 | |
JP2001216172A (ja) | マルチos構成方法 | |
JP2022055002A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
JP2006522971A (ja) | オペレーティングシステム | |
JP2001236237A (ja) | マルチos構成方法 | |
Russinovich | Inside windows server 2008 kernel changes | |
US20230409321A1 (en) | Security vulnerability mitigation using address space co-execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20211019 |