JPWO2020045269A1 - システム、情報処理方法、及びプログラム - Google Patents

システム、情報処理方法、及びプログラム Download PDF

Info

Publication number
JPWO2020045269A1
JPWO2020045269A1 JP2020539410A JP2020539410A JPWO2020045269A1 JP WO2020045269 A1 JPWO2020045269 A1 JP WO2020045269A1 JP 2020539410 A JP2020539410 A JP 2020539410A JP 2020539410 A JP2020539410 A JP 2020539410A JP WO2020045269 A1 JPWO2020045269 A1 JP WO2020045269A1
Authority
JP
Japan
Prior art keywords
processor
arithmetic logic
object storage
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.)
Pending
Application number
JP2020539410A
Other languages
English (en)
Inventor
光央 戀川
光央 戀川
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of JPWO2020045269A1 publication Critical patent/JPWO2020045269A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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
    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)

Abstract

異種混在の複数のデバイスを用いた場合であっても、中間コード等を用いずに情報処理の速度を向上させることができるシステム、情報処理方法、及びプログラムを提供する。システム1は、ソースコードを取得するソース取得部200と、所定のAPIを用い、演算ロジックをソースコード中から特定する演算ロジック特定部202と、ソースコードに基づいて指定されるプロセッサーのコンパイラに演算ロジックを供給する演算ロジック供給部208と、オブジェクトストレージ400が、指定されるプロセッサーのコンパイラによってコンパイルされた結果を実行イメージとして格納し、オブジェクトストレージ400に格納されている指定されるプロセッサーにおける実行イメージへのパスと、指定されるプロセッサーとを対応付けたプロセッサー対応表を作成してオブジェクトストレージ400に格納する対応表作成部210と、演算ロジック供給部202が供給した演算ロジックと、オブジェクトストレージ400に格納されているプロセッサー対応表の保存パスとを対応付けた対応関係をオブジェクトストレージ400に格納する対応関係決定部212とを備える。

Description

