平行運算的方法 [論壇 - Ubuntu 程式設計]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



平行運算的方法
會員一級
註冊日期:
2009/10/29 15:41
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 68
MP : 8 / 2016
EXP: 73
離線
我想先請教2個基本的問題
1. 一個未使用平行運算 library的 fortran 程式,執行時是否只會使用一顆CPU呢?
2. 多個1.中的程式執行,若不安排CPU,是否也只會使用一顆CPU執行?

以下是我的問題
我使用學校的伺服器,想要同時運算多個相同程式,
我寫了如以下的script:

odir=$PWD
for j in $(seq 1 10)
do
cd ${odir}/${j}
taskset -c ${j} ./abc &
done

其中 abc 為我的 fortran程式,
雖然通常程式可正常的運算,
但因伺服器上不只有我一個使用者
所以可能 CPU1~CPU10,其中幾個的使用率接近 100%,
這樣是否會造成問題呢?
所以我的問題為:如何能自動找出使用率低的CPU進行運算?
若伺服器為叢集電腦,那麼該如何自動找出使用率低的CPU呢?

另外,我有下載並使用 intel mpirun
不知未運用 mpi libray,且非使用 intel fortran compiler 編譯的程式
是否也能使用mpirun?
(我還未測試)
如果可以,也許使用下面指令,即能自動運用使用率低的CPU運算,
mpirun -np 1 ./abc
(再配合 intel mpirun的選項 -machinefile,也能於叢集電腦上運作)
請問是否正確?

希望高手們能提供我相關的經驗
謝謝!

2013/11/11 1:01
應用擴展 工具箱
回覆: 平行運算的方法
管理員
註冊日期:
2011/3/11 6:32
所屬群組:
討論區管理群
等級: 44
HP : 216 / 1084
MP : 1088 / 27698
EXP: 38
離線
大概是這樣吧
surdrew 寫到:
1. 一個未使用平行運算 library的 fortran 程式,執行時是否只會使用一顆CPU呢?


surdrew 寫到:
2. 多個1.中的程式執行,若不安排CPU,是否也只會使用一顆CPU執行?

不是。CPU scheduler 安定。

surdrew 寫到:
odir=$PWD
for j in $(seq 1 10)
do
cd ${odir}/${j}
taskset -c ${j} ./abc &
done

其中 abc 為我的 fortran程式,
雖然通常程式可正常的運算,
但因伺服器上不只有我一個使用者
所以可能 CPU1~CPU10,其中幾個的使用率接近 100%,
這樣是否會造成問題呢?

不會。CPU scheduler 安定。

surdrew 寫到:
所以我的問題為:如何能自動找出使用率低的CPU進行運算?
若伺服器為叢集電腦,那麼該如何自動找出使用率低的CPU呢?

不需要。CPU scheduler 安定。

2013/11/11 2:41
本篇發表文章以「創用CC BY 3.0 或更新之台灣地區版本」授權條款釋出,如何使用敬請參考
 Creative Commons — 姓名標示 3.0 台灣 — CC BY 3.0 TW
 http://creativecommons.org/licenses/by/3.0/tw/

「你不懂的東西就不要亂講,被懂得人看破手腳就算了,騙不懂的人誤導別人,還要別人把你當成大師,這就真的是說不過去了。」
 by Allen Own
 出處 http://www.plurk.com/p/i4uogm

自由知識創作平台介紹
 https://docs.google.com/document/d/1MGG6lW_0qCgH4U785R-IwSc_INdoBGej1l-JxiA4gPE
如何建立新的自由知識創作平台文件
 https://docs.google.com/document/d/11NdzOW2lGYksfyQIcPMPye5tlmj1J0QTkgPTmQvIvKA
應用擴展 工具箱
回覆: 平行運算的方法
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 11091
EXP: 23
離線
surdrew 寫到:
我想先請教2個基本的問題
1. 一個未使用平行運算 library的 fortran 程式,執行時是否只會使用一顆CPU呢?
2. 多個1.中的程式執行,若不安排CPU,是否也只會使用一顆CPU執行?

以下是我的問題
我使用學校的伺服器,想要同時運算多個相同程式,
我寫了如以下的script:

odir=$PWD
for j in $(seq 1 10)
do
cd ${odir}/${j}
taskset -c ${j} ./abc &
done

其中 abc 為我的 fortran程式,
雖然通常程式可正常的運算,
但因伺服器上不只有我一個使用者
所以可能 CPU1~CPU10,其中幾個的使用率接近 100%,
這樣是否會造成問題呢?
所以我的問題為:如何能自動找出使用率低的CPU進行運算?
若伺服器為叢集電腦,那麼該如何自動找出使用率低的CPU呢?

