2016-08-04 9 views
0

集中的な計算を実行するためにリモートサーバーを設定することに興味があります。いろいろな理由から、私はdevのボックスよりも別のlinuxディストリビューションを走らせたいかもしれません。ハードウェアが適切にターゲットになっていて、自分自身をISO Cライブラリに制限していると仮定すると、コードがg ++コンパイルされているものとは異なるLinuxディストリビューションで実行可能ファイルを実行する際に問題が発生するでしょうか?g ++コンパイルはLinuxのみクロスプラットフォーム

私の具体的なケースでは、私の開発ボックスは最新のUbuntuベースです。 Ubuntuベースのg ++​​コンパイル済みコードがハングアップするLinuxディストリビューションはありますか?リモートサーバーのディストリビューションを選択する際には、どうすれば問題のない操作が保証されますか?

+0

どちらのボックスにも同じCPUがありますか? – NathanOliver

+0

サーバは、おそらくはより速い/ RAM-ierバージョンのdevボックスです。または、少なくとも、dev-boxは家族内または以前のgen CPUです。 – codechimp

答えて

0

ラップトップとデスクトップの両方で自分の仕事のために開発した計算力強いコードをたくさん使います。最近私のラップトップを交換しなければならないまで、デスクトップよりもはるかにRAMの少ない非常に遅いマシンでしたので、あなたの説明と同様の状況でした。

あなたのコードが計算上強烈な場合は、あなたが開発したマシンであれリモートマシンであれ、どのマシンで実行されているマシンでも最適化したいと思うかもしれません。私は、あなたのコード用のmakefileをセットアップするのが一番簡単だと思うので、makefileとソースをリモートサーバーにコピーして、devボックスとサーバーの両方に同じバージョンのgccとanyあなたのコードが必要とする他のライブラリの依存関係を変更するには、makeコマンドを発行してリモートサーバー上にコードを作成するだけです。あなたがmakefilesについての簡単なチュートリアルが必要な場合は、this私が最初にそれらを使い始めたときに私は役に立ちました。

このようにすることの利点は、小さなデータセット、低い解像度のグリッド、または計算強度を低下させるために必要なものを使用して、あるコンピュータでコードを開発してテストできることです。その後、その作業が分かれば、より強力なマシンに転送して、より強力なバージョンを実際に実行します。 g ++は、makeコマンドを呼び出すことによって、-march=nativeまたは-mtune=nativeのようなフラグを使用して、コードがリモートサーバのCPUに最適化されていることを確認し、そのマシン上でコンパイルされているので、 1台のコンピュータ上の別のコンピュータで実行できます。

+0

あなたの時間と注意に感謝します。私はあなたの推薦で引用した正確な論理と問題を理解していますが、それはまさに私が探している解決策ではありません。ハードウェアはほとんど同じだが、特定されていない理由から、Linuxのディストリビューションは異なっていなければならない可能性があるため、devボックス以外のLinuxプラットフォームでコードを実行するときに探すべき問題は何かを知りたい。 – codechimp

関連する問題