在XCode中将denormal flush设置为零(FTZ)

在XCode中将denormal flush设置为零(FTZ),第1张

概述我正在使用XCode在OS X Mountain Lion上使用C进行开发,以便在本地计算机上运行.我遇到与非正规数有关的性能问题,我希望设置FTZ标志,以便将它们刷新为零. (我已经检查过denormals确实是问题,将它们刷新为零不会导致我的情况下的准确性问题.)但是,我找不到任何关于如何在XCode中实现这一点的信息.这是我可以在构建设置中更改的选项吗?或者我应该在某处输入一些代码?任何帮助 我正在使用XCode在OS X Mountain lion上使用C进行开发,以便在本地计算机上运行.我遇到与非正规数有关的性能问题,我希望设置FTZ标志,以便将它们刷新为零. (我已经检查过denormals确实是问题,将它们刷新为零不会导致我的情况下的准确性问题.)但是,我找不到任何关于如何在XCode中实现这一点的信息.这是我可以在构建设置中更改的选项吗?或者我应该在某处输入一些代码?任何帮助将非常感激.解决方法 如果我理解“/usr/include/fenv.h”中的注释,

#include <fenv.h>fesetenv(FE_DFL_disABLE_SSE_DEnorMS_ENV);

应该做你想做的事.

    FE_DFL_disABLE_SSE_DEnorMS_ENV    A pointer to a fenv_t object with the default floating-point state modifed    to set the DAZ and FZ bits in the SSE status/control register.  When using    this environment,denormals encountered by SSE based calculation (which    normally should be all single and double precision scalar floating point    calculations,and all SSE/SSE2/SSE3 computation) will be treated as zero.    Calculation results that are denormals will also be truncated to zero.

设置此选项可将程序的运行时间从Why does changing 0.1f to 0 slow down performance by 10x?减少(@mysticial在其评论中给出的链接)从27秒减少到0.3秒(MacBook Pro,2.5 GHz Intel Core 2 Duo).

总结

以上是内存溢出为你收集整理的在XCode中将denormal flush设置为零(FTZ)全部内容,希望文章能够帮你解决在XCode中将denormal flush设置为零(FTZ)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存