When profiling my fortran program, Acxtrnal.dll is the part using most of the CPU time! What is that dll.?

不羁岁月 提交于 2019-12-24 11:03:49

问题


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


回答1:


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%.)



来源:https://stackoverflow.com/questions/14573101/when-profiling-my-fortran-program-acxtrnal-dll-is-the-part-using-most-of-the-cp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!