gpt4 book ai didi

matlab - MATLAB 的堆栈大小是多少?

转载 作者:太空宇宙 更新时间:2023-11-03 19:56:26 25 4
gpt4 key购买 nike

MATLAB R2018a(64 位)的默认堆栈大小是多少?

堆栈大小似乎大于 64 位 C# 程序。

为什么我要问这个

我问这个问题是因为我调用英特尔 MKLs LAPACKE_dtrtri这是高度递归的。

我在 .NET 应用程序中使用该函数,从 C# 调用它时出现堆栈溢出错误,请参阅 What is the stack size of a BackgroundWorker DoWork Thread? Is there way to change it?

另一方面,如果我从 MATLAB 调用我的 .NET 应用程序,我不会收到堆栈溢出错误。这就是我想知道 MATLAB 堆栈大小的原因。

最佳答案

使用 kernel32.dll 中的 GetCurrentThreadStackLimits 函数,我可以获得 MATLAB 的堆栈大小。

我在名为 IntelMKL.dll 的 .NET 程序集中创建了以下辅助方法:

static class _kernel
{
[DllImport("kernel32.dll")]
internal static extern void GetCurrentThreadStackLimits(out uint lowLimit, out uint highLimit);
}

public static class MKL
{
public static uint GetStackSize()
{
uint low, high;
_kernel.GetCurrentThreadStackLimits(out low, out high);
return high - low;
}
}

我可以使用以下代码从 MATLAB 调用 GetStackSize:

NET.addAssembly('IntelMKL.dll')
IntelMKL.MKL.GetStackSize() % this return 67108864 Bytes which is 64 Mega Bytes

MATLAB 的堆栈大小为 64 MB。

It seems that the stack-size is larger than an 64-bit C# program.

默认的 C# 堆栈大小为 1 MB(32 位)和 4 MB(64 位),请参阅 What is the stack size of a BackgroundWorker DoWork Thread? Is there way to change it?

关于matlab - MATLAB 的堆栈大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56457801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com