返回信息流这两天一直在想两个问题,求大神解释。
1.如果说我要读一个文件,这个文件的大小大于我的内存,一般是怎么处理的呢
2.我如果用并行读取了文件,当我output的时候,怎么控制顺序呢?如果说用了类似于write_ordered的话,感觉就不是并行的了呀
-----
最后一个问题,我想问问并行和多线程的区别,之前网上也查了很多,说并行是多节点,线程是单节点,那么问题来了,我在自己电脑上敲mpirun -n 5 xx的时候,这个5是指process的个数,这算是什么呀
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #22583同步于 2017/2/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
两个半关于并行IO的入门级问题
alfred1993
2017/2/11镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
1.读一部分,处理,释放内存,再读一部分,处理,释放内存......
2.写文件一般不并行化,因为会出很多问题(分布式除外)
3.多线程可以是parallel的实现方式,which强调的是对多任务的 同时 处理
语文不好,见谅
1 在内存中维护一个buffer,不断的读取文件。
2 一般并发读取一个文件,并不会比单线程读取快,一般采用多线程读取不同文件。
3 mpi是进程间的通讯工具。
感谢感谢 ,第一个我已经搞懂了;我自己用一个while loop实现了一下 虽然巨慢。。
但是为什么有些时候我用并行反而速度更慢呢
【 在 specops 的大作中提到: 】
: 1.读一部分,处理,释放内存,再读一部分,处理,释放内存......
: 2.写文件一般不并行化,因为会出很多问题(分布式除外)
: 3.多线程可以是parallel的实现方式,which强调的是对多任务的 同时 处理
: ...................
谢谢 有一个很小白的问题。
就是我实在有点无法理解MPI里面是如何通信的,例如send,或者是barrier。
我可不可以这样理解,我写的code是对于每一个rank都是一样的?比如我在main里面写MPI.barrier就是对每一个rank都会执行这个语句?
【 在 aromazyl 的大作中提到: 】
: 1 在内存中维护一个buffer,不断的读取文件。
: 2 一般并发读取一个文件,并不会比单线程读取快,一般采用多线程读取不同文件。
: 3 mpi是进程间的通讯工具。
大文件读建议用mmap, 否则会涉及到数据拷贝,会很慢。接着是没有并行io这种东西,只有并行计算,具体你上网查下操作系统内核是怎么做磁盘网络io你就清楚了,不是你开多个线程就能变快的,要优化io最好还是优化拷贝次数。至于mpi,没用过,不太喜欢,各种接口设计的太多,支持的语言太少。。同类型的我推荐0mq。
感谢大神~~^^
【 在 poiuasd 的大作中提到: 】
: 大文件读建议用mmap, 否则会涉及到数据拷贝,会很慢。接着是没有并行io这种东西,只有并行计算,具体你上网查下操作系统内核是怎么做磁盘网络io你就清楚了,不是你开多个线程就能变快的,要优化io最好还是优化拷贝次数。至于mpi,没用过,不太喜欢,各种接口设计的太多,支持的语言太少。。同类型的我推荐0mq。