2009-10-02 14 views
7

クラウドベースのコンパイラを書くことは、クラウド内の異なるマシンにコンパイルされたコード単位を広げることは実用的な利点でしょうか?コンパイル直後にアプリ内でソフトウェア・アズ・ア・サービスのアーキテクチャーを得ることのメリットがあるのでしょうか、それとも本質的なレイテンシがそのようなアプローチを実行不可能にするでしょうか?クラウドベースのコンパイラは実現可能でしょうか?

答えて

3

あなたの意見が間違っているのか、他の回答があるか分かりません。何らかの自動並列化タスクについて話していますか?これまでの答えは、分散コンパイル、つまりコンパイル時間を短縮するためにクラウドを使用していることを示しています。代わりに、クラウドコンピューティングリソースをターゲットとするコンパイラについて話していると思いました。

あなたが実際に分散コンパイルについて話していたなら、明らかにdistccのようなものが必要なことをするでしょう。

分散アーキテクチャをターゲットとするコンパイラが役立つかどうかについてもっと面白い(IMHO)質問をしていたら、答えは「はい」です。しかし、実現可能性は問題の中心にある。レイテンシはそのような問題ではないが、一貫性(すなわち、すべてのユニットの正しいバージョンが適切に配置されていることを保証する)であり、適切な経験則を有することが問題となる。

私たちが最近興味を持っている分散システムアーキテクチャとはまったく異なるわけではないトランスフューターをターゲットにしているのは、おそらくOccamプログラミング言語でしょう。私はOccamから続くいくつかの研究が、最先端のものについての有用な手がかりを提供するかもしれないと信じています。

+0

はい...これは、分散アーキテクチャをターゲットとしたコンパイラが実現可能な場合、コードを1か所に作成し、弱くリンクされた、再利用可能な一連のサービスとしてクラウド内で実行させると、私が求めていたことです。私はそれが役に立つと思う、レイテンシが野生でそれを動作不能にするかどうか尋ねている。 – luvieere

+0

タイトルに記載されている「クラウドベースのコンパイラ」は、クラウドベースのプログラムを生成するコンパイラではなく、クラウドで動作するコンパイラを意味します。私は誤解していると思います。 –

0

です。私たちは古いC++ベースのコンパイルでは3〜4時間かかりました。そのようなものについては、コンパイルをオフロードすることは非常に便利です。しかし、C++プロジェクトでは、このことはしばしばより少なくなります。

C#またはJavaでは、コンパイル時間が大幅に短縮されるため、重要ではない可能性があります。

1

私はそれが実際的ではないと信じています。今日のハードウェアは、合理的な時間内に中小規模のプロジェクトを編集することができます。マルチコアCPUでより多くのことを実現します。

唯一の例外は、ソースからオペレーティングシステム(Debianなど)全体を構築することです。そのようなアプリケーションでは、ビルド・ファームが広く使用されています。ただし、ファームを構築する必要があるユーザーは、通常、ファームを作成することができ、クラウドに行く必要はありません。

2

私はこのようなシステムを使用しましたが、クラウドではなくローカルクラスタで動作しました。しかし、原則は全く同じです。残念ながら私はそれが何と呼ばれたのか覚えていませんが、あなたのソースファイルがあなたの部門の他のPCに移植されているのを見て、涼しかったです。

編集:それはIncrediBuildと呼ばれました。

+0

私はIncrediBuildを使用しましたが、LAN上ではかなりうまく動作します。理論的には、クラウド内でこのようなことを行うことができます.CPUリソースを稼働させるためには、コストがかかる可能性があります。 Incredibuildは、LAN上の他のマシンのスペアCPUを使用しています。これは多くの意味があり、無料です。 – jkupferman

1

Xcodeには、これを可能にする分散ビルド機能がありますが、LAN以外のものではほとんどの場合非常に遅くなると思います。

0

これが何らかの連続的な統合ツールであれば、これは役に立つと思います。いくつかの開発環境では、適切な設定を得ることは困難です。たとえば、私はかつてチームがFlashDevelopAdobe's Flex SDKを使ってSWFファイルをコンパイルしたプロジェクトに取り組んでいました。個人のコンピュータにセットアップするのは時々苦痛でした。サービスがプロジェクトのディレクトリやgit/SVN/etcを監視できる場合。リポジトリを作成して最新のSWFを構築することができましたが、これは役に立ちましたと思います。

これは、クロスプラットフォームプロジェクトにも役立つと思います。または、このサービスはMozilla's Bespinのようなブラウザ内IDEをサポートすることができます。

2

最も一般的なUNIXコードの分散コンパイルにはdistccmake -jを使用できます。あなたが定期的にコードの大きな断片をコンパイルすると、それはあなたに大きなスピードアップをもたらすかもしれません... afaik samba(無料のsmb実装)開発者はこれにこれを使用します。 distccは、分散処理でコンパイルフェーズのみを行い、前処理とマスターマシンへのリンクを残します。

"the cloud"との相互作用はレイテンシを引き起こすかもしれませんが、私はまだもっと複雑なC++コードでは非常に有用かもしれないと思います。あなたが100以上のコンパイル単位(fc.c.ppファイル)を持っていれば、目覚しいスピードアップが得られるはずです。

0

GridGainの上でJUnitテストを実行するデモがあり、GridGainをクラウドで実行することができました。

私は雲の中にいるコンパイラではあまり価値がないと思う。

0

はい、ありがとう、私はこの分野でも研究しています。 実際にそれは多くの意味があり、それは存在する、http://www.cloudcompiling.com/しかし、私はそれがまだトップ10のサービスになることがわかります。

レイテンシはコードのアップロード時のみであるため、開発者が良好な接続をしていて、ネットワークホップや「ホップ」ホップの点ではそれほど遠すぎない場合は問題にはなりません。

クラウドの遅延はクラウドプロバイダーの問題です。クラウドプロバイダーの場合は、適切なバランシング戦略が必要です。

関連する問題