(57)【要約】  本発明は、複数のハードウェア及びソフトウェアのプロバイダのコンピューティングリソースを統合する結果として生じる、相互依存性に対処するためのシステム及び方法の実施形態を含む。本発明による、統合されたマルチプロバイダクラウドベースのプラットフォームは、複数のバックエンドハードウェアプロバイダ、複数のソフトウェアプロバイダ、及び複数のライセンスサーバの各リソースと通信し、それらを統合するための抽象化層を利用する。こうした抽象化層及び関連する機能により、ユーザは、プロバイダ特有のプロトコルを実装及び環境設定しなくてもよくなるだけでなく、ジョブレベルベース又は他のレベルの粒度への、選択されたハードウェア、ソフトウェア、及びライセンスサーバ間での相互依存性に対処しなくてもよくなる。
2021527265.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）複数のバックエンドハードウェアプロバイダにまたがる複数のハードウェアコアタイプの中から選択することによって、プラットフォームのユーザがジョブを環境設定できるようにする、バックエンドハードウェアプロバイダの抽象化層と、
（ｂ）複数のソフトウェアプロバイダにまたがる複数のソフトウェアパッケージの中から選択することによって、前記ユーザが前記ジョブをさらに環境設定できるようにする、ソフトウェア抽象化層と、
（ｃ）前記ユーザのジョブと前記ユーザによって選択されるソフトウェアに関連付けられたライセンスサーバとの間のネットワーク接続を実装する、ライセンスサーバ抽象化層と、
（ｄ）関連付けられたバックエンドハードウェアプロバイダからの前記選択されたハードウェアコアタイプに関連付けられたハードウェアリソースをプロビジョニングし、前記プロビジョニングされたハードウェア上に前記選択されたソフトウェアをインストール及び環境設定し、前記ユーザのジョブの前記実行を呼び出す、マネージャと、
（ｅ）前記ジョブの実行中に、前記プロビジョニングされたハードウェアの使用状況を監視する、ハードウェア計測モジュールと、
（ｆ）前記ジョブの実行中に、前記選択されたソフトウェアの前記使用状況を監視する、ソフトウェア計測モジュールと、
（ｇ）前記ジョブの結果に前記ユーザがアクセスできるようにする、ユーザインターフェース層と
を含む、統合されたクラウドベースのプラットフォーム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、「Dynamic Optimization of Simulation Resources」と題する、２０１６年８月１１日出願の米国特許出願第１５／２３５，００４号の一部継続出願である、２０１８年６月１４日出願の米国特許出願第１６／００８，４６５号の優先権を主張し、その開示を、本明細書に完全に記載される場合と同様に、参考として本明細書に援用する。
【０００２】
背景
技術分野
本発明は一般に、クラウドベースのプラットフォームに関し、詳細には、複数のプロバイダにまたがってサードパーティのバックエンドハードウェアとサードパーティのソフトウェアとを統合する結果として生じる相互依存を、エンドユーザのために解決するクラウドベースの計算プラットフォームに関する。
【背景技術】
【０００３】
関連技術の説明
１９６０年代にスーパーコンピューティングが出現して以来、「高性能コンピューティング」（ＨＰＣ）のタスクは、大企業にしか導入できないハイエンドの高価なコンピュータシステムに委ねられた。ＨＰＣのタスクは、（ウィキペディアなどでは）比較的短期間に大量のコンピューティングリソースを必要とするものとして狭義に特徴づけられる場合がある。
【０００４】
このような特徴づけにより、他の形態のスーパーコンピューティング（ＨＴＣ又は「ハイスループットコンピューティング」、グリッドコンピューティング、ＭＴＣ又は「多タスクコンピューティング」など）との区別が容易になる。本明細書においては、ＨＰＣという用語をさらに広く使用して、ほんの一時的に、すなわち、ジョブが、単一のタスクから構成されるか、それとも依存及び非依存する複数のタスクから構成されるか、又は、コスト、計算リソースの使用、個々のタスク若しくはジョブ全体を完遂するのに必要な時間、若しくは他の要因向けに最適化されているかどうかの場合であっても、重要なコンピューティングリソースが必要とされるスーパーコンピューティングの事実上あらゆる形態を包含する。
【０００５】
１９７０年代のＰＣ大変革により、クライアントサーバコンピューティングの従来のパラダイムに変化がもたらされた。コンピューティングは、サーバベースの極端なユーザ（遠隔のメインフレーム、及び他のハイエンドサーバ上でタイムシェアリングタスクを実行する「ダムターミナル」のユーザ）から、クライアントベースの極端なユーザ（徐々に強力なパーソナルコンピュータ上で大抵のローカルタスクを実行するユーザ）へと徐々に発展し、最終的には、インターネットなどの分散ネットワークが、ハードウェア、ソフトウェア、ネットワーキングのサービスが融合したもののホスティングを容易にするクライアントサーバコンピューティングのハイブリッド形態へと発展した。
【０００６】
こうしたハイブリッドクライアントサーバ環境では、ホストされるサーバ及びエンドユーザクライアントにまたがって、数多くの様々な方式でコンピューティングのリソース及び機能が割り当てられる。しかし、ＨＰＣのタスクは、パーソナルコンピュータ上でも、又はさらに強力な単一のサーバ上でさえ通常は利用できないハイエンドのコンピューティングリソースが必要だったので、サーバベースの極端なものに限定されたままであった。
【０００７】
２０００年代半ばにクラウドコンピューティングが登場すると、ＨＰＣの機能は、大企業だけでなく個人から小企業にまで、はるかに幅広く利用可能になり、入手可能になった。ネットワーク接続された一連の膨大な物理的及び仮想のコンピューティングリソースにまたがって「ハイデマンド」のタスクの機能を分散することによって、大量のコンピューティングリソースへの遠隔の「オンデマンド」アクセスが、コストを劇的に削減した（したがって、アクセスを拡大した）。クラウドコンピューティングはまた、他の数多くの状況においてハイブリッドクライアントサーバのソリューションを実現し、ＨＰＣの世界に独自の「分散サーバベース」のソリューションを提供した。
【０００８】
しかし、クラウドコンピューティングは、ＨＰＣユーザにとって万能薬ではなかった。従来のクライアントサーバ及びリモートデスクトップアプリケーションと比較して、ＨＰＣジョブが相対的に複雑なので、重大な問題が残っている。たとえば、クラウドコンピューティングより以前には、大企業が高価なハイエンドサーバ及び他のコンピューティングリソースを購入又はリースし、それを自社の構内で運用した。企業には、その特定の要求にマッチするコンピューティングリソースを選択する柔軟性があり、多くの場合、このようなコンピューティングリソースのオーバヘッドコストを正当化することが困難であった。ハイエストエンドのコンピューティングリソースは、ある特定の計算負荷の高いジョブにおいてのみ必要とされ、このようなジョブのある特定の部分においてのみ必要とされる場合もあった。本質的に、企業は「最悪ケースの状況」に対して計画しなければならなかった。
【０００９】
それぞれ自社の「自前の」ハードウェアに依存する大企業は、最新のコンピューティングリソースへのアクセスを断念することが多かった。購入又はリースされたハードウェアは、通常そのライフサイクルの最後に向けて交換され、その時点までに、数年前のものであり、最新技術に対して１つ又は複数の世代前のものである。
【００１０】
さらに、エンドユーザは、サードパーティの「独立系ソフトウェアベンダ」すなわちＩＳＶからライセンスを受けたサードパーティのそれぞれのソフトウェアパッケージを、ハードウェアにインストールし、環境設定しなければならなかった。正しいオペレーティングシステムが確実に存在することだけが要求される従来のデスクトップアプリケーションをインストールするのとは異なり、計算負荷の高いソフトウェアをインストールすることは、ＨＰＣ機能の性質により、さらに複雑なプロセスである。このようなソフトウェアは並列に実行されることが多く、このソフトウェアの複数のインスタンスが、複数のＣＰＵコアにまたがって実行され、複数の物理サーバにまたがって実行されることが多い。それぞれのジョブは、ユーザの計算モデルに関連するジョブ固有の属性を含むソフトウェアの要求条件を、ハードウェア環境にマッチさせる独自の環境設定を必要とする。
【００１１】
エンドユーザは、各ジョブの要求をハードウェア環境にマッチさせることによって、こうしたハードウェア−ソフトウェア依存に対処する役割を担っていたが、ジョブを並列に実行する企業内での他のエンドユーザと、そのハードウェア環境のコンピューティングリソースを共有するという複雑さとは全く別ものである。さらに、エンドユーザは、ソフトウェア及びハードウェアの環境をテスト又は「調整」することについて、並びに個々のジョブ（中間結果並びに最終結果を抽出及び分析すること、場合によっては様々な条件に基づいて、１つのタスクの出力が後続のタスクへの入力として働く複数のタスクを組み合わせること、一連のさらに複雑な他のジョブ内及びジョブ間の機能など）にまたがって、及びその個々のジョブ内で「ワークフロー」を生成することについての役割をもっぱら担っていた。これに関連して、ワークフロー、ジョブ、及びタスクという用語をある程度は区別なく使用するが、ワークフローは通常、１つ又は複数のジョブを示し、そのそれぞれが１つ又は複数の個々のＨＰＣタスクから構成される。
【００１２】
アマゾンのAWS（「Elastic Compute Cloud」すなわちEC2を含む「アマゾンウェブサービス」）、マイクロソフトの「Azure」、グーグルの「Google Cloud Platform（GCP）」などのパブリッククラウドサービスの導入でさえ、こうした問題には部分的にしか対処しなかった。こうしたパブリッククラウドプラットフォームは、「サービスとしてのインフラストラクチャ」すなわち「ＩａａＳ」と説明されることが多い。すなわち、こうした「バックエンドハードウェアプロバイダ」は、最悪ケースの状況に備えるためのハードウェアコンピューティングリソースの購入又はリースを不要にする、物理的及び仮想のコンピューティング環境への遠隔アクセスを実現する。このようなコンピューティングリソースには、オンデマンド式に遠隔からアクセスして、コストを劇的に削減することができる。
【００１３】
パブリッククラウドプロバイダに加えて、他のバックエンドハードウェアプロバイダは、要求の厳しいＨＰＣアプリケーション向けに設計されたハイエンドの「ベアメタル」ハードウェアを優先して、仮想化機能（したがって、あるレベルのセキュリティ）を犠牲にすることの多い「プライベートクラウド」又は「プライベートデータセンタ」を提供する。たとえば、物理サーバのプロビジョニングは、そのようなサーバが互いに近接している場合には緊密に結合することができるので、ジョブ内通信用のさらに高速なネットワーキング技術の使用を容易にする。パブリッククラウドサービスと同様に、ベアメタルプロバイダのコンピューティングリソースには、オンデマンド式に遠隔からアクセスして、コストを削減することができる。
【００１４】
しかし、企業がパブリッククラウドを利用するか、それともプライベートデータセンタを利用するか（又は、自社の物理的なハードウェアを含むその組合せを利用するか）にかかわらず、ＨＰＣタスクの様々な属性と、それが実行されるハードウェア環境及びソフトウェア環境との間の相互依存に起因して、上記その他の問題がほとんど残る。ＨＰＣユーザはなおも、自身のニーズに最も応える物理的又は仮想的なハードウェア環境を選択する役割を担う。
【００１５】
たとえば、ある特定のジョブが（しばしば、割増しコストで手に入れる）最新のベアメタルハードウェアを必要とするが、他のジョブが仮想化の柔軟性を必要とする場合、ユーザは、一方のために他方を犠牲にするか、又は複数の様々なバックエンドハードウェアプロバイダと契約するというさらなる複雑な状況に陥りかねない。さらに、ユーザはなおも、そうしたハードウェア環境のそれぞれの間での違いを管理しなければならない。数多くのクラウドプロバイダは、ＣＰＵコア、メモリ、記憶装置、ネットワーク帯域幅など、指定された量の利用可能なコンピューティングリソースを有する仮想的な「コアタイプ」を提供する。その一方で、ベアメタルプロバイダは、その物理サーバの特性に基づいて、コンピューティングリソースのさらに限定的な（ただし、しばしばより強力な）選択肢を提供する。
【００１６】
こうした選択だとしても、ユーザは、相対的に高いレベルの抽象度でそのコンピューティングリソースのニーズを単に指定することができず、複数のバックエンドハードウェアプロバイダから利用可能な様々なタイプのコンピューティングリソースから、そのようなニーズを自動的に割り当てる。ユーザは、しばしば不完全な情報で、そのような決定を単独で下す役割を担う。ＨＰＣユーザは、自身のニーズに注目しており、様々なバックエンドハードウェアプロバイダからの頻繁に変化する提供物には注目していない。さらに、所与のどのような企業でも、費用効率の最も高い価格設定を実現するために必要な、複数のプロバイダにまたがる使用量が不足している。
【００１７】
ＨＰＣユーザはまた、任意の具体的なジョブのコンピューティングリソース要求を、複数のバックエンドハードウェアプロバイダにまたがって提供されるコンピューティングリソース（自社での自前のハードウェアを含む）と「組み合わせてマッチさせる」ことを不可能にしている。たとえば、自身の既存の記憶装置、又はクラウドプロバイダの記憶装置を用いて、ベアメタルプロバイダのハイエンドコンピューティング能力を利用するジョブを実行することができない。数多くの様々なバックエンドハードウェアプロバイダ間の統合がまさに欠如している。
【００１８】
ハードウェア環境を決定及び管理するのに加えて、ＨＰＣユーザはまた、遠隔のクラウド環境において特定のソフトウェアを実行する権利を得なければならない。その上、ＨＰＣユーザは、各ジョブ用のソフトウェアをインストール及び環境設定するとともに、特定のジョブ（及び、関連するソフトウェア）の要求を、適切な量の互換性のあるハードウェアコンピューティングリソースとマッチさせないといけない。
【００１９】
ＨＰＣユーザは、特定用途向けのワークフローを実装するための自身のツールを開発するとともに、複雑で時間がかかり、費用が嵩むことの多いＨＰＣジョブを実行するのに先立って、ソフトウェア及びハードウェアをテスト又は「調整」しなければならない。要するに、ＨＰＣユーザは、クラスタ間及び物理サーバ間でデータを共有すること、クラスタ間及びサーバ間での通信を管理すること、バックエンドハードウェアプロバイダが提供する場合を超えるデータのセキュリティ及びプライバシーの問題を提供すること、契約上、規制上、及び他の法的要件に従って準拠したＨＰＣ環境を維持すること、並びに複雑なＨＰＣジョブの数多くの他の側面を含め、プロビジョニングされたハードウェア及びソフトウェアの環境への各ジョブの依存性のすべてを管理しなければならない。
【００２０】
さらに、各ＩＳＶは、通常、サードパーティの「ライセンスサーバ」を介して認証及びライセンスの管理を実施することによって、自身のソフトウェアライセンス制限を実現する。各ＩＳＶは、そのライセンスサーバの場所、及びそのサーバへのアクセス権に様々な制限を課してもよい。ここでもまた、ＨＰＣユーザは、権利を取得し、それぞれ関連するライセンスサーバへのインターフェースを提供する役割を担う（そのようなライセンスサーバが物理的に配置されてもよい場所にはどこにでも）。
【００２１】
バックエンドハードウェアプロバイダは、プロビジョニングされたクラスタ（又は、ハードウェアリソースの他のユニット）の使用状況を「計測」するが、ＨＰＣユーザは、そのようなＩａａＳリソースのコストを、ジョブごとの又は他の基準で（相対的に高い又は低いレベルの粒度で）監視したいと考える場合は、自身の「ジョブごと」の特定用途向け計測を実施しなければならない。さらに、ＨＰＣユーザは、（たとえば、相対的なライセンスコストを評価するために）ソフトウェアの使用状況を計測したいと考える場合、自身の特定用途向け測定の実装形態を提供しなければならない。
【００２２】
こうした問題の一部に対処するために、パブリッククラウド及びプライベートクラウドのプロバイダが提供するＩａａＳソリューションよりも、「サービスとしてのソフトウェア」すなわちＳａａＳのソリューションを提供する、いくつかの垂直ソリューションが登場してきた。たとえば、ＩａａＳの機能を提供するのに加えて、大手ＩＳＶの中には、バックエンドのパブリッククラウド、又は自社のハードウェアインフラストラクチャと自社のソフトウェアとを統合してきたものもある。このような「ＩＳＶクラウド」は、そのソフトウェアのユーザに、ＨＰＣタスクを実行するための遠隔ハードウェアプラットフォームを提供する。
【００２３】
しかし、このようなＩＳＶクラウドのユーザは、単一のソフトウェアプロバイダに限定されており、ソフトウェアのより多様な選択肢を必要とするユーザを排除する重大な制限である。さらに、ＩＳＶクラウドプロバイダに許可されている場合でも、ユーザはやはり、ソフトウェア及びハードウェアの調整及びワークフローに関して前述した依存性、並びに自身の知的所有権ソフトウェア又はサードパーティのソフトウェアを提供、インストール、環境設定、及び管理する必要性の多くに対処しなければならない。
【００２４】
他の垂直ソリューションは、自社のＩａａＳ環境を提供するが（直接か、又は単一のサードパーティクラウドプロバイダを介するかはともかく）、ある特定のサードパーティ製ソフトウェアパッケージにアクセスする。こうした「ＨＷクラウド」はまた、前述したのと同じ制限の多くに悩まされる。エンドユーザにはソフトウェアの選択肢を提供するが、そのソリューションは、単一のバックエンドハードウェア環境が提供するコンピューティングリソースに限定される。このような重大な限定により、たとえば、ベアメタルプロバイダだけから入手可能なさらに強力なサーバ、又は他のクラウドプロバイダが提供するさらに費用対効果が大きいソリューションを、ユーザが利用できなくなる。
【００２５】
必要なのは、前述の既存のソリューションの欠点に対処し、ハードウェア環境とソフトウェア環境の間での相互依存性を自動的に解決しながら、複数のバックエンドハードウェアプロバイダ及び複数のＩＳＶからＨＰＣユーザが選択できるようにする遠隔プラットフォームをＨＰＣユーザに提供することによって、真の「サービスとしてのプラットフォーム」（ＰａａＳ）の機能を提供する、統合された計算プラットフォームである。このような統合された計算プラットフォームはまた、ＨＰＣジョブのソフトウェア及び他の属性の、選択されたハードウェア環境への依存性に対処すべきである。
【発明の概要】
【課題を解決するための手段】
【００２６】
概要
本発明は、複数のバックエンドハードウェアプロバイダ、複数のソフトウェアプロバイダ、及び複数のライセンスサーバと通信し、これらのリソースを統合するための抽象化層を利用するクラウドベースの計算プラットフォームを提供することによって、上記の欠陥に対処するためのシステム及び方法の実施形態を含む。こうした抽象化層及び関連する機能により、ユーザは、プロバイダ特有のプロトコルを実装及び環境設定しなくてもよくなるだけでなく、ジョブレベルベース又は他のレベルの粒度への、選択されたハードウェア、ソフトウェア、及びライセンスサーバ間での相互依存性に対処しなくてもよくなる。
【００２７】
本発明のプラットフォームは、個々のジョブ及びワークフローの要求に基づく相対的に高いレベルのユーザ選択肢に従って、複数のプロバイダ（自前の顧客リソースを含む）の中から、ハードウェア、ソフトウェア、及びライセンスサーバからコンピューティングリソースを自動的に選択する。ユーザが定義した所与のジョブに関して、このプラットフォームは、１つ又は複数のバックエンドハードウェアプロバイダと自動的にインターフェースして、コンピューティングリソースをプロビジョニングする。
【００２８】
一実施形態では、ＨＰＣユーザは、特定のバックエンドハードウェアプロバイダにコアタイプを要求するが、他の実施形態では、ユーザの相対的に高いレベルのコンピューティングリソース選択肢が、ユーザの既定の目標（たとえば、コスト、実行時間、特定のコンピューティングリソースなど）のために最適化するようにプラットフォームが選択した１つ又は複数のバックエンドハードウェアプロバイダへの相対的に低いレベルの要求へと変換される。他の実施形態では、プラットフォームは、ユーザのモデル及び他の入力パラメータから立証されたユーザのニーズの分析に基づいて、提案されたコンピューティングリソースの選択肢を自動的に生成する。
【００２９】
一実施形態では、バックエンドハードウェアプロバイダは、複数のパブリッククラウドプロバイダ及びプライベートデータセンタ、並びにＨＰＣユーザ自身の構内に配置されたコンピューティングリソースを含み、そのすべてが、プラットフォームのバックエンドハードウェアの抽象化層内に実装された様々なＡＰＩを介してアクセス可能である。たとえば、ＨＰＣユーザのジョブは、このユーザの構内に配置されたネットワーク接続済みの記憶装置を使用して、パブリッククラウドプロバイダ内のサーバ上で実行されてもよい。又は、ユーザのサーバは、クラウドプロバイダが提供する追加のコンピューティング能力で補完されてもよい。
【００３０】
複数のバックエンドハードウェアプロバイダ（ＨＰＣユーザの自前のコンピューティングリソースを含む）にまたがる特定のコンピューティングリソースのこの統合によって、いかなるＨＰＣ環境にもこれまで見られなかった、比類ないレベルの柔軟性を提供する。このようなタスクは、プラットフォームによって自動的に処理されるので、ＨＰＣユーザは、プロバイダ間の通信、及び、たとえば様々なハードウェア環境でのコンピューティングリソース間でのデータの転送に関係する必要はない。
【００３１】
プラットフォームはまた、ユーザが指定した環境設定及び入力データに従って、プロビジョニングされたハードウェア環境において（場合によっては、複数の異なるハードウェアプロバイダにまたがって）、選択されたソフトウェアを自動的にインストール及び環境設定する。プラットフォームはさらに、関連したソフトウェア及びそのコンポーネントへのユーザのアクセス及びその使用を統制する、関連したライセンスファイル（ライセンスキーを含む）を介して、関連するライセンスサーバとの接続を確立する。
【００３２】
このプラットフォームは、ユーザにワークフローツールを提供して、単一のＨＰＣタスクの環境設定（たとえば、ユーザのモデルでの単一のシミュレーションソフトウェアパッケージを実行すること）だけでなく、連続的に又は並列に実行される複数のタスクを含むさらに複雑なジョブの環境設定を容易にする。たとえば、１つ又は複数のタスクの出力が、後続のタスク若しくはジョブへの入力として供給されてもよく、又は個々のタスク若しくはジョブが、様々なパラメータで繰り返されてもよい。ワークフローは、ループ、条件、及び他の制御フローコンピューティング構造を含む。
【００３３】
さらに、ユーザには、ジョブ又は単一のタスクの特定の部分をテストし、その結果に基づいて、複雑なジョブ又はワークフローを実行するのに時間と費用をかける前に、ハードウェア及びソフトウェアの環境のコンピューティングリソース並びに他の属性をユーザが再構成できるようにする、ハードウェア及びソフトウェアの「調整」ツールが提供される。数多くのジョブは、何時間にも（又は、場合によっては数日、数週間、若しくはそれ以上にも）わたって著しい量のコンピューティングリソースを使用する必要があるので、ジョブの主要部分（具体的には、何度も繰り返される部分）を事前にテストし、次いで、初期のハードウェア及びソフトウェアの環境設定を繰り返し修正できることにより、複雑なワークフローの実際の実行前とその実行中の両方で、ユーザは時間と費用を大幅に節約する。
【００３４】
一実施形態では、プラットフォームは、利用可能なコンピューティングリソースをＨＰＣユーザのジョブ又はワークフローの要求に最適にマッチさせるために、ハードウェア及びソフトウェアの調整の結果に基づいて、ハードウェアコンピューティングリソース及び／又はソフトウェア環境設定の選択肢を推奨する。ユーザのモデル、入力データ、及び調整「テストラン」の中間結果の分析から、このような要求が推定される。
【００３５】
一実施形態では、ユーザのワークフローが実行されている間、プラットフォームは（ユーザのワークフロー環境設定に従って）中間結果を監視し、選択されたタスクを繰り返すこと、若しくは条件付きで実行すること、又はワークフローの実行を停止さえすることなど、ある特定の動作を開始する（たとえば、そのような中間結果に基づいて検出された破局的なエラーが生じた場合に無駄な計算を防止するために）。他の実施形態では、プラットフォームは（条件、ループ、及び他のフロー制御構成を含む、ＨＰＣユーザのワークフローに従って）、分析ソフトウェアを呼び出して、中間結果並びに最終結果の分析を実行する。別の実施形態では、プラットフォームは（たとえば、教師あり機械学習技法を用いて）同様のジョブ及びワークフローの出力からパターンを見つけ出し、それを使用して、ハードウェア又はソフトウェアのコンピューティングリソースの様々な割当てなど、様々な推奨をサポートする。
【００３６】
プラットフォームは、ユーザが提供するか、又はプラットフォームが生成するライセンスファイルに基づいて、ライセンスサーバの制限を強制する。たとえば、ライセンスファイルは、ソフトウェアパッケージの指定された機能へのユーザのアクセス権を制限することもある。プラットフォームは、このような制限を強制するライセンスサーバの抽象化層を介して、関連するライセンスサーバに接続する。
【００３７】
プラットフォームはさらに、プロビジョニングされたハードウェア環境でのユーザのワークフローの実行を監視する、ハードウェア及びソフトウェアの計測モジュールを含む。一実施形態では、このような監視は、個々のタスクの粒度、並びにさらに複雑なジョブ又はワークフローにおいて生じる。さらに、ワークフロー（又は、コンポーネントのジョブ若しくはタスク）は、複数のバックエンドハードウェアプロバイダにまたがって実行されてもよいので、このような監視は、ユーザのワークフローの指定されたコンポーネントを追跡し、そのそれぞれを、様々なバックエンドハードウェアプロバイダによって別々に計測してもよい。一実施形態では、このような計測は、通常、計測機能自体をもたないＨＰＣユーザの自前のハードウェアにまで及ぶ。
【００３８】
個々のバックエンドハードウェアプロバイダは、あるユーザのワークフロー又はジョブを別のユーザと区別しない場合があるが、プラットフォームは（一実施形態では）、ユーザのワークフロー（又はコンポーネントのジョブ又はタスク）に関連した各リソースの使用状況を監視するために、個々のハードウェアリソース（たとえば、ＣＰＵコア、メモリ、記憶装置、ネットワーク帯域幅など）の利用状況を追跡する。このような使用状況は、料金を計算し、ユーザ、その企業、パートナー、又は他のエンティティへの請求を容易にするために、（たとえば、様々なパブリッククラウドプロバイダによって確立された）様々な価格設定方式と後に関連付けられる。
【００３９】
バックエンドハードウェアプロバイダの「顧客」は、本発明のプラットフォームのプロバイダでもよく、又は（他の実施形態では）サードパーティのパートナー、ＩＳＶ、又は個々のＨＰＣユーザ若しくは企業でもよいことに留意されたい。たとえば、企業は、そのユーザのワークフロー（若しくは、そのコンポーネント）を実行するために自社のクラウドアカウント、又はプラットフォームプロバイダのサードパーティパートナーのパブリッククラウド又はプライベートクラウドのアカウントを選択してもよい。いずれにしても、複数のバックエンドハードウェアプロバイダにまたがってワークフローコンポーネントの実行を監視することにより、プラットフォームは、任意の所望の価格設定及び請求メカニズムを事実上サポートするのに十分な粒度のレベルで、ハードウェアの使用状況を追跡する。
【００４０】
ハードウェア及びソフトウェアの計測モジュールはまた、（ワークフロー若しくはジョブのレベル、又は事実上他の任意のレベルの粒度で）その個々のソフトウェアのパッケージ又はコンポーネントのＨＰＣユーザの使用状況を監視することをサポートする。このような計測は、遠隔ライセンスサーバへの接続を管理することによって容易になり、そのアクセスはプラットフォームによって監視される。このような監視機能は、単なる「チェックアウト」及び「チェックイン」の事象を超えて拡大し、ソフトウェア使用状況のオンデマンド計測及び価格設定の基礎としても使用される。
【００４１】
別の実施形態では、このような監視された使用情報は、ＨＰＣユーザの目標を最適化するための基礎として利用される。たとえば、相対的に高速なハードウェアは、一般には相対的に高価になる場合があるが、相対的に低速なハードウェアは、ソフトウェアのライセンスコストの増加につながる場合がある。プラットフォームは、ＨＰＣユーザの指定された目標に対して最適化し、将来のジョブ又はワークフローを推奨する（又は、ハードウェア及びソフトウェアの調整「テストラン」の場合は事前に）。さらに別の実施形態では、プラットフォームが特定のソフトウェア（又はコンポーネント機能）の使用状況だけでなく、ユーザが指定した結果も監視するという事実によって、結果ベースの価格設定がサポートされる。
【００４２】
ユーザのワークフローが、単一のバックエンドハードウェアプロバイダのハードウェア環境での単一のソフトウェアパッケージの実行のみを含む場合でも、ソフトウェアの実行時間は、ハードウェアの実行時間のほんの一部に過ぎない場合があることに留意されたい。たとえば、バックエンドハードウェアプロバイダは、一群のハードウェアがプロビジョニングされる瞬間から（そのプロビジョニングが解除されるまで）、その時間のほんの一部分しかソフトウェアの実際の実行に要していないにもかかわらず、ハードウェアの使用料を請求する場合がある。ソフトウェアのインスタンスを環境設定及び起動し、その結果を抽出するように、追加の「ハードウェア使用」時間が要求される場合がある。
【００４３】
さらに複雑なワークフローでは、「ソフトウェア使用」の時間は、複数のクラスタ又は物理サーバ、複数のバックエンドハードウェアプロバイダ、並びに複数のソフトウェアパッケージ（及び、そのコンポーネント機能）にまたがって割り当てられる。ここでもまた、プラットフォームのハードウェア及びソフトウェアの計測モジュールは、事実上いかなる所望の価格設定及び請求処理メカニズムをもサポートするのに十分な粒度の所望のレベルで、このような「ソフトウェアの使用」を監視する。
【００４４】
別の実施形態では（２０１６年８月１１日出願の、「Dynamic Optimization of Simulation Resources」と題する、米国特許出願第１５／２３５，００４号においてより詳細に論じられ、その開示が参考として本明細書に援用される）、プラットフォームはまた、ジョブ又はワークフローの実行中にコンピューティングリソースの使用を監視し、インスタンス間の依存性に対処するように、このようなリソースを動的に最適化するためのメカニズムを提供する。
【００４５】
プラットフォームはさらに、ハードウェア及びソフトウェアの計測モジュールと連携して、複数の異なるエンティティ（個々人、ＨＰＣ企業、ＩＳＶ、サードパーティパートナーなど）にインボイスを発行するための様々な異なる価格設定方式及び詳細な使用量割当ての、プラットフォームのサポートを容易にするための課金処理層及び関連した機能を含む。一実施形態では、プラットフォームは、計測された使用量又は消費ベースのオンデマンド価格設定だけでなく、結果ベース、前払い金、加入、座席当たり、同時使用者、及び様々なプロバイダエンティティによって採用される他の価格設定モデルに基づく料金の計算をサポートする。
【００４６】
クラウドベースの環境においてＨＰＣジョブ及びワークフローを遠隔で実行するときのデータのプライバシー及びセキュリティの問題の重要性が高まっていることを考慮すると、プラットフォームは、複数の異なるバックエンドのハードウェア環境にまたがって、データを（プロビジョニング時、プロビジョニング解除時、及び計算時において）均一に暗号化することによって、データのプライバシー及びセキュリティの追加の層を提供する。このような暗号化はさらに、様々なバックエンドハードウェアプロバイダが提供するセキュリティのレベルにかかわらず、それを向上させる（且つ、完全に互換性がある）。プラットフォームはさらに、様々なバックエンドハードウェアプロバイダが利用する様々なデータ構造及びプロトコルを説明する、均一な「データ管理」インターフェースを含む。
【００４７】
既存のソリューションと比較して、本発明のプラットフォームの利点は数多い。ＨＰＣユーザ及び企業では、そのジョブ及びワークフローの要求と、複数のバックエンドハードウェアプロバイダ及び複数のソフトウェアプロバイダが提供するコンピューティングリソースとをマッチさせる柔軟性が高められる。しかし、こうしたＨＰＣユーザ及び企業は、その既存の自前のコンピューティング環境（「持込み」又はＢＹＯＬライセンス、及び所有権を主張できるソフトウェア、並びに自前の計算リソース及び記憶装置リソースを含む）を活用する柔軟性を保持する。
【００４８】
さらに、このプラットフォームにより、複数のハードウェア及びソフトウェアのプロバイダ（自前のハードウェア及びソフトウェアのリソースを含む）にまたがる様々なコンピューティングリソースを「混合及びマッチさせる」程度であっても、選択されたハードウェア及びソフトウェア（ライセンスサーバを含む）を、ＨＰＣユーザが統合及び環境設定しなくて済むようになる。単一のバックエンドハードウェアプロバイダの状況においても、ＨＰＣユーザは、個々の「仮想マシン」（ＶＭ）のクラスタのプロビジョニング及びプロビジョニング解除、並びにそのようなＶＭにまたがるソフトウェアのインスタンスの起動に関係する必要がない。
【００４９】
ＨＰＣユーザには、複雑なワークフローを定義する際の柔軟性を高めるだけでなく、そのようなワークフローを実行する結果として生じる時間及び費用（又は、他の最適化された要因）を最小限に抑える、ワークフロー並びに、ハードウェア及びソフトウェアの調整ツールが提供される。ハードウェア及びソフトウェアの計測は、ＨＰＣのワークフロー及びジョブを実行する時間及び費用を効率的に管理し、並びに現在及び将来の様々な価格設定、ライセンシング、及び課金方式をサポートするための好都合なメカニズムを提供する。さらに、これらは、ＨＰＣのワークフロー又はジョブの実行中と実行後には、（実行並びに価格設定の目的での）条件付きの結果ベースの動作を実行できるようにすることによって、個々のＨＰＣのワークフロー及びジョブの柔軟性及び堅牢性をさらに高める。
【００５０】
要するに、本発明の統合されたプラットフォームは、限定されたハードウェア及びソフトウェア（及び、ライセンスサーバ）の選択肢の制約条件からだけでなく、そのようなマルチプロバイダの統合の結果として生じる相互依存性（ハードウェア及びソフトウェアの互換性問題、ソフトウェアのインストレーション、並びにジョブ及びワークフローの環境設定、ライセンス管理、様々なライセンス及び価格設定のメカニズム、データのセキュリティ及びプライバシーなどを含む）を解決する必要からも、ＨＰＣユーザを解放する。
【００５１】
本発明のプラットフォームのさらなる態様及び実施形態を、以下でさらに詳細に説明する。
【図面の簡単な説明】
【００５２】
図面の簡単な説明
【図１】本発明のクラウドベースのプラットフォームのマルチプロバイダサーバの主要構成要素の一実施形態を示すシステム図である。
【図２】本発明のクラウドベースのプラットフォームのマルチプロバイダサーバによって実行される双方向ワークフローの生成及び実行のプロセスの一実施形態を示す流れ図である。
【発明を実施するための形態】
【００５３】
詳細な説明
本発明のシステム及び方法の詳細な実施形態を、添付図に示し、以下に説明する。本発明は、各図を参照して以下に説明する具体的な実施形態に限定されるものではないことに留意されたい。たとえば、本発明は、本発明の精神から逸脱することなく、様々な技術的トレードオフを反映して、（ハードウェア及び／又はソフトウェアで実装され、サーバ及びクライアントの装置間に割り当てられる）さらに少ないか、又はさらに多い様々な概念上のモジュール間で機能を再割当てして、別個のサーバプラットフォームに統合することもできる。（追加の規格、並びに知的所有権のハードウェア及びソフトウェアを含む）本発明のシステム及び方法の追加の実施形態は、当業者に明らかとなろう。
【００５４】
以下の各図に示される本発明のソフトウェアコンポーネントは、物理メモリに具体化され、物理サーバ（明示的には図示せず）でのＣＰＵ（シングルコア及び／又はマルチコア）によって処理されて、本発明の機能を実装する。本発明の精神から逸脱することなく、このような物理サーバ、及びこのようなメモリは、パブリッククラウド若しくはプライベートクラウド、エンドユーザの構内、又は他のコンピューティング環境に（ユーザのＨＰＣワークフロー及びジョブを実装するソフトウェアとともに、若しくはそれとは別に）配置されてもよい。一実施形態では、ＨＰＣユーザは、そのクライアント装置（サーバ、デスクトップ、ラップトップ、携帯電話、及びネットワーク接続された他の装置）での標準的なウェブブラウザを用いて、インターネットを介して本発明のプラットフォームにアクセスする。
【００５５】
図１に移ると、システム図１００には、マルチプロバイダサーバ１０１によって実装される、本発明のクラウドベースのプラットフォームの一実施形態が示してある。プラットフォームの機能がマルチプロバイダサーバ１０１によって実装されており、このマルチプロバイダサーバ１０１が、インターネット１９５を介してそのすべてが相互接続されている他の様々なエンティティからの機能及びリソースを統合するという点で、クラウドベースの「プラットフォーム」をマルチプロバイダサーバ１０１と区別なく言及する。ＨＰＣエンドユーザの顧客１５５は、１つ又は複数の異なるインターフェースを介して、インターネット１９５上でマルチプロバイダサーバ１０１にアクセスする。
【００５６】
最も一般的なものは、ＨＰＣユーザ１５５が、（事実上、世界中のどこにでも配置される、そのネットワーク接続されたデスクトップ及びモバイルのクライアント装置から）遠隔でプラットフォームにアクセスして、ＨＰＣワークフローを生成及び実行できるようにするウェブベースのインターフェース１５６である。ウェブベースのインターフェース１５６は、ワークフローを生成及び実行し、並びに結果を観察するための最もユーザフレンドリなインターフェースを提供する。高度なＨＰＣユーザ１５５は、コマンドラインインターフェース（ＣＬＩ）１５７を介してこの機能の多くを実行することもでき、これは、デスクトップコンピュータ上で「端末」のコマンドラインインターフェース（標準のＧＵＩインターフェースではない）を使用するのと同様である。
【００５７】
ある特定の状況では、ＨＰＣユーザ１５５は、プラットフォームにアクセスするためにＡＰＩクライアント１５８を利用して、たとえば、ＨＰＣのワークフロー及びジョブの起動と、自身の特定用途向けソフトウェアを統合できるようにする。マルチプロバイダサーバ１０１は、プラットフォームへのこのようなアクセスを容易にするために、セキュリティ及びＡＰＩの層１０２内に含まれる様々なＡＰＩを実施する。
【００５８】
一実施形態では、ＨＰＣユーザ１５５は、普通ならプラットフォームから独立した方式で、自身の自前のハードウェア及びソフトウェアの環境を利用したいと考える。しかし、ある特定の相対的に要求の厳しいジョブでは、ＨＰＣユーザ１５５は、プラットフォームと統合されたバックエンドハードウェアプロバイダ１１５から利用可能な追加のコンピューティングリソースを、オンデマンドで使用できるようにする「バースト」能力を必要とする。このような状況では、（以下に説明する）セキュリティ及びＡＰＩの層１０２での特定のＡＰＩは、ＨＰＣユーザ１５５の自前の環境上で実行される特定用途向けのスクリプトが、ＨＰＣユーザ１５５の自前のジョブを補完し、ＨＰＣユーザ１５５に結果を返すプラットフォーム上の既定のワークフロー又はジョブを呼び出せるようにする。
【００５９】
この実施形態では、ＡＰＩは、ＨＰＣユーザ１５５とプラットフォームの間のデータ（ジョブ環境設定、入力データ、ジョブが進行中の場合の中間データ、及び結果を含む）の交換を容易にする。その結果、ＨＰＣユーザ１５５は、プラットフォームのウェブサイト上のボタンを単にクリックし、それによって（関連したソフトウェアのインストレーション及び環境設定を含む）ジョブがプラットフォーム上で完全に実行されるようになるか、又は追加のコンピューティングリソースが必要となるときにプラットフォーム上で継続するための「バースト」能力を用いて、（たとえば）ユーザのラップトップ上で部分的に実行されるようになる。
【００６０】
ユーザインターフェース層１５０は、プラットフォームと、ＨＰＣユーザ１５５に提供される様々な異なるインターフェースとの間で双方向通信を容易にする。ユーザインターフェースマネージャ１５２は、ＨＰＣユーザ１５５に提示される様々な異なるユーザインターフェースを生成する。一実施形態では、このようなインターフェースは、利用可能なライブラリからＨＰＣユーザ１５５がソフトウェアを選択できるようにするウェブベースのフォーム、並びにハードウェアコンピューティングリソースの選択肢を含む。ウェブベースの別のフォームは、ＨＰＣユーザ１５５が、自身のモデル、ソフトウェア環境設定、及びワークフロー又はジョブに特有の入力データを入力できるようにする。追加のユーザインターフェースは、個々のＨＰＣタスクを組み合わせ、ループ、条件、及び他の制御フロー構造を実装して、ワークフローの実行を制御するためのワークフローツール（並びに、「完全な」ワークフローの実行を開始する前に、ワークフロー又はジョブの一部分をテストし、ハードウェア及びソフトウェアのリソースを再構成するためのハードウェア及びソフトウェアの調整ツール）を含む。
【００６１】
ユーザ及び顧客のマネージャ１５３は、個々のＨＰＣユーザ１５５及びその企業所属（並びに、ユーザ固有のアクセス制御及び他の制限）を含む、ユーザエンティティのデータベースを生成及び維持する。この「ユーザデータベース」は、ＤＢ１９０に保持される。このユーザデータの記憶装置、並びにマルチプロバイダサーバ１０１によって利用される他のデータは、もちろん、本発明の精神から逸脱することなく、様々な異なる場所にある他の記憶装置にまたがって分散させることができる。図１に示す実施形態では、ＤＢ１９０はまた、バックエンドハードウェア、ソフトウェア、及びライセンスサーバのサードパーティのパートナー及びプロバイダなど、様々な他のエンティティに特有の情報を記憶するために利用される。
【００６２】
この実施形態では、マルチプロバイダサーバ１０１（ＤＢ１９０を含む）の機能は、バックエンドハードウェアプロバイダ１１５のうちの１つ又は複数の、仮想的及び物理的なコンピューティングリソース上に存在する。プラットフォームの所有者／オペレータは、自身の構内（図示せず）にあるクライアント装置から、遠隔でプラットフォームの機能を管理する。
【００６３】
セキュリティ及びＡＰＩの層１０２は、プラットフォームにアクセスする他のエンティティによって提供されるどんなセキュリティをも補完する、データのプライバシー及びセキュリティの均一なレベルを確保にするために、プロビジョニング時、プロビジョニング解除時、及び計算時においてデータを暗号化する、セキュリティメカニズム（データ及びセキュリティのマネージャ１０４を介して実施される）を含む。以下でより詳細に考察するように、プラットフォームは、アクセスされるエンティティのタイプに応じて、様々な異なる目的のために、セキュリティ及びＡＰＩの層１０２内のＡＰＩを利用する。
【００６４】
データ及びセキュリティのマネージャ１０４はまた、内部で利用され、次いで様々なエンティティへの通信のために変換される、均一なデータ構造を実装する。たとえば、パブリッククラウドプロバイダ１１６でさえ、データを記憶及び取得するための、様々なデータ構造及びＡＰＩを有する（デスクトップコンピュータ上の様々なファイルシステムと類似している）。様々なバックエンドハードウェアプロバイダ１１５の間で行ったり来たりでデータを移動するために、プラットフォームは、その普遍的なフォーマットとの間で変換し、こうしたバックエンドハードウェアプロバイダ１１５の様々なＡＰＩと通信しなければならない。
【００６５】
さらに、ソフトウェアは、記憶装置が「ローカル」であるとみなすことが多く、特定のワークフロー又はジョブ用のソフトウェアを環境設定するときに、プラットフォームがデータの実際の物理的（又は仮想的）な場所を抽象化することを求める。一実施形態では、性能が記憶装置の場所によって著しく影響を受ける場合、プラットフォームは、ジョブが実行される前後に変換を実行して、実行中に、性能の理由でローカル記憶装置（すなわち、ジョブが実行される場所）が確実に維持される。
【００６６】
ノード間（たとえば、ＶＭ間）の通信、並びに複数の異なるバックエンドハードウェアプロバイダ１１５にまたがる通信をジョブレベルで取り扱うことにより、プラットフォームは、ユーザがこのような依存性に対処しなくてもよいようにする。さらに、パブリッククラウドプロバイダ１１６は、使用量をＶＭ又は物理サーバのレベルで計測するが、個々のジョブ又はワークフローは、複数のＶＭ又は物理サーバを必要とする場合がある。一実施形態では、ＶＭのうち１つが、ハードウェア障害を経験する場合、プラットフォームは、ジョブの状態を保存し、別のＶＭを再プロビジョニングし、さらに重大な障害を回避するためにジョブを再始動する。多くの場合、ソフトウェアは、ジョブが一時停止／再始動するのに効果的に「気づかない」場合がある。
【００６７】
別の実施形態では、プラットフォームは、ハードウェア環境の「堅牢性」を評価し、ジョブの実行を停止しなければならないリスクを最小限に抑えるために、ジョブ前の診断（たとえば、ＣＰＵ、ディスク性能、及びネットワーク待ち時間テスト）を実行する。他の実施形態では、同様の理由で冗長性のレベルを実現するように、追加のリソースが割り当てられる。
【００６８】
マルチプロバイダマネージャ１０５は、様々な異なるタイプのプロバイダエンティティ（ＨＰＣユーザ１５５、パートナー１３２、バックエンドハードウェアプロバイダ１１５、ソフトウェアプロバイダ１２５、及びライセンスサーバ１２８のプロバイダを含む）との全体的な関係及び通信を管理するための追加の機能を提供する。マルチプロバイダマネージャ１０５は、このようなエンティティとの直接の通信を管理する様々なプラットフォームモジュールと内部で通信する。
【００６９】
一実施形態では、プラットフォームの所有者／オペレータは、様々なサードパーティのパートナー１３２と契約して、そのＨＰＣユーザ１５５との関係の特定の側面を管理する。たとえば、パートナー１３２は、個々人及び企業に、ＨＰＣユーザ１５５になるように求め、そうした求められたＨＰＣユーザ１５５との契約及び課金処理の関係を管理し、並びにそうした求められたＨＰＣユーザ１５５の自前のコンピューティングリソースとプラットフォームとの統合を容易にする役割を担ってもよい。パートナー１３２はまた、バックエンドハードウェアプロバイダ１１５の役割を効果的に果たし、それ自体のハードウェアインフラストラクチャを提供し、又はその求められたＨＰＣユーザ１５５の利益のために、パブリッククラウドプロバイダ１１６又はプライベートクラウドプロバイダ１１７のものを利用してもよい。
【００７０】
パートナー層１３０は、プラットフォームと個々のパートナー１３２との間の通信を実施し、様々な異なるデータ構造、プロトコル、及びＡＰＩの変換を必要とする。パートナーマネージャ１３１は、エンティティのうちでもとりわけ、パートナー１３２、ＨＰＣユーザ１５５、バックエンドハードウェアプロバイダ１１５、及びソフトウェアプロバイダ１２５と、料金、インボイス、及び関連レポートを交換する役割を担う課金処理層１４０など、様々なプラットフォームコンポーネントとの間で、このような変換及びインターフェースを実装する。課金処理マネージャ１４５は、このような料金計算を実施し、インボイス及び関連レポートを生成し、支払いを管理する（マルチプロバイダマネージャ１０５、並びにハードウェア及びソフトウェアの計測マネージャ１８０、並びに他の内部プラットフォームコンポーネントとインターフェースする）。
【００７１】
プラットフォームと統合した最も重要なエンティティの中には、バックエンドハードウェアプロバイダ１１５がある。前述したように、ＨＰＣユーザ１５５のワークフロー及びジョブが、マルチプロバイダサーバ１０１によって直接実行されることはない。その代わりに、プラットフォームは、パブリッククラウドプロバイダ１１６、プライベートデータセンタプロバイダ１１７、及びＨＰＣユーザ１５５によって提供される自前のコンピューティングリソース１１８を含む、複数の異なるハードウェアプロバイダによって提供されるコンピューティングリソースと統合する。
【００７２】
以下でより詳細に説明するように、プラットフォームによって、ＨＰＣユーザ１５５は、利用可能なバックエンドハードウェアプロバイダ１１５のうち１つ又は複数からコンピューティングリソースを選択できるようになる（個々のワークフロー又はジョブのためであっても）。一実施形態では、そうした選択は、ＨＰＣユーザ１５５が設計した特定のワークフロー又はジョブの属性によって選別される。たとえば、特定のソフトウェアパッケージが、特定のバックエンドハードウェアプロバイダ１１５のハードウェア環境上で利用不能な場合、そのバックエンドハードウェアプロバイダ１１５が提供するコンピューティングリソースの選択肢は、ＨＰＣユーザ１５５が見るユーザインターフェースからは欠落することになる。別の実施形態では、このような選択肢の欠如は、ユーザインターフェース（たとえば、相対的に高いレベルのコンピューティングリソースの選択肢のリスト）において明白にはならないが、互換性のないそのような選択肢が、マルチプロバイダサーバ１０１によって内部で選択されることはない。
【００７３】
バックエンドハードウェアプロバイダ１１５の様々なコンピューティングリソース環境へのアクセスは、ハードウェア抽象化層１１０によって管理され、この層は、コンピューティングリソースの内部で生成された均一な公式化されたものを、個々のバックエンドハードウェアプロバイダ１１５が提供する特定のコアタイプ、物理サーバ、又は他の選択肢に変換する。一実施形態では、プラットフォームは（マルチプロバイダマネージャ１０５の助けを借りて）、１００個のＣＰＵコアの必要性など、ＨＰＣユーザ１５５が指定したワークフロー又はジョブの相対的に高いレベルの要求条件を分析する。相対的に高いレベルのこのような要求条件は、２つの異なるバックエンドハードウェアプロバイダ１１５からの異なるコアタイプによって満たされてもよく、一方のプロバイダが、それぞれ１０個のＣＰＵコア／ノードを有する１０個のノード（サーバ）を提供し、他方のプロバイダが、それぞれ５個のＣＰＵコア／ノードを有する２０個のノードを提供する。
【００７４】
ＨＰＣユーザ１５５が、唯一の最適化要因として全コストを指定する場合、１０個のコアを有するノードのコストが、５個のコアを有するノードのコストの２倍を超える場合があるので、後者の選択肢のコストが低くなる場合がある。しかし、その代わりにＨＰＣユーザ１５５が、時間を最適化したいと考える場合（たとえば、コストがさらに大きくなっても、３日ではなく１日で完了するジョブを好む場合）、前者の選択肢が好ましい場合もあるが、それと言うのも、たとえば、１０個のノード間でのノード間通信オーバヘッドが（２０個のノードとは対照的に）、総合のジョブ実行時間を著しく速くする結果となるからである。一実施形態では、プラットフォームは、ＨＰＣユーザ１５５が指定した最適化要因に従って、この決定を自動的に実行する。他の実施形態では、プラットフォームは、ＨＰＣユーザ１５５が最終決定を実行する際の拠り所となる詳細な推奨内容を提示する。様々な異なる要因の他のトレードオフ、及びハードウェアコンピューティングリソースの複数の異なる選択肢の間でのこの比較の他の実装形態が、この決定を実行する際に考慮されてもよいことが、当業者には明白になろう。
【００７５】
別の実施形態では、ＨＰＣユーザ１５５の個々のワークフロー又はジョブに関する選択されたコンピューティングリソースは、複数のバックエンドハードウェアプロバイダ１１５の仮想的及び／又は物理的なハードウェア環境上に実装される。この決定を実行する際、プラットフォームは、上記参照したように、ＨＰＣユーザ１５５が提供したモデル、ソフトウェア、環境設定、及び入力データを含む様々な要因、並びにＨＰＣユーザ１５５が指定した最適化パラメータ（たとえば、合計の暦時間、実行時間、コストなど）を考慮する。
【００７６】
ハードウェア抽象化層１１０を利用して、選択されたコンピューティングリソースをプロビジョニングすることに加えて、プラットフォームはまた、ハードウェア抽象化層１１０を利用して、（ハードウェアコンポーネントとソフトウェアコンポーネントの両方に関して）ワークフローの実行を監視し、コンピューティングリソースをプロビジョニング解除し、様々な課金処理及び他の機能を実行するために、バックエンドハードウェアプロバイダ１１５との双方向通信を管理する。
【００７７】
たとえば、ある特定のバックエンドハードウェアプロバイダ１１５は、コンピューティングリソースをジョブに割り当てるためのそれ自体の「スケジューラ」を有し、プラットフォームは、それぞれ個々のバックエンドハードウェアプロバイダ１１５が必要とする特定のデータ構造、プロトコル、及びＡＰＩ（このようなスケジューラ機能をもたない自前のコンピューティングリソースを統合するためのＡＰＩを含む）に変換される、相対的に高いレベルのスケジューラを実質的に提供する。
【００７８】
（ＨＰＣのタスク、ジョブ、及びさらに複雑なワークフロー内、並びにその全体にまたがって）複数のバックエンドハードウェアプロバイダ１１５へのアクセスを実現することに加えて、プラットフォームはまた、複数のソフトウェアプロバイダ１２５からの複数のサードパーティ製ソフトウェアパッケージの選択肢をＨＰＣユーザ１５５に提供する。ＳＷ抽象化層１２０は、（たとえば、ソフトウェアの更新を受信し、インボイス、使用レポート、及び、課金処理マネージャ１４５及び課金処理層１４０の助けを借りて電子支払いを含む他の課金処理及び支払いの情報を交換するために）、様々なソフトウェアプロバイダ１２５間の様々なＡＰＩを管理して、プラットフォームに統合する。
【００７９】
ＩＳＶ及び顧客ＳＷのマネージャ１２２は、プラットフォームのソフトウェアライブラリを管理し、そのサブセットは、このようなサードパーティ製ソフトウェア（及び、そのコンポーネント機能）に対するそのライセンスの条項に基づいて、指定されたＨＰＣユーザ１５５からアクセス可能になる。ＩＳＶ及び顧客ＳＷのマネージャ１２２は、各バックエンドハードウェアプロバイダ１１５上で、各オペレーティングシステム用の別個のソフトウェア「イメージ」を維持する。一実施形態では、ジョブが実行される前に、プラットフォームは、選択されたハードウェア環境内で必要に応じて複製できるように、関連するイメージをインストールする。このようにして、ＨＰＣユーザ１５５には、選択されたソフトウェアと指定されたハードウェア環境との互換性が事前に確保される。
【００８０】
別の実施形態では、プラットフォームは、後続のワークフロー及びジョブにおいて使用するための所有権を主張できるソフトウェアを、ＨＰＣユーザ１５５が開発及び統合できるようにする、開発及び統合のツールを含む。このようなツールは、利用可能なハードウェア環境との互換性を確保し、ＨＰＣユーザ１５５が指定した最適化要因に従って、最良の「ＨＷ−ＳＷマッチ」のために最適化するための環境設定ツールを提供する。さらに別の実施形態では、プラットフォームは、ＯＳに依存しない「コンテナ」を生成して、様々なオペレーティングシステム及びバックエンドハードウェアプロバイダ１１５にまたがるこのようなソフトウェアのインストレーションを容易にする。
【００８１】
ＩＳＶ及び顧客ＳＷのマネージャ１２２はまた、ワークフロー又はジョブの実行中及び実行後に、分析及び他の対話型ＧＵＩ表示を容易にする「仮想デスクトップ」ツールを含む。アプリケーションがローカルで制御されるが、遠隔で実行される「リモートデスクトップ」ソフトウェアと同様に、仮想デスクトップ機能は、実行中及び実行後にそのジョブのある特定の側面を呼び出し、それを監視するための機能をＨＰＣユーザ１５５に提供する。
【００８２】
前述の通り、様々なＩＳＶは、その知的所有権下にある、サードパーティのライセンスサーバ１２８の場所及び使用について要求条件が異なる。ライセンスサーバ抽象化層１２７は、事実上任意の物理的な場所に設置された様々な異なるライセンスサーバ１２８（複数の異なるＩＳＶにまたがる）と統合する際に、著しい柔軟性をもたらす。たとえば、ＩＳＶによっては、物理的なライセンスサーバ１２８の場所を（たとえば、ＩＳＶの構内又はＨＰＣユーザ１５５の構内に）限定する場合があり、他のＩＳＶは、ライセンスサーバ機能を実装するソフトウェアが、物理的にどこにでも、たとえばパブリッククラウド１１６上にでも配置されるようにする場合がある（ＩＳＶが、ライセンスサーバ機能の完全性を確保するために十分な制御を維持する場合）。
【００８３】
ライセンスマネージャ１２６は、関連するライセンスサーバ１２８上のＨＰＣユーザのライセンスファイルが、その物理的な位置にかかわらず、現在のジョブによってアクセス可能であることを確保するためのツールを提供する（たとえば、認証、並びにチェックイン及びチェックアウトの目的のために、並びにライセンスの条項が間違いなく厳格に強制されるようにするために）。場合によっては、ライセンスサーバ１２８が、ＨＰＣユーザ１５５の構内に配置される場合、特定用途向けの事前の統合が必要となる。
【００８４】
ライセンスマネージャ１２６は、ＨＷ及びＳＷの計測マネージャ１８０と協働して、ライセンスの条項が間違いなく厳格に強制されるようにする。一実施形態では、ＨＰＣユーザ１５５は、ジョブの実行中に、関連するライセンスサーバ１２８を介してプラットフォームがアクセス可能にする「持込み」（ＢＹＯＬ）ライセンスを提供する。別の実施形態では、プラットフォームの所有者／オペレータはまた、関連するＩＳＶから事前の許可を得て、この同じ目的のためにオンデマンドライセンス（プリペイド及び他の方式で）を生成する。この状況では、ＨＰＣユーザ１５５が提供するＢＹＯＬライセンスが異常終了する場合（たとえば、古いバージョン又は他の理由により）、プラットフォームは、ジョブを実行するために（又は、別の実施形態では、割り当てられた使用要件をＨＰＣユーザ１５５が超えた場合に、オンデマンドの「バースト」機能を提供するために）、プラットフォームがホストするライセンスサーバ１２８へのアクセスを自動的にリダイレクトすることができる。
【００８５】
プラットフォームとのこのレベルの統合に起因して、ＨＰＣユーザ１５５は、既存のＢＹＯＬ（場合によってはオンデマンドでの）ライセンシング方式の制約の多くから解放される。サードパーティのライセンスサーバ１２８とのプラットフォームの統合レベルは、ジョブの実行中に双方向通信を提供し、プロキシを利用して、様々な異なるバックエンドハードウェアプロバイダ１１５（ＨＰＣユーザ１５５の物理的な場所での自前のファイアウォールを含む）にまたがるファイアウォールの問題に対処する。このようなライセンスサーバ１２８をあらかじめ精査することにより、プラットフォームは、ＨＰＣユーザ１５５への不必要なハードウェアプロビジョニングのコストを回避する（たとえば、ライセンス認証が異常終了する場合）。
【００８６】
ワークフローを設定する際にＨＰＣユーザ１５５を支援するために、ワークフローマネージャ１７０は、通常、ＨＰＣユーザ１５５が対処せざるを得なくなるハードウェア及びソフトウェアの互換性の問題から隔離されたツールを提供する。すなわち、こうしたワークフローツールは、相対的に高い抽象化レベルにあり、ＨＰＣユーザ１５５が、その指定されたＨＰＣタスクの機能に焦点を合わせることができるようにする。
【００８７】
前述したように、ワークフローマネージャ１７０は、ＨＰＣユーザ１５５が、個々のＨＰＣのタスク及びジョブ（複数のバックエンドハードウェアプロバイダ１１５のハードウェアリソースにまたがって実行する複数のソフトウェアプロバイダ１２５からのソフトウェアパッケージを含む）の内部で及び、それにまたがっての両方で、ループ、条件、及び他の制御フロー構造を実装できるようにするテンプレート及びツールを含む。ある１つのタスクの出力を、後続のタスクへの入力としてリダイレクトすることができる。指定された制約による中間結果に基づいて、指定されたタスクへと実行を分岐することができる。たとえば、飛行機の翼を設計する場合においては、一般的な繰り返し計算又は「スイープ」が、翼の角度を変化させることになる。翼の角度を確定するのに使用されるパラメータのみを変化させて、複数のテストランで同じ計算を繰り返すことができる。
【００８８】
さらに、ＨＷ及びＳＷの調整装置１７２は、ＨＰＣユーザ１５５が、所望のハードウェアリソース及びソフトウェアの環境設定パラメータの選択を容易にするための「テストラン」を設計できるようにするツールを含む。たとえば、ＨＰＣユーザ１５５は、頻繁に繰り返されるジョブの相対的に小さな部分を識別し、複数の異なるハードウェア環境設定でその部分をテストすることができる。所望の環境設定が確定されると、所望のハードウェアコンピューティングリソースをプロビジョニングして、ジョブ全体を実行することができる。別の実施形態では、ＨＰＣユーザ１５５は、条件が満たされた場合に、所望のハードウェア環境でのジョブ全体の再環境設定及び実行を自動的に引き起こすことになる、テストラン用の条件を指定する。このような「ハードウェア調整」ツールは、テスト目的のための柔軟性を実現するだけでなく、ハードウェアコンピューティングリソースの選択がうまくいかないために最終的に異常終了する（又は、著しいリソースを浪費する）、費用のかかる長時間のジョブを回避することによって、コスト削減を実現する。
【００８９】
ＨＷ及びＳＷの調整装置１７２はまた、ＨＰＣユーザ１５５が、適切なハードウェアコンピューティングリソースを識別するために、そのワークフロー及びジョブのソフトウェア特有の側面を測定するためのテストランを設計できるようにする「ソフトウェア調整」ツールを含む。たとえば、ＨＷ及びＳＷの調整装置１７２は、ＨＰＣユーザ１５５が、所望の環境設定を選択する前に、様々な環境設定（たとえば、特定のソフトウェアドライバの様々な実装形態など）の性能をテスト及び比較できるようにする。
【００９０】
他の場合では、たとえば、ある特定の条件が満たされるまで計算を繰り返すこと、又は他の条件が満たされる場合に分析ソフトウェアを呼び出すことなど、中間結果に基づいてさらに複雑なワークフローを開発することができる。さらに、部分結果又は中間結果は、ハードウェア環境設定を変更する必要があることを示してもよく、たとえば、ＧＰＵのみの環境設定を含むか、又はプロビジョニングされたＶＭの数を増やすか若しくは減らす必要があることを示してもよい。
【００９１】
前述の通り、ＨＷ及びＳＷの調整装置１７２はまた、ＨＰＣユーザ１５５が、とりわけジョブ実行時間やジョブのコストなど、最適化要因を指定できるようにする最適化ツールを含む。このようなツールは、実行時間及び価格設定の「スイートスポット」（たとえば、ノードのコスト、通信オーバヘッド、ライセンス制限、及び他の様々な要因のバランスをとること）を見つける自動化手段を提供する。
【００９２】
分析マネージャ１７４は、ジョブ又はさらに複雑なワークフローの実行中と実行後の両方において使用するために、（たとえば、プラットフォームのソフトウェアライブラリに含まれる）分析ソフトウェアの環境設定をカスタマイズするためのツールを提供する。一実施形態では、このような分析ソフトウェアは、ワークフローの中間結果を監視するだけでなく、ある特定のパラメータを修正することによって、そうした結果に影響を及ぼし、このような修正の効果をリアルタイムに視覚化できるようにする対話型のＧＵＩベースのツールを、ＨＰＣユーザ１５５に提供する。
【００９３】
ＨＰＣユーザ１５５が、ジョブ又はワークフローを定義及び環境設定し、ハードウェア及びソフトウェアを調整すると、ＨＰＣタスクマネージャ１７５を利用して、選択されたハードウェア環境上の指定されたコンピューティングリソースをプロビジョニングし、選択されたソフトウェアをインストール及び環境設定し、ワークフローの実行を開始する。ＨＰＣタスクマネージャ１７５はまた、ワークフローの実行を監視して、中間状況（たとえば、プロビジョニングされたＶＭなど、ジョブ又はその一部分が異常終了する場合）を取得し、ワークフローが完了するか、又は途中で終了するときにＨＰＣユーザ１５５に警告する。
【００９４】
前述の通り、ＨＷ及びＳＷの計測マネージャ１８０は、様々な異なる目的のために、ワークフローの実行中にハードウェアとソフトウェアの両方のリソースの使用状況を監視する。ハードウェア及びソフトウェアの監視された使用状況データは、たとえば、インボイスを送り、レポートを提示し、ＨＰＣユーザ１５５及びパートナー１３２、並びにバックエンドハードウェアプロバイダ１１５及びソフトウェアプロバイダ１２５と支払いを交換するための、料金計算用の基礎を提供する。ＨＷ及びＳＷの計測マネージャ１８０は、この点に関しては、課金処理マネージャ１４５及び課金処理層１４０と対話する。
【００９５】
さらに、ＨＷ及びＳＷの計測マネージャ１８０はまた、ライセンスマネージャ１２６と協働して、ソフトウェアの使用状況を監視し、関連するライセンシング方式の順守を確実にする。前述したように、プラットフォームがハードウェア及びソフトウェアのプロバイダと統合すること、並びにハードウェア及びソフトウェアの使用状況を個別の粒度レベルで監視できることで、新しいタイプの価格設定方式が容易になる。ハードウェア及びソフトウェアの使用量（すなわち、時間）に基づく、消費ベースのオンデマンド価格設定に加えて、他の実施形態では、結果ベースの価格設定及び他の形式の価格設定（たとえば、ハードウェアリソースの消費量に基づく）もサポートすることができる。
【００９６】
たとえば、一実施形態では、価格設定は、ジョブの「正常終了」に基づいており、ジョブ中又はジョブ完了後にソフトウェアから抽出された結果から決定される、指定された目標によって測定される。別の実施形態では、時間のブロックの事前購入がサポートされており、すなわち、監視された実際のハードウェア及び／又は使用量が適用される払戻し不可の金額としてサポートされる。このようなブロック購入は「数量割引」価格で提供され、超過料金は、禁止されるか、又は割増し料金で請求される。
【００９７】
様々な、消費ベース、結果ベース、並びに他のハードウェア及びソフトウェアの価格設定方式及びライセンシング方式が当業者には明らかとなり、これらはすべて、プラットフォームが複数のハードウェア及びソフトウェアのプロバイダと統合すること、並びに個々のタスク、ジョブ、及びさらに複雑なＨＰＣワークフロー内で及び、それにまたがっての両方で、緊密に統合されたその監視メカニズムによってサポートされる。このマルチプロバイダの手法により、ＨＰＣユーザ１５５は、ＨＰＣワークフローのコストの可視性が向上し、並びに様々なハードウェア及びソフトウェアの環境を「混合及びマッチさせ」、余剰能力及び他の環境設定のために自前のハードウェアからクラウドに「バースト」し、価格を設定し、選択肢をライセンシングすることによって、コスト、時間、及び他の所望の要因を最適化するための柔軟性が得られる。
【００９８】
図２での流れ図２００は、（ＨＰＣユーザ１５５の視点からは）ＨＰＣワークフローの設計及び実行に動的な外観を提示する。任意のＨＰＣユーザ１５５が、さらにジョブ又はワークフローの設計を開始する前に、プラットフォームは、（ハードウェア抽象化層１１０を介して）バックエンドハードウェアプロバイダ１１５を用いて、ステップ２０１においてハードウェアプロバイダのセットアップをあらかじめ確立する。一実施形態では、プラットフォームは、選択されたバックエンドハードウェアプロバイダ１１５に、マルチプロバイダサーバ１０１の機能をプロビジョニング及びインストールし、そこから、他のサードパーティプロバイダと先に論じた様々な抽象化層及び統合化層を提供する。
【００９９】
さらに、ステップ２０２において、プラットフォームは、必要なソフトウェアドライバとともに、サポートされる各オペレーティングシステム用のそのソフトウェアライブラリでの各バージョンのソフトウェアのイメージを生成及びインストールする。これにより、プラットフォームは、互換性がすでに確認されていることが確実な状態で、選択された任意のソフトウェアパッケージの適切なイメージを、プロビジョニングされた任意のハードウェア環境にインストールできるようになる。プラットフォームはさらに、ユーザインターフェース層１５０を介して、ＨＰＣユーザ１５５がプラットフォームにアクセスするためのウェブ１５６、ＣＬＩ１５７、及びＡＰＩクライアント１５８のインターフェースを実装する。
【０１００】
ＨＰＣユーザ１５５が最初に、プラットフォーム上でワークフローを準備及び実行したいと考えると、このユーザは通常、まずはそのモデルを定義し、所望のソフトウェアを初期化するために自身が供給する入力データを準備する（ステップ２０４で）。ＨＰＣユーザ１５５は、次いで、ステップ２０６でプラットフォームのワークフローツールを呼び出し、プラットフォームにそのモデル及び入力データを提供する。プラットフォームのワークフローツールは、ステップ２０８において、ＨＰＣユーザ１５５が１つ又は複数の所望のソフトウェアパッケージをそこから選択するソフトウェアライブラリを、ＨＰＣユーザ１５５に提示する。前述の通り、ワークフローは、単一のジョブワークフロー、又はさらに複雑な複数のジョブワークフローの一部分として、複数のソフトウェアパッケージを含むことができる。
【０１０１】
次いで、ステップ２１０において、ワークフローツールは、バックエンドハードウェアプロバイダ１１５から利用可能なハードウェアリソースの「コアタイプ」、及び他のサーバ環境設定のリストを、ＨＰＣユーザ１５５に提示する。一実施形態では、プラットフォームは、各バックエンドハードウェアプロバイダ１１５が提供する特定のコアタイプ及び物理サーバの環境設定よりも高いレベルの抽象度で、こうした選択肢を生成及び提示する。他の実施形態では、この選択肢は、（たとえば、ＨＰＣユーザ１５５が、所望のプロバイダを選択又は回避できるようにするために）、このような選択肢を提供する特定のバックエンドハードウェアプロバイダ１１５を識別する。
【０１０２】
別の実施形態では、このリストは、ユーザのこれまでのソフトウェア選択に基づいて選別される（たとえば、選択されたソフトウェアが、ある特定のバックエンドハードウェアプロバイダのプラットフォームと互換性がないか、又はそうでなければ利用不能である場合）。他の実施形態では、プラットフォームは、ユーザのモデル及び他の入力データを分析し、その分析に基づいて、推奨されるハードウェアリソース選択肢をＨＰＣユーザ１５５に提供する。
【０１０３】
利用可能なハードウェアリソース選択肢の中からＨＰＣユーザ１５５が選択すると、プラットフォームのワークフローツールは、ワークフロー及び各コンポーネントのジョブを環境設定するためのインターフェースを、ＨＰＣユーザ１５５に提示する。前述の通り、この構成は、選択されたソフトウェアパッケージ、並びにユーザのモデル及び他の入力データに基づいて、アプリケーションに依存する。ここでも、プラットフォームは、これまでに選択されたハードウェア及びソフトウェアの選択肢間での任意の依存性を自動的に解決するので、さらに高いレベルの抽象度で選択肢が提示される。一実施形態では、ワークフローツールは、これまでに選択されたハードウェアコンピューティングリソースに基づいて決定されるハードウェア特有の選択肢を自動的に環境設定する（ただし、コアの所望の数など、ハードウェア特有のパラメータの追加指定がやはり必要となる場合がある）。
【０１０４】
プラットフォームのワークフローツールの助けを借りて、ＨＰＣユーザ１５５は、所望の制御フロー環境設定（たとえば、複数のＨＰＣタスク及び／又は複数のジョブが関与している場合）を決定し、ワークフローツールが提供する選択肢に従ってそれらを指定する。前述の通り、ワークフローは、複数のソフトウェアパッケージを含んでもよく、制御フローは、後続のソフトウェアパッケージが呼び出される条件を決定し、並びに、ある１つのパッケージの結果が、別のパッケージへの入力として提供されるかどうか判定する。
【０１０５】
任意のワークフロー前のハードウェア又はソフトウェアの調整が望まれる場合、ＨＰＣユーザ１５５は、ステップ２１４でＨＷ調整ツールを呼び出し、及び／又はステップ２１６でＳＷ調整ツールを呼び出す。一実施形態では、プラットフォームは、ハードウェア及びソフトウェアの調整用の共通テンプレートを提示する。別の実施形態では、オプティマイザツールが提供され、所望の最適化要因（たとえば、時間、コストなど）、並びに指定されたハードウェアリソース環境設定が受け入れられることになるか、又は拒否されることになる条件を、ＨＰＣユーザ１５５が指定できるようになる。さらに別の実施形態では、ＨＰＣユーザ１５５は、ハードウェア及び／又はソフトウェアの調整プロセスの精密な制御フローを指定する特定用途向けのスクリプトを提供する。
【０１０６】
ＨＰＣユーザ１５５は、定義されたワークフローをステップ２２０で開始する。しかし、ＨＰＣユーザ１５５が、ステップ２１４又は２１６において、任意のハードウェア又はソフトウェアの調整「テストラン」を指定した場合、プラットフォームは、以下に説明するように、そうしたテストランを最初に実行することになると留意されたい。
【０１０７】
ステップ２２２において、マルチプロバイダサーバ１０１は、ステップ２１０においてＨＰＣユーザ１５５によって選択された（又は、ＨＰＣユーザ用に生成された）１つ又は複数のバックエンドハードウェアプロバイダ１１５上に、選択されたハードウェアコンピューティングリソースをプロビジョニングする。マルチプロバイダサーバ１０１はまた、このモデル及びユーザ入力データを、プロビジョニングされたハードウェア環境に複製する。
【０１０８】
ステップ２２４において、マルチプロバイダサーバ１０１は、選択されたソフトウェアイメージの適切なバージョンを、プロビジョニングされたハードウェア環境にインストールし、次いで、ステップ２１２で定義された、指定された環境設定に従って、このようなソフトウェアを環境設定する。前述の通り、ソフトウェアの複数のインスタンスは、ハードウェアリソース環境設定に応じて（たとえば、指定されたコアの数に基づいて）、（たとえば、複数のＶＭ又は物理サーバに、又潜在的には複数のバックエンドハードウェアプロバイダにまたがって）さらに複製されてもよい。追加のインスタンスはまた、ワークフローの実行中に複製及び／又は破壊される場合がある。
【０１０９】
ステップ２２６において、マルチプロバイダサーバ１０１は、プロビジョニングされたハードウェア環境にインストール及び環境設定されたソフトウェアと、関連する各ライセンスサーバ１２８との間の（ＳＷ抽象化層１２０を介した）接続を環境設定する。これにより、ワークフローの実行中に、ＨＰＣユーザ１５５が認証され、個々の機能がチェックアウト及びチェックインされると、ソフトウェアを適切に実行できるようになる。
【０１１０】
一実施形態では、相対的に短い期間（たとえば、１年ではなく１日）でのライセンスキーが繰り返し生成されて、セキュリティの追加層を提供する（たとえば、「偽の」ライセンスサーバが、有効なライセンスキーを取得した後に操作を継続するのを防止するため）。ライセンスマネージャ１２６は、関連するライセンスサーバ１２８との頻繁な（たとえば、日々の）通信を（ＳＷ抽象化層１２０を介して）管理して、頻繁に再生成されるこうしたライセンスキーを認証し、許可されたＨＰＣユーザ１５５による継続アクセスを確実にする。
【０１１１】
この時点で、ステップ２２８において、マルチプロバイダサーバ１０１は、任意の指定されたハードウェア及び／又はソフトウェアの調整テストランを実行する。通常、実際のジョブ又はワークフローよりもはるかに小さく迅速であるが、こうしたテストランは、一実施形態では、指定されたコンピューティングリソースの自動再環境設定につながることがある。他の実施形態では、プラットフォームは、ＨＰＣユーザ１５５への推奨を生成するか、又は、ＨＰＣユーザ１５５がこのような任意の再環境設定についての自身の判定を下す際の拠り所となる結果を単に提供する。
【０１１２】
したがって、ステップ２３５において、ＨＰＣユーザ１５５（又は、前述の他の実施形態ではプラットフォーム）は、ステップ２０８及び２１０においてこれまでに作成されたハードウェア及び／又はソフトウェアの選択肢を「再調整」するかどうか判定する。再調整が必要か、又は望まれる場合、制御は、ステップ２０８に戻る（この時点で、ＨＰＣユーザ１５５が、ハードウェア及び／又はソフトウェアの調整ツールを再呼出しするかどうかに応じて、さらなるハードウェア及び／又はソフトウェアの調整が発生してもよいし、又は発生しなくてもよい。前述の通り、一実施形態では（図示せず）、プラットフォームは、コンピューティングリソースを自動的に再環境設定し、ステップ２２０においてワークフローの実行を再開始する（再プロビジョニングが必要となる場合があるので）。
【０１１３】
そうでなければ、ステップ２３５で再調整が指示されないと、マルチプロバイダサーバ１０１は、ステップ２４０において「完全な」ワークフローの実行を開始する。前述の通り、プラットフォームは、（使用量及び課金処理の目的のための）ハードウェア及びソフトウェアの計測を含め、ステップ２４２でのワークフローの実行を監視し、並びにワークフローで指定される制御フローの実施を監視する。
【０１１４】
ワークフローの実行が完了すると（場合によっては早期終了を含む）、プラットフォームは、ステップ２４４において「クリーンアップ」プロセスを実施する。ステップ２５０において（ユーザインターフェース層１５０を介して）、結果が抽出され、記憶され、ＨＰＣユーザ１５５に提供される。さらに、前述の通り、プラットフォームは、ハードウェアリソースをプロビジョニング解除し、課金処理及び他の目的のために、計測されたハードウェア及びソフトウェアの使用情報を抽出し、これをプラットフォーム上に記憶する。また前述したように、このような分析ソフトウェアの実行は、（このようなソフトウェアが、プラットフォームのソフトウェアライブラリの一部分なので）ワークフロー自体の一部分とみなされるが、（一実施形態では、ワークフローの実行中を含む）結果に対して、分析を実行してもよい。
【０１１５】
本発明は、添付図に示すように、特定の実施形態を参照して本明細書に記載されてきた。本発明の機能的構成要素及び動的動作の各実施形態の数多くの変形形態が、本発明の精神から逸脱することなく、当業者には明らかになろう。
【図１】
2021527265.tif 000003
【図２】
2021527265.tif 000004
【手続補正書】
【提出日】令和3年8月26日(2021.8.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
（ａ）複数のバックエンドハードウェアプロバイダ（１１５）にまたがる複数のハードウェアコアタイプの中から選択することによって、プラットフォームのユーザ（１５５）がジョブを環境設定できるようにする、バックエンドハードウェアプロバイダの抽象化層（１１０）と、
（ｂ）関連付けられたバックエンドハードウェアプロバイダ（１１５）からの選択されたハードウェアコアタイプに関連付けられたハードウェアリソースをプロビジョニングし、前記ユーザのジョブの実行を呼び出す、マネージャ（１０５）と、
（ｃ）前記ジョブの実行中に、前記プロビジョニングされたハードウェアの使用状況を監視する、ハードウェア計測モジュール（１８０）と、
（ｄ）前記ジョブの結果に前記ユーザ（１５５）がアクセスできるようにする、ユーザインターフェース層（１５０）と
を含む、統合されたクラウドベースのプラットフォーム（１００）。
【請求項２】
複数のソフトウェアプロバイダ（１２５）にまたがる複数のソフトウェアパッケージの中から選択することによって、前記ユーザ（１５５）が前記ジョブをさらに環境設定できるようにする、ソフトウェア抽象化層（１２０）をさらに含む、請求項１の統合されたクラウドベースのプラットフォーム（１００）。
【請求項３】
前記ジョブの実行中に、前記選択されたソフトウェアパッケージの使用状況を監視する、ソフトウェア計測モジュール（１８０）をさらに含む、請求項１の統合されたクラウドベースのプラットフォーム（１００）。
【請求項４】
前記ユーザのジョブと前記ユーザ（１５５）によって選択されるソフトウェアパッケージに関連付けられたライセンスサーバ（１２８）との間のネットワーク接続を実装する、ライセンスサーバ抽象化層（１２７）をさらに含む、請求項１の統合されたクラウドベースのプラットフォーム（１００）。
【請求項５】
（ａ）複数のソフトウェアプロバイダ（１２５）にまたがる複数のソフトウェアパッケージの中から選択することによって、前記ユーザ（１５５）が前記ジョブをさらに環境設定できるようにする、ソフトウェア抽象化層（１２０）と、
（ｂ）前記ユーザのジョブと前記ユーザ（１５５）によって選択されるソフトウェアパッケージに関連付けられたライセンスサーバ（１２８）との間のネットワーク接続を実装する、ライセンスサーバ抽象化層（１２７）と、
（ｃ）前記ジョブの実行中に、前記選択されたソフトウェアパッケージの使用状況を監視する、ソフトウェア計測モジュール（１８０）と、を含み
（ｄ）前記マネージャ（１０５）が、前記ユーザのジョブの実行を呼び出す前に、前記プロビジョニングされたハードウェア上に前記選択されたソフトウェアをインストール及び環境設定する、
請求項１の統合されたクラウドベースのプラットフォーム（１００）。
【請求項６】
前記バックエンドハードウェアプロバイダの抽象化層（１１０）が、コンピューティングリソースの均一な公式化されたものを、第１のバックエンドハードウェアプロバイダ（１１５）に特有の第１のコアタイプに変換し、前記統合されたクラウドベースのプラットフォーム（１００）がさらに、（ｉ）前記第１のコアタイプに関連付けられた第１のコンピューティングリソースのセットを含む第１のタスクを前記第１のバックエンドハードウェアプロバイダ（１１５）上にプロビジョニングし、（ｉｉ）前記第１のタスクの実行を開始するタスクマネージャ（１７５）を含む、請求項１の統合されたクラウドベースのプラットフォーム（１００）。
【請求項７】
前記バックエンドハードウェアプロバイダの抽象化層（１１０）が、前記コンピューティングリソースの均一な公式化されたものを、第２のバックエンドハードウェアプロバイダ（１１５）に特有の第２のコアタイプに変換し、前記タスクマネージャ（１７５）が、（ｉ）前記第２のコアタイプに関連付けられた第２のコンピューティングリソースのセットを含む第２のタスクを前記第２のバックエンドハードウェアプロバイダ上にプロビジョニングし、（ｉｉ）前記第２のタスクの実行を開始する、請求項６の統合されたクラウドベースのプラットフォーム（１００）。
【国際調査報告】
2021527265.tif 000005
2021527265.tif 000006