本発明は、システム、情報処理方法、及びプログラムに関する。特に、本発明は、演算ロジックを各種ストレージ上で直接実行させることができるシステム、情報処理方法、及びプログラムに関する。
従来、複数の計算機を備え、ジョブを複数の計算機に分散して実行させる負荷分散システムにおいて、複数の計算機がジョブを実行するためにアクセスするストレージと、複数の計算機のうち、負荷が少ない計算機にジョブを実行させる、第1の管理装置と、複数のジョブを受付け、当該受付けた複数のジョブをキューイングして、第1のジョブキューに順番に格納する、第2の管理装置と、第1のジョブキューのジョブを順番に取り出し、計算機が取り出したジョブを実行するのに必要なデータに対する処理をストレージ装置に対して実行する第3の管理装置と、処理が終了した複数のジョブを、計算機によって実行されることを待つ実行待ちジョブとして順番に格納する、第2のジョブキューとを備え、第1の管理装置は、第2のジョブキューから複数のジョブを順番に取り出し、当該取り出したジョブを計算機に実行させる負荷分散システムが知られている(例えば、特許文献1参照。)。特許文献1に記載の負荷分散システムによれば、計算機能力を最大限に使用してジョブを実行するための処理時間を短縮することができる。
特開2008−15888号公報
特許文献1に記載のような従来の負荷分散システムにおいては、処理対象のデータ分割サイズによってはデータ処理効率が低下する。例えば、従来の負荷分散システムにおいては、ストレージからコンピューターのプロセッサーにデータを供給し、ジョブを実行させるので、数キロバイト程度に分割されたデータを用いる場合はともかく、数ギガバイト以上の連続した大容量データではデータ処理効率は大幅に低下する。
したがって、本発明の目的は、数ギガバイト以上の連続した大容量データを用いた場合においてデータ処理効率を低下させないために、各種ストレージ上で直接、データ処理を実行させることができるシステム、情報処理方法、及びプログラムを提供することにある。
本発明は、上記目的を達成するため、オブジェクトストレージに格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイスの少なくとも1つに演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムであって、ソースコードを取得するソース取得部と、所定のAPI(Application Programming Interface)を用い、演算ロジックをソースコード中から特定する演算ロジック特定部と、ソースコードに基づいて指定されるプロセッサーのコンパイラに演算ロジックを供給する演算ロジック供給部と、オブジェクトストレージが、指定されるプロセッサーのコンパイラによってコンパイルされた結果を実行イメージとして格納し、オブジェクトストレージに格納されている指定されるプロセッサーにおける実行イメージへのパスと、指定されるプロセッサーとを対応付けたプロセッサー対応表を作成してオブジェクトストレージに格納する対応表作成部と、演算ロジック供給部が供給した演算ロジックと、オブジェクトストレージに格納されているプロセッサー対応表の保存パスとを対応付けた対応関係をオブジェクトストレージに格納する対応関係決定部とを備えるシステムが提供される。
本発明に係るシステム、情報処理方法、及びプログラムによれば、数ギガバイト以上の連続した大容量データを用いた場合においてデータ処理効率を低下させないために、各種ストレージ上で直接、データ処理を実行させることができるシステム、情報処理方法、及びプログラムを提供できる。
本実施形態に係るシステムのアーキテクチャの概要図である。 本実施形態に係るシステムの機能構成ブロック図である。 本実施形態に係るユーザーアプリケーション、プロセッサー対応表、及び対応関係の構成の概要図である。 本実施形態に係るシステムにおける処理のフロー図である。 本実施形態に係るシステムにおける処理のフロー図である。 本実施形態に係るシステムにおける処理のフロー図である。 (a)は従来のApache Sparkの演算の概要図であり、(b)は本実施形態の他の例に係るシステムにおける演算の概要図である。
[実施の形態]
<システム1の概要>
従来の負荷分散システムにおいては、1つ以上のストレージからデータを読み込み、複数のプロセッサーを用いて分散処理する。つまり、所定のストレージから所定のコンピューターのプロセッサーにデータを供給し、ジョブを実行させる。したがって、数キロバイト程度の小容量データを扱う場合(例えば、ビックデータを扱う場合)においては従来の負荷分散システムであってもデータ処理効率は低下しにくい。しかしながら、数ギガバイト以上の連続した大容量データを扱う場合、従来の負荷分散システムではデータ処理効率が大幅に低下する。すなわち、従来の負荷分散システム(例えば、特開2008−15888号公報記載のシステム等)においては、ストレージから所定のコンピューターがデータを読み込み、このコンピューターが読み込んだデータを更に他のコンピューターが連続して読み込むことでジョブを実行していくので、大容量データを扱う場合のデータ処理効率は大幅に低下する。
そこで、本発明者は発想を転換し、データの供給方向(すなわち、ルーチン若しくはジョブの供給方向)を逆にすることに想到した。例えば、ユーザーアプリケーションから所定のコンピューターにルーチン若しくはジョブを供給し、当該コンピューターからストレージにルーチン若しくはジョブを供給して当該ストレージ上でルーチン若しくはジョブを直接処理することでデータ処理効率の向上を実現できることに想到した。すなわち、本発明に係るシステムは、ユーザーアプリケーション内のデータを扱うルーチンの実行コードをストレージ上のIOコントローラーに供給し、ストレージ上でデータ処理を直接実行するという構成であり、ユーザーアプリケーションが動作するクラウドとルーチンが実行されるエッジとの双方で同時に分散処理されるシステムである。
従来はエッジで扱われる異種混在の様々なデバイスに対応するため従来の仮想ハードウエア等で用いる中間コードを生成する必要があったが、本発明者が想到した構成によれば、中間コードを用いることを必ずしも要せず、所定のデータ処理用の実行コードをクラウドで生成することができるので(なお、実行コードはクラウドにおいて保存可能である。)、中間コードより処理効率の高い実行コード(すなわち、ストレージ用のジョブ・ルーチン)をクラウド上のユーザーアプリケーションより切り出して、ストレージ上でデータ処理を直接、実行することができる。
なお、複数のデバイス(なお、デバイスにはストレージを含む)のプロセッサーのそれぞれに所定の演算ロジックを実行させる場合、当該デバイスの種類により機械語が異なるので、当該演算ロジックが一のデバイスで実行できたとしても他のデバイスで実行できるとは限らない。そのため、従来は、仮想ハードウエアを定義し、仮想ハードウエアで実行される中間コードに演算ロジックをコンパイルすることで異種混在のデバイスでこの演算ロジックが動作するようにしている。つまり、異種混在の様々なデバイスのプロセッサーは、仮想ハードウエアを実現するバーチャルマシンを実装し、バーチャルマシンで中間コードを読み込こんで演算ロジックを実行する。
しかし、係る方式においてはバーチャルマシンを経由する分、処理速度が低下する。そのため、従来の方式においては、演算ロジックを実行する前に中間コードのすべてをプロセッサー向けの機械語に変換する特定のコンパイラ(例えば、Just−in−time(JIT)コンパイラ)を用いることで処理速度を高速化している。但し、係る方式であっても、中間コードを必須とするため、高速化には限界がある。
一方、本発明者が想到した構成によれば、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを用いる場合に、演算ロジックをソースコードのままクラウドで保持し、複数のデバイスのプロセッサーのそれぞれにおいて、複数のデバイス用に演算ロジックをコンパイルすることで実行イメージを予め作成し、作成した実行イメージをクラウドに保存して、演算ロジックの実行指示がなされたときにこの保存してある実行イメージをデバイスにダウンロードして実行させることもできる。
よって、従来の形式とはデータの供給方向を逆にした本実施形態に係るシステム1は、オブジェクトストレージに格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイスの少なくとも1つに演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムである。そして、本実施形態に係るシステム1は、演算ロジックをソースコードのまま保持し、複数のデバイスのプロセッサーのそれぞれにおいて、複数のデバイス用に演算ロジックをコンパイルすることで実行イメージを作成し、作成した実行イメージをオブジェクトストレージに格納しておき、演算ロジックが複数のデバイスのうちの一のデバイスに呼び出された場合、一のデバイス用に作成された実行イメージをオブジェクトストレージから一のデバイスに供給して実行させるシステム(以下、「実行イメージ供給システム」と称する場合がある。)である。
本実施形態に係るシステム1によれば、数ギガバイトの連続した大容量データを用いる場合であっても、ストレージ上で直接、演算処理を実行できるので、データ処理効率を従来技術よりも大幅に向上させることができる。また、システム1によれば、バーチャルマシンを経由しないので処理速度が大幅に向上する。更に、本実施形態に係るシステム1によれば、例えば、Java(登録商標)等におけるオーバーヘッドをなくすことができることから処理速度を更に向上させることができ、また、ハードウエアの機能を完全に活用することもできる。
<システム1の詳細>
図1は、本発明の実施の形態に係るシステムのアーキテクチャの概要の一例を示す。また、図2は、本発明の実施の形態に係るシステムの機能構成の概要の一例を示す。
[システム1のアーキテクチャの概要]
図1及び図2に示すように、本実施形態に係るシステム1は、プロキシ側システム2と、スタブ側システム3と、オブジェクトストレージ400に格納されシステム1(具体的には、プロキシ側システム2)に呼び出されるユーザーアプリケーション600とを備え、異種混在の複数のデバイス5の少なくとも1つに演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムである。ユーザーアプリケーション600は、予め定められた演算ロジックをソースコード中に有する。
なお、図2では説明を簡略化するためデバイス5は1つのみ図示しているが、デバイス5は複数存在していてもよく、複数のデバイス5はそれぞれ、異なる機械語で動作するデバイスであってよい。デバイス5は、例えば、各種の格納装置や記録装置(すなわち、ストレージ)、周辺装置を制御部やプロセッサーに接続して制御するIOコントローラー等である。また、ユーザーアプリケーション600としては、様々な処理を実行するアプリケーションが挙げられ、例えば、各種のユーティリティアプリケーション、各種の計算用アプリケーション、静止画や動画の画像処理アプリケーション、プログラミング用アプリケーション等が挙げられる。
図1に示すように、プロキシ側システム2は、制御部50を有し、スタブ側システム3において消費されるメモリ量を測定若しくは推定する機能(消費メモリ測定・推定機能)と、異種混在の複数のデバイスそれぞれのプロセッサーに所定の演算ロジックを供給してコンパイルさせて得られる実行イメージをオブジェクトストレージ400やGPGPU SaaS410に格納させる機能(変換処理機能)と、複数のデバイスのうちいずれのデバイスについて実行イメージを既に作成しているか否かを管理する機能(デバイス管理機能)と、スタブ側システム3にキュー10等を用いて所定の情報を供給する機能(送信処理機能)と、演算ロジックからオブジェクトストレージ400等の格納部へのデータアクセスに不正な構文が存在するか否かを確認する機能(ストレージ統合管理機能)とを有する。プロキシ側システム2に読み込まれたユーザーアプリケーション600は、所定のApplication Programming Interface(API)100によって演算ロジックの特定等の処理が施される。そして、システム1は、SYCL及びOpenCL等の言語を用い、演算ロジックを、制御部50によって実行できる形式に変換することもできる。なお、オブジェクトストレージ400及びGPGPU SaaS410は、Public PaaS4である。
また、スタブ側システム3は、プロキシ側システム2からの情報を受け取る機能(受信処理機能)と、ストレージを管理する機能(ストレージ機能)と、演算ロジックが実行される環境を準備する機能(メモリ管理機能)と、Uniform Resource Identifier(URI)を管理する機能(URI管理機能)とを有する。スタブ側システム3は、プロキシ側システム2から受け取った情報に基づいて、演算ロジックを実行先(例えば、ARM Mali、FPGA、Xeon Phi、nVidia GPU等のデバイス。なお、nVidia GPU16は、専用バス14を介してスタブ側システム3から情報を受け取る。)で実行させる。例えば、スタブ側システム3は、メモリ管理機能が準備した実行環境において、受信処理機能において受信した実行イメージに基づいてOpenCL、Ceph及びRADOS等を利用して実行先のデバイスで演算ロジックに基づいた処理を実行させる。実行先のデバイスとしては、例えば、SSDが挙げられ、SSDはSSD Controller20に制御される。また、SSDからNVM Express(NVMe30)に基づいた論理デバイスに演算結果等を供給することもできる。なお、プロキシ側システム2とスタブ側システム3とは、例えば、分散ストレージソフトウエア(Ceph12)によって互いにデータのやり取りを実行できる。
[システム1で用いられるデータの指定方法の概要]
まず、本実施形態に係るシステム1においては、データの指定方法として特定の指定方法を採用することが好ましい。
すなわち、従来のコンピュータープログラムは、複数のルーチンがポインタと呼ばれる物理アドレスを受け渡し、Dynamic Random Access Memory(DRAM)上のデータを複数のルーチン間で共有して利用したり、加工したりして動作する。そのため、Solid State Drive(SSD)等のメモリヒエラルキー下層のデータを一度、DRAMに転送することを要する。ここで、DRAMとSSDとの間で扱うデータ量が増大すると、従来の方式では十分な転送速度を確保できず、DRAMへのデータ転送がデータ処理のボトルネックとなっている。
そこで、システム1においては、上記ボトルネックを解消する観点から、物理アドレスでの管理ではなく、Uniform Resource Identifier(URI)での管理を用いることが好ましい。すなわち、システム1は、制御部50と、データ位置(例えば、物理アドレスや各種の格納部の番地、IOコントローラーの番号等)で示される番地にデータを格納する格納部(例えば、DRAMやSSD等、及びオブジェクトストレージ400等)とを備える。
システム1では、データへアクセスするポインタとして、所定のスキームと所定の区切り(例えば、「:」(コロン)等)の後にスキーム毎に定義された書式によるリソースとが対応付けられているURIを用いる。つまり、本実施形態に係るシステム1においては、コンピューター内部のデータ位置を指し示すポインタを物理アドレスからURIに変更若しくは置換して用いることで、制御部50が処理できるデータの位置を「拡張」する。換言すれば、システム1においては、データ位置の代わりにURIを用いる。なお、ポインタは、コンピュータープログラムが、ルーチン間で処理するデータの位置を受け渡す場合に用いる付票である。
(制御部50)
制御部50は、システム1のプロキシ側システム2における各種のデータ処理等を制御する。制御部50は格納部に働きかけて、格納部に格納されているデータの転送、処理等、及び所定のアプリケーション(例えば、ユーザーアプリケーション600)の制御を実行する。制御部50は、例えば、Central Processing Unit(CPU)の論理回路を有して構成される。
制御部50は、URIに対応付けられているスキームによって指定される所定のアプリケーションを制御して起動させる。そして、制御部50は、URIのリソースをアプリケーションに渡す。続いて、アプリケーションは、リソースに基づいてURIをデータ位置として用い、URIで指定されて格納部に格納されるデータを制御する。なお、制御部50は、URIに対応付けられているスキームに基づいて、複数のアプリケーションを制御して起動させることもできる。
なお、URIは、予め定められた一定の書式によってリソース(資源)を指し示す識別子である。本実施形態に係るURIにおいては、目的とするデータがシステム1内に存在しない場合をも考慮し、制御部50若しくはアプリケーションによるアクセスを可能にするためのリソースをも指し示すことができるものとする。また、URIが指し示すリソースに制御部50やアプリケーションがアクセスすることができるようにすることを目的として、URIを、実際の格納部における物理アドレスに変換することを要するので、同一の物理アドレスを複数のURIが指し示すこともあるものとする。なお、URIの物理アドレスへの変換若しくは置換は、URIに対応付けられているスキームが指定するアプリケーションが実行する。
また、URIは、例えば、「スキーム://リソース」の形式で記述され、リソースは、スキーム毎に定義された書式で記述される。そして、リソースの例としては、例えば、「目的のデータが存在するディスク番号、ディレクトリ、ファイル、シーク」、「目的のデータが存在するDRAMメモリアドレス」、「目的のデータが存在しない場合の対応、リトライ、コールバック」等が挙げられる。
(格納部)
格納部は、所定の形式のデータ位置に所定のデータを格納可能に設けられる。格納部は、各種のデータを格納する機能を有する限り様々な記憶媒体を用いることができ、例えば、レジスタ、キャッシュ、Dynamic Random Access Memory(DRAM)、ビデオメモリ、Solid State Drive(SSD)、Hard Disk Drive(HDD)、テープドライブ、Compact Disc(CD)やDigital Versatile Disc(DVD)等の光学記録媒体、光磁気記憶媒体、及び磁気記録媒体等である。格納部は、クラウド上の格納部であってもよく、データサイズやデータ数の保存制限がなく、大容量データの保存に適し、オブジェクト単位でデータを保存するオブジェクトストレージであってもよい。これらの格納部には、互いに異なる形式のデータ位置が割り当てられている。
一例として、レジスタ、キャッシュ、DRAMにおいては、データ位置は物理アドレスを用いて指定される。具体的に、レジスタにおいては、レジスタ名若しくは番号でデータ位置が指定される。キャッシュにおいては、先頭から順列に沿って数えたアドレスによってデータ位置が指定される。DRAMにおいても、先頭から順列に沿って数えたアドレスでデータ位置が指定される。ただし、DRAMにおいては、データ位置の指定は物理的にキャッシュとは異なる。
[システム1のデータ指定方法の詳細]
本実施形態に係るシステム1は、URIによってデータが指定される格納部を備える。そして、制御部50がURIに対応付けられているスキームに応じたアプリケーションを起動させ、起動されたアプリケーションに当該URIのリソースが渡される。そして、アプリケーションは、渡されたリソースに基づいてURIをデータ位置に変換する。これにより、格納部がどのような種類の格納部であっても、制御部50による格納部の直接的、統一的な制御を可能とする。
例えば、従来のCPUではレジスタ、キャッシュ、及びDRAMまでを直接、制御する。そして、従来のCPUは、メモリヒエラルキーにおけるSSD以下の格納部を直接制御することができない。DRAMからSSDにデータを転送する経路における転送速度がメモリヒエラルキーにおけるDRAM以上の格納部における転送速度より低速であることから、DRAM以上におけるデータ転送等がいかに高速であっても、DRAMからSSDへのデータ転送が転送速度の観点からボトルネックになる。これは、従来のコンピューターでは格納部毎に異なる形式を用い、データ位置を物理アドレスで指定していることに起因する。
一方、本実施形態に係るシステム1は、物理アドレスの代わりにURIをポインタとして用いる。そのため、DRAMから下層の格納部であるSSD等を制御部50によって直接、制御することができる。具体的に、本実施形態に係る制御部50において、制御部50が各格納部にアクセスする場合、制御部50の命令によってアクセス可能な範囲は、レジスタ、キャッシュ、DRAM、及びIOチャネルのIOコントローラー等である。そして、制御部50が、レジスタ、キャッシュ、DRAM、及びIOチャネルのIOコントローラーに保持されているデータ位置等の数値を制御し、IOコントローラーに保持されている数値が制御部50によって書き換えられることにより、IOコントローラーから先のSSD、HDD、及びテープドライブ等の格納部が制御部50によって直接制御される。
その結果、例えば、DRAMをデータの転送先・共有場所としてではなく、キャッシュより容量が大きなキャッシュとして扱えるので、システム1におけるデータ処理速度を大幅に向上させることができる。
より具体的には、制御部50は、例えばオブジェクトストレージ400に格納されている所定のデータのURIを参照し、URIに対応付けられているスキームが指定するアプリケーションを起動する。制御部50は、アプリケーションにURIの区切りの後ろのリソースを渡す。アプリケーションは、リソースに基づいて、物理アドレスの代わりにURIをデータ位置として用い、URIで指定されている格納部に格納されているデータにアクセスする。これにより、URIを用いてSSD等へのアクセスを、制御部50により一元管理できる。
例えば、制御部50によって起動されるアプリケーションがSSD制御ルーチンであれば、SSD制御ルーチンがリソースに基づいてSSDコントローラー機器の物理アドレスや、SSDコントローラー上のSSDメモリ空間の物理アドレスを生成する。これにより制御部50が、SSDを制御することができる。
なお、アプリケーションは、複数の格納部のそれぞれに格納されるデータをURIに基づいて指定することもできる。すなわち、アプリケーションは、制御部50に制御され、複数の格納部にそれぞれ異なる形式の物理アドレスで指定された位置・番地に格納されている複数のデータそれぞれを、URIを用いることで統一的に取り扱うこともできる。これにより、本実施形態に係るシステム1によれば、複数の格納部間でのデータ位置の指定をURIで拡張し、その結果、統一的に扱うことができる。
以下においては、本実施形態に係るシステム1である実行イメージ供給システムに好適な構成を中心に説明する。
図2に示すように、本実施形態に係るシステム1は、概略、プロキシ側システム2と、スタブ側システム3とを備える。システム1は、システム1外にあるオブジェクトストレージ400に所定の情報を格納する。そして、システム1は、所定のデバイス5に所定の処理を実行させることができる。すなわち、システム1は、オブジェクトストレージ400に格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイス5の少なくとも1つに演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムである。なお、デバイス5は、デバイス5の動作を制御する1つ以上のプロセッサー500を有する。
[プロキシ側システム2]
プロキシ側システム2は、所定のユーザーアプリケーションを一般的に用いられているコンパイラでコンパイルする前に、所定の処理を当該所定のユーザーアプリケーションに施すシステムである。
プロキシ側システム2は、ソースコードを取得するソース取得部200と、ソースコード中の演算ロジックを特定する演算ロジック特定部202と、1つ以上のデバイス5を管理するデバイス管理部204と、演算ロジックによるデータアクセスに関する処理を実行するストレージ統合管理部206と、1つ以上のデバイス5に演算ロジックを供給する演算ロジック供給部208と、実行イメージへのパスと当該実行イメージが実行されるプロセッサー500とを対応付けたプロセッサー対応表を作成する対応表作成部210と、プロセッサー対応表の保存パスと当該プロセッサー対応表を用いる演算ロジックとを対応付けた対応関係を決定する対応関係決定部212と、実行用コンテキストを作成する実行用コンテキスト作成部214と、スタブ側システム3に所定の情報を供給する送信処理部216と、プロキシ側システム2の各構成の動作を制御する制御部50とを有する。
(ソース取得部200)
ソース取得部200は、所定のアプリケーション(例えば、ユーザーアプリケーション600)のソースコードを取得する。ここで、所定のアプリケーションはオブジェクトストレージ400に格納されており、ソース取得部200は、オブジェクトストレージ400から所定のアプリケーションのソースコードを取得する。すなわち、オブジェクトストレージ400、すなわちクラウドに当該ソースコードは格納されており、ソース取得部200は、クラウドからソースコードを取得することになる。なお、アプリケーションは、ソースコード中に演算ロジックを有している。ソース取得部200は、所定のアプリケーションのソースコードを読み込み、読み込んだソースコードを演算ロジック特定部202に供給する。
(演算ロジック特定部202)
演算ロジック特定部202は、所定のAPI(Application Programming Interface)を呼び出し、APIが、ソースコード中から演算ロジックを特定する。本実施形態において演算ロジックは、分散処理に用いられることが好ましい。
(デバイス管理部204)
デバイス管理部204は、ソースコードに基づいて指定されるプロセッサー500が、システム1において用いることができる使用可能プロセッサーであるか否かを確認する。すなわち、デバイス管理部204は、ソースコードによって指定されるプロセッサー500が、システム1において対応済みのプロセッサーであるか否かを確認する。デバイス管理部204は、確認結果を演算ロジック供給部208に供給する。
(ストレージ統合管理部206)
ストレージ統合管理部206は、演算ロジック特定部202が特定した演算ロジックから所定のデータを除く他のデータへのアクセスが存在するか否かを確認する。例えば、ストレージ統合管理部206は、特定された演算ロジックにおいて、不正なURI構文が存在するか否かを確認する。また、ストレージ統合管理部206は、アクセスするデータへのアクセス権がシステム1に存在するか否かを確認することができる。この場合、ストレージ統合管理部206は、システム1にアクセス権が存在するデータのみ、演算ロジックから当該データへのアクセスを許可する。
ここで、デバイス管理部204は、ストレージ統合管理部206において他のデータへのアクセスが存在しないと判断された場合に、ソースコードに基づいて指定されるプロセッサー500がシステム1において用いることができる使用可能プロセッサーであるか否かの確認を実行する。
(演算ロジック供給部208)
図3は、本実施形態に係るユーザーアプリケーション、プロセッサー対応表、及び対応関係の構成の概要の一例を示す。
図3(a)に示すように、ユーザーアプリケーション600は、1つ以上の演算ロジック(例えば、演算ロジックa、演算ロジックb・・・等)を含むソースコードを有して構成されている。ソースコードには、演算ロジックがアクセスするデータ、演算ロジックが実行されるデバイス5やプロセッサー500等を特定若しくは指定する情報も含むことができる。
演算ロジック供給部208は、ソースコードに基づいて指定されるプロセッサー500のコンパイラに演算ロジックを供給する。より具体的に、演算ロジック供給部208は、デバイス管理部204が使用可能プロセッサーの存在を確認した場合(すなわち、指定されたプロセッサー500が使用可能プロセッサーであると確認した場合)、ユーザーアプリケーション600のソースコード中の演算ロジックを使用可能プロセッサーに供給する。ここで、ソースコードに基づいて指定されるプロセッサー500は複数であってもよい。すなわち、ソースコードに基づいて指定されるデバイス5が複数であってもよい。この場合、演算ロジック供給部208は、複数の指定されたプロセッサーのコンパイラのそれぞれに、演算ロジックを供給する。
演算ロジックが供給されたプロセッサー500は、プロセッサー500が有するコンパイラを用い、受け取った演算ロジックをコンパイルする。プロセッサー500のコンパイラによるコンパイルは、クラウド上で実行される。そして、プロセッサー500は、コンパイルした結果を実行イメージとしてオブジェクトストレージ400に格納する。演算ロジックが供給されるプロセッサーが複数である場合は、複数のプロセッサーのそれぞれが、受け取った演算ロジックをコンパイルし、コンパイルした結果である実行イメージそれぞれをオブジェクトストレージ400に格納する。なお、プロセッサーのコンパイラは従来公知のコンパイラを用いることができる。また、実行イメージは、例えば、OpenCLのKernel Imageを利用することで作成できる。
(対応表作成部210)
対応表作成部210は、オブジェクトストレージ400が、ソースコードに基づいて指定されるプロセッサー500のコンパイラによってコンパイルされた結果を実行イメージとして格納した場合に、オブジェクトストレージ400に格納されている当該指定されるプロセッサー500における実行イメージへのパスと、当該指定されるプロセッサーとを対応付けたプロセッサー対応表610を作成する。
ユーザーアプリケーション600は複数の演算ロジックを有することができるので、演算ロジックごとにプロセッサーと当該プロセッサー用の実行イメージのパスとが対応付けられる。具体的に、図3(b)に示すように、プロセッサー対応表610は、演算ロジックごとに、1つ以上のプロセッサーのそれぞれと、各プロセッサーのコンパイラによってコンパイルされた結果である実行イメージへのパスとを対応付けた表であり、オブジェクトストレージ400は、この表に関するデータをプロセッサー対応表610として格納する。図3(b)の例では、演算ロジックaが供給されたプロセッサーAに、プロセッサーAのコンパイラでコンパイルされて作成された実行イメージへのパスaが対応付けられている(プロセッサーB、プロセッサーC、・・・等も同様である。)。対応表作成部210は、作成したプロセッサー対応表をオブジェクトストレージ400に格納する。なお、プロセッサー対応表610は、演算ロジックごとに別々の表であっても、同一の表であってもよい。
(対応関係決定部212)
対応関係決定部212は、演算ロジック供給部208が供給した演算ロジックと、オブジェクトストレージ400に格納され、当該演算ロジックに対応するプロセッサー対応表の保存パスとを対応付けた対応関係620をオブジェクトストレージ400に格納する。図3(c)に示すように、対応関係620は、演算ロジックに、当該演算ロジックが供給されたプロセッサーにおいて作成された実行イメージへのパスを格納しているプロセッサー対応表610への保存パスを対応付けた表である。図3(c)の例では、演算ロジックaにプロセッサー対応表への保存パスAが対応付けられている(演算ロジックb等の他の演算ロジックについても同様である。)。
(実行用コンテキスト作成部214)
実行用コンテキスト作成部214は、演算ロジックにおいて実行される実行用コンテキストを作成する。具体的には、オブジェクトストレージ400が、異種混在の複数のデバイスに関するデバイス情報を予め格納する。デバイス情報は、例えば、デバイスの位置、種類、プロセッサー500の種類等に関する情報である。そして、ユーザーアプリケーション600は、ユーザーアプリケーション600の実行が開始された場合、ユーザーアプリケーション600の演算ロジックがアクセスするデータを指定すると共に、演算ロジックが実行されるデバイスを指定する。そして、実行用コンテキスト作成部214は、指定されたデータに基づいて実行用コンテキストを作成する。
より具体的には、まず、ユーザーアプリケーション600がデータを指定する場合に、ストレージ統合管理部206は、指定されたデータ、すなわち、アクセスが要求されたデータへのアクセス権がシステム1にあるか否かを確認し、アクセス権がある場合に、当該データの指定を許可する。
そして、デバイス管理部204は、ユーザーアプリケーション600が指定したデバイスに関するデバイス情報をオブジェクトストレージ400から取得してデータ処理が実行される対象プロセッサーを特定する。続いて、実行用コンテキスト作成部214は、オブジェクトストレージ400に格納されているプロセッサー対応表及び対応関係を参照し、演算ロジックに対応付けられたプロセッサー対応表における対象プロセッサーに対応付けられている実行イメージへのパスを実行用コンテキストに書き込む。これにより、実行用コンテキスト作成部214は、外部に提供する実行用コンテキストを作成する。
(送信処理部216)
送信処理部216は、ユーザーアプリケーション600が演算ロジックの実行を指示した場合、パスが書き込まれた実行用コンテキストを外部(すなわち、スタブ側システム3)に供給するためにストレージキューに書き込む。送信処理部216は、ストレージキューを介して実行用コンテキストをスタブ側システム3に供給する。
[スタブ側システム3]
スタブ側システム3は、プロキシ側システム2から供給される実行用コンテキストに基づいて、所定のデバイス5に所定の処理を実行させる。なお、実行された処理の結果はオブジェクトストレージ400に格納することができる。
スタブ側システム3は、プロキシ側システム2から所定の情報を受け取る受信処理部300と、物理的なメモリを管理するメモリ管理部302と、実行イメージを取得する実行イメージ取得部304と、演算ロジックを実行する演算ロジック実行部306と、演算ロジックの結果をオブジェクトストレージ400に格納させる結果格納実行部308と、URIを管理するURI管理部310と、ストレージ機能を管理するストレージ機能管理部312とを有する。
(受信処理部300)
受信処理部300は、送信処理部216からパスが書き込まれた実行用コンテキストを受信する。また、受信処理部300は、受信した実行用コンテキストを解読する。
(メモリ管理部302)
メモリ管理部302は、受信処理部300において解読された実行用コンテキスト内のデバイス情報に基づいて、演算ロジックが実行される物理メモリ等の実行環境を準備する。
(実行イメージ取得部304)
実行イメージ取得部304は、受信処理部300において解読された実行用コンテキスト内の実行イメージへのパスに基づいて、オブジェクトストレージ400から実行イメージを取得する。すなわち、実行イメージ取得部304は、解読された実行用コンテキストによって指定される実行イメージを、オブジェクトストレージ400からダウンロードする。
(演算ロジック実行部306)
演算ロジック実行部306は、受信処理部300において解読された実行用コンテキスト内で指定されるデータを引数として設定する。そして、演算ロジック実行部306は、メモリ管理部302が準備した実行環境において実行イメージを用いて演算ロジックを実行する。
(結果格納実行部308)
結果格納実行部308は、演算ロジック実行部306において演算ロジックが実行された結果をオブジェクトストレージ400に格納する。オブジェクトストレージ400に格納された当該結果は、所定の出力装置から出力することや、他の情報処理に再利用すること等、様々な用途に用いることができる。
(URI管理部310)
URI管理部310は、演算ロジック実行部306において演算ロジックが実行された結果について、当該結果を必要とするデバイスのアクセス先を振り分ける。
(ストレージ機能管理部312)
ストレージ機能管理部312は、オブジェクトストレージ400、及び/又はローカルストレージ(例えば、システム1が備える所定の格納部(図示しない))への情報の格納や情報の演算等を制御・管理する。例えば、ストレージ機能管理部312は、結果格納実行部308を制御して、演算ロジックが実行された結果をオブジェクトストレージ400に格納する。
[システム1における処理の流れ]
図4〜図6はそれぞれ、本実施の形態に係るシステムにおける処理の流れの概要の一例を示す。具体的に、図4は、システム1による複数種類のプロセッサーへの対応を可能にする処理の流れを示す。また、図5は、ユーザーアプリケーションを実行する場合におけるプロキシ側システム2における処理の流れを示し、図6は、ユーザーアプリケーションを実行する場合におけるスタブ側システム3における処理の流れを示す。なお、図4〜図6において、ユーザーアプリケーションを「ユーザーアプリ」と表記する場合があり、ソースコードを「ソース」と表記する場合がある。
まず、図4を参照する。初めに、プロキシ側システム2においてユーザーアプリの登録が開始される(ステップ10。以下、ステップを「S」と表す。)。ソース取得部200は、オブジェクトストレージ400に格納されているユーザーアプリケーション600のソースコードを取得し(S12)、ソースコードをシステム1に読み込む(S14)。続いて、システム1は、システム1において用いられるAPIを呼び出し、APIを用いて分散処理する演算ロジックを、読み込まれたソースコードに基づいて特定する(S16)。
次に、ストレージ統合管理部206は、特定された演算ロジックから所定のデータを除く他のデータへのアクセスが存在するか否かについて、URIに基づくポインタを用いて確認する(S18)。ストレージ統合管理部206は、他のデータへのアクセスが存在すると判断した場合(S18のYes)、エラー処理を実行する(S42)。例えば、ストレージ統合管理部206は、システム1の処理の実行を停止する。一方、ストレージ統合管理部206は、他のデータへのアクセスが存在しないと判断した場合(S18のNo)、他のデータへのアクセスが存在しない旨を示す情報をデバイス管理部204に供給するか、若しくはデバイス管理部204に処理の実行を継続させる。
デバイス管理部204は、ストレージ統合管理部206において他のデータへのアクセスが存在しないと判断された場合に、ソースコードに基づいて指定されたプロセッサーが、システム1において用いることができる使用可能プロセッサーであるか否かを確認する(S20)。すなわち、デバイス管理部204は、指定されたプロセッサーについて、既にプロセッサー対応表及び対応関係を作成したか否かを確認する。デバイス管理部204は、プロセッサー対応表及び対応関係が作成されていないと判断した場合、指定されたプロセッサーが使用可能でないと判断し(S20のNo)、エラー処理を実行する(S42)。エラー処理は上記と同様であってよい。一方、デバイス管理部204は、プロセッサー対応表及び対応関係が作成されていると判断した場合(S20のYes)、演算ロジック供給部208に指定されたプロセッサーへの演算ロジックの送信を実行させる(S22)。
演算ロジックを受信したプロセッサー500は、受け取った演算ロジックのコンパイルを自身のコンパイラに実行させる(S24)。演算ロジック供給部208は、指定されたプロセッサーが複数存在する場合、複数のプロセッサーのそれぞれに演算ロジックを供給する。そして、この場合、複数のプロセッサーのそれぞれが、それぞれのコンパイラを用いて受け取った演算ロジックのコンパイルを実行する。一つ若しくは複数のプロセッサーのそれぞれは、コンパイルした結果を実行イメージとする(S26)。そして、一つ若しくは複数のプロセッサーのそれぞれは、実行イメージをオブジェクトストレージ400に供給してオブジェクトストレージ400に格納させる(S28)。
そして、対応表作成部210は、オブジェクトストレージ400から各実行イメージへのパスを一つ若しくは複数のプロセッサーごとに受け取り(S30)、プロセッサー対応表を作成して、プロセッサー対応表に実行イメージへのパスを書き込む(S32)。すなわち、対応表作成部210は、プロセッサーと当該プロセッサーにおいて作成された実行イメージのオブジェクトストレージ400における格納位置を示すパスとを対応付けたプロセッサー対応表を作成する。
ここで、ユーザーアプリケーション600は複数の演算ロジックを有することができる。この場合、本実施形態に係るシステム1においては、複数の演算ロジックごとにS18〜S32を実行し、プロセッサー対応表を作成する。したがって、複数の演算ロジックが存在する場合、プロセッサー対応表は複数の演算ロジックごとに作成される。
続いて、対応関係決定部212は、演算ロジック供給部208が供給した演算ロジックと、オブジェクトストレージ400に格納されているプロセッサー対応表への保存パスとを対応付けた対応関係を作成し(S34)、この対応関係に関する情報をプロセッサー対応表と共にオブジェクトストレージ400に供給する(S36)。オブジェクトストレージ400は、プロセッサー対応表及び対応関係を格納する(S38)。そして、ユーザーアプリケーション600は、従来公知のコンパイラでコンパイルされる(S40)。
次に、図5を参照する。まず、所定の機能を有するユーザーアプリケーション600の実行が開始される(S50)。ユーザーアプリケーション600は、自身のソースコードに含まれる演算ロジックがアクセスするデータの指定をプロキシ側システム2に要求する。ストレージ統合管理部206は、要求されたデータに対するアクセス権がユーザーアプリケーション600にあるか否かを確認する(S52)。ストレージ統合管理部206がユーザーアプリケーション600にアクセス権があると判断した場合、ユーザーアプリケーション600は、演算ロジックがアクセスするデータを指定する(S54)。一方、ストレージ統合管理部206は、要求されたデータに対するアクセス権がないと判断した場合、データへのアクセスを拒否して処理を終了する。
実行用コンテキスト作成部214は、指定されたデータを利用し、演算ロジックの実行用コンテキストを作成する(S56)。実行用コンテキスト作成部214は、実行用コンテキストを作成した場合、実行用コンテキストを作成したことを示す情報をユーザーアプリケーション600に通知する(S58)。ユーザーアプリケーション600は、この通知に応じ、演算ロジックを実行するデバイスを指定する(S60)。デバイス管理部204は、ユーザーアプリケーション600が指定したデバイスに関する情報(デバイス情報)をオブジェクトストレージ400から取得する(S62)。そして、デバイス管理部204は、デバイス情報に基づいてデータ処理が実行される対象のプロセッサーである対象プロセッサーを特定する(S64)。
デバイス管理部204は、対象プロセッサーを特定したことを示す情報をユーザーアプリケーション600に供給する(S66)。また、実行用コンテキスト作成部214は、オブジェクトストレージ400に格納されているプロセッサー対応表及び対応関係を参照し(S68)、演算ロジックに対応付けられたプロセッサー対応表における対象プロセッサーに対応付けられている実行イメージへのパスを実行用コンテキストに書き込む(S70)。
ユーザーアプリケーション600は、対象プロセッサーを特定したことを示す情報を取得した後、演算ロジックの実行命令をプロキシ側システム2に供給する(S72)。プロキシ側システム2の制御部50は、当該情報を受け取った後、パスが書き込まれた実行用コンテキストをスタブ側システム3に供給するためにストレージキューに当該実行用コンテキストを書き込む(S74)。なお、実行用コンテキスト作成部214は、実行用コンテキストに、演算ロジックが実行される環境を指定する実行環境情報を含ませることもできる。そして、送信処理部216は、ストレージキュー内の各種情報をスタブ側システム3に供給する(S76)。
続いて図6を参照する。受信処理部300は、プロキシ側システム2の送信処理部216から実行用コンテキストを受信する(S80)。受信処理部300は、受信した実行用コンテキストを解読する(S82)。メモリ管理部302は、受信処理部300によって解読された実行用コンテキスト内のデバイス情報、及び/又は実行環境情報等に基づいて、演算ロジックが実行される物理メモリ等の実行環境を準備する(S84)。そして、実行イメージ取得部304は、解読された実行用コンテキスト内の実行イメージへのパスに基づいて、オブジェクトストレージ400に格納されている実行イメージをダウンロードする(S88)。
そして、演算ロジック実行部306は、解読された実行用コンテキスト内で指定されるデータを引数として設定し(S88)、実行環境においてダウンロードした実行イメージを用いて演算ロジックを実行する(S90)。そして、URI管理部310は、データのアクセス先を振り分けるURI管理処理を実行する(S92)。また、ストレージ機能管理部312は、結果格納実行部308の機能を用い(S94)、演算ロジックの実行結果をオブジェクトストレージ400に格納する(S96)。この実行結果は、システム1の内外から必要に応じ、参照される。ストレージ機能管理部312は、システム1がローカルストレージを備えている場合、当該ローカルストレージ(図示しない)に実行結果を格納することもできる。
(実施の形態の効果)
本実施形態に係るシステム1においては、演算ロジックをソースコードのまま保持し、デバイス5のプロセッサー500において予め当該デバイス5用にコンパイルした実行イメージをオブジェクトストレージ400に格納することができる。すなわち、複数の互いに異なるデバイスのプロセッサーのそれぞれに合わせた実行イメージを、オブジェクトストレージ400に予め格納することができる。そして、システム1においては、演算ロジックがユーザーアプリケーション600の動作に応じて呼び出されると、当該ユーザーアプリケーション600が指定するデバイス5のプロセッサー500に適した実行イメージがオブジェクトストレージ400からダウンロードされて実行される。すなわち、本実施形態に係るシステム1においては、ユーザーアプリケーション600によってプロキシ側システム2に実行イメージが供給され、プロキシ側システム2がスタブ側システム3を介してストレージに当該実行イメージを供給し、ストレージ上でデータ処理を直接実行させることができる。これにより、本実施形態に係るシステム1は、例えば、人工知能(AI)が扱うLow Contextで小容量のデータに分割することが困難な大容量データを扱う場合であっても、データ処理効率を大幅に向上させることができる。
したがって、本実施形態に係るシステム1によれば、例えば、従来の負荷分散システムでは処理が困難である防犯カメラの動画像や録音した環境音当等処理する場合に用いるLow Context DataやBLOB(Binary Large Object)を効率よく処理できる。なお、Low Context Dataはファイル分割が困難であり、1つの処理を大型化するScale Up対応が要求されるので、従来の方式ではメモリ帯域により処理速度に制限がかかることによるデータ処理効率の低下が発生する。
本実施形態に係るシステム1においては、スタブ側システム3はオブジェクトストレージ400から実行イメージをダウンロードするだけで所定の処理を実行でき、実行イメージのサイズを小さくすることができるので、データ転送量を大幅に低減することができる。更に、システム1は、複数のプロセッサーそれぞれのコンパイラを用いて実行イメージを作成するので、移植の手間がかかる従来のJava(登録商標)等と比べ、新たなプロセッサーが開発されても、新たなプロセッサーへの対応が容易になる。
また、本実施の形態に係るシステム1においては、従来のJava(登録商標)のような中間コードのオーバーヘッドやバーチャルマシンを要さず、処理速度を向上させることができ、異種混在の複数デバイスへの対応が可能で、ハードウエアの機能を完全に活用することができる。
更に、本実施形態に係るシステム1においては、オブジェクトストレージ400、すなわち、クラウドにユーザーアプリケーション600のソースコードを格納し、そのソースコードをそのままクラウド中でコンパイルすることができるので、実質的にソースコードが外部に漏洩することがなく、かつ、中間コード等の複雑な処理を必要とせずにソースコードを実行イメージにコンパイルするだけなので、情報セキュリティについても優れている。
また、本実施の形態に係るシステム1においては、複数のルーチンで受け渡されるポインタとして、URIをデータ位置(物理アドレス)の代わりに用いたので、DRAMをキャッシュより容量の大きなキャッシュとして用いることができる。すなわち、システム1においては、データ処理に用いるデータのすべてをDRAMに転送することを必ずしも要さず、SSD等のメモリヒエラルキーの下層の格納部に格納されているデータのデータ処理に要する一部だけにアクセスして処理ができ(部分アクセス)、また、SSD等のメモリヒエラルキーの下層の格納部から所定のデータを読み取る場合において、データ処理に要する演算を組み込む処理(ストリーム処理等)をすることができる。
したがって、従来の物理アドレスによる管理では格納部毎にポインタが異なるのに対し、本実施形態に係るシステム1によれば、URIを用いることで同一のポインタで同一のデータを指し示すことができることから、すべての格納部のデータを統一的に管理できるので、データ量が転送速度に対して増大した場合であっても、部分アクセスやストリーム処理等のデータ処理の高速化技術を様々なアプリケーションに組み込むことで、従来のアドレス管理よりも高速化したデータ処理を実現することができる。すなわち、本実施形態に係るシステム1によれば、無駄なデータ転送の削減、データ転送ルーチンの共通化、及びデータ転送ルーチンへの拡張を実現することができる。
以上の説明において、システム1の各部は、ハードウエアにより実現されてもよく、ソフトウエアにより実現されてもよい。また、ハードウエアとソフトウエアとの組み合わせにより実現されてもよい。プログラムは、コンピューター読み取り可能な媒体又はネットワークに接続された記憶装置から、システム1を構成するコンピューターにインストールされてもよい。
コンピューターにインストールされ、コンピューターを本実施形態に係るシステム1として機能させるプログラムは、CPU等に働きかけて、コンピューターをシステム1として機能させる。プログラムに記述された情報処理は、コンピューターに読込まれることにより、ソフトウエアとシステム1のハードウエア資源とが協働した具体的手段として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピューターの使用目的に応じた情報の処理を実現することにより、使用目的に応じた特有のシステム1を構成できる。
また、システム1は、CPU、ROM、RAM、通信インターフェース等を有するデータユニットと、キーボード、タッチパネル、マイク等の入力ユニットと、ディスプレイ、スピーカ等の出力ユニットと、メモリ、HDD等の記憶ユニットとを備える構成の情報処理装置において、システム1の各部の動作を規定したソフトウエア又はプログラムを起動することにより実現してもよい。
システム1用のプログラムは、インターネット等の通信ネットワーク、又は磁気記録媒体、光学記録媒体等の記録媒体を介してシステム1に提供し得る。そして、システム1に格納されたシステム1用のプログラムは、CPU等により実行される。プログラムを格納している記録媒体は、CD−ROMやDVD等の非一過性の記録媒体であってもよい。
[実施の形態の他の例]
本実施形態の他の例に係るシステムは、通信帯域の制限を受けずに大容量データを扱うためのCPU、GPU、及びFPGAをまたがった分散処理のシステムに用いることができる。
具体的に、本発明者は、Speech To Text対応インターホン開発時に、僻地対応のため通信帯域の制限を受けずにクラウド内のXeonとIoTの組み込みプロセッサー(Rapsberry Pi3)とにおける分散処理を検討したところ、OpenCL Kernelファイルを転送して利用する方法について知見を得た。この知見に基づいて、本実施形態の他の例に係るシステムを構築できることを見出した。
まず、係るシステムの背景を説明する。すなわち、記憶装置における速度を上下、容量を左右とするメモリヒエラルキーは、ムーアの法則に従って鼓型に変形し、中央部の転送速度が不足することが知られている。半導体プロセスが進化することにより、メモリヒエラルキーの上下はより高くなり(つまり、速度が速くなり)、底辺はより広くなる(つまり、容量が増加する。)ためである。ただし、転送速度の進化を表すギルダーの法則はムーアの法則より遅く、10年で相対速度が1/10となる。そのため、慢性的な転送速度不足が発生している。
ここで、転送速度対策としては、データの発生源から極力データを移動させずに処理を行うIn Storage Processingが考えられる。しかし、多種プロセッサーに対応したデータ処理指向のプラットフォームが存在せず、コンテナ技術等を利用して独自に開発する必要がある。
そこで、本実施形態の他の例に係るシステムにおいては、データアクセスに関するプログラムをOpenCLで記述し、システムに存在する機器に合わせて事前にOpenCL Kernel Imageを作成し、データアクセス時にテータが存在する機器に対応するKernel Imageを転送して実行する形態を採用する。
使用言語は、例えば、対象となるプロセッサー対応が豊富であるOpenCL 1.2を採用できる。なお、開発対象としてAzureのXeonとRapsberry Pi3 (VideoCore IV)を用いる場合、OpenCL 1.2が好ましい。また、Dockerを利用してクラウドからRapsberry Pi3に処理を渡してもよい。ただし、Dockerを利用する場合、僻地の通信環境ではDocker Imageの転送に時間がかかる場合があることから、OpenCLのKernelだけを転送させる手法を採用することが好ましい。OpenCLのKernelだけを転送させる手法によれば、大容量データ処理の多くのケースで有効であるためである。
具体的に、All Flash Array等の高速ストレージでは、大容量データは複数のinodeに分割されて保存されている。ファイルの読み出し時には、inodeが集約(Aggregation)され、整列(Sort)され、ファイル転送可能な形式に変換(Encode)される。仮にOpenCL Kernel Imageをストレージ機器自身のプロセッサーで動作させれば、上記の三つの処理を経由せずに直接inodeを操作可能となり、系全体の実行効率を上昇させることができる。
図7(a)は、従来のApache Sparkの演算の概要図であり、図7(b)は、本実施形態の他の例に係るシステムにおける演算の概要図である。
従来の方法では1−aでファイル読み取りが開始され、1−cで複数inodeの集約(Aggregation)と整列(Sort)とが発生する。続いて1−dでオブジェクトストレージ形式への変換(Encode)がなされる。一方、図7(b)においては、クラウド内の仮想プロセッサーに2−aで処理が渡され、OpenCL Kernel Imageが2−a−xで転送される。3−a..eにてAggregation、Sort、Encodeをせずにデータ処理され、4−cで結果のみがクラウドに戻される。
表1は、図7における処理の各ステップにおける見積もり時間を示す。
Figure 2020045269
Legacyが従来手法における見積もり時間を示し、Proposalが本実施形態の他の例に係るシステムにおける見積もり時間である。10Mのファイルを100個、北米のデータセンターと日本国内とでやり取りした場合がHybridであり、同ファイル数を同一LAN配下で実行した場合がPublicである。Issue−finishが実際の処理時間である。従来手法が最悪ケースで13秒かかっているのに対し、本実施形態の他の例に係るシステムにおいては、260msecで完了する見込みとなる。処理時間のほとんどは1−dのデータ転送にかかっており、仮にデータ転送がないとすると、従来手法は130msecとOpenCL Kernel Image転送がない分だけ有利となる。しかし、現実にはデータ転送が存在するため、本実施形態の他の例に係るシステムの方が多くの場合に有利と考えられる。
以下、本実施形態の他の例に係るシステムの実験例を示す。
実情ではクラウド内では高性能GPUが用いられ、エッジでは一般的なプロセッサーが使われると考えられる。そこで、以下の環境にて実験した。
Microsoft Azure
クラウド内GPGPU:nVidia Tesla K80(5.61Tflops)
エッジプロセッサー:Intel Skylake 530(0.44Tflops)
表2には、データサイズ×転送速度における(従来手法の処理時間)/(本実施形態の他の例に係るシステムの処理時間)の比較(ただし、見積もり)を示す。
Figure 2020045269
10Mのファイル×100を3.5Gbpsの帯域環境で処理したところ、従来手法における場合の処理では30.49秒かかり、本実施形態の他の例に係るシステムにおける処理では3.56秒かかった。すなわち、本実施形態の他の例に係るシステムにおいては従来手法より8.56倍、高速化した。これは、理論値の9.27倍には届かなかったが十分な高速化である。
なお、OpenCL自体にはデータアクセスの手法が存在せず、ホストアプリケーションが読み取ったデータを共有メモリにて引き渡し処理をするため、本実施形態の他の例に係るシステムを用いる場合、ホストアプリケーションをプログラムごとに改編することが好ましい。上記実験ではホストアプリケーションをデータごとに組み替えて対応した。
また、GPUのメモリ空間を拡張するためにPage Fault時に仮想メモリを読み込む技術が存在し、係る技術はGPUメモリを拡張している。ここで、本実施形態の他の例に係るシステムにおいては読み込み先に処理を振り分けているので、係る技術と共存可能と考えられる。
また、OpenMCCAというNVDIMM等のHeterogeneous Memoryを仮想メモリ空間にマップして統一的にアクセスを可能にする技術が存在する。本実施形態の他の例に係るシステムにおいては単一のメモリ空間を用いず、既存のストレージの名前空間上で、実際にファイルが存在するデバイス名を取得し、そこに処理を転送するものであり、スケールアップ型のOpenMCCAに対し、本実施形態の他の例に係るシステムにおいてはスケールアウト型と考えられる。
以上、本発明の実施の形態を説明したが、上記に記載した実施の形態は特許請求の範囲に係る発明を限定するものではない。また、実施の形態の中で説明した特徴の組合せの全てが発明の課題を解決するための手段に必須であるとは限らない点に留意すべきである。更に、上記した実施形態の技術的要素は、単独で適用されてもよいし、プログラム部品とハードウエア部品とのような複数の部分に分割されて適用されるようにすることもできる。
1 システム
2 プロキシ側システム
3 スタブ側システム
4 Public PaaS
5 デバイス
10 キュー
12 Ceph(セフ)
14 専用バス
16 nVidia GPU
20 SSD Controller
30 NVMe
50 制御部
100 API
200 ソース取得部
202 演算ロジック特定部
204 デバイス管理部
206 ストレージ統合管理部
208 演算ロジック供給部
210 対応表作成部
212 対応関係決定部
214 実行用コンテキスト作成部
216 送信処理部
300 受信処理部
302 メモリ管理部
304 実行イメージ取得部
306 演算ロジック実行部
308 結果格納実行部
310 URI管理部
312 ストレージ機能管理部
400 オブジェクトストレージ
410 GPGPU SaaS
500 プロセッサー
600 ユーザーアプリケーション
610 プロセッサー対応表
620 対応関係

