Visual studio 找不到英特尔Fortran-chkstk.asm

Visual studio 找不到英特尔Fortran-chkstk.asm,visual-studio,intel,fortran90,Visual Studio,Intel,Fortran90,我正在使用Visual Studio+英特尔Fortran编译Fortran程序。该程序连续运行良好 但是,当我尝试并行化代码时,出现错误:chkstk.asm未找到 有趣的是,如果我减小一些数组的大小,代码就会再次并行,并且不会显示错误 我在上尝试了该解决方案:转到解决方案(非项目)的属性页中的“公共属性/调试源文件”下,在“no Debbug”下列出chkstk.asm文件,但运气不佳 下面是错误的打印屏幕 程序中出现问题,并且已通知调试器(本例中为Visual Studio)。然后,调试器

我正在使用Visual Studio+英特尔Fortran编译Fortran程序。该程序连续运行良好

但是,当我尝试并行化代码时,出现错误:
chkstk.asm未找到

有趣的是,如果我减小一些数组的大小,代码就会再次并行,并且不会显示错误

我在上尝试了该解决方案:转到解决方案(非项目)的属性页中的“公共属性/调试源文件”下,在“no Debbug”下列出chkstk.asm文件,但运气不佳

下面是错误的打印屏幕


程序中出现问题,并且已通知调试器(本例中为Visual Studio)。然后,调试器将查找与问题位置关联的源代码。它找不到该源代码,很可能是因为您没有安装它(它是底层C运行时库的一部分)

但您并不特别需要(或想要)源代码来理解问题的本质

根据其名称,chkstk.asm中的代码检查/探测堆栈,以确保堆栈上有足够的空间用于堆栈分配。检查很可能失败,因为堆栈空间不足。您可以使用“调用堆栈”窗口来标识Fortran源代码中与堆栈分配相关的位置—它可能与过程调用(为函数的局部变量创建存储)或表达式调用(为函数结果的临时变量创建存储等)相关联

并行代码倾向于大量使用堆栈,因为这是一种使存储特定于特定执行线程的简单方法。通常需要增加为每个堆栈保留的内存量(在相关可执行项目的属性中,请参见“链接器>系统>堆栈保留大小”下的“默认值”仅为1MB左右,尝试将其设置为10MB)。您可能还希望告诉编译器使用基于堆的分配,而不是基于堆栈的分配(在Fortran>Optimization下的项目属性中,将堆数组设置为0)


英特尔论坛上有许多关于此类问题的帖子和文章。

这只是一个调试器通知。chkstk.asm是CRT函数的源文件。它验证您的程序不会使用此网站的名称崩溃。在它发生之前,这很重要,因为当它发生时,你没有什么可看的。或者更糟糕的是,它可能不会使程序崩溃,而是随机损坏内存。非常典型的Fortran问题,它喜欢大数组。因此,不应该发生的事情确实发生了,堆栈跟踪说明了这一情况。我们从这里看不到它。