我试图用C ++中的静态Fortran库调用函数。
根据问题的大小,我的程序开始挂起对Fortran库函数的初始调用。我无法理解这个问题的原因......
举个例子,如果问题大小是133k,程序会在没有挂起的情况下启动并正常结束。但是,如果我将问题大小增加到365k或更多,这些大问题会导致在第一个函数调用中挂起程序。 intel和gnu编译器都会导致相同的行为。
这可能是什么原因造成的?
编辑:OS:Linux,我检查的是我的shell的堆栈大小,特定于库的环境variblaes,btw库是Watson Sparse矩阵包,稀疏线性求解器,问题大小是大小作为求解器输入的矩阵运算符。我不能发布任何代码,因为有很多依赖项,它会使流程更复杂。
答案 0 :(得分:0)
你在机器上有多少内存?多少掉期?
如果大量使用swap,最终可能会花费大量时间来读取和写入交换,这会使调用真的变慢。
如果Fortran库中使用的算法具有更高的复杂性,那么通过更多输入可能会(更多)获得更长的调用时间。