Claims (13)

  1. オブジェクトストレージに格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイスの少なくとも1つに前記演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムであって、
    前記ソースコードを取得するソース取得部と、
    所定のAPI(Application Programming Interface)を用い、前記演算ロジックを前記ソースコード中から特定する演算ロジック特定部と、
    前記ソースコードに基づいて指定されるプロセッサーのコンパイラに前記演算ロジックを供給する演算ロジック供給部と、
    前記オブジェクトストレージが、前記指定されるプロセッサーの前記コンパイラによってコンパイルされた結果を実行イメージとして格納し、前記オブジェクトストレージに格納されている前記指定されるプロセッサーにおける前記実行イメージへのパスと、前記指定されるプロセッサーとを対応付けたプロセッサー対応表を作成して前記オブジェクトストレージに格納する対応表作成部と、
    前記演算ロジック供給部が供給した前記演算ロジックと、前記オブジェクトストレージに格納されている前記プロセッサー対応表の保存パスとを対応付けた対応関係を前記オブジェクトストレージに格納する対応関係決定部と
    を備えるシステム。
  2. 前記ソースコードに基づいて指定されるプロセッサーが、前記システムにおいて用いることができる使用可能プロセッサーであるか否かを確認するデバイス管理部、
    を更に備え、
    前記演算ロジック供給部が、前記デバイス管理部が前記使用可能プロセッサーの存在を確認した場合、前記演算ロジックを前記使用可能プロセッサーに供給する請求項1に記載のシステム。
  3. 特定した前記演算ロジックから所定のデータを除く他のデータへのアクセスが存在するか否かを確認するストレージ統合管理部
    を更に備え、
    前記デバイス管理部が、前記ストレージ統合管理部において前記アクセスが存在しないと判断した場合に、前記ソースコードに基づいて指定されるプロセッサーが、前記システムにおいて用いることができる使用可能プロセッサーであるか否かを確認する請求項1又は2に記載のシステム。
  4. 前記ソースコードに基づいて複数のプロセッサーが指定され、
    前記演算ロジック供給部が、複数の前記指定されたプロセッサーのコンパイラのそれぞれに前記演算ロジックを供給する請求項1〜3のいずれか1項に記載のシステム。
  5. 前記システムが、制御部
    を更に備え、
    前記オブジェクトストレージが、前記所定のデータのデータ位置に基づいて前記所定のデータを格納し、
    前記システムが、前記所定のデータへアクセスするポインタとして、所定のスキームと所定の区切りの後に前記スキーム毎に定義された書式によるリソースとが対応付けられているUniform Resource Identifier(URI)を前記データ位置の代わりに用い、
    前記制御部が、前記URIに対応付けられている前記スキームが指定するアプリケーションを制御して起動させ、前記URIの前記リソースを前記アプリケーションに渡し、
    前記アプリケーションが、前記リソースに基づいて前記URIを前記データ位置として用い、前記URIで指定されて前記オブジェクトストレージに格納されるデータを制御する請求項1〜4のいずれか1項に記載のシステム。
  6. 前記オブジェクトストレージが、前記異種混在の複数のデバイスに関するデバイス情報を格納し、
    前記ユーザーアプリケーションが、前記ユーザーアプリケーションの実行が開始された場合、前記ユーザーアプリケーションの前記演算ロジックがアクセスするデータを指定し、かつ、前記演算ロジックが実行されるデバイスを指定し、
    前記指定されたデータに基づいて、前記演算ロジックにおいて実行される実行用コンテキストを作成する実行用コンテキスト作成部
    を更に備え、
    前記デバイス管理部が、前記ユーザーアプリケーションが指定した前記デバイスに関する前記デバイス情報を前記オブジェクトストレージから取得してデータ処理が実行される対象プロセッサーを特定し、
    前記実行用コンテキスト作成部が、前記プロセッサー対応表及び前記対応関係を参照し、前記演算ロジックに対応付けられた前記プロセッサー対応表における前記対象プロセッサーに対応付けられている前記実行イメージへの前記パスを前記実行用コンテキストに書き込む請求項1〜5のいずれか1項に記載のシステム。
  7. 前記ユーザーアプリケーションが前記演算ロジックの実行を指示した場合、前記パスが書き込まれた前記実行用コンテキストを外部に供給するためにストレージキューに書き込む送信処理部
    を更に備える請求項6に記載のシステム。
  8. 前記送信処理部から前記パスが書き込まれた前記実行用コンテキストを受信し、当該実行用コンテキストを解読する受信処理部と、
    解読された実行用コンテキスト内の前記デバイス情報に基づいて、前記演算ロジックが実行される実行環境を準備するメモリ管理部と、
    解読された実行用コンテキスト内の前記実行イメージへの前記パスに基づいて、前記オブジェクトストレージから前記実行イメージを取得する実行イメージ取得部と、
    解読された実行用コンテキスト内で指定される前記データを引数として設定し、前記実行環境において前記実行イメージを用いて前記演算ロジックを実行する演算ロジック実行部と
    を更に備える請求項7に記載のシステム。
  9. 前記演算ロジック実行部において前記演算ロジックが実行された結果を前記オブジェクトストレージに格納する結果格納実行部
    を更に有する請求項8に記載のシステム。
  10. 前記演算ロジックが、分散処理に用いられる請求項1〜9のいずれか1項に記載のシステム。
  11. オブジェクトストレージに格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイスの少なくとも1つに前記演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムであって、
    前記演算ロジックをソースコードのまま保持し、
    前記複数のデバイスのプロセッサーのそれぞれにおいて、前記複数のデバイス用に前記演算ロジックをコンパイルすることで実行イメージを作成し、
    前記実行イメージを前記オブジェクトストレージに格納し、
    前記演算ロジックが前記複数のデバイスのうちの一のデバイスに呼び出された場合、前記一のデバイス用に作成された前記実行イメージを前記オブジェクトストレージから前記一のデバイスに供給するシステム。
  12. オブジェクトストレージに格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイスの少なくとも1つに前記演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステムにおける情報処理方法であって、
    前記ソースコードを取得するソース取得段階と、
    所定のAPI(Application Programming Interface)を用い、前記演算ロジックを前記ソースコード中から特定する演算ロジック特定段階と、
    前記ソースコードに基づいて指定されるプロセッサーのコンパイラに前記演算ロジックを供給する演算ロジック供給段階と、
    前記オブジェクトストレージが、前記指定されるプロセッサーの前記コンパイラによってコンパイルされた結果を実行イメージとして格納し、前記オブジェクトストレージに格納されている前記指定されるプロセッサーにおける前記実行イメージへのパスと、前記指定されるプロセッサーとを対応付けたプロセッサー対応表を作成して前記オブジェクトストレージに格納する対応表作成段階と、
    前記演算ロジック供給段階において供給された前記演算ロジックと、前記オブジェクトストレージに格納されている前記プロセッサー対応表の保存パスとを対応付けた対応関係を前記オブジェクトストレージに格納する対応関係決定段階と
    を備える情報処理方法。
  13. オブジェクトストレージに格納され、予め定められた演算ロジックをソースコード中に有するユーザーアプリケーションを備え、異種混在の複数のデバイスの少なくとも1つに前記演算ロジックを実行させて所定のデータに所定の処理を施すことを可能にするシステム用のプログラムであって、
    コンピューターに、
    前記ソースコードを取得するソース取得機能と、
    所定のAPI(Application Programming Interface)を用い、前記演算ロジックを前記ソースコード中から特定する演算ロジック特定機能と、
    前記ソースコードに基づいて指定されるプロセッサーのコンパイラに前記演算ロジックを供給する演算ロジック供給機能と、
    前記オブジェクトストレージが、前記指定されるプロセッサーの前記コンパイラによってコンパイルされた結果を実行イメージとして格納し、前記オブジェクトストレージに格納されている前記指定されるプロセッサーにおける前記実行イメージへのパスと、前記指定されるプロセッサーとを対応付けたプロセッサー対応表を作成して前記オブジェクトストレージに格納する対応表作成機能と、
    前記演算ロジック供給機能において供給された前記演算ロジックと、前記オブジェクトストレージに格納されている前記プロセッサー対応表の保存パスとを対応付けた対応関係を前記オブジェクトストレージに格納する対応関係決定機能と
    を実現させるプログラム。
