串行IO与并行IO的效率比较_zhxue123的博客-程序员秘密_并行io和串行io

技术标签: 语言  file  c  Linux  io  BigData  

 

MPI_File_read_at函数与C语言中的fread函数,依次读取一个100M的文件,读取时间如下所示:

实验一

[[email protected] kmeans_exper]$ mpiexec -np 1 ./mpi_c_fspeed
There are 1500015 samples...
Start test mpi_file_read....
In mpi002 mpi_file_read takes 1.566990137100 seconds...
Start test fread....
In mpi002 fread takes 0.078104019165 seconds...    

实验二

[[email protected] kmeans_exper]$ mpiexec -np 1 ./mpi_c_fspeed
There are 1500000 samples...
Start test mpi_file_read....
In mpi002 mpi_file_read takes 1.315994024277 seconds...
Start test fread....
In mpi002 fread takes 1.259196043015 seconds...

 

两次实验具有不同的结果,原因是:

实验一:MPI_File_read_at与fread读取同一数据块,MPI先读,fread后读,因此,MPI花费的时间较多

fread花费的时间较短,主要是受到了缓存的影响;

实验二:MPI_File_read_at与fread读取不同数据块,MPI先读,fread后读,因此,MPI花费的时间与fread花费的时间相差不多;

 

再来看实验三和实验四:

实验三:启动1个进程分别使用MPI_File_read_at函数和fread函数读取100G数据文件,只读取其中的100M数据,实验结果如下:

MPI_File_read_at:[[email protected] kmeans_exper]$ mpiexec -np 1 ./mpi_c_fspeed
There are 1500000 samples...
In mpi002-0 mpi_file_read takes 1.155555009842 seconds...

fread:[[email protected] kmeans_exper]$ mpiexec -np 1 ./mpi_c_fspeed
There are 1500000 samples...
In mpi002-0 fread takes 1.155176162720 seconds...

实验四:启动336个进程(14个节点x24)读取100G数据文件,每个进程分别使用MPI_File_read_at函数和fread函数读取100M,而且都是各不相同的100M,部分实验结果如下:

MPI_File_read_at:[[email protected] kmeans_exper]$ /usr/mpi/gcc/mvapich2-1.6/bin/mpiexec -np 336 -hosts mpi002,mpi003,mpi004,mpi005,mpi006,mpi007,mpi008,mpi009,mpi011,mpi012,mpi013,mpi014,mpi015,mpi016 /home/zhangyang/kmeans/1000g/kmeans_exper/mpi_c_fspeed
There are 1500000 samples...
In mpi002-224 mpi_file_read takes 20.344742059708 seconds...
In mpi002-280 mpi_file_read takes 20.536442995071 seconds...
In mpi002-84 mpi_file_read takes 20.720577955246 seconds...
.................

.................

In mpi015-82 mpi_file_read takes 24.234681844711 seconds...
In mpi013-332 mpi_file_read takes 24.371000051498 seconds...
In mpi002-0 mpi_file_read takes 24.875329971313 seconds...

fread:[[email protected] kmeans_exper]$ /usr/mpi/gcc/mvapich2-1.6/bin/mpiexec -np 336 -hosts mpi002,mpi003,mpi004,mpi005,mpi006,mpi007,mpi008,mpi009,mpi011,mpi012,mpi013,mpi014,mpi015,mpi016 /home/zhangyang/kmeans/1000g/kmeans_exper/mpi_c_fspeed
There are 1500000 samples...
In mpi002-28 fread takes 20.996963024139 seconds...
In mpi002-238 fread takes 21.178472995758 seconds...
In mpi002-154 fread takes 21.282578945160 seconds...

.................

.................

In mpi012-247 fread takes 24.225381851196 seconds...
In mpi012-331 fread takes 24.246413946152 seconds...
In mpi002-0 fread takes 24.365787982941 seconds...

比较实验三和实验四的结果可以得出结论:读取同样大小的数据块,单进程读取的速度要比多进程并行读取的速度快一个数量级,因此,在并行条件下,数据读取速度会受到很大的影响

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhxue123/article/details/6804569

智能推荐

用Spring 2.0和AspectJ简化企业应用程序_分布式编程的博客-程序员秘密

Spring:简单而强大Spring的目标是使企业应用程序开发尽可能地简单和高效。这一理论的实例可以从Spring的JDBC、ORM、JMX、依赖注入等方法,以及企业应用程序开发的其他许多重要领域中见到。Spring还区分了使事情简单化和过分单纯化之间的差异。最不可思议的是同时提供了简单化和强大的功能。企业应用程序中复杂性的一个根源来自影响应用程序多个部分的特性和需求的实现。相关于这些特性

七周五次课(1月26日)_weixin_34341117的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

360 2020技术综合笔试(2019.8.31)编程题双AC_薪升贷农名工的博客-程序员秘密

