的优点mwsize(跨平台的灵活性)?

2视图(30天)
你好,
在文档中有提示使用mwsize而不是int跨平台的灵活性。实际的优势是什么?backround的我的问题如下:我想写(和部分已经写)c代码,我在MATLAB中使用。我试图找到一个好的工作流程来扩展现有的c代码并在MATLAB中使用它。我遇到的最大问题是调试。我发现这非常有用的博客条目: https://blogs.mathworks.com/developer/2018/06/19/mex-debugging-vscode/ 不过,这样很繁琐的调试。特别是因为MATLAB可能崩溃很经常因为错误发生在开发新的c代码。因此,我认为这是更好的编写C IDE中的代码,把包装器 mexFunction 在我的代码。我的问题是,如果我宽松很多性能如果我这样做呢?
此外,一个问题出现关于“MATLAB 万博1manbetx支持 交叉 在墨西哥人复杂的API函数。这对高速应用API是首选?

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2021年1月21日
编辑:詹姆斯Tursa 2021年1月21日
“此外,出现一个问题关于MATLAB支持墨西哥人的交错复杂的API函数。万博1manbetx这对高速应用API是首选呢?”
这是有点争议的问题,因为选择是您正在使用由MATLAB版本。如果您使用的是R2017b或更早,那么您将使用两个单独的真实的或想象的数据区域。如果您使用的是R2018a或晚,那么你将使用一个交错复杂的数据区域。没有MATLAB版本,同时支持这两种方法。万博1manbetx编译一个墨西哥人习惯在R2018a或晚-R2017b内存模型选项只是迫使墨西哥人的日常生活做一个副本/复制在后台所有复杂的变量。它不会改变基本的存储方案的变量数据,在R2018a后来总是交错复杂。
这是 ,这取决于你在做什么。注意,bla和LAPACK复杂的线性代数库例程,MATLAB只使用支持交错复杂的数据模型(在每一个版本的MATLAB,不仅仅是R2018a后来),所以导致下面的评论。万博1manbetx例如,
矩阵乘以实际*复杂:
R2017b单独存储方案会更快,因为布拉斯特区矩阵相乘的例程可以直接调用没有任何中间数据复制。即。,个人真实的*真正的和真正的*想象的部分可以通过使两个矩阵乘法程序调用真正的布拉斯和结果直接塞到MATLAB输出变量。R2018a交叉存储方案使用复杂的布拉斯特区矩阵乘法程序在这种情况下,它必须首先深实变量复制到一个复杂的变量与虚部0,然后打电话。所以额外的内存和时间浪费R2018a中间深数据复制和繁殖大量的额外的不必要的0。
线性代数调用复杂LAPACK例程:
R2018a交叉存储方案会更快,因为输入可以直接传递给LAPACK常规和输出直接塞到一个MATLAB函数。不需要中间深数据复制。R2017b单独存储方案使用复杂LAPACK例程,它必须首先深复制独立真实的或想象的数据区域成一个连续的交叉区域,然后通过LAPACK例程。然后它必须采取交叉结果深复制成两个独立的真实的或想象的数据区域输出回MATLAB。所以额外的内存和时间浪费中间深数据副本。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2020年12月23日
在C语言中,int是允许16位或更大。这是常见的治疗int作为32位编译器。它是 不常见的 编译器将int作为64位:64位通常长int或long。
同时,mwsize被定义为64位,大阵降低启用,它应该为任何64位目标。
使用int把代码的正确性的摆布编译器默认整数大小,而不是使用一个固定的大小由MATLAB是必需的
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年1月20日
在将来的某个时候,Mathworks可能决定转向为matlab类(比方说)80位翻倍。接口编码在mxDouble将自动转换,但是代码,使用C或c++双必须升级。
此外,一些供应商如IBM正在积极追求非- ieee 754浮点,754的一些设计选择限制性能改进(特别是信号南和规范化的数字)

登录置评。

标签

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!