visual-studio - 英特尔 Fortran - chkstk.asm 未找到

标签 visual-studio intel fortran90

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

但是,当我尝试并行化代码时,代码卡住并给出错误:chkstk.asm not found

有趣的是,如果我减小某些数组的大小,代码会再次很好地并行化并且不会显示错误。

我尝试了 this link 上的解决方案:转到解决方案(不是项目)的属性页中,在“通用属性/调试源文件”下,在“无调试”下列出 chkstk.asm 文件,但没有运气。

下面还有错误的打印屏幕。

enter image description here

最佳答案

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

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

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

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

英特尔论坛上有大量针对此类问题的帖子和文章。

关于visual-studio - 英特尔 Fortran - chkstk.asm 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37888601/

相关文章:

无法从 Fortran 90 中返回的 C 浮点指针获取数据

arrays - 在子程序调用期间保持 Fortran 中的数组限制

javascript - 某些英特尔集成图形处理器中的 WebGL 故障

fortran - 我可以使用依赖于 Fortran 文件接口(interface)/头文件中的数据的预处理器指令来有条件地选择 USE 语句吗?

c# - 在组合框中设置默认项

visual-studio - 如何在 Visual Studio 之前处理按键?

assembly - Intel X86-64 组装教程或书籍

c - 为什么同一程序的 INST_PTR(指令指针)值会因不同的运行而改变?

c# - 在 DoWork() 完成后将变量传递给 RunWorkerCompleted()

visual-studio - 我能做些什么来使 "help"在 Visual Studio 2008 中加载得更快吗?