s = input()m = {}maximum = 0for i in s: if i not in m: count = 0 m[i] = i for j in s: if j == i: count += 1 if count >= max...

如何报名腾讯云认证考试?_z荒野求生的博客-程序员秘密

如何报名腾讯云认证考试?进入腾讯云官网,完成账号注册及个人实名认证。 进入腾讯云培训认证中心官网进入腾讯云培训认证中心官网,选择拟报名科目进入认证详情页,单击购买。考试时间如何安排?认证考试为全国统考,考试时间默认为每月最后一周的周六,遇节假日提前一周。2020年认证排期可查阅腾讯云认证考试时间。当月认证考试报名截止时间为考试开始前10天,考试具体地址如何查询?您在报名时可以选择就近的考试省份和城市,并将于考试当周周一24:00前收到准考证等开考通知信息,详细考试地址可查阅准考证...

Android Studio -app:mergeDebugResources_Yul丶Wu的博客-程序员秘密

目录解决过程定位详细信息问题原因:今天打开IDE,运行程序时,突然报了一个莫名奇妙的错误,错误日志如下:解决过程最开始,我是通过搜索关键字 “app:mergeDebugResources”来查找问题答案,搜索结果都是一些资源文件的问题(比如,把png改jpg,或者是输入一些错误的符号等。),但通过我的再三定位,自己的项目并没有这个问题,而报错信息感觉比较有限,我想知道更详情的报错信息。...

关于Arcgis提示范围不一致警告_幸福与爱的博客-程序员秘密_arcgis警告范围不一致一个或多个

关于Arcgis提示警告:范围不一致,一个或多个已添加图层的范围与关联的空间参考信息不一致问题这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器

随便推点

阿里云、腾讯云、华为云多角度对比_z荒野求生的博客-程序员秘密

阿里云、腾讯云、华为云多角度对比原地址:https://blog.csdn.net/youlin/article/details/106378349因为公司的工作,我们用到阿里云,腾讯云,华为云,甚至电信云,其他还有一些小的服务商也测试过.根据我们的经验,如果从多个角度对比: 价格,性能,稳定性,安全性(以下对比仅仅是从过往的我们使用和压测对比,做的历史经验总结)总体来说: 价格: 腾讯云>阿里云 性能: 腾讯云>阿里云 稳定性: 阿里云>腾讯

win10搜索功能失效用不了如何解决|_舰长115的博客-程序员秘密_win10 搜索不能用

win10 1903出现的搜索框黑屏无法使用的解决方法: 全球范围内许多Windows 10用户集中报告了一个问题—Windows 10搜索功能失效了。使用搜索后不会返回任何结果,推测造成该问题的原因是Bing和Cortana集成造成的,禁用Bing和Cortana集成可以暂时解决此问题。具体解决方法如下:1、右键点击开始图标,打开命令提示符(管理员);2、在命令提示符(管理员...

电子科技大学外语学习平台_ZhuRose的博客-程序员秘密

一、启动界面 效果图: 二、登录界面 效果图: 三、主界面 有首页模块、写作预约模块、口语预约模块、实验室预约模块和个人模块共五个模块 学生账号包含:首页模块、写作预约模块、口语预约模块和个人模块 老师账号包含:首页模块、实验室预约模块和个人模块 3.1首页模块 展示最近的活动公告 效果图: 点击跳转详情 效果图: 3.2写作预约模块 展示学生的写作预约情况:成功

SQL手工注入语句_Eliauk!!的博客-程序员秘密_sql手工注入语句

看看下面的1.判断是否有注入;and 1=1;and 1=22.初步判断是否是mssql;and user>03.判断数据库系统;and (select count() from sysobjects)>0 mssql;and (select count() from msysobjects)>0 access4.注入参数是字符‘and [查询条件] and ‘’=’5.搜索时没过滤参数的‘and [查询条件] and ‘%25’=’6.猜数据库;and (se

手把手教你用Python构建你的第一个多标签图像分类模型(附案例)_天一生水water的博客-程序员秘密_train_test_split

原文链接:https://www.analyticsvidhya.com/blog/2019/04/build-first-multi-label-image-classification-model-python/你正在处理图像数据吗?我们可以使用计算机视觉算法来做很多事情:对象检测图像分割图像翻译对象跟踪(实时),还有更多……这让我思考——如果一个图像中有多个对象类别,我们...

深度学习论文_yzTHU的博客-程序员秘密

深度学习论文0. 深度学习的“圣经”提到入门级的书,就不得不提这一本 Bengio Yoshua,Ian J. Goodfellow 和 Aaron Courville共同撰写的《深度学习》(Deep Learning)。“这本关于深度学习的教课书是一本为了帮助学生及从业者入门机器学习,并专注于深度学习领域的教材。”值得一提的是,这本 MIT 出版的“书”数年来一直在网上实时更新和完善...