24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 1668  |  回复: 9

460536813

新虫 (初入文坛)

[求助] MPI文件分发

请问,我在MPI环境下,想把某个文件,比如说计算目标参数文件,分发到各个节点,用什么方法比较好。

如果用my_id =0的节点读文件,my_id!=0节点写文件,感觉有点搓。。。MPI里面有没有文件广播分发的功能?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smart0193

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢应助 2012-03-23 02:58:07
我记得MPI-2.0里,有专门进行文件并行读写的函数,你看看他的手册,应该有介绍。好久没用MPI了。
一个奋斗在三流高校的教育界民工
2楼2012-03-22 19:20:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢应助 2012-03-23 02:58:15
余泽成: 专家考核 2012-03-30 14:06:43
不知道你说的分发是什么意思,我只知道变量是可以广播的。

对于读取文件内容,我一般有两种办法,一种id=0的cpu读取,然后广播;一种是全部cpu都读取。

对于写文件,那只能让一个CPU写,或者各自写进不同名字的文件,然后,手动整合。
很女子很弓虽大
3楼2012-03-22 20:16:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

460536813

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by smart0193 at 2012-03-22 19:20:40:
我记得MPI-2.0里,有专门进行文件并行读写的函数,你看看他的手册,应该有介绍。好久没用MPI了。

不想读写 能分发吗
4楼2012-03-28 12:44:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★
jjdg: 金币+1, 感谢参与 2012-03-29 01:00:56
余泽成: 专家考核 2012-03-30 14:06:49
460536813: 金币+1, ★★★很有帮助, 有理 考虑其他东西 不用MPI分发了 2012-04-27 12:58:11
除非有新的接口函数被mpi发布出来,否则没有。


我想,一般也不会发布这样的函数,原因很简单,因为那样的函数死板,没有直接自己分摊来的有效。
很女子很弓虽大
5楼2012-03-28 15:48:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
余泽成: 金币+3, 专家考核, 谢谢参与应助! 2012-03-30 14:07:03
数据并行,你得先读进来,然后分发不同的部分给不同的cpu
你所谓的文件分发是什么,复制多份文件给不同的cpu?那还不如读进来数据,然后分发数据
因为只要有一个cpu打开文件,文件就被锁住了,直到释放资源,其他cpu才会继续读取,
mpi程序要注意的就是同步问题,你这个需求不实际啊
只能:

1.master读,然后分发数据到各个unit,计算完后collect数据,写结果;
2.每个unit都copy一份数据,根据当前unit的id计算offset,然后同时读取各自数据计算,运算结束自己写自己的文件,最后master再copy所有文件,合并.

其实2的方案,所有unit读写一个文件也可以,可是得不断测试文件读写状态,当文件空闲时才能读写,跟1是一样的,而且逻辑还不如1清楚.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
6楼2012-03-29 03:51:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

460536813

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by libralibra at 2012-03-29 03:51:21:
数据并行,你得先读进来,然后分发不同的部分给不同的cpu
你所谓的文件分发是什么,复制多份文件给不同的cpu?那还不如读进来数据,然后分发数据
因为只要有一个cpu打开文件,文件就被锁住了,直到释放资源,其他cpu才会 ...

你说的不就是我题设的那种方法么?
文件分发  保证每个节点都收到文件就可以  要同步干嘛
不要把问题搞复杂~~
7楼2012-04-27 12:56:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

460536813

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by lurencyj at 2012-03-22 20:16:05:
不知道你说的分发是什么意思,我只知道变量是可以广播的。

对于读取文件内容,我一般有两种办法,一种id=0的cpu读取,然后广播;一种是全部cpu都读取。

对于写文件,那只能让一个CPU写,或者各自写进不同名 ...

广播 我知道的   就是分发一下么  不需要同步什么的
8楼2012-04-27 12:57:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

引用回帖:
8楼: Originally posted by 460536813 at 2012-04-27 12:57:19:
广播 我知道的   就是分发一下么  不需要同步什么的

在collect之前最好同步一下,保证能收到所有的数据
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
9楼2012-04-28 17:28:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangjiang381

铜虫 (初入文坛)

10楼2012-11-08 21:08:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 460536813 的主题更新
信息提示
请填处理意见