JP2020177343A - 情報処理装置、情報処理システムおよびプログラム - Google Patents

情報処理装置、情報処理システムおよびプログラム Download PDF

Info

Publication number
JP2020177343A
JP2020177343A JP2019077822A JP2019077822A JP2020177343A JP 2020177343 A JP2020177343 A JP 2020177343A JP 2019077822 A JP2019077822 A JP 2019077822A JP 2019077822 A JP2019077822 A JP 2019077822A JP 2020177343 A JP2020177343 A JP 2020177343A
Authority
JP
Japan
Prior art keywords
processing
processors
data
tasks
types
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
JP2019077822A
Other languages
English (en)
Other versions
JP6631741B1 (ja
Inventor
加藤 圭
Kei Kato
圭 加藤
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 Client Computing Ltd
Original Assignee
Fujitsu Client Computing 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 Client Computing Ltd filed Critical Fujitsu Client Computing Ltd
Priority to JP2019077822A priority Critical patent/JP6631741B1/ja
Application granted granted Critical
Publication of JP6631741B1 publication Critical patent/JP6631741B1/ja
Priority to GB2003889.9A priority patent/GB2584935A/en
Priority to US16/832,602 priority patent/US20200334072A1/en
Priority to CN202010289136.4A priority patent/CN111831426A/zh
Publication of JP2020177343A publication Critical patent/JP2020177343A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】データ生成装置から出力されたデータに対して複数種類のタスクを複数のプロセッサで分担して処理する場合に、各プロセッサにタスクを適切かつ容易に割り当てる。
【解決手段】データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能なハードウェアとしての複数のプロセッサと接続された情報処理装置であって、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部と、を備える。
【選択図】図9

Description

本発明は、情報処理装置、情報処理システムおよびプログラムに関する。
従来から、ハードウェアとしての複数のプロセッサを用いて、データ生成装置から出力されたデータ(例えばカメラから出力された画像データ)に対して複数種類のタスク(例えば個別AI(Artificial Intelligence)処理)を分担して処理する技術がある。
特許第6359716号公報
しかしながら、上述の従来技術の場合、タスクの種類ごとの処理量が異なること等に起因して、各プロセッサにタスクを適切に割り当てることが容易ではなかった。
そこで、本発明は、上記事情に鑑みてなされたものであり、データ生成装置から出力されたデータに対して複数種類のタスクを複数のプロセッサで分担して処理する場合に、各プロセッサにタスクを適切かつ容易に割り当てることを目的とする。
本発明の第1態様に係る情報処理装置は、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能なハードウェアとしての複数のプロセッサと接続された情報処理装置であって、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部と、を備える。
また、情報処理装置において、例えば、前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当てる。
また、情報処理装置において、例えば、前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てる。
また、情報処理装置において、例えば、前記制御部は、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報に基づいて、前記優先度が高い前記データ生成装置のデータほど、実行される前記タスクの種類が多くなるように、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定する。
また、情報処理装置において、例えば、前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して、前記優先度の高いものから順番に、前記複数の処理パターンのうち実行される前記タスクの種類がなるべく多い前記処理パターンを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てる。
また、例えば、前記複数種類のタスクは、AI処理を構成する複数の個別AI処理である。
本発明の第2態様に係る情報処理システムは、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能な、ハードウェアとしての複数のプロセッサと、前記複数のプロセッサと接続された情報処理装置と、を備えた情報処理システムであって、前記情報処理装置は、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部と、を備える。
本発明の第3態様に係るプログラムは、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能な、ハードウェアとしての複数のプロセッサと接続された情報処理装置としてのコンピュータのためのプログラムであって、前記コンピュータを、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部、として機能させる。
本発明の上記第1態様〜上記第3態様によれば、データ生成装置から出力されたデータに対して複数種類のタスクを複数のプロセッサで分担して処理する場合に、各プロセッサにタスクを適切かつ容易に割り当てることができる。
図1は、第1実施形態にかかる情報処理システムにおける複数のプラットフォームの接続構成を模式的に示す図である。 図2は、プラットフォームのハードウェア構成を模式的に示す図である。 図3は、プラットフォームのソフトウェア構成を例示する図である。 図4は、PCIeブリッジコントローラのハードウェア構成を模式的に示す図である。 図5は、PCIeのレイヤ構成を示す図である。 図6は、プロセッサ(プロセッサH)からの他のプロセッサの見え方を例示する図である。 図7は、プロセッサ(プロセッサE)からの他のプロセッサの見え方を例示する図である。 図8は、PCIeブリッジコントローラを介したプロセッサ間のデータ転送方法を説明するための図である。 図9は、情報処理システムにおける機能を示す機能ブロック図である。 図10は、カメラを設置した店舗の模式図である。 図11は、処理性能テーブルの例を模式的に示す図である。 図12は、処理量テーブルの例を模式的に示す図である。 図13は、第1のカメラ情報テーブルの例を模式的に示す図である。 図14は、AI処理パターンテーブルの例を模式的に示す図である。 図15は、プロセッサB〜Gへのタスクの割り当ての第1の例を示す図である。 図16は、プロセッサB〜Gへのタスクの割り当ての第2の例を示す図である。 図17は、情報処理装置としてのプラットフォームにおける処理の流れを示すフローチャートである。 図18は、図17のフローチャートのステップS2の処理の詳細の例を示すフローチャートである。 図19は、第2実施形態における第2のカメラ情報テーブルの例を模式的に示す図である。 図20は、図17のフローチャートのステップS2の処理の詳細の例を示すフローチャートである。
以下に添付図面を参照して、情報処理装置、情報処理システムおよびプログラムの実施形態(第1実施形態、第2実施形態)について詳細に説明する。なお、以下の実施形態では、タスクとして主にAI処理の場合を例にとって説明するが、タスクはAI処理に限定されない。
(第1実施形態)
まず、第1実施形態について説明する。図1は、第1実施形態にかかる情報処理システム1における複数のプラットフォームの接続構成を模式的に示す図である。
[システム構成]
図1に例示する情報処理システム1においては、PCIe(Peripheral Component Interconnect Express;登録商標)ブリッジコントローラ3および複数(図1に示す例では8つ)のプラットフォーム2−1〜2−8を備える。各プラットフォーム2−1〜2−8は、それぞれPCIeブリッジコントローラ3に接続されている。
なお、以下、プラットフォームを示す符号としては、複数のプラットフォームのうち1つを特定する必要があるときには符号2−1〜2−8を用いるが、任意のプラットフォームを指すときには符号2を用いる。
[プラットフォーム]
情報処理装置としてのプラットフォーム2−1は、プロセッサ21−1を備える。同様に、プラットフォーム2−2〜2−8は、プロセッサ21−2〜21−8をそれぞれ備える。PCIeにおいては、プロセッサ21−1〜21−8がホスト側として動作可能なRC(Root Complex)となり、PCIeブリッジコントローラ3に搭載されているデバイスがEP(End Point)となり、ホストとデバイスとの間でのデータ転送が行なわれる。
プロセッサ21−1〜21−8はそれぞれ違うメーカ(ベンダ)から提供されてもよい。例えば、プロセッサ21−1、21−2、21−3、21−4、21−5、21−6、21−7、21−8は、それぞれ、A社、B社、C社、D社、E社、F社、G社、H社が提供するものであるとする。
また、以下、プロセッサ21−1、21−2、21−3、21−4、21−5、21−6、21−7、21−8を、それぞれプロセッサA、B、C、D、E、F、G、Hという場合がある。また、PCIeブリッジコントローラ3に搭載されているEPに対して、それぞれ異なるプラットフォームを接続してもよい。さらに、2つ以上の複数のEPを1つのプラットフォームに接続し、プラットフォーム側が複数のRCを用いてPCIeブリッジコントローラ3と通信してもよい。
なお、以下、プロセッサを示す符号としては、複数のプロセッサのうち1つを特定する必要があるときには符号21−1〜21−8もしくは符号A〜H等を用いるが、任意のプロセッサを指すときには符号21を用いる。
プラットフォーム2−1〜2−8は、AI処理や画像処理等の演算処理を行なうコンピュータ環境である。ここで、図2は、情報処理システム1におけるプラットフォーム2のハードウェア構成を模式的に示す図である。
図2に示すように、プラットフォーム2は、各種情報を一時記憶するメモリ22と、ストレージ23とを有する。また、プラットフォーム2は、各種演算処理を実行するプロセッサ21と、データ入力を受け付ける入力装置24と、モニタ25とを有する。また、プラットフォーム2は、記憶媒体からプログラム等を読み取る媒体読取装置26と、各種装置と接続するためのインタフェース装置27と、他の情報処理装置等と有線または無線により接続するための通信装置28とを有する。また、符号21〜28の各構成は、バス29に接続される。
入力装置24は、例えば、プラットフォーム2の管理者から操作情報等の各種情報の入力を受け付ける。モニタ25は、例えば、表示画面等の各種画面を表示する。インタフェース装置27は、例えば複数のカメラ50(監視カメラ:図9参照)、印刷装置等が接続される。カメラ50は、画像データを生成するデータ生成装置である。なお、データ生成装置は、カメラ50に限定されず、データを生成する各種の装置(例えば音声データを生成するマイク)であればよい。
メモリ22はROM(Read Only Memory)およびRAM(Random Access Memory)を含む記憶メモリである。メモリ22のROMには、各種ソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ22上のソフトウェアプログラムは、プロセッサ21に適宜読み込まれて実行される。また、メモリ22のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
ストレージ23は、ハードディスクドライブ(Hard Disk Drive:HDD)、SSD(Solid State Drive)、ストレージクラスメモリ(Storage Class Memory:SCM)等の記憶装置であって、種々のデータを格納するものである。ストレージ23には各種ソフトウェアプログラムが記憶される。
プロセッサ21は、プラットフォーム2全体を制御する。プロセッサ21は、マルチプロセッサであってもよい。プロセッサ21は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ21は、CPU、MPU、GPU、DSP、ASIC、PLD、FPGAのうちの2種類以上の要素の組み合わせであってもよい。
プラットフォーム2においては、プロセッサ21がメモリ22やストレージ23に格納されたソフトウェアプログラムを実行することで各種機能を実現する。
なお、上記の各種ソフトウェアプログラムは、必ずしもメモリ22やストレージ23に記憶されている必要はない。例えば、プラットフォーム2の媒体読取装置26が読み取り可能な記憶媒体に記憶されたプログラムを、プラットフォーム2が読み出して実行するようにしてもよい。プラットフォーム2が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこの情報処理プログラムを記憶させておき、プラットフォーム2がこれらから情報処理プログラムを読み出して実行するようにしてもよい。
図3は、情報処理システム1におけるプラットフォーム2のソフトウェア構成を例示する図である。なお、図3中においては、便宜上、プラットフォーム2−1〜2−3のソフトウェア構成のみを図示する。
図3に例示する情報処理システム1において、プラットフォーム2−1は、一般的なPC(Personal Computer)システムであり、Windows(登録商標)をOS(Operating System)とする。プラットフォーム2−1は、このOS上において、アプリケーションである店舗管理プログラムを実行する。
プラットフォーム2−2、2−3は、組込みシステムであり、それぞれLinux(登録商標)をOSとする。プラットフォーム2−2、2−3は、このOS上において、AI処理にかかる分散処理プログラムを実行する。
各プラットフォーム2には、ブリッジドライバ20が備えられている。プラットフォーム2は、このブリッジドライバ20を介してPCIeブリッジコントローラ3および他のプラットフォーム2との間で通信を行なう。なお、ブリッジドライバ20による通信方法については後述する。
各プラットフォーム2は、プロセッサ21およびメモリ(物理メモリ)22を備え、プロセッサ21がメモリ22に格納されたOSや各種プログラム、ドライバ等を実行することでそれぞれの機能を実現する。
上述したように、各プラットフォーム2に備えられるプロセッサ21は、互いに違うベンダによって提供されるものであってもよい。図1に示す例においては、少なくとも一部のプラットフォーム2(例えば、プラットフォーム2−7)に複数のRCを有するプラットフォーム(例えば、Intel社のx86プロセッサ)が用いられてもよい。
また、各プラットフォーム2は、それぞれ他のドライバ構成に影響を与えないように独立動作可能に構成されている。
プラットフォーム2において、メモリ22の記憶領域の一部は、図8を用いて後述する如く、プラットフォーム2間(プロセッサ21間)において転送されるデータが一時的に格納される通信バッファとして用いられる。
[PCIeブリッジコントローラ]
PCIeブリッジコントローラ3は、複数のプラットフォーム2−1〜2−8間におけるデータ等の通信を実現する。
図4は、情報処理システム1におけるPCIeブリッジコントローラ3のハードウェア構成を模式的に示す図である。
PCIeブリッジコントローラ3は、例えば、8チャネルのEPを1チップ内に有する中継装置である。このPCIeブリッジコントローラ3は、図4に示すように、CPU31、メモリ32、内部バス33(インターコネクトバス)および複数(図4に示す例では8つ)のスロット34−1〜34−8を備える。
スロット34−1〜34−8には、それぞれPCIeの規格を満たすよう構成されたデバイスが接続される。特に、情報処理システム1においては、スロット34−1〜34−8のそれぞれにプラットフォーム2が接続される。
なお、以下、スロットを示す符号としては、複数のスロットのうち1つを特定する必要があるときには符号34−1〜34−8を用いるが、任意のスロットを指すときには符号34を用いる。
なお、プラットフォーム2−1〜2−8のように、一つのスロット34に対して一つのプラットフォーム2が接続されてもよいが、これに限るものではなく、複数(例えば、2つ)のスロット34に対して一つのプラットフォーム2が接続されてもよく、種々変形して実施することができる。
一つのプラットフォーム2に対して複数のスロット34をアサインすれば、このプラットフォーム2に広い通信帯域を用いた通信を行なわせることができる。
各スロット34は、内部バス33に接続されている。また、内部バス33には、CPU31およびメモリ32が接続されている。つまり、各スロット34とCPU31およびメモリ32は、内部バス33を介して相互に通信可能に接続されている。
メモリ32は、例えば、ROMおよびRAMを含む記憶メモリ(物理メモリ)である。メモリ32のROMには、データ通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ32上のソフトウェアプログラムは、CPU31に適宜読み込まれて実行される。また、メモリ32のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
さらに、PCIeブリッジコントローラ3においては、各スロットに対応させてレジスタ35(メモリ領域:図8参照)が備えられる。レジスタ35のBAR(Base Address Register)空間には、スロットごとに記憶領域が備えられる。すなわち、レジスタ35のBAR空間にはスロット#0〜#7のそれぞれに対応する記憶領域が設けられている。
PCIeブリッジコントローラ3においては、後述の如く、BAR空間のスロットごとの記憶領域を用いてプラットフォーム2間のデータ転送を行なう。
CPU31は、PCIeブリッジコントローラ3全体を制御する。CPU31は、マルチプロセッサであってもよい。なお、CPU31に代えてMPU、GPU、DSP、ASIC、PLD、FPGAのいずれか一つが用いられてもよい。また、CPU31は、CPU、MPU、GPU、DSP、ASIC、PLD、FPGAのうちの2種類以上の要素の組み合わせであってもよい。
そして、CPU31がメモリ32に格納されたソフトウェアプログラムを実行することで、PCIeブリッジコントローラ3におけるプラットフォーム2間(プロセッサ21間)のデータ転送を実現する。
PCIeブリッジコントローラ3は、プラットフォーム2間のデータ転送を高速化するためにPCIeを用い、図1に示すように、各プラットフォーム2に備えられるプロセッサ21をそれぞれRCとして動作させ、デバイスとして動作するEP間でデータ転送を実現する。
具体的には、情報処理システム1においては、各プラットフォーム2のプロセッサ21を、データ転送インタフェースとしてのPCIeのRCとして動作させる。また、各プラットフォーム2(プロセッサ21)に対して、PCIeブリッジコントローラ3を、すなわち、各プラットフォーム2が接続されているスロット34をEPとして動作させる。
PCIeブリッジコントローラ3をプロセッサ21に対してEPとして接続する手法としては、既知の種々の手法を用いて実現することができる。
例えば、PCIeブリッジコントローラ3は、プラットフォーム2との接続時に、EPとして機能することを示す信号を当該プロセッサ21に通知することで、EPとしてプロセッサ21と接続する。
PCIeブリッジコントローラ3においては、EPtoEP(End Point to End Point)でデータをトンネリングさせて、複数のRCにデータを転送する。プロセッサ21間の通信は、PCIeのトランザクションが発生したときに論理的に接続され、1つのプロセッサ21にデータ転送が集中しないときは、それぞれのプロセッサ21間で並行してデータ転送できる。
図5は、PCIeのレイヤ構成を示す図である。図5においては、プラットフォーム2−1のプロセッサAとプラットフォーム2−2のプロセッサBとの間で通信を行なう例を示す。
送信元のプラットフォーム2−1においては、RCであるプロセッサAにおいて生成されたデータが、ソフトウェア、トランザクション層、データリンク層および物理層(PHY)に、順次、転送され、物理層においてPCIeブリッジコントローラ3の物理層に転送される。
PCIeブリッジコントローラ3においては、物理層、データリンク層、トランザクション層およびソフトウェアに順次、転送され、送信先のプラットフォーム2のRCに対応するEPにトンネリングによりデータが転送される。
すなわち、PCIeブリッジコントローラ3においては、EP間でデータをトンネリングさせることで、一のRC(プロセッサ21)から他のRC(プロセッサ21)にデータが転送される。
送信先のプラットフォーム2−2においては、PCIeブリッジコントローラ3から転送されたデータが、物理層(PHY)、データリンク層、トランザクション層およびソフトウェアに、順次、転送され、送信先のプラットフォーム2−2のプロセッサBに転送される。
情報処理システム1において、プロセッサ21間(プラットフォーム2間)の通信は、PCIeのトランザクションが発生したときに論理的に接続される。
PCIeブリッジコントローラ3が有する8スロットのうちの一つに接続された特定のプロセッサ21に対して複数の他のプロセッサ21からのデータ転送が集中しないときは、異なる任意の複数組のそれぞれのプロセッサ21間で並行してデータ転送してもよい。
例えば、プラットフォーム2−1のプロセッサAに対して、プラットフォーム2−2のプロセッサBおよびプラットフォーム2−3のプロセッサCのそれぞれが通信しようとする場合には、PCIeブリッジコントローラ3は、プロセッサB、Cの通信をシリアルに処理する。
ただし、プロセッサA−プロセッサB、プロセッサC−プロセッサD、プロセッサE−プロセッサFのように、それぞれが異なるプロセッサ同士で通信し、特定のプロセッサに通信が集中しない場合には、PCIeブリッジコントローラ3は、各プロセッサ21間通信を並行して処理する。
図6は、情報処理システム1におけるプロセッサ21−8(プロセッサH)からの他のプロセッサ21の見え方を例示する図である。また、図7はプロセッサ21−5(プロセッサE)からの他のプロセッサ21の見え方を例示する図である。
各プロセッサ21間で通信が行なわれている状態においても、各プロセッサ21上のOS(例えばWindowsのデバイスマネージャ)からは、PCIeブリッジコントローラ3しか見えず、接続先の他のプロセッサ21を直接管理する必要がない。すなわち、PCIeブリッジコントローラ3のデバイスドライバでPCIeブリッジコントローラ3の先に接続されたプロセッサ21を管理すればよい。
そのため、送信元、受信先それぞれのプロセッサ21を動作させるためのデバイスドライバを準備する必要がなく、PCIeブリッジコントローラ3のドライバでPCIeブリッジコントローラ3に対して通信処理を行なうだけでプロセッサ21間の通信を行なうことができる。
[プロセッサ間のデータ転送方法]
次に、上述の如く構成された情報処理システム1におけるPCIeブリッジコントローラ3を介したプロセッサ21間のデータ転送方法について説明する。
図8は情報処理システム1におけるPCIeブリッジコントローラ3を介したプロセッサ21間のデータ転送方法を説明するための図である。図8に示す例においては、スロット#0に接続されたプラットフォーム2−1からスロット#4に接続されたプラットフォーム2−5にデータを転送する場合について説明する。
データ送信元のプラットフォーム2−1は、ソフトウェアプログラム等によって送信されるデータ(以下、送信データという場合がある。)を、プラットフォーム2−1に備えられるストレージ23等からプラットフォーム2−1のレジスタ35に格納する(符号P1参照)。なお、レジスタ35は、通信バッファの一部であってもよい。レジスタ35は、プラットフォーム2−1のそれぞれにメモリ22等に同じ大きさで設けられた領域である。レジスタ35は、スロット数に応じて分割されている。レジスタ35の分割された記憶領域は、いずれかのスロットに対応付けられている。例えば、レジスタ35内にSlot#0で示す記憶領域は、Slot#0に接続されたプラットフォーム2−1に対応付けられ、レジスタ35内にSlot#4で示す記憶領域は、Slot#4に接続されたプラットフォーム2−5に対応付けられている。プラットフォーム2−1は、レジスタ35のうち、送信先のスロットに割り当てられた領域(ここでは、Slot#4)に送信データを格納する。
送信元のプラットフォーム2−1は、プラットフォーム2−1のレジスタ35の記憶領域に基づいて、送信先のスロットを示すスロット情報と、送信先のレジスタ35における分割領域内におけるアドレスを示すアドレス情報とを取得または生成する(符号P2参照)。
送信元のプラットフォーム2−1は、スロット情報と、アドレス情報と、送信データとを含む転送データをPCIeブリッジコントローラ3に渡す(符号P3参照)。これにより、PCIeブリッジコントローラ3は、スロット情報に基づいてEPtoEPにより送信元のスロットと送信先のスロットとを接続することにより、転送データを送信先のプラットフォーム2−5へ転送する(符号P4参照)。
送信先のプラットフォーム2−5は、スロット情報及びアドレス情報に基づいて、送信先のプラットフォーム2−5の通信バッファ221に対応する記憶領域内のアドレス情報が示すアドレスの領域に送信データ(または転送データ)を格納する(符号P5参照)。
送信先のプラットフォーム2−5において、例えば、プログラムが、通信バッファ221に格納された送信データを読み出して、メモリ(ローカルメモリ)22やストレージ23に移動させる(符号P6、P7参照)。
以上のようにして、転送元のプラットフォーム2−1から転送先のプラットフォーム2−5にデータ(転送データ)が転送される。
このように、情報処理システム1においては、PCIeブリッジコントローラ3において、当該PCIeブリッジコントローラ3内のEP間でデータ転送を媒介する。これにより、PCIeブリッジコントローラ3に接続された複数のRC(プロセッサ21)間でのデータ転送を実現することができる。
すなわち、各プロセッサ21をPCIeのRCとして独立動作させ、PCIeブリッジコントローラ3において、それぞれのプロセッサ21に接続するデバイスをEPとして接続し、EP間でデータ転送を行なう。これにより、デバイスドライバに起因する問題を回避し、高速データ転送を1つのシステムとして動作させることができる。
また、PCIeの規格に適合したデータ通信機能を有してさえいれば異なるプロセッサ21間でのデータ転送が可能となるため、デバイスドライバの有無や、サポートOS等を気にすることなく使用するプロセッサ21の選択肢を広げることが可能となる。
各プロセッサ21はEPとなるPCIeブリッジコントローラ3を介して接続されるため、EPの先のRCのデバイスドライバを追加する必要がない。従って、デバイスドライバの開発が不要であるとともに、デバイスドライバを追加することに起因する不具合が発生することもない。
[情報処理システム1が有している特徴的な機能]
次いで、プラットフォーム2−1〜2−7のストレージ23にインストールされたOSおよびソフトウェアプログラムによりプロセッサ21が実現する機能のうち、本実施形態の情報処理システム1が有している特徴的な機能について説明する。
図9は、情報処理システム1における機能を示す機能ブロック図である。なお、図9においては、PCIeブリッジコントローラ3を省略している。また、図9において、矢印は主なデータの流れを示したものであり、矢印の無い部分でもデータの受け渡しは適宜行われる。
ところで、従来から、ハードウェアとしての複数のプロセッサを用いて、データ生成装置から出力されたデータに対して複数種類のタスクを分担して処理する技術がある。また、近年、機械学習手法であるディープラーニング(Deep Learning)技術を利用した物体認識等のAI(Artificial Intelligence)処理による各種サービスが提供されつつある。そこで、以下では、複数種類のタスクとして、AI処理を構成する複数の個別AI処理の場合を例にとって説明する。
ここでは、プラットフォーム2−1〜2−7のうち、プラットフォーム2−2〜2−7が、機械学習、特にディープラーニング(Deep Learning)技術を用いて、店舗等における監視のためのAI処理にかかる分散処理プログラムを実行するものとする。
図9に示すように、プラットフォーム2−2〜2−7は、AI処理部100を実現する。AI処理部100は、カメラ50から取得した画像データに対して、ディープラーニング技術を利用した人物の認識等のAI処理を実行する。より詳細には、AI処理部100は、店舗等における監視のために、人物特定処理、人物紐付け処理、人物分類処理などのAI処理を、分散して実行する。
人物特定処理は、複数のカメラ50で撮影された画像データから、人物そのものや人物を構成するパーツ、持ち物の種類とその検出座標を特定する処理である。1つ以上のプラットフォーム2が、人物特定処理を担当する第1のAI処理部101を構成する。
人物紐付け処理は、特定した人物を示す情報を時系列の複数の画像データ間で紐付けていく(対応付ける)処理である。1つ以上のプラットフォーム2が、人物紐付け処理を担当する第2のAI処理部102を構成する。
人物分類処理は、時系列で紐付けた人物を分類する処理である。1つ以上のプラットフォーム2が、人物分類処理を担当する第3のAI処理部103を構成する。
一方、プラットフォーム2−1は、データ生成装置(カメラ50)から出力されたデータ(画像データ)を処理するための複数種類のタスク(人物特定処理、人物紐付け処理、人物分類処理)のうち、いずれか1種類以上を割り当て可能なハードウェアとしての複数のプロセッサ(プロセッサB〜G)と接続された情報処理装置の一例である。また、プラットフォーム2−1では、プロセッサ21(図2)がストレージ23(図2)等に記憶されている店舗管理プログラムをメモリ22に展開して実行することで、各機能(図9の各部201〜206等)を実現する。また、上述のように、AI処理部100による処理を行うハードウェアとして複数のプロセッサ(ここではプラットフォーム2−2〜2−7における合計6個のプロセッサB〜G)が備えられている。
プラットフォーム2−1は、複数のカメラ50で撮影された画像データを、プラットフォーム2−2〜2−7に出力するとともに、複数のカメラ50で撮影された画像データをモニタ25に表示する。
図9に示すように、プラットフォーム2−1は、画像取得部201と、制御部202と、API(Application Programming Interface)部203と、表示制御部204と、出力制御部205と、不審者判定部206と、記憶部207と、を備えている。
画像取得部201は、カメラ50から画像データを取得し、取得した画像データをキューQ1に順に蓄積する。
制御部202は、プラットフォーム2−1における処理を統括的に制御する。制御部202の詳細については後述する。
API部203は、プラットフォーム2−1からプラットフォーム2−2〜2−7に対するデータ提供のためのインタフェースである。具体的には、API部203は、出力制御部205から取得した画像データを第1のAI処理部101に出力する。
表示制御部204は、出力制御部205等から取得した画像データ等をモニタ25に表示する。
出力制御部205は、キューQ1に蓄積された画像データをAPI部203や表示制御部204に出力する。
制御部202は、第1のAI処理部101、第2のAI処理部102、第3のAI処理部103からそれぞれのAI処理結果を取得する。AI処理結果は、例えば、JSON(JavaScript(登録商標) Object Notation)形式でタイムスタンプが付されている。不審者判定部206は、制御部202から取得したAI処理結果に基づいて、不審者を判定する。表示制御部204は、不審者判定部206から取得した判定結果等をモニタ25に表示する。また、制御部202は、出力制御部205を制御する。
記憶部207は、例えば、図2に示すメモリ22やストレージ23に対応する記憶手段である。記憶部207は、処理性能テーブルT1(図11)、処理量テーブルT2(図12)、第1のカメラ情報テーブルT3(図13)、AI処理パターンテーブルT4(図14)などの各種データを記憶する。各テーブルT1〜T4の詳細については後述する。
ここで、図10は、カメラ50(図9)を設置した店舗の模式図である。図10では、カメラ50を、便宜上、カメラC1〜C8と表記している。図10に示すように、店舗SHに対して、8台のカメラC1〜C8が設置されている。例えば、カメラC1は、店舗SHの出入口ENの外側を撮影する位置に設置されている。
図11は、処理性能テーブルT1の例を模式的に示す図である。処理性能テーブルT1は、複数のプロセッサそれぞれの処理性能を示す情報の一例である。処理性能テーブルT1では、すべてのプロセッサA〜H(図1)の1秒当たりの処理性能が「100」と設定されている。なお、以下において、画像データは8台のすべてのカメラ50(C1〜C8)において3fps(frames per second)で生成されるものとする。
図12は、処理量テーブルT2の例を模式的に示す図である。処理量テーブルT2は、所定単位のデータを処理するタスクの種類ごとの処理量を示す情報の一例である。処理量テーブルT2では、解像度(R1<R2<R3)ごとに、タスク(タスク#1(人物特定処理)、タスク#2(人物紐付け処理)、タスク#3(人物分類処理))ごとの処理量が設定されている。
具体的には、解像度R1の場合の各タスクの処理量は、上から順に「5」、「3」、「5」と設定されている。また、解像度R2の場合の各タスクの処理量は、上から順に「15」、「7」、「5」と設定されている。また、解像度R3の場合の各タスクの処理量は、上から順に「30」、「14」、「5」と設定されている。
なお、タスク#1とタスク#2は、解像度が大きくなると、処理量が大きくなる。一方、タスク#3は、解像度に関係なく、処理量が一定である。
図13は、第1のカメラ情報テーブルT3の例を模式的に示す図である。第1のカメラ情報テーブルT3は、複数のデータ生成装置それぞれに関して設けられている優先度を示す情報を含む情報の一例である。第1のカメラ情報テーブルT3では、カメラC1〜C8ごとに、フレームレート(fps)、解像度、第1AI処理パターン、第2AI処理パターン、優先度の各情報が設定されている。
具体的には、フレームレートは、すべて「3」に設定されている。また、解像度は、すべて「R2」に設定されている。第1AI処理パターンは、すべて「AI#1」(図14で後述)に設定されている。第2AI処理パターンは、すべて「AI#2」(図14で後述)に設定されている。優先度は、上から順に「1」〜「8」と設定されている。
図14は、AI処理パターンテーブルT4の例を模式的に示す図である。AI処理パターンテーブルT4は、複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報の一例である。AI処理パターンテーブルT4では、AI処理パターンごとに、タスク#1、タスク#2、タスク#3を実行するか否かが設定(「○」は実行。「×」は不実行。)されている。
具体的には、「AI#1」では、タスク#1、タスク#2、タスク#3のいずれも実行するものと定義されている。また、「AI#2」では、タスク#1とタスク#3は実行せず、タスク#2だけ実行するものと定義されている。なお、「AI#2」の場合のために、タスク#2のプログラムの中にタスク#1の簡易版プログラムを組み込んでおくことで、タスク#1無しでのタスク#2の実行を可能とすることができる。
図9に戻って、制御部202は、記憶部207に記憶された各テーブルT1〜T4に基づいて、複数のプロセッサB〜G(プラットフォーム2−2〜2−7)それぞれに、複数種類のタスクのうちの1種類以上を割り当てる。また、制御部202は、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う。また、制御部202は、複数のプロセッサB〜Gそれぞれに、複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数のデータ生成装置から出力された複数のデータのうち少なくとも1つ以上と、を割り当てるようにしてもよい。
また、制御部202は、各テーブルT1〜T4に基づいて、複数のデータ生成装置それぞれに対して複数の処理パターンのいずれかを決定することで、複数のプロセッサそれぞれに、複数種類のタスクのうちの1種類以上を割り当てるようにしてもよい。
また、制御部202は、各テーブルT1〜T4に基づいて、優先度が高いデータ生成装置のデータほど、実行されるタスクの種類が多くなるように、複数のデータ生成装置それぞれに対して複数の処理パターンのいずれかを決定するようにしてもよい。
ここで、プロセッサB〜Gへのタスクの割り当てに関する計算例について説明する。この計算は、制御部202によって実行される。まず、図13の第1のカメラ情報テーブルT3を参照して、カメラC1〜C8のすべてについて、第1AI処理パターンである「AI#1」(図14)を適用することを考える。その場合、カメラC1〜C8のすべてについて、タスク#1〜#3が実行されることになる。
そうすると、図12の処理量テーブルT2も参照して、1秒間にタスク#1に要する処理量は、3(fps)×8(カメラ台数)×15(解像度R2での処理量)=「360」となる。そして、プロセッサの1個当たりの処理性能が「100」なので、プロセッサの必要数は4個となる。
また、1秒間にタスク#2に要する処理量は、3(fps)×8(カメラ台数)×7(解像度R2での処理量)=「168」となる。したがって、プロセッサの必要数は2個となる。
また、1秒間にタスク#3に要する処理量は、3(fps)×8(カメラ台数)×5(解像度R2での処理量)=「120」となる。したがって、プロセッサの必要数は2個となる。
この場合、プロセッサの必要合計数は4個+2個+2個=8個となり、プロセッサの利用可能数の6個よりも多いので、不可となる。
そこで、図13の第1のカメラ情報テーブルT3を参照して、カメラC1〜C8のうちの優先度の一番低いカメラC8について、第1AI処理パターンである「AI#1」(図14)ではなく、第2AI処理パターンである「AI#2」(図14)を適用することを考える。その場合、カメラC1〜C7についてタスク#1〜#3が実行され、カメラC8についてタスク#2のみが実行されることになる。
そうすると、図12の処理量テーブルT2も参照して、1秒間にタスク#1に要する処理量は、3(fps)×7(カメラ台数)×15(解像度R2での処理量)=「315」となる。したがって、プロセッサの必要数は4個となる。
また、1秒間にタスク#2に要する処理量は、3(fps)×8(カメラ台数)×7(解像度R2での処理量)=「168」となる。したがって、プロセッサの必要数は2個となる。
また、1秒間にタスク#3に要する処理量は、3(fps)×7(カメラ台数)×5(解像度R2での処理量)=「105」となる。したがって、プロセッサの必要数は2個となる。
この場合、プロセッサの必要合計数は4個+2個+2個=8個となり、プロセッサの利用可能数の6個よりも多いので、不可となる。
そこで、さらに、図13の第1のカメラ情報テーブルT3を参照して、カメラC8の次に優先度の一番低いカメラC7についても、第1AI処理パターンである「AI#1」(図14)ではなく、第2AI処理パターンである「AI#2」(図14)を適用することを考える。その場合、カメラC1〜C6についてタスク#1〜#3が実行され、カメラC7、C8についてタスク#2のみが実行されることになる。
そうすると、図12の処理量テーブルT2も参照して、1秒間にタスク#1に要する処理量は、3(fps)×6(カメラ台数)×15(解像度R2での処理量)=「270」となる。したがって、プロセッサの必要数は3個となる。
また、1秒間にタスク#2に要する処理量は、3(fps)×8(カメラ台数)×7(解像度R2での処理量)=「168」となる。したがって、プロセッサの必要数は2個となる。
また、1秒間にタスク#3に要する処理量は、3(fps)×6(カメラ台数)×5(解像度R2での処理量)=「90」となる。したがって、プロセッサの必要数は1個となる。
この場合、プロセッサの必要合計数は3個+2個+1個=6個となり、プロセッサの利用可能数の6個と同じなので、可となる。
ここで、プロセッサB〜Gへのタスクの割り当ての第1の例について説明する。ここでは、割り当ての基準として、例えば、各カメラからの1秒間における3フレームの画像データは同じプロセッサで処理することや、各プロセッサにおける処理量をバランスよくすること等を設定しておけばよい。図15は、プロセッサB〜Gへのタスクの割り当ての第1の例を示す図である。なお、図15において、カメラC1のデータに対するタスク#1を「C1−1」と表し、他についても同様である。
プロセッサBに、「C1−1」と「C2−1」を割り当てる。プロセッサCに、「C3−1」と「C4−1」を割り当てる。プロセッサDに、「C5−1」と「C6−1」を割り当てる。
プロセッサEに、「C1−2」と「C2−2」と「C3−2」と「C4−2」を割り当てる。プロセッサFに、「C5−2」と「C6−2」と「C7−2」と「C8−2」を割り当てる。プロセッサGに、「C1−3」と「C2−3」と「C3−3」と「C4−3」と「C5−3」と「C6−3」と「C7−3」と「C8−3」を割り当てる。
このようにして、データ生成装置から出力されたデータに対して複数種類のタスクを複数のプロセッサで分担して処理する場合に、各プロセッサにタスクを適切かつ容易に割り当てることができる。
また、プロセッサB〜Gへのタスクの割り当ての第2の例について説明する。ここでは、割り当ての基準として、例えば、1つのカメラからの画像データをなるべく同じプロセッサで処理することや、各プロセッサにおける処理量をバランスよくすること等を設定しておけばよい。図16は、プロセッサB〜Gへのタスクの割り当ての第2の例を示す図である。
プロセッサBに、「C1−1」と「C1−2」と「C1−3」と「C7−2(1フレーム分)」を割り当てる。プロセッサCに、「C2−1」と「C2−2」と「C2−3」と「C7−2(1フレーム分)」を割り当てる。プロセッサDに、「C3−1」と「C3−2」と「C3−3」と「C7−2(1フレーム分)」を割り当てる。
プロセッサEに、「C4−1」と「C4−2」と「C4−3」と「C8−2(1フレーム分)」を割り当てる。プロセッサFに、「C5−1」と「C5−2」と「C5−3」と「C8−2(1フレーム分)」を割り当てる。プロセッサGに、「C6−1」と「C6−2」と「C6−3」と「C8−2(1フレーム分)」を割り当てる。
このようにして、データ生成装置から出力されたデータに対して複数種類のタスクを複数のプロセッサで分担して処理する場合に、各プロセッサにタスクを適切かつ容易に割り当てることができる。
次に、図17を参照して、情報処理装置としてのプラットフォーム2−1における処理について説明する。図17は、情報処理装置としてのプラットフォーム2−1における処理の流れを示すフローチャートである。この処理は、例えば、情報処理システム1の環境構築時に実行される。
まず、ステップS1において、プラットフォーム2−1の制御部202(以下、単に「制御部202」ともいう。)は、利用可能なプロセッサの数を決定する。例えば、図9に示すように、プラットフォーム2−2〜2−8のうち、プラットフォーム2−2〜2−7が利用可能となっていれば、利用可能なプロセッサの数を「6」と決定する。
次に、ステップS2において、制御部202は、各プロセッサB〜Gに割り当てる個別AI処理(タスク#1〜#3)の決定処理を行う。ここで、図18は、図17のフローチャートのステップS2の処理の詳細の例を示すフローチャートである。
ステップS11において、制御部202は、すべてのカメラC1〜C8のデータに対して第1AI処理パターン「AI#1」(図14)を適用した場合に必要となるプロセッサの数を算出する。
次に、ステップS12において、制御部202は、ステップS11で算出した数が、ステップS1で決定した利用可能数以下か否かを判定し、Yesの場合はステップS15に進み、Noの場合はステップS13に進む。
ステップS13において、制御部202は、優先度の低い1つのカメラのデータに対して適用するAI処理パターンを第2AI処理パターン「AI#2」(図14)に変更する。
次に、ステップS14において、制御部202は、ステップS13で変更された条件で、必要となるプロセッサの数を算出し、ステップS12に戻る。
ステップS15において、制御部202は、各プロセッサに割り当てる個別AI処理と個別AI処理すべきデータの数を決定する(図15、図16参照)。
図17に戻って、ステップS3において、制御部202は、ステップS2で決定した内容で、各プロセッサに個別AI処理と個別AI処理すべきデータを割り当てる(実装する)。
次に、ステップS4において、制御部202は、利用可能なプロセッサの数が変更されたか否かを判定し、Yesの場合はステップS2に戻り、Noの場合はステップS4に戻る。なお、利用可能なプロセッサの数が変更される場合とは、例えば、プロセッサが故障した場合や、メンテナンス等のためにプロセッサを抜き出した場合等である。
このようにして、第1実施形態によれば、情報処理システム1において、複数のカメラ50から出力された画像データに対して複数種類のタスク#1〜#3を複数のプロセッサB〜Gで分担して処理する場合に、情報処理装置であるプラットフォーム2−1は、各テーブルT1〜T4を用いて、各プロセッサにタスクを適切かつ容易に割り当てることができる。また、各プロセッサに、タスクの種類を割り当てるだけでなく、タスクを行う1つ以上のデータを具体的に割り当てることができる(図15、図16参照)。
また、第1のカメラ情報テーブルT3を用いることで、すべてのカメラC1〜C8のデータについてタスクを実行することを前提にした上で、各プロセッサにタスクを適切かつ容易に割り当てることができる。具体的には、すべてのカメラC1〜C8のデータについて第1AI処理パターン「AI#1」を適用する場合から計算を開始し、プロセッサが足りなければ、カメラC1〜C8のうち優先度の低いものから順番に、適用するAI処理パターンを第2AI処理パターン「AI#2」に変更して再計算すればよい。すべてのカメラC1〜C8のデータについてAI処理を実行できるので、例えば、店舗における動線分析等に特に有効である。
また、利用可能なプロセッサの数が変更された場合でも、各プロセッサに割り当てる個別AI処理の決定処理を再び行うことで、適切な割り当てを継続できる。
(第2実施形態)
次に、第2実施形態について説明する。第1実施形態と同様の事項については、重複する説明を適宜省略する。第2実施形態は、第1実施形態と比較して、用いるカメラ情報テーブルが第1のカメラ情報テーブルT3(図13)から第2のカメラ情報テーブルT5(図19)に変更になる点で相違する。
図19は、第2実施形態における第2のカメラ情報テーブルT5の例を模式的に示す図である。第2のカメラ情報テーブルT5は、複数のデータ生成装置それぞれに関して設けられている優先度を示す情報を含む情報の一例である。第2のカメラ情報テーブルT5では、カメラC1〜C8ごとに、フレームレート(fps)、解像度、確定AI処理パターン、第1希望AI処理パターン、第2希望AI処理パターン、優先度の各情報が設定されている。
具体的には、フレームレートは、すべて「3」に設定されている。また、解像度は、すべて「R2」に設定されている。
確定AI処理パターンは、カメラC1、C2については「AI#1」(図14)で設定され、カメラC3〜C8については設定されていない。これは、カメラC1、C2について「AI#1」(図14)が設定されることは必須であることを示す。具体的には、例えば、カメラC1、C2で撮影される領域が、店舗の出入口や高額商品売場などの重要エリアである場合が考えられる。
第1希望AI処理パターンは、カメラC1、C2については設定されておらず、カメラC3、C4については「AI#1」(図14)で設定され、カメラC5〜C8については「AI#2」(図14)で設定されている。
第2希望AI処理パターンは、カメラC1、C2については設定されておらず、カメラC3、C4については「AI#2」(図14)で設定され、カメラC5〜C8については設定されていない。
優先度は、上から順に「1」〜「8」と設定されている。
そして、プラットフォーム2−1の制御部202は、各テーブルT1,T2,T4,T5に基づいて、複数のデータ生成装置それぞれに対して、優先度の高いものから順番に、複数の処理パターンのうち実行されるタスクの種類がなるべく多い処理パターンを決定することで、複数のプロセッサそれぞれに、複数種類のタスクのうちの1種類以上を割り当てる。
つまり、この第2実施形態では、第1実施形態の場合と異なり、すべてのカメラC1〜C8のデータについてタスクを実行することを前提にしていない。具体的には、制御部202は、カメラC1〜C8について、優先度の高いものから順番に、第2のカメラ情報テーブルT5で設定されている範囲で、実行されるタスクの種類がなるべく多い処理パターンを決定する。したがって、カメラC1〜C8のうち、優先度の低いものはAI処理されない場合もありえる。
次に、図20を参照して、図17のフローチャートのステップS2の処理の詳細について説明する。図20は、図17のフローチャートのステップS2の処理の詳細の例を示すフローチャートである。
ステップS21において、制御部202は、カメラC1、C2に対して確定AI処理パターン「AI#1」(図14、図19)を適用した場合に必要となるプロセッサの数を算出する。
次に、ステップS22において、制御部202は、ステップS21で算出した数が、ステップS1で決定した利用可能数以下か否かを判定し、Yesの場合はステップS24に進み、Noの場合はステップS23に進む。
ステップS23において、制御部202は、エラー出力して、処理を終了する。ここでエラー出力するのは、確定AI処理パターンを実行できないということは、第2のカメラ情報テーブルT5(図19)の設定等が適切ではない可能性が高いからである。この場合、管理者は、エラー出力に対応して、第2のカメラ情報テーブルT5(図19)の設定等を変更し、新たに図20のフローチャートの処理を行うようにすればよい。
ステップS24において、制御部202は、第2のカメラ情報テーブルT5(図19)を参照して、残りのカメラのうち優先度の高い1つのカメラのデータに対して第1希望AI処理パターンを適用した場合に必要となるプロセッサの数を算出する。
次に、ステップS25において、制御部202は、ステップS24で算出した数が、ステップS1で決定した利用可能数以下か否かを判定し、Yesの場合はステップS24に戻り、Noの場合はステップS26に進む。
ステップS26において、制御部202は、第2のカメラ情報テーブルT5(図19)を参照して、第2希望AI処理パターンがあるか否かを判定し、Yesの場合はステップS27に進み、Noの場合はステップS29に進む。
ステップS27において、制御部202は、第2希望AI処理パターンを適用した場合に必要となるプロセッサの数を算出する。
次に、ステップS28において、制御部202は、ステップS27で算出した数が、ステップS1で決定した利用可能数以下か否かを判定し、Yesの場合はステップS24に戻り、Noの場合はステップS29に進む。
ステップS29において、制御部202は、各プロセッサに割り当てる個別AI処理と個別AI処理すべきデータの数を決定する。
このようにして、第2実施形態によれば、第1実施形態と比較して、以下のような作用効果を奏する。第1実施形態のようにすべてのカメラC1〜C8のデータについてタスクを実行することを前提にするのではなく、確定AI処理パターンの実行を優先することで、確定AI処理パターンをより確実に実行できる。
例えば、店舗の出入口や高額商品売場などの重要エリアを撮影しているカメラのAI処理を、所望のAI処理パターン(例えば「AI#1」)でより確実に実行することができるので、店舗における万引き対策等に特に有効である。
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、図4に示す構成においては、PCIeブリッジコントローラ3は8つのスロット34−1〜34−8を有しているが、これに限定されるものではなく種々変形して実施することができる。すなわち、PCIeブリッジコントローラ3は7つ以下もしくは9つ以上のスロット34を備えてもよい。
また、上述の実施形態では、各部のI/OインタフェースとしてPCIeを例に挙げて説明したが、I/OインタフェースはPCIeに限定されない。例えば、各部のI/Oインタフェースは、データ転送バスによって、デバイス(周辺制御コントローラ)とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、1個の筐体等に設けられたローカルな環境(例えば、1つのシステムまたは1つの装置)で高速にデータを転送できる汎用のバスであってよい。I/Oインタフェースは、パラレルインタフェース及びシリアルインタフェースのいずれであってもよい。
I/Oインタフェースは、ポイント・ツー・ポイント接続ができ、データをパケットベースでシリアル転送可能な構成でよい。尚、I/Oインタフェースは、シリアル転送の場合、複数のレーンを有してよい。I/Oインタフェースのレイヤ構造は、パケットの生成及び復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、I/Oインタフェースは、階層の最上位であり1または複数のポートを有するルート・コンプレックス、I/Oデバイスであるエンド・ポイント、ポートを増やすためのスイッチ、及び、プロトコルを変換するブリッジ等を含んでよい。I/Oインタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
また、例えば、図12に示す処理量テーブルT2における解像度R2でAI処理を行っている場合に、利用可能なプロセッサ数が減ったとき、扱う解像度を解像度R2から解像度R1に変更し、すべてのカメラ50のデータについてAI処理を実行できるようにしてもよい。その場合、AI処理に必要となるプロセッサ数は、解像度を解像度R2から解像度R1に変更するだけで、上述の実施形態と同様に計算できる。
また、プラットフォーム2−2〜2−7を個別AI処理に用いる場合に、プロセッサの割り当てを決定するための情報処理装置としてプラットフォーム2−1を例に挙げて説明したが、これに限定されない。例えば、プラットフォーム2−2〜2−7のいずれかやプラットフォーム2−8が情報処理装置として動作してもよい。
また、例えば、処理量テーブルT2(図12)における各処理量の情報は、管理者が手動で設定してもよいし、あるいは、テストモード等でタスク(個別AI処理)を実行させてその処理結果から自動で設定するようにしてもよい。
1 情報処理システム
2 プラットフォーム
3 PCIeブリッジコントローラ
21 プロセッサ
22 メモリ
23 ストレージ
24 入力装置
25 モニタ
26 媒体読取装置
27 インタフェース装置
28 通信装置
50 カメラ
100 AI処理部
101 第1のAI処理部
102 第2のAI処理部
103 第3のAI処理部
201 画像取得部
202 制御部
203 API部
204 表示制御部
205 出力制御部
206 不審者判定部
207 記憶部
本発明の第1態様に係る情報処理装置は、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能なハードウェアとしての複数のプロセッサと接続された情報処理装置であって、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部を備える。前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当てる場合に、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当て、その際、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報に基づいて、前記優先度が高い前記データ生成装置のデータほど、実行される前記タスクの種類が多くなるように、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定する。
また、情報処理装置は、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能なハードウェアとしての複数のプロセッサと接続された情報処理装置であって、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部を備える。前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当て、その際、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して、前記優先度の高いものから順番に、前記複数の処理パターンのうち実行される前記タスクの種類がなるべく多い前記処理パターンを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てる。
本発明の第2態様に係る情報処理システムは、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能な、ハードウェアとしての複数のプロセッサと、前記複数のプロセッサと接続された情報処理装置と、を備えた情報処理システムであって、前記情報処理装置は、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部を備える。前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当てる場合に、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当て、その際、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報に基づいて、前記優先度が高い前記データ生成装置のデータほど、実行される前記タスクの種類が多くなるように、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定する。
また、前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当て、その際、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して、前記優先度の高いものから順番に、前記複数の処理パターンのうち実行される前記タスクの種類がなるべく多い前記処理パターンを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるようにしてもよい。
本発明の第3態様に係るプログラムは、データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能な、ハードウェアとしての複数のプロセッサと接続された情報処理装置としてのコンピュータのためのプログラムであって、前記コンピュータを、前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部、として機能させる。前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当てる場合に、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当て、その際、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報に基づいて、前記優先度が高い前記データ生成装置のデータほど、実行される前記タスクの種類が多くなるように、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定する。
また、前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当て、その際、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して、前記優先度の高いものから順番に、前記複数の処理パターンのうち実行される前記タスクの種類がなるべく多い前記処理パターンを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるようにしてもよい。

Claims (8)

  1. データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能なハードウェアとしての複数のプロセッサと接続された情報処理装置であって、
    前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部と、
    を備える情報処理装置。
  2. 前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上と、当該1種類以上のタスクを行うデータとして、複数の前記データ生成装置から出力された複数の前記データのうち少なくとも1つ以上と、を割り当てる、
    請求項1に記載の情報処理装置。
  3. 前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てる、
    請求項2に記載の情報処理装置。
  4. 前記制御部は、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報に基づいて、前記優先度が高い前記データ生成装置のデータほど、実行される前記タスクの種類が多くなるように、複数の前記データ生成装置それぞれに対して前記複数の処理パターンのいずれかを決定する、
    請求項3に記載の情報処理装置。
  5. 前記制御部は、前記処理性能を示す情報と、前記処理量を示す情報と、前記複数種類のタスクのうち実行する種類がそれぞれ定義された複数の処理パターンを示す情報と、複数の前記データ生成装置それぞれに関して設けられている優先度を示す情報と、に基づいて、複数の前記データ生成装置それぞれに対して、前記優先度の高いものから順番に、前記複数の処理パターンのうち実行される前記タスクの種類がなるべく多い前記処理パターンを決定することで、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てる、
    請求項2に記載の情報処理装置。
  6. 前記複数種類のタスクは、AI(Artificial Intelligence)処理を構成する複数の個別AI処理である、請求項1に記載の情報処理装置。
  7. データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能な、ハードウェアとしての複数のプロセッサと、
    前記複数のプロセッサと接続された情報処理装置と、を備えた情報処理システムであって、
    前記情報処理装置は、
    前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部と、を備える、
    情報処理システム。
  8. データ生成装置から出力されたデータを処理するための複数種類のタスクのうち、いずれか1種類以上を割り当て可能な、ハードウェアとしての複数のプロセッサと接続された情報処理装置としてのコンピュータのためのプログラムであって、
    前記コンピュータを、
    前記複数のプロセッサそれぞれの処理性能を示す情報と、所定単位の前記データを処理する前記タスクの種類ごとの処理量を示す情報と、に基づいて、前記複数のプロセッサそれぞれに、前記複数種類のタスクのうちの1種類以上を割り当てるとともに、利用可能な前記プロセッサの数が変更された場合、当該割り当てを再び行う制御部、
    として機能させるためのプログラム。
JP2019077822A 2019-04-16 2019-04-16 情報処理装置、情報処理システムおよびプログラム Active JP6631741B1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019077822A JP6631741B1 (ja) 2019-04-16 2019-04-16 情報処理装置、情報処理システムおよびプログラム
GB2003889.9A GB2584935A (en) 2019-04-16 2020-03-18 Information processing device, information processing system, and computer program product
US16/832,602 US20200334072A1 (en) 2019-04-16 2020-03-27 Information processing device, information processing system, and computer program product
CN202010289136.4A CN111831426A (zh) 2019-04-16 2020-04-14 信息处理装置、信息处理系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019077822A JP6631741B1 (ja) 2019-04-16 2019-04-16 情報処理装置、情報処理システムおよびプログラム

Publications (2)

Publication Number Publication Date
JP6631741B1 JP6631741B1 (ja) 2020-01-15
JP2020177343A true JP2020177343A (ja) 2020-10-29

Family

ID=69146597

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019077822A Active JP6631741B1 (ja) 2019-04-16 2019-04-16 情報処理装置、情報処理システムおよびプログラム

Country Status (1)

Country Link
JP (1) JP6631741B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4089590A1 (en) 2021-05-13 2022-11-16 Fujitsu Limited Machine learning program, machine learning method, and information processing device
WO2023181783A1 (ja) * 2022-03-24 2023-09-28 ソニーグループ株式会社 センサ装置、センサ制御システム、制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001101149A (ja) * 1999-09-30 2001-04-13 Nec Corp 分散並列型データ処理装置及び分散並列型データ処理プログラムを記録した記録媒体並びに分散並列型データ処理システム
JP2006338264A (ja) * 2005-06-01 2006-12-14 Toyota Infotechnology Center Co Ltd タスク割当装置およびタスク割当方法
JP2009151375A (ja) * 2007-12-18 2009-07-09 Toshiba Corp ジョブスケジューリング方法
JP2011013852A (ja) * 2009-06-30 2011-01-20 Toshiba Corp 情報処理装置及び並列動作制御方法
JP2017011385A (ja) * 2015-06-18 2017-01-12 コニカミノルタ株式会社 画像処理装置、電力制御方法及び電力制御プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001101149A (ja) * 1999-09-30 2001-04-13 Nec Corp 分散並列型データ処理装置及び分散並列型データ処理プログラムを記録した記録媒体並びに分散並列型データ処理システム
JP2006338264A (ja) * 2005-06-01 2006-12-14 Toyota Infotechnology Center Co Ltd タスク割当装置およびタスク割当方法
JP2009151375A (ja) * 2007-12-18 2009-07-09 Toshiba Corp ジョブスケジューリング方法
JP2011013852A (ja) * 2009-06-30 2011-01-20 Toshiba Corp 情報処理装置及び並列動作制御方法
JP2017011385A (ja) * 2015-06-18 2017-01-12 コニカミノルタ株式会社 画像処理装置、電力制御方法及び電力制御プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4089590A1 (en) 2021-05-13 2022-11-16 Fujitsu Limited Machine learning program, machine learning method, and information processing device
WO2023181783A1 (ja) * 2022-03-24 2023-09-28 ソニーグループ株式会社 センサ装置、センサ制御システム、制御方法

Also Published As

Publication number Publication date
JP6631741B1 (ja) 2020-01-15

Similar Documents

Publication Publication Date Title
JP5160300B2 (ja) 仮想レーン資源を動的に再割当てするシステムおよび方法
US7430630B2 (en) Routing mechanism in PCI multi-host topologies using destination ID field
JP5039029B2 (ja) 動的論理パーティショニングによるコンピューティング環境におけるコンピュータ・メモリの管理
CN102567052B (zh) 启用配置有图形处理器的服务器的远程管理的技术
CN101490637B (zh) 动态基于总线的虚拟信道多路复用装置驱动器架构
US7613861B2 (en) System and method of obtaining error data within an information handling system
US11681544B2 (en) Interference-aware scheduling service for virtual GPU enabled systems
US20070136458A1 (en) Creation and management of ATPT in switches of multi-host PCI topologies
JP6631741B1 (ja) 情報処理装置、情報処理システムおよびプログラム
JP2008102921A (ja) データ処理システム、ハイパートランスポート環境におけるi/oアダプタのlpar分離方法、およびプログラム記憶デバイス
JP5669851B2 (ja) 論理的にパーティション化されたシステムにおいてパーティション間の効率的なコミュニケーションを行うための装置、方法、及びコンピュータ・プログラム
CN107436850B (zh) 计算机系统和计算机系统中端点设备访问的方法
US11188369B2 (en) Interrupt virtualization
US10169279B2 (en) Input/output control device, input/output control system, and input/output control method for conversion of logical address of instruction into local address of device specified in instruction
GB2584935A (en) Information processing device, information processing system, and computer program product
JP6631740B1 (ja) 情報処理装置、情報処理システムおよびプログラム
US8656060B2 (en) Method and apparatus for managing resources for displays
US8139595B2 (en) Packet transfer in a virtual partitioned environment
JP6536735B1 (ja) 情報処理装置、情報処理システムおよびプログラム
JP6631742B1 (ja) 情報処理システム
JP6794862B2 (ja) 情報処理装置、プログラム、および情報処理方法
US20200213231A1 (en) Information processing apparatus, information processing system, and computer program product
JP6536734B1 (ja) 情報処理装置、情報処理システムおよびプログラム
JP6810370B1 (ja) 情報処理装置、情報処理システム及びプログラム
TWI720426B (zh) 電子裝置及擴展周邊設備的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190517

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190529

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190917

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191125

R150 Certificate of patent or registration of utility model

Ref document number: 6631741

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250