ano*_*non 2 matlab winapi win64 memory-management
我有一些只能在32位窗口上运行的matlab代码,但我需要至少6 GB的ram才能运行它.在我的实验室中,唯一拥有6GB RAM的机器运行64位窗口,有没有办法在这里运行此代码?我正在考虑模拟32位窗口并在其上运行它,这会工作吗?
在Windows 64位上作为32位进程运行时,您的32位应用程序将只能处理4 GB.为了满足更多内存需要64位应用程序.
我最近一直致力于将我们的几个大型Matlab代码从32位Windows XP迁移到64位Windows XP.与这里的其他一个或两个回答者不同,我认为现在6GB是一个非常合理的内存需求; 我们这里使用的最大桌面有两个四核处理器和32GB RAM.我的一些科学家同事想要更多,但他们总是想要更多.
我会更进一步,建议不要试图重写你的应用程序以减少使用RAM; 那将走向错误的方向.如果将代码移植到64位计算机上,它会更便宜,更快,并且产生的错误更少.对于那些主张重构使用更少内存的人,我会说在不久的将来,你会在什么时候面对市场的现实,并认识到64位计算将会存在并且RAM非常便宜,尤其是相比开发人员的时间费用?
忘记尝试在32位机器上使用6GB RAM; 正如其他人告诉你的那样,Matlab和Windows都不会这样做.但是,正如其他人所说的那样,Matlab对位数无动于衷,因此在32位版本上运行的纯Matlab代码将适用于同一版本的64位版本.如果您从较旧的32位版本迁移到较新的64位版本,您可能会发现一些Matlab函数已经退役,但是您仍然会遇到相同的问题,无论如何都要迁移到更新的32位版本.
如果您的代码只能在32位Windows上运行,那么我怀疑您使用的是MEX文件.这些必须重新编译才能在64位计算机上执行.同样,如果您在移植Matlab版本之间移动,请注意注意已退役的功能.根据我的经验,另一个主要问题是你可能会对某些基本数据类型的大小做出错误的假设.Fortran和C标准(没有C++经验可言)实际上都没有指定默认INTEGER(对于Fortran)或int(对于C - 我认为,不是C程序员的大小)的字节大小.指针大小可能也只是模糊地指定.这意味着您可能必须(a)更改代码中的大量变量声明或(b)使用编译器指令/标志来指定INTEGERS,REALS,int和其他可能的默认大小.(b)更容易,(a)可能更适合未来的可维护性.
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |