ビルド時に異なるモジュールを必要とする多数のスーパーコンピューティングクラスターで実行されているリサーチコードを管理する方法を探しています。
例:Server1はインテル®コンパイラーとMKLライブラリーを使用します。Server2は、blasおよびlapackライブラリでgccコンパイラを使用します。
int
これらの違いにより、いくつかのヘッダーファイルが変更され、場所によって交換されますMKL_INT
(たとえば)が、最終的にはコードは一般的に同じままであり、(数値ノイズの範囲内で)同じ結果が得られるはずです。
これはアクティブなコードベースであり、私は定期的にビットを変更します。現在、私はgithubにプロジェクトを持っており、Server1からマスターブランチを作成し、次にServer1とServer2という名前の2つの新しいブランチを作成しました。各ブランチのコードを変更して、期待どおりにコンパイルおよび実行し、変更をアップストリームにプッシュしました。
gitに慣れていないので、ここで壁にぶつかりました。このモデルを使用して、コード全般(たとえば、作業ブランチ)で作業し、これらの変更を両方のサーバーブランチにマージできますか?もしそうなら、マスターブランチは本質的に役に立たなくなりますか?この状況で作業するためのより良い方法はありますか?