JP2020539410A 2018-08-28 2019-08-23 システム、情報処理方法、及びプログラム Pending JPWO2020045269A1 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2018159325 2018-08-28
JP2018159325 2018-08-28
JP2019024419 2019-02-14
JP2019024419 2019-02-14
PCT/JP2019/032996 WO2020045269A1 (ja) 2018-08-28 2019-08-23 システム、情報処理方法、及びプログラム

Publications (1)

Publication Number Publication Date
JPWO2020045269A1 true JPWO2020045269A1 (ja) 2021-08-10

Family

ID=69644192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020539410A Pending JPWO2020045269A1 (ja) 2018-08-28 2019-08-23 システム、情報処理方法、及びプログラム

Country Status (4)

Country Link
US (1) US11379202B2 (ja)
JP (1) JPWO2020045269A1 (ja)
TW (1) TWI796515B (ja)
WO (1) WO2020045269A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI758778B (zh) * 2020-07-10 2022-03-21 鴻海精密工業股份有限公司 資料讀/寫處理方法、裝置及電腦可讀存儲介質

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122871A (ja) * 1998-10-14 2000-04-28 Hitachi Ltd アプリケーション配布方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002297556A (ja) * 2001-03-29 2002-10-11 Fujitsu Ltd マルチプロセッサシステム,マルチプロセッサ制御方法,マルチプロセッサ制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
KR100518584B1 (ko) * 2003-07-12 2005-10-04 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
JP5434529B2 (ja) * 2009-11-30 2014-03-05 富士通株式会社 イメージファイル管理装置、イメージファイル管理プログラム、イメージファイル配信方法、情報処理装置及び展開プログラム
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US9015663B2 (en) * 2010-03-15 2015-04-21 Nec Corporation Information processing device, information processing method, and information processing program
TWI444824B (zh) * 2011-10-18 2014-07-11 Ind Tech Res Inst 虛擬機器記憶體的鑑識方法與電腦系統
JP2016162266A (ja) * 2015-03-03 2016-09-05 富士通株式会社 通信装置及びそのプロセッサ割当方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122871A (ja) * 1998-10-14 2000-04-28 Hitachi Ltd アプリケーション配布方法

