在分析我的fortran程序时,Acxtrnal.dll是使用大部分CPU时间的部分!那是什么DLL? [英] When profiling my fortran program, Acxtrnal.dll is the part using most of the CPU time! What is that dll.?

查看:255
本文介绍了在分析我的fortran程序时,Acxtrnal.dll是使用大部分CPU时间的部分!那是什么DLL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我正在使用VTUNE(英特尔视觉工作室扩展版)为我的研究撰写我的2D数值模型,以便加快它的速度。我已经以这种方式加速了我的一维模型(即识别我的模型的热点)。但是这一次,在运行探查器后,我发现最耗时的部分不是我写的Fortran子例程(因为它发生在我的1D模型中),但它是一个名为Acxtrnal.dll的dll。我GOOGLE了这个DLL的名字,但我找不到更好的信息。有谁知道为什么这个DLL会花费这么多,它需要什么?
感谢
A编辑:所以我能够从Microsoft网站上为DLL添加下载符号,所以现在在调试时显示CPU时间在这里丢失。
NS_FaultTolerantHeap :: APIHook_RtlFreeHeap。如果我展开它示出了(大写子程序是矿):



游离LT; -for__free_vm结果,
for_write_int_fmt_xmit< -for_write_int_fmt< -LIMITERSUBR< -RECMUSCL< - MAIN __< -main< -_ tmainCRTStartup< -BaseThreadInitThunk< - RtlUserThreadStart< -RtlUserThreadStart>
for _release_lun< -for_write_int_fmt_xmit< -for_write_int_fmt< -LIMITERSUBR< -RECMUSCL< -MAIN < - 主< - tmainCRTStartup< -BaseThreadInitThunk< - _RtlUserThreadStart< -_ RtlUserThreadStart

解决方案
<好的,你拿了一堆样品,如图所示。您的RECMUSCL正在调用LIMITERSUBR,它正在调用 for_write_int_fmt ,这正在做很多事情。

  free 
for__free_vm
for_write_int_fmt_xmit
for_write_int_fmt
LIMITERSUBR< ------查看LIMITERSUBR中打印整数的行
RECMUSCL,因为它出现在两个栈样本
MAIN__
主要
_tmainCRTStartup
BaseThreadInitThunk
__RtlUserThreadStart
_RtlUserThreadStart

for__release_lun
for_write_int_fmt_xmit
for_write_int_fmt
LIMITERSUBR
RECMUSCL
MAIN__

_tmainCRTStartup
BaseThreadInitThunk
__RtlUserThreadStart
_RtlUserThreadStart

您可以在LIMITERSUBR中您正在编写整数的代码行查看栈示例,并查看是否需要(你看,你真的不需要系统DLL中的符号:)




p>你拿了两个堆栈样本很好,所以你可以看到这个问题两次。
除非事先知道自己确实发生了严重的放缓,否则一次看到问题是不够的。
在这么少的样本中看到它两次意味着它占据了很大一部分时间,比如超过50%,可能接近100,因此值得尝试修复。
(实际上它是一个Beta分布,其最有可能的值是2/2 = 100%。)

Hi I am profiling with VTUNE (an intel visual studio extension) my 2D numerical model I wrote for my research, in order to speed it up a little. I already sped up my 1D model this way (i.e. identifying the "hotspot" of my model). This time though, after running the profiler I see that the most time consuming part is not a fortran subroutine I wrote (as it occured for my 1D model) but it is a dll called Acxtrnal.dll. I googled the name of this dll but I could not find better information. Does anybody know why this dll is taking so much and what it is needed for? thanks A.

EDIT: So I was able to add download the symbols for the DLL from Microsoft website so now when debugging it shows that the CPU time is lost here. NS_FaultTolerantHeap::APIHook_RtlFreeHeap. If I expand it shows (uppercase subroutines are mine):

free<-for__free_vm
for_write_int_fmt_xmit<-for_write_int_fmt<-LIMITERSUBR<-RECMUSCL<-MAIN__<-main<-_tmainCRTStartup<-BaseThreadInitThunk<-RtlUserThreadStart<-RtlUserThreadStart
for
_release_lun<-for_write_int_fmt_xmit<-for_write_int_fmt<-LIMITERSUBR<-RECMUSCL<-MAIN
<-main<-tmainCRTStartup<-BaseThreadInitThunk<-_RtlUserThreadStart<-_RtlUserThreadStart

解决方案

Good, you took a couple stack samples, shown here. Your RECMUSCL is calling LIMITERSUBR, which is calling for_write_int_fmt, which is doing a lot of stuff.

free
for__free_vm
for_write_int_fmt_xmit
for_write_int_fmt
LIMITERSUBR   <------ Look at the line in LIMITERSUBR that prints integers
RECMUSCL              because it appears on both stack samples
MAIN__
main
_tmainCRTStartup
BaseThreadInitThunk
__RtlUserThreadStart
_RtlUserThreadStart  

for__release_lun
for_write_int_fmt_xmit
for_write_int_fmt
LIMITERSUBR
RECMUSCL
MAIN__
main
_tmainCRTStartup
BaseThreadInitThunk
__RtlUserThreadStart
_RtlUserThreadStart

You could look on the stack sample at the line of code in LIMITERSUBR where you are writing integers, and see if you need to be doing that.

(You see, you didn't really need the symbols in the system dll :)

It's good that you took two stack samples, so you could see the problem twice. Seeing a problem once is not enough unless you know in advance that you have a really serious slowdown. Seeing it twice in so few samples means it is responsible for a large fraction of the time, like more than 50 percent and possibly close to 100, so it's worthwhile trying to fix. (Actually it's a Beta distribution whose most likely value is 2/2 = 100%.)

这篇关于在分析我的fortran程序时,Acxtrnal.dll是使用大部分CPU时间的部分!那是什么DLL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