クラスターで matlab を実行しています。クラスターでインタラクティブな matlab セッションから .m スクリプトを実行すると、結果が再現可能になります。しかし、注意深い目から離れた配列ジョブの一部として、qsub コマンドから同じスクリプトを実行すると、信じられますが再現性のない結果が得られます。.m ファイルは、結果を .mat ファイルとして保存するなど、まったく同じことを行っています。
ある方法でスクリプトを実行すると再現可能な結果が得られ、別の方法で実行すると再現不可能になる理由を知っている人はいますか?
これは再現性の問題ですか、それとも結果が不正確であることを示していますか?
%%%%% 役に立つ回答をしてくれた spuder に感謝します。誰かがこれに出くわして興味を持った場合に備えて、ここにいくつかの詳細情報があります. Matlab ジョブで複数のスレッドを使用すると、他のジョブからリソースが奪われ、結果が混乱する可能性があります。したがって、2 つのオプションがあります。 1. ノードへの排他的アクセスを選択します。私が使用しているクラスターは現在、並列配列ジョブを許可していないため、これを行うのは非常に無駄でした.ノード全体を取得しましたが、シリアルで使用しました. 2. matlab に singleCompThread で実行するように依頼します。これにより、スクリプトの完了に時間がかかる場合がありますが、キューを介してジョブをすばやく取得できます。