JP7358005B2 - クラウド・サービスのためのネイティブ・コード生成 - Google Patents

クラウド・サービスのためのネイティブ・コード生成 Download PDF

Info

Publication number
JP7358005B2
JP7358005B2 JP2021544634A JP2021544634A JP7358005B2 JP 7358005 B2 JP7358005 B2 JP 7358005B2 JP 2021544634 A JP2021544634 A JP 2021544634A JP 2021544634 A JP2021544634 A JP 2021544634A JP 7358005 B2 JP7358005 B2 JP 7358005B2
Authority
JP
Japan
Prior art keywords
user
cloud service
computer
model specification
service
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.)
Active
Application number
JP2021544634A
Other languages
English (en)
Other versions
JP2022521887A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022521887A publication Critical patent/JP2022521887A/ja
Application granted granted Critical
Publication of JP7358005B2 publication Critical patent/JP7358005B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B5/00ICT specially adapted for modelling or simulations in systems biology, e.g. gene-regulatory networks, protein interaction networks or metabolic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Genetics & Genomics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、モデル仕様に関連する計算タスクを実行するためのクラウド・サービスを提供するコンピュータ実施方法に関する。
本発明は、さらに、対応するコンピューティング・システムおよび対応するコンピュータ・プログラム製品に関する。
多くのソフトウェア・アプリケーションは、実行され、シミュレートされ、または分析される必要があるモデル仕様(model specification)に依拠している。モデル仕様は、一般的に人間が読めるテキスト・ファイルに書かれ、モデルを実行するソフトウェア・アプリケーションのコードから分離されている。現況のソフトウェアは、仕様をロードし、それをコンパイルして、ソフトウェアが使用できる効率的なデータ構造にする。これらのデータ構造は、モデルの所望の挙動を実行するように解釈される。データ構造のこのような解釈ステップが、そのようなアプリケーションの高い性能を達成する障害である場合がある。
第1の態様によれば、本発明は、モデル仕様の計算タスクを実行するためのクラウド・サービスを提供するコンピュータ実施方法として具現化される。方法は、クラウド・サービスによって、モデル仕様およびモデル仕様についての入力データをユーザから受信することを含む。方法は、クラウド・サービスによって、モデル仕様からネイティブ・コードを生成することと、クラウド・サービスによって、入力データを用いて、ネイティブ・コードをネイティブ・プロセスとして実行することにより、計算タスクを実行することと、をさらに含む。さらなるステップは、クラウド・サービスによって、計算タスクの結果をユーザに提供することを含む。
本発明の別の態様は、計算タスクを実行するためのクラウド・サービスを提供するコンピューティング・システムに関する。コンピューティング・システムは、プログラム・コードを有する1つまたは複数のメモリと、1つまたは複数のプロセッサと、を含み、1つまたは複数のプロセッサが、プログラム・コードの取得および実行に応答して、クラウド・サービスを実施することと、モデル仕様およびモデル仕様に関連する入力データをユーザから受信することと、モデル仕様からネイティブ・コードを生成することと、入力データを用いて、ネイティブ・コードをネイティブ・プロセスとして実行することにより、計算タスクを実行することと、計算タスクの結果、または言い換えると計算タスクの結果データをユーザに提供することと、を含む動作をコンピューティング・システムに実行させる。
さらに別の態様によれば、計算タスクを実行するためのクラウド・サービスを提供するコンピュータ・プログラム製品が開示される。コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、プログラム命令が、モデル仕様およびモデル仕様に関連する入力データをユーザから受信することと、モデル仕様からネイティブ・コードを生成することと、入力データを用いて、ネイティブ・コードをネイティブ・プロセスとして実行することにより、計算タスクを実行することと、計算タスクの結果をユーザに提供することと、を含む方法をクラウド・サービスに実行させるようにクラウド・サービスのコンピューティング・システムによって実行可能である。
本発明の実施形態について、添付図面を参照して、例示的かつ非限定的な例として以下でより詳細に説明する。
本発明の実施形態による、クラウド・コンピューティング・ノードを示す図である。 本発明の実施形態による、クラウド・コンピューティング環境を示す図である。 本発明の実施形態による、抽象化モデル・レイヤ(abstraction model layer)を示す図である。 本発明の実施形態による、クラウド・サービスを提供するコンピュータ実施方法の概略フロー図である。 本発明の実施形態による、クラウド・サービスを提供するコンピュータ実施方法のより詳細なフロー図である。 本発明の実施形態による、クラウド・サービスを提供するコンピュータ実施方法の別の概略フロー図である。 本発明の実施形態による、実行コンテナの機能モジュールを示す図である。 本発明の実施形態による、クラウド・サービスを提供するコンピュータ実施方法の別の概略フロー図である。
この説明の文脈において、以下の規定、用語、または表現、あるいはそれらの組み合わせが使用され得る。
ネイティブ・コードは、特定のプロセッサ上で稼働するように構成されるプログラミング・コードとして定義され得る。ネイティブ・コードは、ネイティブ・コードが書かれた対象であるプロセッサの特定の命令を使用する。ネイティブ・コードは、ネイティブ・コードが専ら向けて書かれた対象以外のプロセッサまたは処理ユニット上で使用される場合に、概して機能しないことがある。ネイティブ・コードが書かれた対象とは異なるプロセッサ上でネイティブ・コードが稼働するためには、ネイティブ・コードが、エミュレータ・プログラムを通して稼働される必要がある。
コンテナは、インスタンスが他のオブジェクトの集合であるクラス、データ構造、または抽象データ型として定義され得る。言い換えると、それらは、特定のアクセス・ルールに従う体系化された方式でオブジェクトを記憶する。コンテナのサイズは、コンテナに含まれるオブジェクトの数に依存する。様々なコンテナ型の基礎となる実施態様では、サイズおよび複雑性が変化し得る。
クラウド・サービスは、エンドユーザのニーズに合うようにエンドユーザによって高度に構成可能であることが多い。
実施形態によれば、モデル仕様は、クラウド・サービスによって実行されることとなる、計算タスクの仕様として概して定義され得る。例として、電子回路のモデル/記述は、モデル記述として提供され得る。または、ディープ・ラーニング・サービスの場合、モデル仕様、訓練データ、および評価データは、ユーザによって供給され得る。実施形態によれば、モデル仕様の一般構造は、モデル仕様に関連する計算タスクの実行を容易にするために、一般的には既知であり、または少なくともクラウド・サービスには既知である。実施形態によれば、モデル仕様は、遺伝子制御ネットワーク(gene regulatory network)であってもよい。
実施形態は、モデル仕様を、モデルの挙動を実施するネイティブ・コードに変換する、コンピューティング・システムを開示する。これによって、データ構造を介したモデルの間接実行のオーバヘッドが除去される。
さらに、実施形態は、クライアントのモデル仕様がクラウド環境において実行されるためのセキュアかつ安全な実行環境を開示する。セキュアという用語は、特に、クライアントのモデル仕様、入力および出力データのプライバシーを指すものとする。安全という用語は、特に、ネイティブ・コードに変換されているクライアントのモデル仕様が、プロバイダ・アプリケーションおよびシステムの安定性またはセキュリティを妥協することなく、クラウド環境において実行され得ることを意味するものとする。
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書に挙げる教示の実施は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、実施形態は、現在既知の、または後に開発される任意の他の種類のコンピューティング環境と併せて実施されることが可能である。
クラウド・コンピューティングは、最小の管理労力またはサービス・プロバイダとの対話で迅速に供給され、リリースされ得る、構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールへの簡便なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配布のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
特性は、以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サービス・プロバイダとの人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージなどのコンピューティング・ケイパビリティを一方的に供給し得る。
幅広いネットワーク・アクセス:ケイパビリティは、ネットワーク上で利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
リソースの共用:プロバイダのコンピューティング・リソースが、マルチテナント型モデルを使用して複数の消費者にサービスするためにプールされ、異なる物理リソースおよび仮想リソースが要求に従って動的に割り当ておよび再割り当てされる。消費者が、概して、提供されるリソースの正確な場所に対する制御または知識を有しないが、より抽象度の高いレベル(例えば、国、州、またはデータセンタ)において場所を指定することが可能であり得るという点において、位置独立の意味がある。
スピーディな拡張性:ケイパビリティは、場合によっては自動的に、即座にスケール・アウトするようにスピーディかつ弾力的に供給され、即座にスケール・インするようにスピーディに解放され得る。消費者に対しては、供給に利用可能なケイパビリティが、多くの場合無制限であるように見え、いつでも任意の量で購入可能である。
サービスが計測可能であること(Measured service):クラウド・システムは、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)に適したある抽象度レベルにおいて計測ケイパビリティを活用することによって、リソース使用を自動的に制御し、最適化する。リソース使用量は、モニタリングされ、制御され、報告されて、利用サービスのプロバイダおよび消費者の両方に透明性をもたらし得る。サービス・モデルは、以下の通りである。
サービスとしてのソフトウェア(SaaS):消費者に提供されるケイパビリティは、クラウド・インフラ上で稼働中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えば、ウェブ・ベースの電子メール)を通して、様々なクライアント・デバイスからアクセス可能である。消費者は、限定されたユーザ固有アプリケーションの構成設定は例外である可能性があるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション・ケイパビリティですら含む、基礎的なクラウド・インフラを管理または制御しない。
サービスとしてのプラットフォーム(PaaS):消費者に提供されるケイパビリティは、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成したアプリケーションまたは消費者が取得したアプリケーションを、クラウド・インフラ上に配備することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的なクラウド・インフラを管理または制御しないが、配備されたアプリケーション、およびおそらくアプリケーション・ホスティング環境構成に対して制御を行う。
サービスとしてのインフラ(IaaS):消費者に提供されるケイパビリティは、処理、ストレージ、ネットワーク、ならびに消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配備および稼働させることが可能な、他の基本コンピューティング・リソースを供給することである。消費者は、基礎となるクラウド・インフラを管理または制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対して制御を行い、かつおそらく選択ネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の限定的な制御を行う。
配置モデルは、以下の通りである。
プライベート・クラウド:クラウド・インフラは、組織のためだけに動作される。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
コミュニティ・クラウド:クラウド・インフラは、複数の組織によって共有され、共有の関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラは、その組織または第三者によって管理されてもよく、構内または構外に存在し得る。
パブリック・クラウド:クラウド・インフラは、一般公衆または大きな業界団体に利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラは、一意なエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または独自技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって結合された、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成物である。
クラウド・コンピューティング環境は、ステートレス性、低結合、モジュール性、および意味相互運用性を中心としたサービス指向型である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラである。
ここで図1を参照すると、クラウド・コンピューティング・ノードの例の概略が示されている。クラウド・コンピューティング・ノード10は、適当なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される実施形態の使用または機能性の範囲に関するいかなる限定も示唆するように意図されない。それにかかわらず、クラウド・コンピューティング・ノード10は、実施されること、または本明細書で述べる機能性のいずれかを実行すること、あるいはその両方が可能である。
クラウド・コンピューティング・ノード10において、多数の他の汎用または専用コンピューティング・システム環境または構成とともに動作可能なサーバ12が存在する。サーバ12を用いた使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
サーバ12は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的文脈において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。サーバ12は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体内に位置し得る。
図1に示されるように、クラウド・コンピューティング・ノード10内のサーバ12は、汎用コンピューティング・デバイスの形態で示される。サーバ12のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に連結するバス18を含み得るが、これらに限定されない。実施形態によれば、サーバ12は、複数の処理ユニット16、特に、中央処理装置(CPU)、グラフィック処理装置(GPU)、およびフィールド・プログラマブル・ゲート・アレイ(FPGA)を含み得る。
バス18は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
サーバ12は、典型的には多様なコンピュータ・システム可読媒体を含む。このような媒体は、サーバ12によってアクセス可能な任意の利用可能媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。
システム・メモリ28は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32、あるいはその両方などの揮発性メモリの形態で含み得る。サーバ12は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、ストレージ・システム34は、非リムーバブル不揮発性磁気媒体(図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる)からの読み出しおよび書き込みのために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク(例えば、「フロッピー(登録商標)・ディスク」)からの読み出しおよび書き込みのための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読み出しまたは書き込みのための光学ディスク・ドライブが、提供されてもよい。このような事例では、それぞれが、1つまたは複数のデータ媒体インターフェースによってバス18に接続され得る。さらに図示され、後述されるように、メモリ28は、実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ28に記憶され得る。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施を含み得る。プログラム・モジュール42は、概して、本明細書に説明される実施形態の機能または方法論あるいはその両方を実行する。
サーバ12は、また、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14、ユーザがサーバ12と対話することを可能にする1つもしくは複数のデバイス、またはサーバ12が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。このような通信は、入力/出力(I/O)インターフェース22を介して発生し得る。さらに、サーバ12は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはそれらの組み合わせなどの1つまたは複数のネットワークとネットワーク・アダプタ20を介して通信し得る。実施形態によれば、サーバ12は、グラフィック処理装置(GPU)16またはフィールド・プログラマブル・ゲート・アレイ(FPGA)16、あるいはその両方とネットワーク・アダプタ20を介して通信し得る。
図示されるように、ネットワーク・アダプタ20は、サーバ12の他のコンポーネントとバス18を介して通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、サーバ12と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
ここで図2を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されるように、クラウド・コンピューティング環境50は、クラウド消費者によって使用されるローカル・ユーザ・デバイス、例えば、携帯情報端末(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはそれらの組み合わせが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード10を含む。ユーザ・デバイス54A、54B、54C、および54Nは、以下では概してユーザ・デバイス54とも呼ばれ得る。ユーザ・デバイス54は、同一のユーザまたはユーザ・グループに属し得る。同一のユーザまたはユーザ・グループに属するユーザ・デバイス54は、ユーザ・デバイス54のセット55と呼ばれる。ノード10は、互いに通信し得る。それらは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはそれらの組み合わせなどの、1つまたは複数のネットワーク内で物理的または仮想的にグループ化されてもよい(図示せず)。これによって、クラウド・コンピューティング環境50が、インフラ、プラットフォーム、またはソフトウェア、あるいはそれらの組み合わせを、クラウド消費者がローカル・コンピューティング・デバイス上でリソースを維持する必要がないサービスとして提案することが可能となる。図1に示されるコンピューティング・デバイス54A~54Nの種類は、単なる例示であるように意図され、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続あるいはその両方を経て(例えば、ウェブ・ブラウザを用いて)、任意の種類のコンピュータ化デバイスと通信し得ると理解される。
ここで図3を参照すると、クラウド・コンピューティング環境50(図2)によって提供される機能抽象レイヤのセットが示されている。図3に示されるコンポーネント、レイヤ、および機能は、単なる例示であるように意図され、実施形態はそれらに限定されないと、予め理解されるべきである。図示されるように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャ・ベース・サーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想レイヤ70は、仮想エンティティの以下の例、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75が提供され得る、抽象レイヤを提供する。
1つの例では、管理レイヤ80は、後述する機能を提供し得る。リソース供給81は、クラウド・コンピューティング環境内でタスクを実行するために利用される、コンピューティング・リソースおよび他のリソースの動的な調達を提供する。測定および価格設定82は、リソースが、クラウド・コンピューティング環境内で利用され、これらのリソースの消費に対して課金または請求されるときに、コスト追跡を提供する。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、データおよび他のリソースについての保護だけでなく、クラウド消費者およびタスクの本人確認を提供する。ユーザ・ポータル83は、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を提供する。サービス水準合意(SLA)計画および遂行85は、SLAに従って将来の要件が予期されるクラウド・コンピューティング・リソースの事前配置および調達を提供する。
ワークロード・レイヤ90は、クラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育配信93、データ解析処理94、トランザクション処理95、ならびに提供する匿名ストレージ・サービス96を含む。
図4は、実施形態による、クラウド・サービス410を提供するコンピュータ実施方法の概略フロー図400を示す。クラウド・サービス410は、モデル仕様420に関連する計算タスクを実行するように適合される。
ステップ430において、クラウド・サービス410は、モデル仕様420およびモデル仕様420についての入力データ421をユーザUから受信する。
ステップ431において、クラウド・サービス410は、例えば、ジャストインタイムでモデル仕様420からネイティブ・コードを生成およびコンパイルし、ネイティブ・プロセス411を開始する。このネイティブ・コードは、ネイティブ・コードに対する定義済み通信インターフェースを有するコードの(例えば、おそらく事前コンパイルされた)部分を用いて具現化され得る。
ステップ432において、クラウド・サービス410は、入力データ421を用いて、ネイティブ・コードをネイティブ・プロセス411として実行することにより、計算タスクを実行する。
実施形態によれば、計算タスクの実行は、例えば、モデル仕様420のシミュレーションを伴い得る。さらなる実施形態によれば、計算タスクの実行は、追加的または代替的に、モデル仕様420の分析を伴い得る。
次いで、ステップ433において、クラウド・サービス410は、計算タスクの結果422をユーザUに提供する。実施形態によれば、クラウド・サービス410は、計算タスクの完了後、ステップ434においてネイティブ・プロセス411を破壊して、リソースを解放し得る。このステップ434は、ネイティブ・コードをタグ付けすることと、クラウド・サービス410のデータベース/ストレージにネイティブ・コードを記憶することと、を含み得る。そのようなタグ付けおよび記憶は、同一ユーザのさらなるサービス要求についてネイティブ・コードの再使用を容易にする。即ち、関連するタグは、対応するコードがデータベースから容易に取得され得るように生成される。
ネイティブ・プロセスをスポーンすることおよび破壊することは、オペレーティング・システムのコマンドを介してローカルで行われてもよく、OpenStackなどのクラウド管理サービスをリモートで利用してもよい。
実施形態によれば、モデル仕様420は、複数のノードおよびノードの対応する更新関数を含むブーリアン・ネットワークであってもよい。実施形態によれば、モデル仕様420は、遺伝子制御ネットワークであってもよく、入力データ421は、遺伝子制御ネットワークに対する刺激であってもよい。遺伝子(または遺伝学)制御ネットワーク(GRN)は、互いに、およびセル内の他の実体と対話してmRNAおよびタンパク質の遺伝子発現レベルを決定する分子調整器の集合として定義され得る。この対話は、直接または間接であってもよい。言い換えると、「遺伝子制御ネットワーク」は、シグナリング経路、転写因子、およびそれらの標的遺伝子が複雑な生物学的プロセスを編成するためにどのように対話するかを表す配線図と考えられ得る。実施形態は、大規模な遺伝子制御ネットワークのシミュレーションを可能にする。ネットワーク・トポロジは、ネットワーク内の全ての遺伝子ノードの全ての更新関数を含む、ユーザにより提供されるモデル仕様によって定義される。実施形態によるクラウド・サービスは、これらの関数をネイティブ・コードとして実施する。これは、インタプリタ・レベルで動作するクラウド・サービスと比較してシミュレーション性能が大幅に高くなり得ることを容易にする。
実施形態によれば、ユーザUは、ネットワーク内のあらゆるノードについての更新関数のセットを定義する、Javascriptオブジェクト表記法(JSON)フォーマットで遺伝子制御ネットワーク仕様をサブミットし得る。
クラウド・サービス410は、この仕様を受信し、それを、例えば、中央処理装置のためのCプログラミング言語、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)のためのVerilogのネイティブ表現に変換する。
このネイティブ表現は、次いで、コンパイルされ、クラウド・サービス410がネイティブ・アプリケーションのユーザ固有部分と通信するための手段を提供する定義済みネイティブ・アプリケーション・レイヤとリンクされる。
それぞれの計算タスクを実行するためのネイティブ・コードを使用することによって、実施形態によるクラウド・サービスは、最新のプロセッサの特徴の恩恵を受け得る。言い換えると、それによって、それが稼働しているプロセッサによって提供される特徴を最大限に利用することが可能となる。それは、さらに、システムの安定性を危険にさらすことなく、ユーザ固有のタスクを用いてGPUまたはFPGAの使用を可能にし得る。
図5は、実施形態による、クラウド・サービス510を提供するコンピュータ実施方法の、より詳細なフロー図500を示す。クラウド・サービス510は、ユーザUに対するサービス・インターフェース511およびサービス・バックエンド512を含む。
ステップ520において、クラウド・サービス510、より詳細には、クラウド・サービス510のサービス・インターフェース511は、サービス・アクセス要求(SAR)をユーザUから受信する。サービス・アクセス要求SARは、ユーザ公開鍵PKを含む。
ステップ521において、サービス・インターフェース511は、サービス公開鍵PKをユーザUに提供する。サービス公開鍵PKは、クラウド・サービス510の公開鍵である。
ステップ522において、クラウド・サービス510は、ユーザ固有の実行コンテナを起動する。ユーザ固有の実行コンテナは、サービス・バックエンド512によって稼働され、ユーザ公開鍵PKと、サービス公開鍵PKに対応するサービス秘密鍵SKとを含む。ユーザ固有の実行コンテナは、単一のエンドユーザにのみ属する個々のコンテナ・インスタンスである。
ユーザUは、ここでステップ523において、暗号化されたモデル仕様および暗号化された入力データを含むサービス実行要求を、サービス公開鍵で暗号化された状態で、サービス・インターフェース511にサブミットし得る。サービス・インターフェース511は、対応するユーザ公開鍵を含むユーザ固有の実行コンテナにサービス実行要求をルーティングする。
実行コンテナは、次いでステップ524において、暗号化されたモデル仕様および暗号化された入力データを、サービス公開鍵PKに対応するサービス秘密鍵SKを用いて復号し得る。
実行コンテナは、次いでステップ525において、復号されたモデル仕様からネイティブ・コードを生成し、ステップ526において、復号された入力データを用いてネイティブ・コードをネイティブ・プロセスとして実行することにより計算タスクを実行し得る。最後に、実行コンテナは、ステップ527において、ユーザ公開鍵PKを用いて計算タスクの結果を暗号化する。
最後に、クラウド・サービス510は、ステップ528において、暗号化された結果をユーザUに提供する。
より詳細には、実行コンテナは、結果をサービス・インターフェース511に送信し、サービス・インターフェース511は、それをユーザUに転送する。
したがって、そのような具現化されたシステムでは、ユーザ固有の実行コンテナは、暗号化されたモデル仕様および入力データを復号することが可能な唯一のプロセスである。さらに、実行コンテナへの全ての通信、および実行コンテナからの全ての通信は暗号化され、各ユーザのモデル仕様および入力データは、クリアテキストであるときには別々のコンテナで稼働している。
実施形態によれば、計算タスクを実行するアプリケーションは、クラウド上でサービスとしてのソフトウェア(SaaS)としてホストされる。暗号化された実行コンテナを提供することによって、モデル仕様ならびに入力および出力データは、送信および実行中のいかなる無認可アクセスからもセキュリティ保護され得る。そのようなモデル仕様の設計は、長期にわたるプロセスであることがあり、したがって、それぞれの計算タスクの実行のためにクラウド・サービスを用いてクライアントの重要な資産を確立し得るため、これは、特に重要なものである。
図6は、実施形態による、クラウド・サービスを提供するコンピュータ実施方法の別の概略フロー図600を示す。特に、フロー図600は、2つの異なるユーザUおよびUに対してセキュアな実行環境を提供するためのコンテナ技術の使用を示している。
ステップ601において、第1のユーザUは、サービス・アクセス要求をクラウド・サービスのサービス・インターフェース611に送信する。第1のユーザUは、公開鍵をサービス・インターフェース611と交換する。より詳細には、それは、ユーザ公開鍵PKを送信し、サービス公開鍵PKを受信する。
ステップ602において、サービス・インターフェース611は、第1のユーザUのための実行コンテナ621の起動を開始する。これは、ユーザ公開鍵PKのコンテナ621への投入を含む。
次いで、後続ステップ603において、第1のユーザUは、暗号化されたモデル仕様ならびに関連データ、特に入力データおよび結果データを、実行コンテナ621とセキュアな方式で交換し得る。
並行して(参照631によって示される)、第2のユーザUは、ステップ604においてサービス・アクセス要求をクラウド・サービスのサービス・インターフェース611に送信し得る。ステップ604の間に実行されるレジストレーションは、サービス・インターフェース611との公開鍵の交換を含む。より詳細には、第2のユーザUは、ユーザ公開鍵PKをサービス・インターフェース611に送信し、サービス公開鍵PKを受信する。
ステップ605において、サービス・インターフェース611は、第2のユーザUのための実行コンテナ622の起動を開始する。これは、ユーザ公開鍵PKのコンテナ622への投入を含む。
次いで、後続ステップ606において、第2のユーザUは、暗号化されたモデル仕様ならびに関連データ、特に入力データおよび結果データを、実行コンテナ622とセキュアな方式で交換し得る。
実施形態によれば、複数の実行コンテナが、性能ニーズを満たすためにユーザ毎に起動され得ることに留意すべきである。
図7は、実施形態による、実行コンテナ700の機能モジュールを示す。実行コンテナ700は、モデル仕様からネイティブ・コードをコンパイルするように構成されるコンパイル・モジュール710を含む。コンパイル・モジュール710は、特に、クラウド・サービスの全ての実行コンテナについて使用され得る静的コンパイル・コード711を含み得る。即ち、静的コンパイル・コード711は、全ての実行コンテナに対して同一であってもよく、したがって、この語句は、「静的」という用語を使用する。
実行コンテナ700は、クラウド・サービスのサービス・インターフェース、例えば、図5のサービス・インターフェース511と通信するように構成される通信(comm.)モジュール720をさらに含む。通信モジュール720は、特に、クラウド・サービスの全ての実行コンテナについて使用され得る静的通信コード721を含み得る。通信モジュール720は、特に、メッセージ・キュー・システムと通信するためのコードを含む。
実行コンテナ700は、ネイティブ・コード731を実行するように構成される動的実行モジュール730をさらに含む。ネイティブ・コード731は、受信したモデル仕様からジャストインタイムで生成され、したがって実行コンテナ700毎に異なり得る。動的実行モジュール730は、ネイティブ・コード・モジュールとしても示されてもよく、ユーザが新たなモデル仕様をクラウド・サービスにサブミットするたびに生成される。
実行コンテナ700は、静的実行コード741を実行するように構成される静的実行モジュール740をさらに含む。静的実行コードは、クラウド・サービスの全ての実行コンテナについて使用され得る。即ち、静的実行コード741は、静的実行モジュール740のコードを参照し、静的実行モジュール740は、動的実行モジュール730の実行を制御するマスタ・プロセスである。
より具体的には、静的実行モジュール740は、プロセス間通信メカニズムを介して動的実行モジュール730と対話してもよく、動的実行モジュールを開始し、終了させてもよい。動的実行モジュール730は、静的実行モジュール740によって別個のプロセスとして開始されてもよく、通信を可能にするための少数の追加静的ルーチンを含んでもよい。
さらに、実行コンテナ700は、ユーザ公開鍵PKおよびサービス秘密鍵SKを含む。実施形態によれば、コンパイル・モジュール710によって生成されるネイティブ・コードは、それぞれのクラウド・サービスの中央処理装置CPUに対して、例えば、図1に示されるサーバ10の処理ユニット16に対して専ら向けてコンパイルされるネイティブ・コードである。実施形態によれば、コンパイル・モジュール710によって生成されるネイティブ・コード711は、それぞれのクラウド・サービスのグラフィック処理装置(GPU)に対して専ら向けてコンパイルされるネイティブ・コードである。実施形態によれば、コンパイル・モジュール710によって生成されるネイティブ・コードは、それぞれのクラウド・サービスのフィールド・プログラマブル・ゲート・アレイ(FPGA)に対して専ら向けてコンパイルされるネイティブ・コードである。
実施形態によれば、クラウド・プロバイダからのアクセスに対して保護するために、アプリケーション・プロバイダは、命令拡張を使用して、モデル仕様および対応するクリアテキスト入力/出力データのコードがアクセスされることから保護し得る。これは、モデル仕様ならびに入力および出力データを機密データとして宣言することによって実現されてもよく、これらのメモリ位置に対して信頼性のあるコード・アクセスのみを許容してもよい。モデル仕様およびデータは、この領域に入り、この領域を暗号化されたままの状態にして、より高いレベルのセキュリティを提供し得る。
図8は、実施形態による、クラウド・サービスを提供するコンピュータ実施方法の別の概略フロー図800を示す。
ステップ801において、ユーザUは、サービス・アクセス要求をクラウド・サービスのサービス・インターフェース811に送信する。サービス・インターフェース811は、例えば、FPGAのユーザ・インターフェースであってもよい。対応する公開鍵(ユーザ公開鍵PKおよびサービス公開鍵PK)の交換後、サービス・インターフェース811は、ユーザ鍵を認証し、肯定的な結果の場合、ユーザ・アクセスを認可する。ステップ802において、所与の鍵を有する新たなコンテナの要求があり、クラウド・オペレーティング・システムのアプリケーション・プログラミング・インターフェース(API)812による新たな実行コンテナの発行がある。このようなクラウド・オペレーティング・システムは、データセンタ全体を通しての計算、ストレージおよびネットワーキングのリソースの大規模プールを制御し得る。API812は、例えば、OpenStackオペレーティング・システムのAPIであってもよい。クラウド・オペレーティング・システムは、次いでステップ803において、ユーザUのための実行コンテナ821を起動する。さらに、クラウド・オペレーティング・システムは、ステップ804において、サービス・インターフェース811に対応する状態を起動する。サービス・インターフェース811と実行コンテナとの間の通信は、メッセージ・キュー(MQ)を介して実行され得る。実施形態によれば、メッセージ・キューイング・システムRabbitMQが、使用されてもよい。新たな受信キューは、実行コンテナが起動される前に、MQシステム上で生成される。実行コンテナを起動するとき、実行コンテナは、スタートアップ・パラメータを介してこの特定のキューをリッスンするように構成される。全ての実行コンテナ・インスタンスの出力は、サービス・ロジックによって読み出されさらに処理され、例えばデータベース内で可視化または記憶あるいはその両方が行われる同一キューに送信される。したがって、ユーザUが新たなユーザである場合、サービス・インターフェース811は、ステップ805において、メッセージ・キューを追加する。実施形態によれば、複数のコンテナが、性能ニーズを満たすためにユーザ毎に起動され得る。図8の例によれば、ユーザUのための別の実行コンテナ821が提供される。さらに、図8は、別のユーザUのための別の実行コンテナ822を示す。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサ/処理ユニット、例えばサーバ12の処理ユニット16の1つまたは複数に本発明の態様を実行させるコンピュータ可読プログラム命令をその上に有する、コンピュータ可読記憶媒体(または複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持および記憶し得る有形デバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、またはエッジサーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を生成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方式で機能するように指示し得るものであってもよい。
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されるプロセスを作り出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実施のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
本発明の多様な実施形態の説明は、例示の目的で提示されているが、網羅的であるように、または開示される実施形態に限定されるように意図されない。多くの変更および変形が、説明される実施形態の範囲から逸脱することなく当業者に明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実際の用途、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書に開示される実施形態を他の当業者が理解可能にするために、選択された。

Claims (21)

  1. モデル仕様の計算タスクを実行するためのクラウド・サービスを提供するコンピュータ実施方法であって、
    前記クラウド・サービスによって、前記モデル仕様および前記モデル仕様についての入力データをユーザから受信することと、
    前記クラウド・サービスによって、前記モデル仕様からネイティブ・コードを生成することと、
    前記クラウド・サービスによって、前記入力データを用いて、前記ネイティブ・コードをネイティブ・プロセスとして実行することにより、前記計算タスクを実行することと、
    前記クラウド・サービスによって、前記計算タスクの結果を前記ユーザに提供することと、
    を含む、コンピュータ実施方法。
  2. 前記計算タスクの前記実行が、前記モデル仕様のシミュレーション、前記モデル仕様の分析、または前記モデル仕様の前記シミュレーションおよび前記モデル仕様の前記分析の両方を含む、請求項1に記載のコンピュータ実施方法。
  3. 前記方法が、
    前記計算タスクの完了後に前記ネイティブ・プロセスを破壊することと、
    前記ネイティブ・コードにタグ付けすることと、
    前記ネイティブ・コードを前記クラウド・サービスのデータベースに記憶することと、
    を含む、請求項1または2に記載のコンピュータ実施方法。
  4. 前記モデル仕様が、複数のノードおよび前記ノードの更新関数を含むブーリアン・ネットワークを含む、請求項1~3のいずれか1項に記載のコンピュータ実施方法。
  5. 前記モデル仕様が、遺伝子制御ネットワークを含み、
    前記入力データが、前記遺伝子制御ネットワークに対する刺激を含む、
    請求項4に記載のコンピュータ実施方法。
  6. 前記方法が、
    前記クラウド・サービスの複数のユーザのためのユーザ固有の実行コンテナを提供することと、
    前記ユーザ固有の実行コンテナによって、対応するモデル仕様から対応するネイティブ・コードを生成することと、
    前記ユーザ固有の実行コンテナによって、対応する前記入力データを用いて、前記対応するネイティブ・コードをネイティブ・プロセスとして実行することにより、対応する計算タスクを実行することと、
    前記ユーザ固有の実行コンテナへの全ての通信および前記ユーザ固有の実行コンテナからの全ての通信を暗号化することと、
    を含む、請求項1~5のいずれか1項に記載のコンピュータ実施方法。
  7. 前記方法が、
    前記クラウド・サービスによって、サービス・アクセス要求をユーザから受信することであって、前記サービス・アクセス要求がユーザ公開鍵を含む、前記受信することと、
    前記クラウド・サービスによって、前記クラウド・サービスのサービス公開鍵を前記ユーザに提供することと、
    前記クラウド・サービスによって、前記ユーザ公開鍵を含むユーザ固有の実行コンテナを起動することと、
    を含む、請求項1~5のいずれか1項に記載のコンピュータ実施方法。
  8. 前記方法が、
    前記クラウド・サービスによって、暗号化されたモデル仕様および暗号化された入力データを前記ユーザから受信することであって、前記暗号化されたモデル仕様および前記暗号化された入力データが、前記サービス公開鍵で暗号化されている、前記受信することと、
    前記クラウド・サービスによって、前記暗号化されたモデル仕様および前記暗号化された入力データを、前記ユーザ公開鍵を含む前記ユーザ固有の実行コンテナへルーティングすることと、
    前記ユーザ固有の実行コンテナによって、前記暗号化されたモデル仕様および前記暗号化された入力データを、前記サービス公開鍵に対応するサービス秘密鍵を用いて復号することと、
    前記ユーザ固有の実行コンテナによって、復号された前記モデル仕様からネイティブ・コードを生成することと、
    前記ユーザ固有の実行コンテナによって、復号された前記入力データを用いて、前記ネイティブ・コードをネイティブ・プロセスとして実行することにより、前記計算タスクを実行することと、
    前記ユーザ固有の実行コンテナによって、前記ユーザ公開鍵を用いて前記計算タスクの結果を暗号化して暗号化された結果にすることと、
    前記クラウド・サービスによって、前記計算タスクの前記暗号化された結果を前記ユーザに提供することと、
    を含む、請求項7に記載のコンピュータ実施方法。
  9. 方法が、
    前記クラウド・サービスによって、前記計算タスクを実行するための実行コンテナを提供することを含み、前記実行コンテナが、
    前記モデル仕様からネイティブ・コードをコンパイルするように構成されるコンパイル・モジュールと、
    前記クラウド・サービスのサービス・インターフェースと通信するように構成される通信モジュールと、
    前記ネイティブ・コードを実行するように構成される動的実行モジュールと、
    静的実行コードを実行するように構成される静的実行モジュールと、
    を含む、請求項1~5のいずれか1項に記載のコンピュータ実施方法。
  10. 前記コンパイル・モジュール、前記通信モジュール、および前記静的実行モジュールが、静的コードを含み、
    前記クラウド・サービスの複数の実行コンテナが、同一の前記静的コードを含む、請求項9に記載のコンピュータ実施方法。
  11. 前記実行コンテナが、
    ユーザ公開鍵と、
    サービス秘密鍵と、をさらに含む、請求項9に記載のコンピュータ実施方法。
  12. 前記ネイティブ・コードが、中央処理装置のためのネイティブ・コードである、請求項1~11のいずれか1項に記載のコンピュータ実施方法。
  13. 前記ネイティブ・コードが、汎用処理装置のためのネイティブ・コードである、請求項1~11のいずれか1項に記載のコンピュータ実施方法。
  14. 前記ネイティブ・コードが、フィールド・プログラマブル・ゲート・アレイのためのネイティブ・コードである、請求項1~11のいずれか1項に記載のコンピュータ実施方法。
  15. 計算タスクを実行するためのクラウド・サービスを提供するコンピューティング・システムであって、前記コンピューティング・システムが、プログラム・コードを有する1つまたは複数のメモリと、1つまたは複数のプロセッサと、を備え、前記1つまたは複数のプロセッサが、前記プログラム・コードの取得および実行に応答して、
    前記クラウド・サービスを実施することと、
    前記クラウド・サービスによって、モデル仕様および前記モデル仕様に関連する入力データをユーザから受信することと、
    前記クラウド・サービスによって、前記モデル仕様からネイティブ・コードを生成することと、
    前記クラウド・サービスによって、前記入力データを用いて、前記ネイティブ・コードをネイティブ・プロセスとして実行することにより、前記計算タスクを実行することと、
    前記クラウド・サービスによって、前記計算タスクの結果を前記ユーザに提供することと、
    を含む動作を前記コンピューティング・システムに実行させる、コンピューティング・システム。
  16. 前記1つまたは複数のプロセッサが、前記プログラム・コードの取得および実行に応答して、
    前記計算タスクの完了後に前記ネイティブ・プロセスを破壊することと、
    前記ネイティブ・コードにタグ付けすることと、
    前記ネイティブ・コードを前記クラウド・サービスのデータベースに記憶することと、
    を含む動作を前記コンピューティング・システムに実行させる、請求項15に記載のコンピューティング・システム。
  17. 前記1つまたは複数のプロセッサが、前記プログラム・コードの取得および実行に応答して、
    前記クラウド・サービスの複数のユーザのためのユーザ固有の実行コンテナを提供することと、
    前記ユーザ固有の実行コンテナによって、対応するモデル仕様から対応するネイティブ・コードを生成することと、
    前記ユーザ固有の実行コンテナによって、対応する前記入力データを用いて、前記対応するネイティブ・コードをネイティブ・プロセスとして実行することにより、対応する計算タスクを実行することと、
    前記ユーザ固有の実行コンテナへの全ての通信および前記ユーザ固有の実行コンテナからの全ての通信を暗号化することと、
    を含む動作を前記コンピューティング・システムに実行させる、請求項15または16に記載のコンピューティング・システム。
  18. 前記1つまたは複数のプロセッサが、前記プログラム・コードの取得および実行に応答して、
    前記クラウド・サービスによって、サービス・アクセス要求をユーザから受信することであって、前記サービス・アクセス要求がユーザ公開鍵を含む、前記受信することと、
    前記クラウド・サービスによって、前記クラウド・サービスのサービス公開鍵を前記ユーザに提供することと、
    前記クラウド・サービスによって、前記ユーザ公開鍵を含むユーザ固有の実行コンテナを起動することと、
    を含む動作を前記コンピューティング・システムに実行させる、請求項15または16に記載のコンピューティング・システム。
  19. 前記1つまたは複数のプロセッサが、前記プログラム・コードの取得および実行に応答して、
    前記クラウド・サービスによって、前記計算タスクを実行するための実行コンテナを提供することを含む動作を前記コンピューティング・システムに実行させ、前記実行コンテナが、
    前記モデル仕様からネイティブ・コードをコンパイルするように構成されるコンパイル・モジュールと、
    前記クラウド・サービスのサービス・インターフェースと通信するように構成される通信モジュールと、
    前記ネイティブ・コードを実行するように構成される動的実行モジュールと、
    静的実行コードを実行するように構成される静的実行モジュールと、
    を含む、請求項15または16に記載のコンピューティング・システム。
  20. 計算タスクを実行するためのクラウド・サービスを提供するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータに、
    モデル仕様および前記モデル仕様に関連する入力データをユーザから受信することと、
    前記モデル仕様からネイティブ・コードを生成することと、
    前記入力データを用いて、前記ネイティブ・コードをネイティブ・プロセスとして実行することにより、前記計算タスクを実行することと、
    前記計算タスクの結果を前記ユーザに提供することと、
    を実行させる、コンピュータ・プログラム。
  21. 請求項20に記載のコンピュータ・プログラムをコンピュータ可読に記録した記録媒体。
JP2021544634A 2019-02-22 2020-01-20 クラウド・サービスのためのネイティブ・コード生成 Active JP7358005B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/282,459 US11150926B2 (en) 2019-02-22 2019-02-22 Native code generation for cloud services
US16/282,459 2019-02-22
PCT/IB2020/050412 WO2020170049A1 (en) 2019-02-22 2020-01-20 Native code generation for cloud services

Publications (2)

Publication Number Publication Date
JP2022521887A JP2022521887A (ja) 2022-04-13
JP7358005B2 true JP7358005B2 (ja) 2023-10-10

Family

ID=72141249

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021544634A Active JP7358005B2 (ja) 2019-02-22 2020-01-20 クラウド・サービスのためのネイティブ・コード生成

Country Status (6)

Country Link
US (1) US11150926B2 (ja)
JP (1) JP7358005B2 (ja)
CN (1) CN113454594A (ja)
DE (1) DE112020000891T5 (ja)
GB (1) GB2595994B (ja)
WO (1) WO2020170049A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385923B2 (en) * 2019-07-16 2022-07-12 International Business Machines Corporation Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container
US20210266289A1 (en) * 2020-02-21 2021-08-26 Unisys Corporation Secured container management
US11501026B2 (en) * 2020-07-13 2022-11-15 Avaya Management L.P. Method to encrypt the data at rest for data residing on Kubernetes persistent volumes
CN115495223A (zh) * 2022-11-18 2022-12-20 安徽华云安科技有限公司 任务安全调度方法、装置、设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266231A (ja) 2008-04-25 2009-11-12 Facton Gmbh コンピュータ・アプリケーションを開発するためのドメイン・モデル概念
JP2012133756A (ja) 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
US20130167112A1 (en) 2011-12-22 2013-06-27 International Business Machines Corporation Cross-platform virtual machine and method
JP2018156626A (ja) 2017-03-20 2018-10-04 台達電子工業股▲ふん▼有限公司Delta Electronics,Inc. 空調設備のリモートインテリジェント有限状態機械制御システム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601126B1 (en) * 2000-01-20 2003-07-29 Palmchip Corporation Chip-core framework for systems-on-a-chip
US7124376B2 (en) * 2000-05-02 2006-10-17 Palmchip Corporation Design tool for systems-on-a-chip
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US20110125743A1 (en) * 2009-11-23 2011-05-26 Nokia Corporation Method and apparatus for providing a contextual model based upon user context data
US9038038B1 (en) 2010-06-01 2015-05-19 Google Inc. Just in time cloud compilation
US8510728B2 (en) * 2010-06-30 2013-08-13 International Business Machines Corporation Dynamic determination of application server runtime classloading
US9489241B2 (en) * 2011-05-02 2016-11-08 Iii Holdings 1, Llc Guaranteed response pattern
US9569184B2 (en) 2012-09-05 2017-02-14 Microsoft Technology Licensing, Llc Generating native code from intermediate language code for an application
WO2014062804A1 (en) * 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
US9239713B1 (en) * 2013-03-06 2016-01-19 MobileForce Software, Inc. Platform independent rendering for native mobile applications
US9733977B2 (en) 2013-05-31 2017-08-15 Nec Corporation Distributed processing system, distributed processing device, distributed processing method, and distributed processing program
US10127138B2 (en) 2013-06-06 2018-11-13 Microsoft Technology Licensing, Llc. Debugging native code by transitioning from execution in native mode to execution in interpreted mode
US9201635B2 (en) 2013-12-30 2015-12-01 Unisys Corporation Just-in-time dynamic translation for translation, compilation, and execution of non-native instructions
CN103945348A (zh) 2014-04-25 2014-07-23 长沙市梦马软件有限公司 一种非对称密钥短信加密方法和系统
US9703965B1 (en) * 2014-06-30 2017-07-11 EMC IP Holding Company LLC Secure containers for flexible credential protection in devices
CN104573063A (zh) 2015-01-23 2015-04-29 四川中科腾信科技有限公司 一种基于大数据的数据分析方法
US10620952B2 (en) * 2015-06-24 2020-04-14 International Business Machines Corporation Conversion of boolean conditions
US10762285B2 (en) 2016-02-23 2020-09-01 Wolfram Research, Inc. Methods and systems for generating electronic forms
US10334062B2 (en) * 2016-02-25 2019-06-25 InAuth, Inc. Systems and methods for recognizing a device
US10127030B1 (en) * 2016-03-04 2018-11-13 Quest Software Inc. Systems and methods for controlled container execution
WO2017165712A1 (en) * 2016-03-23 2017-09-28 FogHorn Systems, Inc. Composition of pattern-driven reactions in real-time dataflow programming
US10530887B1 (en) * 2016-12-06 2020-01-07 Amazon Technologies, Inc. Pre-caching data for use upon execution of program code
US11177042B2 (en) * 2017-08-23 2021-11-16 International Business Machines Corporation Genetic disease modeling
WO2019155369A1 (en) * 2018-02-07 2019-08-15 Patni Sangeeta Tri-affinity model driven method and platform for authoring, realizing, and analyzing a cross-platform application
US10601960B2 (en) * 2018-02-14 2020-03-24 Eingot Llc Zero-knowledge environment based networking engine
US11038678B2 (en) * 2018-11-09 2021-06-15 Microsoft Technology Licensing, Llc Trusted key diversity on cloud edge devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266231A (ja) 2008-04-25 2009-11-12 Facton Gmbh コンピュータ・アプリケーションを開発するためのドメイン・モデル概念
JP2012133756A (ja) 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
US20130167112A1 (en) 2011-12-22 2013-06-27 International Business Machines Corporation Cross-platform virtual machine and method
JP2018156626A (ja) 2017-03-20 2018-10-04 台達電子工業股▲ふん▼有限公司Delta Electronics,Inc. 空調設備のリモートインテリジェント有限状態機械制御システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHUNG, Eric et al.,Serving DNNs in Real Time at Datacenter Scale with Project Brainwave,IEEE Micro,IEEE,2018年,all 13 pages

Also Published As

Publication number Publication date
US11150926B2 (en) 2021-10-19
GB2595994B (en) 2022-09-28
US20200272487A1 (en) 2020-08-27
GB202112695D0 (en) 2021-10-20
JP2022521887A (ja) 2022-04-13
GB2595994A (en) 2021-12-15
DE112020000891T5 (de) 2021-11-11
WO2020170049A1 (en) 2020-08-27
CN113454594A (zh) 2021-09-28

Similar Documents

Publication Publication Date Title
JP7358005B2 (ja) クラウド・サービスのためのネイティブ・コード生成
US20180336486A1 (en) Training a machine learning model in a distributed privacy-preserving environment
US10284647B2 (en) Providing information on published configuration patterns of storage resources to client systems in a network computing environment
US10360602B2 (en) Metering accelerator usage in a computing system
EP3935536B1 (en) Secure execution guest owner controls for secure interface control
US20200004568A1 (en) Virtual machine allocation and migration
AU2020426828B2 (en) Reserving one or more security modules for secure guest
US20170063776A1 (en) FAQs UPDATER AND GENERATOR FOR MULTI-COMMUNICATION CHANNELS
US10318559B2 (en) Generation of graphical maps based on text content
US11586470B2 (en) Scalable workflow engine with a stateless orchestrator
US10693939B2 (en) Providing modified protocol responses
US20230099150A1 (en) Structural information preserving for graph-to-text generation
US10902037B2 (en) Cognitive data curation on an interactive infrastructure management system
US10643228B2 (en) Standardizing customer and test data and information collection for run time and historical profiling environments and workload comparisons
KR20240021937A (ko) 보안 게스트의 증명
TW202034162A (zh) 執行密碼計算純量乘法指令
US11907405B2 (en) Secure data storage device access control and sharing
WO2023160521A1 (en) Protecting api keys for accessing services
US20230394163A1 (en) Data cluster management
US20220200935A1 (en) Generating a chatbot utilizing a data source
US20220012600A1 (en) Deriving precision and recall impacts of training new dimensions to knowledge corpora
JP2024520287A (ja) 鍵管理方法、システム、プログラム
JP2023552484A (ja) 補助プロセッサ・コマンド・タイプ・フィルタリング
JP2023552648A (ja) コマンドごとのフィルタリング・インジケータに基づくコマンド・タイプ・フィルタリング

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210824

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20210730

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230714

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20230906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230925

R150 Certificate of patent or registration of utility model

Ref document number: 7358005

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150