2016-08-04 41 views
0

我有興趣設置遠程服務器來運行一些密集計算。由於各種原因,我可能想運行一個不同於我的開發盒的Linux發行版。假設硬件是正確的目標,並且我將自己限制在ISO C庫中,那麼可以預計在Linux發行版上運行可執行文件時出現的任何問題與代碼是g ++編譯的不同嗎?針對linux的g ++編譯只有跨平臺

在我的具體情況下,我的開發盒是基於Ubuntu的最新版本。是否有任何基於Ubuntu的g ++編譯代碼將被掛起的Linux發行版?選擇遠程服務器發行版時,我應該查找哪些內容以確保無故障運行?

+0

這兩個盒子是否有相同的CPU? – NathanOliver

+0

該服務器很可能是一個更快/ RAM版本的開發盒。或者至少,開箱是家庭內或前一代CPU。 – codechimp

回答

0

我運行了大量計算密集的代碼,這些代碼是我在筆記本電腦和臺式機上開發的。直到我最近不得不更換我的筆記本電腦時,它的速度比我的臺式機慢得多,所以它與您描述的情況類似。

如果你的代碼是計算密集型的,那麼你可能會希望它對它運行的任何機器進行優化,無論它是你的開發盒還是遠程服務器。我認爲最簡單的做法是爲你的代碼設置一個makefile,這樣你就可以將makefile和源文件複製到遠程服務器上,然後只要開發包和服務器的gcc版本相同您的代碼需要其他庫依賴項,您只需發出make命令即可在遠程服務器上構建代碼。如果你需要關於makefile的快速教程,this當我第一次使用它們時,對我有幫助。

這樣做的好處是您可以在一臺計算機上使用較小的數據集,較低分辨率的網格或任何您需要執行的操作來減少計算強度,從而開發和測試代碼。然後,一旦你知道它的工作,將其轉移到更強大的機器上,以實際運行更強烈的版本。通過調用make命令,g ++可以使用像-march=native-mtune=native這樣的標誌來確保代碼針對遠程服務器的CPU進行了優化,並且由於它是在該機器上編譯的,所以您不必擔心可執行文件是否已內置在一臺電腦上可以運行另一臺電腦。

+0

感謝您的時間和關注。我瞭解您在建議中引用的具體邏輯和問題,但這並非我要尋找的解決方案。我只想知道在不同的Linux平臺上執行代碼時需要考慮的問題是什麼,因爲硬件大部分是相同的,但由於未明確說明的原因,Linux發行版可能必須有所不同。 – codechimp