2014-03-12 42 views
-1

我有我的集羣中的問題。我正在使用一個沒有線程的舊系統(它們沒有在我的系統中實現)。我的問題很簡單:我可以與OpenMP並行工作,而無需在程序中定義線程數量?我的意思是,用真正的核心使用openMP。 如果是這樣的話,我想知道如何去做。我用的Fortran 90的工作OpenMP的無緒

+0

問題不計算。所以你的意思是你的系統只有一個核心?如果是,爲什麼你想用omp開頭? – Voo

+1

我從來沒有嘗試單核/線程的CPU上,但我認爲你可以設置環境變量OMP_NUM_THREADS定義的線程數。在類linux系統中,在運行可執行文件之前運行shell命令export OMP_NUM_THREADS = 2。 – innoSPG

回答

1

您可以使用變量OMP_NUM_THREADS指定你要多少線程運行。這隻有在與程序相關的指令沒有被指定時纔有效。

如果你想在節點之間計算,你應該看一看MPI

警告:如果您的系統每個節點只有1個核心,您將不會受益於使用多個線程,甚至可能會導致性能下降。您唯一希望的是處理器啓用了多線程,但它不會與多核相同。

+0

我真正的問題是我的系統(有幾個內核)相當老,沒有實現線程(硬件不適應它們)。所以我不能用句子作爲「OMP_NUM_THREADS」。我的問題與使用真實內核而不是線程的openMP更相關。如果它使用的線程是真正的物理線程(每個核心一個)或模擬(每核多線程又名幾個線程) – user3209698

+0

OpenMP的不關心。我的第二段意在作爲警告。我會編輯它以使其更清晰。 – miguelbernadi

+0

OpenMP的規範基於線程。如果您的操作系統中沒有線程支持,則OpenMP將無法編譯。如果它編譯,miguelbernardi寫的所有內容都是正確的。 – Soravux