另外,我有下載並使用 intel mpirun
不知未運用 mpi libray,且非使用 intel fortran compiler 編譯的程式
是否也能使用mpirun?
(我還未測試)
如果可以,也許使用下面指令,即能自動運用使用率低的CPU運算,
mpirun -np 1 ./abc
(再配合 intel mpirun的選項 -machinefile,也能於叢集電腦上運作)
請問是否正確?

希望高手們能提供我相關的經驗
謝謝!


如果你需要真正平行運算,請自己再程式裏面使用MPI的函式,CPU的schedule只會分配你使用那個CPU,不會分配你使用多個CPU,就我所知,還沒有方法可以取代MPI的平行運算設計。

2013/11/11 7:58
應用擴展 工具箱
回覆: 平行運算的方法
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 11091
EXP: 23
離線
V字龍 寫到:
大概是這樣吧
surdrew 寫到:
1. 一個未使用平行運算 library的 fortran 程式,執行時是否只會使用一顆CPU呢?


surdrew 寫到:
2. 多個1.中的程式執行,若不安排CPU,是否也只會使用一顆CPU執行?

不是。CPU scheduler 安定。

surdrew 寫到:
odir=$PWD
for j in $(seq 1 10)
do
cd ${odir}/${j}
taskset -c ${j} ./abc &
done

其中 abc 為我的 fortran程式,
雖然通常程式可正常的運算,
但因伺服器上不只有我一個使用者
所以可能 CPU1~CPU10,其中幾個的使用率接近 100%,
這樣是否會造成問題呢?

不會。CPU scheduler 安定。

surdrew 寫到:
所以我的問題為:如何能自動找出使用率低的CPU進行運算?
若伺服器為叢集電腦,那麼該如何自動找出使用率低的CPU呢?

不需要。CPU scheduler 安定。


如果他是需要使用MPI的函式,CPU就可以不只使用一個,可能會造成當機的問題。

我這邊有MPI的程式範例,可以一次使用很多CPU。

2013/11/11 8:00
應用擴展 工具箱
回覆: 平行運算的方法
會員一級
註冊日期:
2009/10/29 15:41
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 68
MP : 8 / 2016
EXP: 73
離線
感謝大家的解答

2013/11/11 11:23
應用擴展 工具箱
回覆: 平行運算的方法
會員一級
註冊日期:
2009/10/29 15:41
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 68
MP : 8 / 2016
EXP: 73
離線
請問如 intel mpirun 的script
是否能應用於執行 shell script

如:cluster上只能用到目前主機的CPU時
我將要執行的 script 放在所有主機都找的到的目錄
然後使用 mpirun 去執行 script
並提供 machinefile 其內含不同主機的名稱

請教一下大家,這樣可行嗎?

2013/11/11 19:40
應用擴展 工具箱
回覆: 平行運算的方法
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 11091
EXP: 23
離線
surdrew 寫到:
請問如 intel mpirun 的script
是否能應用於執行 shell script

如:cluster上只能用到目前主機的CPU時
我將要執行的 script 放在所有主機都找的到的目錄
然後使用 mpirun 去執行 script
並提供 machinefile 其內含不同主機的名稱

請教一下大家,這樣可行嗎?


基本上shell沒聽過可以平行運算,但是你shell執行的程式可以式平行化。
你說的那個,基本上做不到,mpirun這個東西如果你執行的不是mpi的程式,其實他就根普通./差不多。

2013/11/11 20:45
應用擴展 工具箱
回覆: 平行運算的方法
會員一級
註冊日期:
2009/10/29 15:41
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 68
MP : 8 / 2016
EXP: 73
離線
其實我這麼做的原因是因為
使用學校的叢集電腦時,若登入某台主機
一般我只能使用該台主機的CPU
我不知怎麼於該台主機上使用其他台的CPU
所以想應用 mpirun 去使用

這個方法好像可以正確的運作。
(雖然只使用一顆CPU,與一般執行相同)

2013/11/11 21:13
應用擴展 工具箱
回覆: 平行運算的方法
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 11091
EXP: 23
離線
surdrew 寫到:
其實我這麼做的原因是因為
使用學校的叢集電腦時,若登入某台主機
一般我只能使用該台主機的CPU
我不知怎麼於該台主機上使用其他台的CPU
所以想應用 mpirun 去使用

這個方法好像可以正確的運作。
(雖然只使用一顆CPU,與一般執行相同)


通常平行化的程式才會用得到多CPU,其他的情況多台電腦的CPU大部份都是idle

2013/11/11 21:20
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.