"複数のコンピューティングノードを含む並列処理コンピューティングシステム上でのアプリケーションの実行の方法であって、前記方法は、複数のアルゴリズムを受信し、前記アルゴリズムをアルゴリズムライブラリに追加することと、カーネルを受信し、前記カーネルをカーネルライブラリに追加することであって、前記カーネルは、前記アルゴリズムの実行によって呼び出される実行可能プログラムである、ことと、前記アルゴリズムのうちの要求された1つの実行のための要求を受信することと、前記アルゴリズムのうちの要求された1つを前記アルゴリズムライブラリから前記コンピューティングシステムに転送することと、前記コンピューティングシステムに、前記アルゴリズムによって使用される入力データセットを転送することと、前記入力データセットを使用して、前記コンピューティングシステム上で前記アルゴリズムのうちの要求された1つを実行し、1つ以上の出力データセットを生成することであって、前記アルゴリズムのうちの要求された1つによって前記呼び出されるカーネルの各々は、前記カーネルライブラリから前記コンピューティングシステムに転送され、前記アルゴリズムの実行をもたらす、こととを含み、前記アルゴリズムの各々は、呼び出されるべき前記カーネル、使用されるべき前記入力データセットの名称、生成されるべき前記出力データセットの名称、および前記アルゴリズムの各々の各ステップを実行する際に使用されるべき前記ノードの数を示す、方法。前記アルゴリズムの各々は、状態および状態遷移を備えている状態機械であり、前記状態の各々は、カーネル呼び出しである、請求項1に記載の方法。前記カーネルの各々を実行することは、前記カーネルをコールする1状態アルゴリズムを実行することを含む、請求項1に記載の方法。前記要求は、前記並列処理コンピューティングシステム外部の第2のコンピューティングシステムから受信され、第3のコンピューティングシステムが、前記アルゴリズムを受信し、前記要求を受信し、前記アルゴリズムおよび前記入力データセットを前記並列処理コンピューティングシステムに転送する機能を果たす、請求項1に記載の方法。前記アルゴリズムの各々は、一組の状態を備えている状態機械であり、前記状態の各々は、単一のカーネルを備え、前記単一のカーネルは、コンパイルされたソフトウェアと状態遷移のリストとを含み、前記状態遷移のリストは、制御が前記状態のうちの別の1つに転送される条件を示し、前記状態の各々は、実行されるべきカーネルを特定する印と、前記実行されるべきカーネルによって使用可能な最小数、最大数、および最適数の前記ノードを動的に規定するクラスタノード割当エントリと、前記状態のうちの1つを1つ以上の他の状態と一緒に条件付きでリンクする状態リストとを含み、前記状態の各々は、前記ノードのうちの別個の1つ上で実行される、請求項1に記載の方法。前記ノードの各々は、複数のプロセッサを有することにより、複数の前記プロセッサ上で、並列スレッドが単一の状態遷移から生み出されることを可能にする、請求項5に記載の方法。前記実行されるべきカーネルを特定する印は、カーネルライブラリ内のカーネルのアドレスである、請求項5に記載の方法。複数のコンピューティングノードを含む並列処理コンピューティングシステム上でのアプリケーションの実行のためのシステムであって、アルゴリズムを含むアルゴリズムライブラリと、前記アルゴリズムによって使用されるカーネルを含むカーネルライブラリと、アルゴリズム実行モジュールと、カーネル実行モジュールと、を備え、呼び出されるカーネルと、前記アルゴリズムによって使用される入力データセットおよび前記アルゴリズムの各々からの出力データセットの名称と、前記アルゴリズムの各々の各ステップを実行する際に使用されるべき前記ノードの数とは、前記アルゴリズムの各々において示され、前記アルゴリズムのうちの要求された1つは、前記アルゴリズムライブラリから前記コンピューティングシステム内にロードされ、前記アルゴリズムによって使用される前記入力データセットは、前記コンピューティングシステムに転送され、前記アルゴリズムのうちの要求された1つは、前記コンピューティングシステムによって実行され、前記出力データセットを生成し、前記アルゴリズムのうちの要求された1つは、前記アルゴリズム実行モジュールの制御の下で実行され、前記アルゴリズムによって呼び出される前記カーネルの各々は、前記カーネル実行モジュールの制御の下で実行され、前記カーネルは、前記カーネルライブラリから転送され、前記カーネルの実行に先立って、前記コンピューティングシステム内にロードされる、システム。前記アルゴリズムの各々は、状態および状態遷移を備えている状態機械であり、前記状態の各々は、カーネル呼び出しである、請求項8に記載のシステム。前記カーネルの各々を実行することは、前記カーネルをコールする1状態アルゴリズムを実行することを含む、請求項8に記載のシステム。前記アルゴリズムのうちの要求された1つの実行のための要求は、前記コンピューティングシステム外部のシステムから受信される、請求項8に記載のシステム。前記アルゴリズムの各々は、一組の状態を備えている状態機械であり、前記状態の各々は、単一のカーネルを備え、前記単一のカーネルは、コンパイルされたソフトウェアと状態遷移のリストとを含み、前記状態遷移のリストは、制御が前記状態のうちの別の1つに転送される条件を示し、前記状態の各々は、前記実行されるべきカーネルを特定する印と、前記実行されるべきカーネルによって使用可能な最小数、最大数、および最適数の前記ノードを動的に規定するクラスタノード割当エントリと、前記状態のうちの1つを1つ以上の他の状態と一緒に条件付きでリンクする状態リストとを含み、前記状態の各々は、前記ノードのうちの別個の1つ上で実行される、請求項8に記載の方法。前記ノードの各々は、複数のプロセッサを有することにより、複数の前記プロセッサ上で、並列スレッドが単一の状態遷移から生み出されることを可能にする、請求項12に記載の方法。前記実行されるべきカーネルを特定する印は、カーネルライブラリ内のカーネルのアドレスである、請求項12に記載の方法。複数のコンピューティングノードを含む並列処理コンピューティングシステム上で実行可能な状態機械であって、前記状態機械は、一組の状態を備え、前記状態の各々は、単一のカーネルを備え、前記単一のカーネルは、コンパイルされたソフトウェアと、制御が別の前記状態のうちの1つに転送される条件を示す状態遷移とを含み、前記状態の各々は、実行されるべきカーネルを特定する印と、前記実行されるべきカーネルによって使用可能な最小数、最大数、および最適数の前記ノードを動的に規定するクラスタノード割当エントリと、前記状態のうちの1つを1つ以上の他の状態と一緒に条件付きでリンクする状態リストとを含み、前記状態の各々は、前記ノードのうちの別個の1つ上で実行される、状態機械。前記ノードの各々は、複数のプロセッサを有することにより、複数の前記プロセッサ上で、並列スレッドが単一の状態遷移から生み出されることを可能にする、請求項12に記載の状態機械。前記実行されるべきカーネルを特定する印は、カーネルライブラリ内のカーネルのアドレスである、請求項12に記載の状態機械。本システムの主要機能は、カーネルと呼ばれる、小さなランタイム状態機械関連プログラムを記憶、制御、および実行することを含む。システムは、4つのインターフェース方法:カーネル管理、アルゴリズム管理、カーネル実行、およびアルゴリズム実行を使用する。アルゴリズムと、アルゴリズムにおいて使用されるカーネルと、アルゴリズムへの入力およびそこからの出力と、アルゴリズムの各々の各ステップを実行する際に使用されるコンピューティングノードの数とは、最初に定義される。アルゴリズムおよびカーネルは、それぞれのライブラリに追加される。アルゴリズムのうちの1つの実行のための要求が受信され、アルゴリズムのための入力データセットがシステムに転送される。要求されたアルゴリズムは、次いで、出力データセットを生成するために実行される。図1は、高性能コンピューティングアプリケーションの実行のための本システム100の一実施形態における高レベル構成要素を示す例示的略図である。アプリケーションは、本明細書では、エンドユーザアクセス可能アルゴリズムと定義される。図1に示されるように、システム100は、動作時、カーネル管理モジュール110、アルゴリズム管理モジュール105、カーネル実行モジュール130、およびアルゴリズム実行モジュール125を実行する、プロセッサ101を含む。システム100はさらに、それぞれ、アルゴリズム117およびカーネル122を記憶する、ライブラリ115/120を含む。システム100は、システム関数の管理を提供し、システム要求を発行する、ホスト管理システム145に結合される。アルゴリズム実行モジュール125は、実行されるアルゴリズムによって呼び出される、カーネルの実行を開始する。アルゴリズム実行システム135は、システム100内に記憶されたカーネルを実行することができる、複数のコンピューティングノード140を伴う任意のコンピューティングシステムを備え得る。管理システム145は、本システム100からのサービスを要求する、任意の外部クライアントコンピュータシステムであることができる。以下に詳細に説明される、これらのサービスは、カーネルまたはアルゴリズムが、現在のシステム内のそれぞれのライブラリに追加/変更/そこから削除されるよう要求することを含む。加えて、外部クライアントシステムは、カーネル/アルゴリズムが実行されるよう要求することができる。カーネルおよびアルゴリズム管理ならびに実行の説明は、単に、例示であって、請求されるシステムは、本明細書に提示される具体的ファイル名、フォーマット、および命令に限定されないことに留意されたい。カーネル管理カーネルは、データ変換/データコードを含み、プログラム実行制御コードを含まない実行可能コンピュータプログラムまたはプログラムセグメントである。実行制御コードは、どのコードが、次に実行されるべきかを変更することができる、任意のコードである。本明細書に説明される例示的実施形態では、カーネル122は、カーネルライブラリ120内のカーネルライブラリファイル121に記憶される。システム100は、例示的実施形態では、.DLLDynamicLinkedLibraryまたは.SOSharedObjectライブラリ、あるいは着目カーネルを含む他のライブラリファイルを追加、更新、または削除することによって、カーネルライブラリファイル121内のカーネルを追加、変更、または削除するカーネル管理を提供する。このセクションにおけるシステムの参照は、一般に、システム100を指し、適用可能実施形態では、より具体的には、カーネル管理モジュール110を指す。ホストシステム145からシステム100に送信される全カーネル管理メッセージは、ライブラリおよびカーネル情報を含む。カーネル情報フィールドは、Library_TitleおよびKernel_Titleである。管理タスクの完了に応じて、システムは、完了ステータスを含むReturnStatusメッセージを作成および送信する。Statusフィールドは、タスクが正常に完了した場合のゼロ、またはタスクが完了され得なかった場合の非ゼロを含む。カーネル122は、最初のカーネルが追加されると作成され、最後のカーネルが削除されると削除されるカーネルライブラリファイル121内において、同一発信元組織およびカテゴリからの他のカーネルとグループ化される。ライブラリファイルの名称Library_Titleは、その間に文字_を伴う、組織名とカテゴリ名との連結である。ライブラリは、システムによって、プラットフォームとして使用される、オペレーティングシステムに応じて、ファイルタイプ.DLL、.SO、または他のライブラリファイルタイプである。ライブラリKernel_Title内のカーネルの関数名は、その間に文字_を伴う、ユーザ名と連結されたカーネル名である。ユーザ名内の文字は、文字列_MPT_と置換される。Kernel_Titleはさらに、カーネルがポストまたは公開された場所に応じて、文字列_OWN、_POST、または_PUBLISHと連結される。関数は、所有者/組織の所望および開発ステータスに応じて、同時に、OWN、POST、およびPUBLISH形式において存在し得る。カーネルの追加システムが、Kernel_Add_Requestメッセージを受信すると、システムは、システムカーネルリストLibrary_Kernel_Table_List160への新しいカーネルの追加を試行する。Library_Titleは、カーネルを含む、ライブラリファイルの名称であって、Kernel_Titleは、追加するカーネルの名称である。Kernel_Add_Requestメッセージは、以下のように定義される。Kernel_Add_Requestメッセージの受信に応じて、システムは、Library_Titleと名付けられたライブラリが存在するかどうか決定する。ライブラリの存在は、Library_TitleをLibrary_Kernel_Table_List160内の全ライブラリタイトルと比較することによって確認される。ライブラリが存在しない場合、システムは、Kernel_TitleをLibrary_Kernel_Table161内に記憶された全Kernel_Titles162と比較することによって、カーネルがライブラリ内に存在するかどうか決定する。LibraryKernelテーブルの定義は、以下の表1に与えられる。ライブラリ内のKernel_Titleの存在は、システムに、そのStatusフィールド内に19KernelAlreadyExistsErrorを含むReturn_Statusメッセージを生成し、例示的実施形態では、ホスト管理システム145であるリクエスタに送信させる。Return_Statusメッセージは、以下のように定義される。ライブラリ内のカーネルの非存在は、システムに、カーネルのカーネルライブラリファイル121への追加を試行させる。カーネルのライブラリへの追加失敗は、システムに、そのStatusフィールド内に22KernelAdd/UpdateErrorを含むReturn_Statusメッセージを作成および送信させる。カーネルのライブラリへの追加は、ライブラリファイルが、リクエスタの情報によって置換されることを要求する。ライブラリの置換成功、および、Library_Kernel_Tableの非存在は、システムに、Library_Kernel_Table161を作成させ、それをLibrary_Kernel_Table_List160に追加させる。Library_Kernel_Tableの作成失敗は、システムに、ライブラリを除去し、そのStatusフィールド内に22KernelAdd/UpdateErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。Library_Kernel_Tableの作成成功は、システムに、カーネル情報をLibrary_Kernel_Tableに追加させる。カーネル情報のLibrary_Kernel_Tableへの追加失敗は、システムに、新しい場合、ライブラリおよびLibrary_Kernel_Tableを除去させるか、またはそのオリジナルコンテンツを置換し、次いで、そのStatusフィールド内に20KernelNotAddedSuccessfullyを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。カーネル情報のLibrary_Kernel_Tableへの追加成功は、システムに、ライブラリ内の全カーネルに対するLibrary_Kernel_Table_Addressのリロードを試行させる。ライブラリ内の全カーネルに対するLibrary_Kernel_Table_Addressのリロード失敗は、システムに、ライブラリの以前のコンテンツを復元し、追加されたカーネルをLibrary_Kernel_Tableから除去し、Library_Kernel_Tableのアドレスリストを復元し、そのStatusフィールド内に23KernelNotAdded/ChangedError-カーネルがライブラリ内に見つからないを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。ライブラリ内の全カーネルに対するLibrary_Kernel_Table_Addressのリロード成功は、システムに、そのStatusフィールド内にゼロを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。カーネルの変更システムが、Kernel_Change_Requestメッセージを管理システム145から受信すると、システムは、そのカーネルのライブラリ内の既存のカーネルの変更を試行する。Library_Titleは、カーネルを含む、ライブラリファイルの名称であって、Kernel_Titleは、追加するカーネルの名称である。Kernel_Change_Requestメッセージは、以下のように定義される。Kernel_Change_Requestメッセージの受信に応じて、システムは、Library_TitleをLibrary_Kernel_Table_List内の全Library_Titlesと比較することによって、Library_Titleが存在するかどうか決定する。ライブラリが存在する場合、システムは、Kernel_Titleをライブラリカーネルテーブル内に記憶された全Kernel_Titlesと比較することによって、ライブラリ内にカーネルが存在するかどうか決定する。ライブラリが存在しない、またはそのライブラリのためのLibrary_Kernel_Table内にKernel_Titleが存在しない場合、システムは、そのStatusフィールド内に21KernelDoesNotExistErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信する。ライブラリが存在し、Kernel_Titleがそのライブラリ内に存在しない場合、システムは、Library_Titleライブラリファイルのコンテンツを置換することによって、古いカーネル情報を新しいカーネル定義からの情報と置換する。ライブラリの置換失敗は、システムに、そのStatusフィールド内に22KernelAdd/UpdateError-ライブラリが置換されないを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。ライブラリの置換成功は、システムに、ライブラリ内の全カーネルに対するLibrary_Kernel_Table_Addressをリロードさせる。ライブラリ内の全カーネルに対するLibrary_Kernel_Table_Addressのリロード失敗は、システムに、ライブラリの以前のコンテンツを復元し、Library_Kernel_Tableから追加されたカーネルを除去し、Library_Kernel_Tableのアドレスリストを復元させる。次いで、そのStatusフィールド内に23KernelNotAdded/ChangedError-カーネルがライブラリ内に見つからないを含むReturn_Statusメッセージを生成し、リクエスタに送信する。ライブラリ内の全カーネルに対するLibrary_Kernel_Table_Addressのリロード成功は、システムに、そのStatusフィールド内にゼロを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。カーネルの削除システムは、Kernel_Delete_Requestメッセージを管理システム145から受信し、そのカーネルのライブラリ内の既存のカーネルの削除を試行する。Kernel_Delete_Requestは、以下のように定義される。Kernel_Delete_Requestメッセージの受信に応じて、システムは、Library_TitleをLibrary_Kernel_Table_List内の全Library_Titlesと比較することによって、Library_Titleが存在するかどうか決定する。ライブラリが存在する場合、システムはKernel_Titleをライブラリカーネルテーブル内に記憶された全Kernel_Titlesと比較することによって、カーネルがライブラリ内に存在するかどうか決定する。Library_TitleがLibrary_Kernel_Table_List内に存在しない、またはKernel_TitleがLibrary_Kernel_Table内に存在しない場合、システムは、そのStatusフィールド内に21KernelDoesNotExistErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信する。ライブラリが存在し、カーネルがライブラリ内に存在する場合、システムは、Library_Titleライブラリファイルのコンテンツを置換することによって、古いカーネル情報を新しいカーネル定義からの情報と置換する。ライブラリの置換失敗は、システムに、そのStatusフィールド内に24KernelNotDeletedError-ライブラリが置換されないを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。ライブラリ置換成功は、システムに、削除されたカーネルが、ライブラリ内にないことを検証させる。削除されたカーネルが、ライブラリ内に存在する場合、システムは、ライブラリの以前のコンテンツを復元し、削除されたカーネルをLibrary_Kernel_Tableに復元し、Library_Kernel_Tableのアドレスリストを復元する。次いで、そのStatusフィールド内に54KernelNotDeletedError-カーネルが、依然として、ライブラリ内に見つかるを含むReturn_Statusメッセージをリクエスタに送信する。ライブラリ内の削除されたカーネルの存在は、システムに、Kernel_TitleをLibrary_Kernel_Tableから削除させる。Kernel_TitleのLibrary_Kernel_Tableからの削除失敗は、システムに、ライブラリの以前のコンテンツを復元し、削除されたカーネルをLibrary_Kernel_Tableに復元し、Library_Kernel_Tableのアドレスリストを復元させる。次いで、そのStatusフィールド内に53KernelNotDeletedError-カーネルがライブラリ内に見つからないを含むReturn_Statusメッセージをリクエスタに送信する。Kernel_TitleのLibrary_Kernel_Tableからの削除成功は、システムに、そのStatusフィールド内にゼロを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズム管理アルゴリズム管理は、本システム100に、アルゴリズムの追加、変更、または削除を可能にする。アルゴリズムは、状態カーネル呼び出しおよび状態遷移ある状態から別の状態に移行するために必要とされる条件を備えている状態機械である。このセクションにおけるシステムの参照は、一般に、システム100を指し、適用可能実施形態では、アルゴリズム管理モジュール105を指す。各アルゴリズム117は、名称のそれぞれの間に文字_を伴う、組織名、カテゴリ名、アルゴリズム名、およびユーザ名の連結である、名称Algorithm_Titleを有するアルゴリズムライブラリ115内のアルゴリズム定義ファイル116に維持される。ユーザ名内の文字は、文字列_MPT_と置換される。Algorithm_Titleはさらに、カーネルがポストまたは公開された場所に応じて、文字列_OWN、_POST、または_PUBLISHと連結される。アルゴリズムは、所有者/組織の所望および開発ステータスに応じて、同時に、OWN、POST、およびPUBLISH形式において存在し得る。ファイルのファイルタイプは、.MPTである。アルゴリズムの追加システム100が、Algorithm_Add_Requestメッセージを受信すると、システムは、アルゴリズムのシステムAlgorithm_Table150への追加を試行する。Algorithm_Titleは、追加するアルゴリズムを含むファイルの名称である。Algorithm_Add_Requestは、以下のように定義される。Algorithm_Add_Requestメッセージの受信に応じて、システムは、Algorithm_TitleをAlgorithm_Table150内の全Algorithm_Titles151と比較することによって、アルゴリズムが存在するかどうか確認する。アルゴリズムテーブル内のアルゴリズムの存在は、システムに、そのStatusフィールド内に29AlgorithmAlreadyExistsErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。Algorithmテーブル内のアルゴリズムの非存在は、システムに、アルゴリズムデータをアルゴリズム定義ファイル116に保存させる。アルゴリズムデータのアルゴリズムライブラリ115内のアルゴリズム定義ファイル116への保存失敗は、システムに、そのStatusフィールド内に29AlgorithmAlreadyExistsErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムデータのアルゴリズムファイルへの保存成功は、システムに、Algorithm_TitleをAlgorithm_Table150に追加させる。Algorithm_TitleのAlgorithm_Tableへの追加失敗は、システムに、追加されたアルゴリズムファイルを除去させ、そのStatusフィールド内に33AlgorithmAddtoTableErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムのAlgorithm_Table150内のアルゴリズムタイトルリスト151への追加成功は、システムに、そのStatusフィールド内にゼロを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムの変更システムが、Algorithm_Change_Requestメッセージを受信すると、システムは、Algorithm_Table150内のシステムアルゴリズムタイトルリスト151におけるアルゴリズムの変更を試行する。Algorithm_Titleは、変更するアルゴリズムを含む、ファイルの名称である。Algorithm_Change_Requestメッセージは、以下のように定義される。Algorithm_Change_Requestメッセージの受信に応じて、システムは、Algorithm_TitleをAlgorithm_Table内の全Algorithm_Titlesと比較することによって、アルゴリズムの存在を確認する。Algorithm_Table内のアルゴリズムの非存在は、システムに、そのStatusフィールド内に31AlgorithmDoesNotExistErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。Algorithm_Table内のアルゴリズムの存在は、システムに、そのファイル内のアルゴリズム情報を新しいコンテンツと置換させる。アルゴリズムファイルコンテンツの変更失敗は、システムに、そのStatusフィールド内に32AlgorithmUnsuccessfullyChangedErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムファイルコンテンツの変更成功は、システムに、そのStatusフィールド内にゼロを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムの削除システムが、Algorithm_Delete_Requestメッセージを受信すると、システムは、アルゴリズムのシステムAlgorithmListからの削除を試行する。Algorithm_Titleは、削除するアルゴリズムを含む、ファイルの名称である。Algorithm_Delete_Requestメッセージは、以下のように定義される。Algorithm_Change_Requestメッセージの受信に応じて、システムは、Algorithm_TitleをAlgorithm_Table内の全Algorithm_Titlesと比較することによって、アルゴリズムの存在を確認する。アルゴリズムの非存在は、システムに、そのStatusフィールド内に31AlgorithmDoesNotExistErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。Algorithm_Table内のアルゴリズムの存在は、システムに、アルゴリズムをAlgorithm_Tableから削除させる。アルゴリズムのAlgorithm_Tableからの削除失敗は、システムに、そのStatusフィールド内に34AlgorithmNotSuccessfullyDeletedErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムのAlgorithm_Tableからの削除成功は、システムに、アルゴリズムファイルを削除させる。システムは、次いで、そのStatusフィールド内にゼロを含むReturn_Statusメッセージを生成し、リクエスタに送信する。アルゴリズムの実行図2は、リクエスタ145-システム100の相互作用の例示的例証である。アルゴリズムの実行は、システムが、ステップ201において、実行要求に応答して、アルゴリズム117それぞれのアルゴリズム定義ファイル116内に含まれるにアクセスし、完了まで、含まれる状態機械を実行することを意味する。実行は、第1の状態から開始し、完了状態が実行されるまで、またはエラーに遭遇するまで、各要求される遷移を通して、新しい状態まで継続する。アルゴリズムを実行するために、いくつかのステップが、順番に完了されることが必要とされる。最初に、システムは、アルゴリズムが、そのAlgorithmテーブル内に存在することを検証する。システムは、全実行パラメータを検証する。これらの確認のいずれかが失敗する場合、ユーザは、通知され、要求は、拒否される。これは、全入力データセットをシステムに転送するための投入が行われる前に、行われるべきである。アルゴリズムの存在および実行パラメータが検証されると、入力データセットが、信頼性のある様式において、システムに送信される必要がある。この転送を促進するために、システムは、各データセットをリクエスタから要求する。データセットは、データセットバッファ103に、1回に1つずつ転送され、確実な転送が達成されるよう保証する。システムは、各規定されたデータセットを実行リクエスタ典型的には、ホスト管理システム145から要求し、次のデータセットに移行する前に、データセットの受信を完了する。データセットを入力するこのプロシージャは、集合的に、括弧205によって示される一連のステップによって示される。全入力データセットが転送されると、システムは、アルゴリズムの実行を開始する。アルゴリズム実行は、アルゴリズムの最終状態に到達するまで、エラーに遭遇するまで、またはユーザが実行を中止するまで継続する。実行が完了すると、ステップ207において、システムは、リクエスタに、実行の完了ステータスを通知する。この時点において、リクエスタは、出力データセットのリクエスタへの送信を要求し得る。この転送は、本質的に、入力データセットが、システムに送信された方法と逆に行われる。リクエスタは、各データセットに対する要求を送信し、システムは、括弧210によって参照される一連のステップによって示されるように、データセットまたは利用不可能である理由によって応答する。データセットは、リクエスタが中止する場合、または実行中にエラーが生じる場合、利用不可能であり得る。リクエスタが、全所望のデータセットを要求し終わると、ステップ212において、リクエスタは、システムに、それが終了し、システムが、全データセットおよびコンピューティングリソースを含む、アルゴリズム実行中に使用していた全リソースの割当を解除することができることを通知する。システムが、この要求に応答し終えると、ステップ214において、実行プロセスは、完了する。前述のように、アルゴリズムの実行は、リクエスタからの要求メッセージから開始する。Algorithm_Execute_Requestメッセージは、このタスクのために使用され、以下のように定義される。Algorithm_Execute_Requestメッセージが受信されると、システムは、Algorithm_TitleをAlgorithm_Table内の全Algorithm_Titlesと比較することによって、アルゴリズムの存在を確認する。アルゴリズムの非存在は、システムに、そのStatusフィールド内に31AlgorithmDoesNotExistErrorを含むReturn_Statusメッセージを生成し、リクエスタに送信させる。アルゴリズムの存在は、システムに、アルゴリズム実行が、各特定のセットをコールするのにつれて、データセットをリクエスタから、1回に1つずつ、要求することを開始させる。各データセットに対して、システムは、Dataset_Requestメッセージをリクエスタに送信し、データセットがシステムに返される。Dataset_Requestメッセージは、以下のように表される。データセット名が、リクエスタによって認識されない場合、リクエスタは、Dataset_Responseメッセージを生成し、56DatasetNameNotRecognizedに設定されたStatusフィールドとともに、システムに送信する。データセット名が、認識されるが、リクエスタが、データセットコンテンツを送信不可能である場合、リクエスタは、Dataset_Responseメッセージを生成し、57DatasetNotAvailableに設定されたStatusフィールドとともに、システムに送信する。データセット名が、認識され、リクエスタが、データセットコンテンツを送信可能である場合、リクエスタは、Dataset_Responseメッセージを生成し、0Successに設定されたStatusフィールドとともに、システムに送信する。データセットのコンテンツは、Dataset_Responseメッセージの直後に続く。任意のエラーコードが、リクエスタによって返される場合、システムは、そのStatusフィールド内に59DatasetReceiveFailedを含むAlgorithm_Execusion_Responseメッセージを生成し、Error_Status_Supplementalフィールド内のリクエスタによって返されたステータスおよびError_Entity_Nameフィールド内のデータセット名とともに、リクエスタに送信する。Algorithm_Execusion_Responseメッセージは、以下のように表される。システムが、受信したデータセットコンテンツを記憶することができない場合、システムは、そのStatusフィールド内に60DatasetStoreFailedを含むAlgorithm_Execusion_Responseメッセージを生成し、Error_Entity_Nameフィールド内のデータセット名、およびError_Status_Supplementalフィールド内の任意のシステムエラーコードをリクエスタに送信する。全入力データセットが、システムによって受信されると、アルゴリズム実行モジュール125は、アルゴリズム実行システム135のノード140上でのアルゴリズムの実行の開始へと進む。実行が、何らかの理由から、完了すると、システムはAlgorithm_Execusion_Responseメッセージ、を生成し、リクエスタに送信する。返される場合に、ステータスが非ゼロである場合、補足エラーフィールドは、エラーの原因を決定する補助となり得る、追加の情報を含み得る。加えて、出力データセットフィールドも有用情報を含み得る。実行完了ステータスに関わらず、リクエスタは、本システムが、入力データセットをリクエスタから読み出すために使用するものと同一プロトコルを使用して、出力データセットをシステムから読み出し得る。リクエスタは、Dataset_Requestを生成し、読み出されるデータセットの名称に設定されたdataset_nameとともに送信する。データセットが、利用不可能である場合データセットは、実行後、データセットバッファ103内に記憶されること、および/またはユーザへの伝送後、削除されることができる、システムは、Dataset_Responseメッセージを生成し、57DatasetNotAvailableに設定されたStatusフィールドとともに、リクエスタに送信する。データセットが、利用可能である場合、システムは、Dataset_Responseメッセージを生成し、0に設定されたStatusフィールドとともに、リクエスタに送信する。Dataset_Response後、データセットのコンテンツが続く。リクエスタは、特に、実行が、失敗で終了する場合、任意の他のデータセットを要求し得る。この場合、システムは、0ステータスおよびデータセットコンテンツで応答し得るか、または57DatasetNotAvailableに設定されたStatusフィールドとともに、リクエスタに応答し得る。全データセットが、リクエスタから読み出されると、リクエスタは、Execute_Release_Requestメッセージを生成し、システムに送信する。Execute_Release_Requestメッセージは、以下のように表される。本メッセージは、システムに、実行ジョブを終了させ、ジョブと関連付けられたメモリおよびデータセット等の全リソースを解放させる。全リソースが解放されると、システムは、Status_returnメッセージを生成し、0に設定されたステータスとともに、リクエスタに送信する。ジョブが、依然として実行中である間に本メッセージが受信される場合、システムは、Status_returnメッセージを生成し、66ExecuteStillRunningに設定されたステータスとともに、リクエスタに送信する。他のエラーステータス値も、必要に応じて、返される。アルゴリズム実行中に、随時、リクエスタは、以下のように表される、Execute_Cancelメッセージを送信し得る。アルゴリズム実行が、もはや生じていない場合、システムは、Return_Statusメッセージを生成し、67ExecuteNotRunningに設定されたStatusフィールドとともに、リクエスタに送信する。アルゴリズム実行が、依然として実行中である場合、システムは、実行が停止されると、Return_Statusメッセージを生成し、0に設定されたStatusフィールドとともに、リクエスタに送信する。カーネルの実行カーネルは、常時、1つの状態である一方、アルゴリズムは、常に2つ以上の状態である。HPC高性能コンピューティング状態機械は、本明細書に定義されるように、効果的に、一組の状態を構成し、その各々は、コンパイルされたソフトウェアと、制御がそれに基づいてある状態から別の状態に転送される条件である状態遷移または、状態ベクトルとを含む単一のカーネルである。カーネルの実行は、システムが、カーネルをコールする単純な1状態アルゴリズムを実行することを意味する。このため、ジョブ開始および終了時のデータセット読み出しのため、ならびにジョブ中止およびリソース解放のための全メッセージングは、前述のようなアルゴリズムの実行のように見え、進行する。この例外は、Algorithm_Execute_Requestおよびシステム_Algorithm_Execute_Responseの代わりに使用されるKernel_Execute_RequestおよびKernel_Execute_Responseである。Kernel_Execute_Requesのフォーマットは、以下のようである。アルゴリズム定義アルゴリズムは、本明細書では、計算または他のコンピュータベースのアクティビティを完了するために行われる、一連のステップを含む、直接実行可能なFiniteStateMachineと定義される。これらのステップは、状態と呼ばれ、アルゴリズム実行パラメータまたは前のステップの出力に依存し得る順番においてたどられる。各ステップに対して、アルゴリズムは、使用されるべき入力、産出されるべき出力、および実行すべき次のステップを定義しなければならない。アルゴリズム定義は、2つ以上の状態から構成される解析可能かつ明確なテキスト記述である。アルゴリズム定義は、アルゴリズム管理モジュール105によって、インデックス番号、カーネル、遷移条件、および遷移されるべきカーネルのインデックスを含む、テーブルまたはリストに変換される。定義内の文字はすべて、印刷可能ASCII文字である。アルゴリズムの状態定義は、通常、大文字と小文字を区別しないように定義されるが、カーネル識別子実行されるカーネルの識別子は、通常、大文字と小文字を区別する。改行、復帰改行、および空白文字は、無視される。状態エントリは、セミコロンによって分離され、4つのサブセクション-ノードカウント、入力データセット、出力データセット、および遷移から成る。ヒト可読性は、要求されないがアルゴリズム定義は、管理システム145によって生成され得る、このフォーマット内で適応されることができる。ステップフォーマット定義以下のセクションは、アルゴリズムのステップ状態遷移テーブルまたはアルゴリズム内のエントリを示す。構文は、以下のようになる。StateNumber,KernelldentifiernodecntinputdatasetsoutputdatasetstransitionsStateNumberは、この状態に対するインデックスであって、アルゴリズムの残りに、この状態を指すインデックスを与える。StateNumberの値は、1から開始し、1ずつインクリメントすべきである。0の次の状態は、実行が完了したことを示すので、それは決して0にはならない。Kernelldentiferは、この状態の間、実行すべきカーネルの識別子である。その間の文字:によって連結される、Library_TitleおよびカーネルのKernel_Titleから成る。それは、カーネルに対するコードおよびカーネルの関数名を含む、動的ライブラリの名称に対応すべきである。NodeCountサブセクションは、カーネルを実行するために使用される、ノードの数を定義する。それは、以下のフォーマットを有する:Min,Opt,Max。Min値は、カーネルを実行するために使用されるノードの最小数を示す。これは、通常、1である。また、0であり得、これも、1を意味する。Opt値は、カーネルを実行するために使用されるノードの最適数を示す。0の値は、使用されるノードの数に制限または推奨が存在しない場合、規定されるべきである。/nの値は、ランタイムにおいて、ユーザに規定されるノードの数の除算が、使用されるべき場合、規定され得る。同様に、nの値は、ランタイムにおいて、ユーザに規定されるノードの数の乗算が、使用されるべき場合、規定され得る。Max値は、カーネルを実行するために使用されるノードの最大数を示す。これは、通常、0であって、ランタイムにおいて、ユーザに規定されるノードの数を使用することを示す。ランタイムにおいて、ユーザに規定されるノードの数の除算または乗算が所望される場合、ここでは、Opt値と同一構文が、使用され得る。入力データセットInputDatasetsサブセクションは、カーネルを実行するために使用される入力データセットの名称を定義する。これらの名称は、アルゴリズムへの入力であるデータセット、または、別の状態におけるカーネルの実行によって産生されるデータセットのいずれかに対応する。名称は、位置的に、実行されるカーネルの実装に依存し、コンマによって分離される。出力データセットOutputDatasetsサブセクションは、カーネルが実行された場合に産生されるべき出力データセットの名称を定義する。名称は、位置的に、実行されるカーネルの実装に依存し、コンマによって分離される。遷移Transitionsサブセクションは、本カーネルの実行後、遷移されるべき次の状態を定義する。遷移は、コンマによって分離される、一対の条件およびnext_stateインデックスの形式である。対は、左から右にスキャンされ、処理は、第1の真の条件に遭遇すると、停止する。その条件に対する対応するnext_stateへの状態遷移、および他のcondition/next_state対はすべて、無視される。Transitionsサブセクションに対するフォーマットは、以下となる。[condition,next_state],[condition,next_state],[condition,next_state]次の状態を決定するために、condition/next_state対は、左から開始して、左から右へと調べられる。条件が、真であると判明すると、next_stateは、アルゴリズムに対して実行されるべき次の状態に対して使用される。いずれの条件も、真であると判明されない場合、アルゴリズムの実行は、完了と宣言される。条件条件のフォーマットは、以下のようになる。dataset_name[index],dataset_element_type,value,comparatorDataset_nameは、アルゴリズムへの入力であるデータセット、または別の状態におけるカーネルの実行によって産生されるデータセットのいずれかに対応しなければならない。複数の要素は、特定の要素を見つけるために、データベースへのオフセットとして使用されるインデックスの使用を介してアクセスされる。dataset_element_typeは、以下の表3に示されるものの1つである。値valueは、表4に示される形式である。コンパレータcomparetorは、以下の表5に示されるもののうちの1つである。条件の評価は、ANSI規格C言語優先規則に従う。次の状態次の状態は、常時、アルゴリズム内の別の状態のインデックスである。0ゼロの次の状態は、常時、アルゴリズムの実行が完了したことを示す。最終状態前述のように、いずれの条件も真であると評価しない場合、その状態は、最終状態であると宣言され、実行は、完了する。真であると評価する任意の条件付けに対するnext_stateが、0である場合、これも、実行が完了したことを示す。状態をAlgorithm内の無条件最終状態にすることが所望される場合、Transitionセクションのフォーマットは、以下のように短縮され得る。0実施例以下は、アルゴリズムのステップアルゴリズムである、状態遷移テーブル内のエントリの実施例である。種々の構成要素を明確にするために、改行およびインデントを有する。前述のコードは、アルゴリズム内のステップ12である。Kernelldentifierは、以下となる。カーネルは、ライブラリLibrary_TitleShop_Tools組織名は、Shopであって、カテゴリ名は、Toolsであるによってもたらされる。Kernel_Titleは、isConvolveWithFilter_bob_MPT_Shop.com_POSTであって、KernelNameは、ユーザbobShop.comによって所有される、ConvolveWithFilterである。規定されるカーネルは、ポストされた状態にあるものである。ノードカウント指定子は、少なくとも1つのノードが、使用されなければならず、そうでなければ、使用する計算ノードの数に制限はないことを示す。InputDatasetリストは、3つの要素データセットを有する。OutputDatasetリストは、2つの要素データセットを有する。Transitionは、以下の意味を有する。このリストの最後に含まれるのは、以下である。これは、アルゴリズム終了インジケータである。他の条件付け状態遷移が、適用されない場合、アルゴリズム実行は、完了する。図3は、アルゴリズムの実行において、本システムによって行われるステップの例示的セットを要約する、流れ図である。図3に示されるように、ステップ305において、実行される各アルゴリズムに対して、定義が、前述のように、使用されるべきカーネル、使用されるべき入力データセットの名称、生成されるべき出力データセットの名称、実行すべき次のステップ、および各カーネルまたは、ステップを実行するために使用されるべきノードの数に対して提供される。実行されるカーネル122は、ステップ310において、カーネルライブラリ120に追加され、実行されるアルゴリズム117は、ステップ320において、アルゴリズムライブラリ115に追加される。アルゴリズム実行要求に応答して、ステップ325および330において、それぞれ、要求されたアルゴリズムの存在が検証され、アルゴリズムの実行パラメータが検証される。アルゴリズムは、次いで、ステップ333において、アルゴリズムライブラリ115からアルゴリズム実行システム35に転送される。ステップ335において、アルゴリズムに対する入力データセットが、1回に1つずつ、アルゴリズム実行システム135に転送され、ステップ340において、アルゴリズム内の各状態遷移が、評価され、アルゴリズムの最終状態に到達するまで、順番に、条件付きで実行される。実行に先立って、アルゴリズムによって呼び出される各カーネルは、カーネルライブラリ120からアルゴリズム実行システム135に転送される。最後に、ステップ345において、アルゴリズム完了ステータスおよび全出力データセットが、リクエスタに返される。以下の表6は、HPCアルゴリズム定義/HPCStateMachineの実施例である。図4は、システムコンテキストにおける、HPC状態機械401の例示的例証である。HPCAlgorithmDefinition/HPC状態機械401と標準的状態機械との間に、いくつかの差異が存在する。HPCStateMachineでは、状態番号状態は、状態を保持するアルゴリズム定義内の行を識別するインデックスである。ゼロ状態インデックスは、最後の状態条件を示す。状態は、実際には、図4の矢印403によって示されるように、実行されるライブラリおよびカーネル名である。HPC状態機械内のClusterNodeAllocationエントリは、実行されるカーネルによって使用可能な最小、最大、および最適ノードカウントを動的に規定する方法を提供する。ノードカウントを規定するための能力は、標準的状態機械と異なり、HPC状態機械が、並列処理に好適であることを意味する。使用される実際のノードカウントの選択は、指定される条件の関数である。入力および出力変数リストは、変数のメモリアドレス、変数タイプ、および変数と関連付けられた次元数から成る。Conditionによって使用される全変数は、入力/出力変数リスト内に見出される変数、定数、またはループ内で計算されたインデックス値のいずれかでなければならない。これは、状態遷移ベクトルに、特殊コードをカーネルのソースコード内にコンパイルする必要なく、要求される変数にアクセス可能にする。標準的高性能コンピュータシステムは、有限状態機械FSMを使用しない。すなわち、そのコード内に埋め込まれたMessagePassingInterfaceMPI関数を有する、コンピュータプログラムを実行する。MPI関数を標準的ソフトウェアに追加することは、そのソフトウェアを変更し、可能性として、新しいバグをその中にもたらすことを意味する。本方法を使用することによって、並列状態が、オリジナルコードを再コンパイルまたは変更することなく、FSMにもたらされることができる。標準的状態機械では、状態遷移は、2つの状態を一緒にリンクする、条件およびベクトルから成る。HPC状態機械では、条件は、ある状態を複数の状態状態リストと呼ばれるとともにリンクすることができる。状態リスト内の各状態は、図4の矢印405および406によって示されるように、別個のノード上で実行される。各ノードは、単一あるいは複数のプロセッサ、および/または単一あるいは複数のコアを有することができ、これは、複数の機械上の複数の並列スレッドが、単一遷移から生み出されることができることを意味する。単一ノードに逆に畳み込むためには、Collapseと呼ばれる特殊遷移が使用される。この遷移は、単一ノードへの畳み込みおよび新しい状態への遷移の両方を行う。ループは、遷移を効率的に自らコールさせ、初期化し、インデックス値を計算し、次いで、1つ以上の新しい状態に遷移する。本明細書に説明されるものの範囲から逸脱することなく、前述の方法およびシステムに、ある変更が行われてもよい。前述の説明に含有され、または付随の図面に示される、あらゆる事柄は、限定的意味ではなく、例証として解釈されるべきであることに留意されたい。例えば、付随の図面に示されるシステムは、示されるものと異なる構成要素を含んでもよい。以下の請求項は、本明細書に説明されるあらゆる包括的かつ具体的特徴、ならびに文言上、その行間にあると言え得る、本方法、システム、および構造の範囲のあらゆる記述を網羅することが意図される。"