Also Published As

Publication number Publication date
TWI796515B (zh) 2023-03-21
US11379202B2 (en) 2022-07-05
US20210326123A1 (en) 2021-10-21
TW202026862A (zh) 2020-07-16
WO2020045269A1 (ja) 2020-03-05

Similar Documents

Publication Publication Date Title
EP3762826B1 (en) Live migration of virtual machines in distributed computing systems
JP5276218B2 (ja) リアルタイムでlunをファイルに、またはファイルをlunに変換すること
KR101697937B1 (ko) 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
US20080235477A1 (en) Coherent data mover
US11169930B2 (en) Fine grain data migration to or from borrowed memory
US20200050385A1 (en) Virtualizing Isolation Areas of Solid-State Storage Media
EP3230873B1 (en) Computing method and apparatus with persistent memory
US11954042B2 (en) Distributed computing based on memory as a service
CN111309649B (zh) 一种数据传输和任务处理方法、装置及设备
US10061701B2 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
CN102667714B (zh) 支持访问由操作系统环境外的资源提供的功能的方法和系统
US20180307603A1 (en) Memory hierarchy-aware processing
CN115413338A (zh) 在计算环境中提供加速器与存储装置之间的直接数据访问
US20220365882A1 (en) System and method of controlling cache memory residency
US11657002B2 (en) Memory management unit (MMU) for accessing borrowed memory
JPWO2020045269A1 (ja) システム、情報処理方法、及びプログラム
US20150100772A1 (en) Reconfigurable processor and method of operating the same
US20140130027A1 (en) Data placement for execution of an executable
Oden et al. Implementation and Evaluation of CUDA-Unified Memory in Numba
US20240201876A1 (en) Method and apparatus for managing memory
US12019894B2 (en) Systems and methods for managing coresident data for containers
KR102338729B1 (ko) 이종클러스터 시스템에서 실행되는 프로그램을 실행시키는 방법 및 컴퓨터 프로그램
JP7378823B2 (ja) システム、データ処理方法、及びプログラム
US20220206852A1 (en) Lockless handling of buffers for remote direct memory access (rdma) i/o operations
US20230205532A1 (en) Offloading computation based on extended instruction set architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230810

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240216