問題タブ [grid-computing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
grid-computing - グリッド コンピューティングの商用利用?
私が収集した限りでは、SETI@Home に沿った高度に分散されたものであるグリッド コンピューティングについて、関係者からよく耳にします。
この種の業務用システムに取り組んでいる人はいますか? 私の関心は、この分野でソフトウェア開発を開始する商業的な理由があるかどうかを判断することです。
java - javaで物理シミュレーションを実行するためのLinuxクラスターを作成するには?
物理シミュレーションの実行に使用される科学アプリケーションを開発しています。使用されるアルゴリズムは O(n3) であるため、大量のデータ セットの処理には非常に長い時間がかかります。アプリケーションは約 17 分でシミュレーションを実行し、約 25,000 回のシミュレーションを実行する必要があります。つまり、処理時間は約 1 年です。
幸いなことに、シミュレーションは互いに完全に独立しているため、プログラムを簡単に変更して、複数のコンピューターに作業を分散させることができます。
これを実装するために私が見ることができる複数のソリューションがあります:
- マルチコア コンピューターを入手し、すべてのコアに作業を分散します。私がする必要があることには十分ではありません。
- 複数の「処理」サーバーに接続し、それらの間で負荷を分散するアプリケーションを作成します。
- 安価な Linux コンピューターのクラスターを入手し、プログラムにすべてを 1 つのエンティティとして扱わせます。
オプション番号 2 は実装が比較的簡単なので、これを実装する方法についての提案はあまり探しません (特定のポートでパラメーターを待機し、値を処理して結果を返すプログラムを作成するだけで実行できます)。シリアル化されたファイルとして)。これは、グリッド コンピューティングの良い例です。
ただし、最後のオプションである従来のクラスターの可能性については疑問に思っています。Linux グリッドで Java プログラムを実行するのはどれくらい難しいですか? すべての個別のコンピューターは、複数のコアを備えた単一のコンピューターとして扱われ、プログラムの適応が容易になりますか? 始めるのに役立つリソースへの適切なポインタはありますか? または、これを複雑にしすぎて、オプション番号 2 を使用したほうがよいでしょうか?
編集: 追加情報として、Wired Magazine のこの記事で説明されているようなものを実装する方法に興味があります: Scientific は、スーパーコンピューターを Playstation 3 Linux クラスターに置き換えました。間違いなくナンバー2は行くべき道のように聞こえます...しかし、涼しさの要素です.
編集 2: 計算は非常に CPU バウンドです。基本的に、逆数や乗算など、大きな行列には多くの演算があります。これらの操作のより良いアルゴリズムを探してみましたが、これまでのところ、必要な操作は 0(n3) であることがわかりました (通常利用可能なライブラリ内)。(このような操作の場合) データ セットは大きいですが、入力パラメーターに基づいてクライアント上で作成されます。
Linux でのコンピューター クラスターの仕組みについて誤解していたことがわかりました。複数のコアを備えたコンピューターを持っているかのように、すべてのコンピューターですべてのプロセッサが利用可能であるように見えるように動作すると仮定しましたが、そうではないようです。これらのスーパーコンピューターはすべて、中央エンティティによって分散されたタスクを実行するノードを持つことで機能し、この分散を簡単に実行できるいくつかの異なるライブラリとソフトウェア パッケージがあるようです。
3 番のようなものはないので、質問は次のようになります。クラスター化された Java アプリケーションを作成する最善の方法は何ですか?
cloud - クラスター/グリッド/クラウド タイムを購入しますか?
私は産業および学術の設定でクラスターを使用しましたが、それらは私が働いていた組織によって所有されていました。クラスター/クラウド/グリッド時間を販売する会社から時間を購入したことはありません。
大規模なシミュレーションやデータ マイニング アプリケーションなど、計算負荷の高いプログラムを実行したいとします。あるいは、外部委託したインフラストラクチャで分散ビルドを実行して、大規模な製品スイートの完全なビルドを最適化したい場合もあります。そのようなプログラムを実行するためのクラスター時間はどこで購入できますか?
Linux、BSD、Mac OS X、Windows などの一般的な OS プラットフォームを実行するクラスターについて学ぶことに興味があります。
明らかに、最近利用可能な高速で安価なハードウェアを使用して独自のクラスターを構築するソリューションがありますが、私は特にアウトソーシング ソリューションに興味があります。
expect - 自分のマシン (win xp) 上のプログラム内の別のマシンで実行する実行可能ファイルを呼び出すにはどうすればよいですか?
私の目的は、実行時に決定されたパラメーターを使用して別のコンピューター (すべて win xp を使用) で別の実行可能ファイルを呼び出し、さらにいくつかのコンピューターで繰り返し、結果を収集するプログラムを作成することです。要するに、私はグリッド コンピューティング プロジェクトに取り組んでいます。使用されているアルゴリズム自体はすでに FORTRAN でコーディングされていますが、一度に多くのコンピューターで実行する効率的な方法を探しています。
これを達成する 1 つの方法は、スクリプトを各コンピューターにアップロードし、各コンピューターでそのスクリプトを実行することです。すべて自動的に、自分のパラメーターに依存します。しかし、別のコンピューターにスクリプトを書き込み、アップロードし、実行するプログラムを作成するにはどうすればよいでしょうか?
GridGain を検討しましたが、アルゴリズムは既にコード化されており、別の言語であるため、除外されました。
このタスクを達成するための私の現在の推測では、Expect ( wiki/Expect ) を使用していますが、ツールについての知識はありません。
アドバイスをいただければ幸いです。
continuous-integration - ccnet を使用してファームを構築する
CruiseControl.Net を使用してビルド ファームをセットアップすることはできますか? 現在、4 つの異なるビルド マシンが異なる時間に異なるものをビルドしており、何らかの方法で手動で負荷のバランスをとるのに少し頭を悩ませています。そのうちの 1 台をマスター ビルド マシンとして指定し、空いているときに他のマシンに作業を委任することをお勧めします。
cloud - クラウドコンピューティングとグリッドコンピューティングの違いは何ですか?
クラウドコンピューティングとグリッドコンピューティングの重要な違いは何ですか?両方の正確な定義とターゲットアプリケーションドメインは何ですか?私は技術と一緒に概念的な洞察を探しています。
WindowsAzureがクラウドOSであるように、グリッドコンピューティング用のようなものはありますか?
以前は、分散コンピューティングと並列コンピューティングに取り組み、分散処理にはPVMやMPIなどのライブラリを使用していました。好奇心から、グリッドコンピューティングがインターネット上で拡張された分散コンピューティングであるかどうかを知りたいと思いました。
grid-computing - グリッド コンピューティングとログアウト
ユーザーがログインしていないとき、グリッド コンピューティングは継続しますか? たとえば、学生がログインしなければならない教育システムで、ログアウトしたときに、CPU はクラウド コンピューティングを継続しますか? または、別の例として、自宅のコンピューターを superdonate.com のようなものに使用している場合、ログアウトしてもプロセッサは動作しますか?
java - グリッドコンピューティングと Java
これに似た質問を見つけることができなかったようです。
現在、グリッド コンピューティングの問題を解決する最適なソリューションを探しています。
セットアップ:
- サーバー/クライアントの状況で、クライアントが [通常はほとんどのロジックを理解できない] で、サーバーから指示を受け取ります。
- 認可リクエストを持っている
- クライアントはタスクを完了する速度に関する情報を報告します(タスクの難易度はタスクの種類によって判断されます)
- クライアントは、以前のパフォーマンスに最も適したタスクを受け取ります (最高のクライアントは最悪の問題を受け取ります)。
最終的に要件は次のようになります。
- クライアントのフットプリントは小さく、スタンドアロンである必要があります - インストールとセットアップに多くを必要とするクライアントはありません
- クライアントは、サーバーから新しいジョブとジョブ ランタイムを取得できる必要があります (導入された新しい問題に合わせてグリッドをスケーリングするとよいでしょう [そして、新しい問題はサーバーによって分散されます])。
- 認証レイヤーが必要です (複雑であったり、既存の LDAP に準拠している必要はありません) [より簡単な要件: クライアントは新しい「メンバーシップ」にサインアップしてアクセスできる] (RMI の強みがここにあるかどうかはわかりません)
- クライアントは、ネットワーク化された環境ではなく、インターネットから実行できます。
- つまり、要求された結果の暗号化
現在、クライアントとサーバーの間の通信に Web サービスを使用しています。すべての情報と結果は、ホスティング サーバー (J2EE) に戻されます。
私の質問は、これらの要件のすべて/ほとんどに適合し、オープンソースであるグリッド システムのセットアップはありますか?
これらのタスクのほとんどは小規模ですが、非常に頻繁に実行されるため (1 日に 1 回ですが、タスクは簡単かもしれませんが、メンテナンスを実行します)、クラウドの実行には興味がありません。
このシステムのコードはすべて Java です。
.net - Distributed Computing Framework (.NET) - 特に CPU を集中的に使用する操作用
私は現在、分散アプリケーションを開発するために利用可能なオプション (オープン ソースと商用の両方) を調査しています。
「分散システムは、コンピューター ネットワークを介して通信する複数の自律型コンピューターで構成されています。」ウィキペディア
このアプリケーションは、(データ集約型ではなく) 非常にCPU 集約型の操作を分散することに重点を置いているため、MapReduce ソリューションはその条件に合わないと確信しています。
推奨できるフレームワーク (+ 経験の簡単な要約または他のフレームワークとの比較) をいただければ幸いです。