Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >随着处理器数量的增加,Fortran代码的计算速度降低。

随着处理器数量的增加,Fortran代码的计算速度降低。
EN

Stack Overflow用户
提问于 2020-11-03 02:09:40
回答 1查看 90关注 0票数 0

我正在使用命令"mpirun -np 250 ./hello“在Fortran中运行一个并行的"Hello”代码。这个打印“你好世界”250倍,他们的排名从0到249。

我正在处理的服务器有128个核心和256个线程。"nprocs“命令在我的服务器上提供"128”输出。

我有一个Fortran代码,与250个处理器相比,128的计算时间更短。

所以我有两个问题

  1. 如果"hello“与排名一起打印250次,这是否意味着我的服务器中有250个核心?

  1. 为什么128个的计算时间比250个少?为什么"-np“从128个增加到250个,降低了计算速度?
EN

回答 1

Stack Overflow用户

发布于 2020-11-04 01:30:25

  1. 如果"hello“与排名一起打印250次,这是否意味着我的服务器中有250个核心?

不,它不是。你可以在一个CPU核心上运行mpirun -np 250 ./hello,如果你有足够的内存和耐心的话,由于分时的魔力,它仍然会运行。

  1. 为什么128个的计算时间比250个少?为什么"-np“从128个增加到250个,降低了计算速度?

硬件线程利用以下事实:在许多情况下,单个线程不能充分利用CPU管道,因此另一个线程可以同时运行并“填补空白”。如果一个硬件线程正在等待缓慢的操作,例如内存访问,在这种情况下,第二个硬件线程可以使用ALU或FPU。这就是所谓的延迟隐藏。

当两个硬件线程都需要访问单个单元(如FPU )时,它就不能很好地工作。在这种情况下,只有更多的开销,因此计算速度减慢。

另一个让它在250个线程中变慢的原因是,硬件线程共享核心数据和指令缓存,有效地将每个线程的缓存量减半。在共享内存编程中,这不是什么问题,所有线程都共享一个地址空间,但对于大多数(几乎所有) MPI实现来说,情况并非如此,因为每个级别都是一个单独的进程,有自己的地址空间。

另一个原因可能是内存带宽。如果您的程序正在从CPU读取数据或将数据写入CPU之外,例如,由于它不完全适合缓存,那么更多的MPI级别将需要更高的内存带宽,但是CPU内存控制器只能提供其中的大部分。您应该尝试运行您的程序,只有64排名-也许它会更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64660721

复制
相关文章
kafka增加topic的备份数量
本文将介绍如何利用kafka-reassign-partitions.sh命令增加主题的备份数量。
mikealzhou
2018/12/26
2.1K1
【旧代码】fortran中的指针实现链表的代码
我不喜欢fortran, 奇怪的词法规则(竟然不用空格分开token), io操作竟然是语言的一部分(这种非本质的东西像C那样用库来扩展多好) 。。。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 6
byronhe
2021/06/25
7650
随着消费者诈骗增加,在线商业诈骗减少
TransUnion周二发布的一份报告显示,网络盗匪正在减少针对企业的攻击计划,但针对消费者的新冠肺炎骗局却在增加。
用户8054111
2020/12/20
3410
Fortran知识 | 代码错误(无法解析的外部符号)
如图所示,提示为:无法解析的外部符号。 找不到某些函数或子程序。如果这些函数或子程序在函数库中,没有正确被使用;如果被提示的函数应该是数组,可能没有定义为数组,而被编译器误认为是函数,找到这个函数并添
fem178
2018/04/08
6.2K0
Fortran知识 | 代码错误(无法解析的外部符号)
随着消费者欺诈行为的增加,网上商业欺诈行为减少
TransUnion周二发布的一份报告显示,在线匪徒正在减少针对企业的计划,但针对消费者的COVID-19骗局却在增加。 总部位于芝加哥的全球在线欺诈趋势季度报告指出,针对全球企业的涉嫌欺诈性数字交易从大流行的锁定阶段(3月11日至5月18日)到重新开放阶段(5月19日至7月25日)下降了9%。交易安全解决方案提供商。 这与TransUnion在4月13日和7月27日这几周进行的调查形成鲜明对比,该调查发现,针对数字COVID-19骗局的目标消费者数量增长了10%。 TransUnion全球欺诈解决方案高级副总裁Shai Cohen在一份声明中说:“随着企业急于数字化,许多人几乎在一夜之间被迫完全上网,欺诈者试图利用这一机会。” 他继续说,随着这些企业增加其数字欺诈预防解决方案,欺诈者将他们的骗局转移到其他地方。 他补充说:“与消费者相反,欺诈者越来越多地使用COVID-19来捕食那些面临越来越大的财务压力的人。”
YH
2021/01/07
3810
Fortran 的FORALL结构
以上两种写法完全等效,需要指出的是:FORALL只能用于数组操作,也就是说,赋值符号两边只能是数组。然而在实际使用中,FORALL结构的运算速度并不比do循环快,有时甚至比do循环还慢不少。以下是Intel Fortran编译器的官方文档说明
fem178
2019/10/28
4.9K0
fortran中的数组
在前三篇笔记,学习了Fortran作为一个编程语言,最基本的内容:变量,输入输出,流程控制和程序结构。接下来是Fortran的数组,我认为这是Fortran语言最有价值的精华部分,因此特意放在了学习笔记靠后的部分,在学习了基本的语法和子程序等之后。注意,Fortran的字符集不包括中括号[],因此与c语言的风格不同,Fortran对数组分量的操作全都是使用小括号()的。
自学气象人
2023/06/20
6280
fortran中的数组
fortran的cmakelist的写法
cmake_minimum_required(VERSION 3.19) project(study Fortran) add_compile_options(-O3 -ffree-line-length-none -fdefault-integer-8 -finteger-4-integer-8 -freal-4-real-8 -fallow-argument-mismatch -std=legacy -fdec-format-defaults ) enable_language(Fortran) add
gzq大数据
2021/11/30
8850
fortran的cmakelist的写法
vb6中使text控件的光标随着增加的内容向下移动
Text1.Text = Text1.Text + "test..." + CStr(i) + Chr(13) + Chr(10)
力哥聊运维与云计算
2019/06/28
5980
Fortran知识 | 代码错误(数组越界)
如图所示,提示为: Subscript #1 of the array INDEX has value 61 which is greater than the upper bound of 60 比
fem178
2018/04/08
4.5K0
Fortran知识 | 代码错误(数组越界)
fortran知识 | 代码错误(domain error)
如图所示,提示为:domain error 这表示数学函数错误,如超出数学函数的定义域,负数开平方,分母为0等等;也有可能是浮点数错误,比如sqrt(4),因为4是整型。 该错误属于运行时错误,需要
fem178
2018/04/08
2.1K0
fortran知识 | 代码错误(domain error)
安全漏洞随着公有云使用量的增加也在快速增长
行业专家表示,公有云中工作流程的增加可能会增加更多的安全漏洞。企业在其公有云环境中正在经历数据爆炸式增长,这将导致扩展的数据攻击面,可能导致数据违规或合规性失败的情况。公有云的性质使得创建新的数据存储很容易,但安全团队很难监控该数据存储的内容,因此,企业必须改变他们对数据安全的看法。人们越来越意识到存在的风险,并朝着更好地治理和监控数据资产的方向发展。数据安全态势管理、云数据丢失预防、数据检测和响应的功能可以帮助企业应对挑战。
静一
2023/02/28
3850
安全漏洞随着公有云使用量的增加也在快速增长
Nature:用光子处理器提升人工智能计算速度
随着人工智能的兴起,传统的电子计算方式逐渐达到其性能极限,远远落后于可处理数据的快速增长。在各种类型的AI中,神经网络由于其出色的表现而被广泛用于AI任务中。这些网络使用多层相互连接的人工神经元执行复杂的数学运算,其中占用了大多数计算资源的基本运算是矩阵向量乘法。
机器之心
2021/01/20
8560
Fortran知识 | 代码错误(insufficient virtual memory)
如图所示,提示为:insufficient virtual memory 程序试图访问一个受保护或者不存在的地址。多数为可分配数组、指针等动态内存引发的错误。应确保数组已经分配后才能访问,确保指针指向
fem178
2018/04/08
3.1K0
Fortran知识 | 代码错误(insufficient virtual memory)
降低代码的圈复杂度
可能你之前没有听说过这个词,也会好奇这是个什么东西是用来干嘛的,在维基百科上有这样的解释。
SH的全栈笔记
2022/08/17
1.4K0
降低代码的圈复杂度
Fortran中的陷阱-NAMELIST
NAMELIST(有名列表)是一种特殊的I/O方法,它将一组变量和数值封装在一起,进行输入/输出操作。其声明形式如下:
用户7592569
2020/07/27
3.5K0
C++增加GDAL CreateCopy函数得到的栅格的波段数量
  本文介绍基于C++语言GDAL库,为CreateCopy()函数创建的栅格图像添加更多波段的方法。
疯狂学习GIS
2023/10/24
1930
C++增加GDAL CreateCopy函数得到的栅格的波段数量
Fortran知识|代码错误(input conversion error)
如图所示,提示:input conversion error 此时遇到了异常的转换错误。可能是输入数据类型与程序所声明变量类型不一致(比如输入2.5,对应变量类型为integer),或者输入数据超过了
fem178
2018/04/08
4.9K0
Fortran知识|代码错误(input conversion error)
让你的matlab代码计算速度提升百倍的技巧揭秘
对于任何一款编程语言来说,提前分配变量的存储空间,对程序运行效率提升是显著的,这对matlab也不例外。对于matlab而言,在编程过程中遇到循环是最拖累代码运行速度的,因此咱们写代码要尽可能地避免循环,将循环尽可能地转化矢量化计算。接下来就根据一个实例来看看,是怎么一步一步实现的吧!
巴山学长
2020/01/14
5.1K0
让你的matlab代码计算速度提升百倍的技巧揭秘
模板化的封装,降低业务代码开发
业务开发是一件复杂且耗时的工程,所以最近几年出了一个很火的概念叫做"低代码"开发,简单的说就是开发人员通过简单的"拖拉拽"配置,快速构建起业务应用,甚至一些业务人员可以自行操作,比如下面常用的一些功能;
知了一笑
2022/06/14
4560
模板化的封装,降低业务代码开发

相似问题

subprocess.Popen()性能随着进程数量的增加而降低

10

Slack API - conversations.list性能随着归档通道数量的增加而降低

117

随着行的增加,jquery中的数量增加。

58

动态排名随着团队数量的增加

24

SQL性能会随着" in“子句中元素数量的增加而降低吗?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文